高度なAPI

このセクションでは、一般的な用途には適さないが、状況によっては開発者にとって有用なAPIをリストしています。これには、使用が困難または複雑なAPI、または主にEmscriptenコアの開発者を対象としたAPIが含まれます。

settings.js

settings.jsには、コンパイラによって様々な場所で利用されるデフォルト値とオプションが含まれています。

警告

多くのsettings.jsオプションは非常に脆いです。特定のオプションの組み合わせ、および特定のソースコードで使用される特定のオプションの組み合わせによって、Emscriptenが深刻なエラーを起こす可能性があります。これは「上級ユーザー」のみ、ひょっとしたらEmscripten自体の開発者のみを対象としています。

settings.jsのオプションは通常、emccのコマンドラインパラメータとして設定されます。

emcc -sOPT=VALUE

settings.jsを手動で編集することは可能ですが、強くお勧めしません。一般的に、settings.jsは変更すべきではない低レベルのオプションを定義しています。また、コンパイラは他の設定に応じて一部のオプションを変更することに注意してください。たとえば、ASSERTIONSはデフォルトで有効になっていますが、最適化されたビルド(-O1+)では無効になります。

注記

Emscriptenの設定に使用できるオプションの詳細については、src/settings.jsを参照するか、emsettingsページをご覧ください。

preamble.js

以下の高度なAPIはpreamble.jsで説明されています。

allocate(slab, allocator)

これは、使用が困難であるため(生成されたコードのサイズを節約するために複数の構文に対して最適化されている)内部関数としてマークされています。通常、開発者は代わりに_malloc()を使用してメモリを割り当て、setValue()などで初期化する必要がありますが、この関数は高度な開発者にとって特定のケースで有用な場合があります。

引数
  • slab – データの配列、または数値。数値の場合、割り当てるブロックのサイズ(バイト単位)。

  • allocator – メモリの割り当て方法、ALLOC_*を参照。

高度なファイルシステムAPI

ファイルシステムAPIは、ほとんどの開発者にとって関連する公開APIをカバーしています。以下の関数は、高度なユースケース(新しいローカルファイルシステムの作成など)またはレガシーファイルシステムの互換性のためにのみ必要です。

FS.hashName(parentid, name)
FS.hashAddNode(node)
FS.hashRemoveNode(node)
FS.lookupNode(parent, name)
FS.createNode(parent, name, mode, rdev)
FS.destroyNode(node)
FS.isRoot(node)
FS.isMountpoint(node)
FS.isFIFO(node)
FS.nextfd()
FS.getStream(fd)
FS.createStream(stream, fd)
FS.closeStream(fd)
FS.getStreamFromPtr(ptr)
FS.getPtrForStream(stream)
FS.major(dev)
FS.minor(dev)
FS.getDevice(dev)
FS.getMounts(mount)
FS.lookup(parent, name)
FS.mknod(path, mode, dev)
FS.create(path, mode)
FS.allocate(stream, offset, length)
FS.mmap(stream, buffer, offset, length, position, prot, flags)
FS.ioctl(stream, cmd, arg)
FS.staticInit()
FS.quit()
FS.indexedDB()
FS.DB_NAME()

上級ユーザーのみ。

FS.getMode(canRead, canWrite)
FS.findObject(path, dontResolveLastLink)
FS.createPath(parent, path, canRead, canWrite)
FS.createFile(parent, name, properties, canRead, canWrite)
FS.createDataFile(parent, name, data, canRead, canWrite, canOwn)
FS.createDevice(parent, name, input, output)
FS.forceLoadFile(obj)

レガシーv1互換関数。

その他、少数の追加フラグモードがあります。

  • rs

  • xw

  • xw+

  • xa

  • xa+