Objective-C プロジェクトの 1 つで JavaScriptCore を使用しています。JS コールバックに陥ったときに現在のファイルと行が何であるかをいつでも知りたいです。
public headersでそれを行う方法はないので、ソースを調べたところ、C++ コードを使用してファイルと行にアクセスできるようです。
// ctx is a JSContextRef, that's the only type I have an access to
JSC::JSValue jsCtx = toJS(ctx);
CodeBlock* codeBlock = jsCtx->codeBlock();
// Line
unsigned sourceOffset = codeBlock->sourceOffset();
// Source URL
SourceProvider* sourceProvider = codeBlock->source();
const String& url = sourceProvider->url();
JSC
、JSValue
、CodeBlock
、およびの定義が明らかに必要SourceProvider
です。私はこれらすべてを別々のヘッダーに持っていますが、それは本当に大規模です。
- これらのヘッダーを直接含める必要がありますか?
- これらのファイルに他のヘッダーが必要な場合はどうなりますか? 使用しない複数のヘッダーを持つことで終了する可能性があります。
- 内部ソース コードが変更される可能性があることは忘れましょう。