blob: d5bd34ddc36e4d64a58072295a432f03e87939c3 [file] [log] [blame]
import { Container } from "./container.js";
import { Operation } from "./operation.js";
import { Constant } from "./constant.js";
export class CallbackInterface extends Container {
/**
* @param {import("../tokeniser.js").Tokeniser} tokeniser
* @param {*} callback
* @param {object} [options]
* @param {import("./container.js").AllowedMember[]} [options.extMembers]
*/
static parse(tokeniser, callback, { extMembers = [] } = {}) {
const tokens = { callback };
tokens.base = tokeniser.consume("interface");
if (!tokens.base) {
return;
}
return Container.parse(
tokeniser,
new CallbackInterface({ source: tokeniser.source, tokens }),
{
allowedMembers: [
...extMembers,
[Constant.parse],
[Operation.parse, { regular: true }],
],
},
);
}
get type() {
return "callback interface";
}
}