@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
47 lines (45 loc) • 6.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const BuiltinInstanceOf_1 = require("../BuiltinInstanceOf");
const BuiltinInterface_1 = require("../BuiltinInterface");
const concat_1 = require("./concat");
const equals_1 = require("./equals");
const from_1 = require("./from");
const length_1 = require("./length");
const slice_1 = require("./slice");
const toInteger_1 = require("./toInteger");
const toString_1 = require("./toString");
class BufferInterface extends BuiltinInterface_1.BuiltinInterface {
}
class BufferValue extends BuiltinInstanceOf_1.BuiltinInstanceOf {
constructor() {
super(...arguments);
this.type = 'BufferConstructor';
}
emitInstanceOf(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.visit(node, options);
if (optionsIn.pushValue) {
sb.emitHelper(node, options, sb.helpers.isBuffer);
sb.emitHelper(node, options, sb.helpers.wrapBoolean);
}
else {
sb.emitOp(node, 'DROP');
}
}
}
class BufferConstructorInterface extends BuiltinInterface_1.BuiltinInterface {
}
exports.add = (builtins) => {
builtins.addInterface('Buffer', new BufferInterface());
builtins.addValue('Buffer', new BufferValue());
builtins.addGlobalMember('Buffer', 'equals', new equals_1.BufferEquals());
builtins.addGlobalMember('Buffer', 'length', new length_1.BufferLength());
builtins.addGlobalMember('Buffer', 'slice', new slice_1.BufferSlice());
builtins.addGlobalMember('Buffer', 'toInteger', new toInteger_1.BufferToInteger());
builtins.addGlobalMember('Buffer', 'toString', new toString_1.BufferToString());
builtins.addInterface('BufferConstructor', new BufferConstructorInterface());
builtins.addGlobalMember('BufferConstructor', 'concat', new concat_1.BufferConcat());
builtins.addGlobalMember('BufferConstructor', 'from', new from_1.BufferFrom());
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsNERBQXlEO0FBQ3pELDBEQUF1RDtBQUV2RCxxQ0FBd0M7QUFDeEMscUNBQXdDO0FBQ3hDLGlDQUFvQztBQUNwQyxxQ0FBd0M7QUFDeEMsbUNBQXNDO0FBQ3RDLDJDQUE4QztBQUM5Qyx5Q0FBNEM7QUFFNUMsTUFBTSxlQUFnQixTQUFRLG1DQUFnQjtDQUFHO0FBQ2pELE1BQU0sV0FBWSxTQUFRLHFDQUFpQjtJQUEzQzs7UUFDa0IsU0FBSSxHQUFHLG1CQUFtQixDQUFDO0lBaUI3QyxDQUFDO0lBZlEsY0FBYyxDQUFDLEVBQWlCLEVBQUUsSUFBbUIsRUFBRSxTQUF1QjtRQUNuRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWxELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3REO2FBQU07WUFHTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FDRjtBQUNELE1BQU0sMEJBQTJCLFNBQVEsbUNBQWdCO0NBQUc7QUFHL0MsUUFBQSxHQUFHLEdBQUcsQ0FBQyxRQUFrQixFQUFRLEVBQUU7SUFDOUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMvQyxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxxQkFBWSxFQUFFLENBQUMsQ0FBQztJQUNqRSxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxxQkFBWSxFQUFFLENBQUMsQ0FBQztJQUNqRSxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxtQkFBVyxFQUFFLENBQUMsQ0FBQztJQUMvRCxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSwyQkFBZSxFQUFFLENBQUMsQ0FBQztJQUN2RSxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSx5QkFBYyxFQUFFLENBQUMsQ0FBQztJQUNyRSxRQUFRLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLElBQUksMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLFFBQVEsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLElBQUkscUJBQVksRUFBRSxDQUFDLENBQUM7SUFDNUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxpQkFBVSxFQUFFLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9idWZmZXIvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQnVpbHRpbkluc3RhbmNlT2YgfSBmcm9tICcuLi9CdWlsdGluSW5zdGFuY2VPZic7XG5pbXBvcnQgeyBCdWlsdGluSW50ZXJmYWNlIH0gZnJvbSAnLi4vQnVpbHRpbkludGVyZmFjZSc7XG5pbXBvcnQgeyBCdWlsdGlucyB9IGZyb20gJy4uL0J1aWx0aW5zJztcbmltcG9ydCB7IEJ1ZmZlckNvbmNhdCB9IGZyb20gJy4vY29uY2F0JztcbmltcG9ydCB7IEJ1ZmZlckVxdWFscyB9IGZyb20gJy4vZXF1YWxzJztcbmltcG9ydCB7IEJ1ZmZlckZyb20gfSBmcm9tICcuL2Zyb20nO1xuaW1wb3J0IHsgQnVmZmVyTGVuZ3RoIH0gZnJvbSAnLi9sZW5ndGgnO1xuaW1wb3J0IHsgQnVmZmVyU2xpY2UgfSBmcm9tICcuL3NsaWNlJztcbmltcG9ydCB7IEJ1ZmZlclRvSW50ZWdlciB9IGZyb20gJy4vdG9JbnRlZ2VyJztcbmltcG9ydCB7IEJ1ZmZlclRvU3RyaW5nIH0gZnJvbSAnLi90b1N0cmluZyc7XG5cbmNsYXNzIEJ1ZmZlckludGVyZmFjZSBleHRlbmRzIEJ1aWx0aW5JbnRlcmZhY2Uge31cbmNsYXNzIEJ1ZmZlclZhbHVlIGV4dGVuZHMgQnVpbHRpbkluc3RhbmNlT2Yge1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdCdWZmZXJDb25zdHJ1Y3Rvcic7XG5cbiAgcHVibGljIGVtaXRJbnN0YW5jZU9mKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5FeHByZXNzaW9uLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgLy8gW3ZhbF1cbiAgICBzYi52aXNpdChub2RlLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9uc0luLnB1c2hWYWx1ZSkge1xuICAgICAgLy8gW2Jvb2xlYW5dXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuaXNCdWZmZXIpO1xuICAgICAgLy8gW3ZhbF1cbiAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy53cmFwQm9vbGVhbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFtdXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgfVxuICB9XG59XG5jbGFzcyBCdWZmZXJDb25zdHJ1Y3RvckludGVyZmFjZSBleHRlbmRzIEJ1aWx0aW5JbnRlcmZhY2Uge31cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIGV4cG9ydC1uYW1lXG5leHBvcnQgY29uc3QgYWRkID0gKGJ1aWx0aW5zOiBCdWlsdGlucyk6IHZvaWQgPT4ge1xuICBidWlsdGlucy5hZGRJbnRlcmZhY2UoJ0J1ZmZlcicsIG5ldyBCdWZmZXJJbnRlcmZhY2UoKSk7XG4gIGJ1aWx0aW5zLmFkZFZhbHVlKCdCdWZmZXInLCBuZXcgQnVmZmVyVmFsdWUoKSk7XG4gIGJ1aWx0aW5zLmFkZEdsb2JhbE1lbWJlcignQnVmZmVyJywgJ2VxdWFscycsIG5ldyBCdWZmZXJFcXVhbHMoKSk7XG4gIGJ1aWx0aW5zLmFkZEdsb2JhbE1lbWJlcignQnVmZmVyJywgJ2xlbmd0aCcsIG5ldyBCdWZmZXJMZW5ndGgoKSk7XG4gIGJ1aWx0aW5zLmFkZEdsb2JhbE1lbWJlcignQnVmZmVyJywgJ3NsaWNlJywgbmV3IEJ1ZmZlclNsaWNlKCkpO1xuICBidWlsdGlucy5hZGRHbG9iYWxNZW1iZXIoJ0J1ZmZlcicsICd0b0ludGVnZXInLCBuZXcgQnVmZmVyVG9JbnRlZ2VyKCkpO1xuICBidWlsdGlucy5hZGRHbG9iYWxNZW1iZXIoJ0J1ZmZlcicsICd0b1N0cmluZycsIG5ldyBCdWZmZXJUb1N0cmluZygpKTtcbiAgYnVpbHRpbnMuYWRkSW50ZXJmYWNlKCdCdWZmZXJDb25zdHJ1Y3RvcicsIG5ldyBCdWZmZXJDb25zdHJ1Y3RvckludGVyZmFjZSgpKTtcbiAgYnVpbHRpbnMuYWRkR2xvYmFsTWVtYmVyKCdCdWZmZXJDb25zdHJ1Y3RvcicsICdjb25jYXQnLCBuZXcgQnVmZmVyQ29uY2F0KCkpO1xuICBidWlsdGlucy5hZGRHbG9iYWxNZW1iZXIoJ0J1ZmZlckNvbnN0cnVjdG9yJywgJ2Zyb20nLCBuZXcgQnVmZmVyRnJvbSgpKTtcbn07XG4iXX0=