interface Literal { void Literal(double x); double getf64(); }; interface Name { void Name(DOMString x); [Const] DOMString c_str(); }; interface Module { void Module(); }; [Prefix="ModuleInstance::", NoDelete] interface ExternalInterface { }; interface ShellExternalInterface { void ShellExternalInterface(); }; ShellExternalInterface implements ExternalInterface; interface ModuleInstance { void ModuleInstance([Ref] Module m, ExternalInterface i); [Value] Literal callExport([Ref] Name name, [Ref] LiteralList arguments); }; interface BufferWithRandomAccess { void BufferWithRandomAccess(boolean debug); unsigned long size(); [Operator="[]"] octet at(unsigned long index); }; interface WasmBinaryWriter { void WasmBinaryWriter(Module m, [Ref] BufferWithRandomAccess outbuf, boolean debug); void write(); }; interface LiteralList { void LiteralList(); void push_back([Ref] Literal l); }; // S-Expressions interface Element { boolean isList(); boolean isStr(); void dump(); // list methods [Operator="[]"] Element getChild(long i); long size(); // string methods [Const] DOMString c_str(); }; interface SExpressionParser { void SExpressionParser(DOMString input); attribute Element root; }; interface SExpressionWasmBuilder { void SExpressionWasmBuilder([Ref] Module wasm, [Ref] Element input); }; // Wasm printing interface WasmPrinter { static void printModule(Module m); };