UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

46 lines (44 loc) 7.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../../constants"); const BuiltinInstanceOf_1 = require("../../BuiltinInstanceOf"); const BuiltinInterface_1 = require("../../BuiltinInterface"); const storage_1 = require("../storage"); const get_1 = require("./get"); const iterator_1 = require("./iterator"); const set_1 = require("./set"); class MapStorageInterface extends BuiltinInterface_1.BuiltinInterface { } class MapStorageValue extends BuiltinInstanceOf_1.BuiltinInstanceOf { constructor() { super(...arguments); this.type = 'MapStorageConstructor'; } emitInstanceOf(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.visit(node, options); if (optionsIn.pushValue) { sb.emitHelper(node, options, sb.helpers.isMapStorage); sb.emitHelper(node, options, sb.helpers.wrapBoolean); } else { sb.emitOp(node, 'DROP'); } } } class MapStorageConstructorInterface extends BuiltinInterface_1.BuiltinInterface { } exports.add = (builtins) => { builtins.addContractInterface('MapStorage', new MapStorageInterface()); builtins.addContractValue('MapStorage', new MapStorageValue()); builtins.addContractMember('MapStorage', '__@iterator', new iterator_1.MapStorageIterator()); builtins.addContractMember('MapStorage', 'forEach', new storage_1.StorageForEach(constants_1.Types.MapStorage)); builtins.addContractMember('MapStorage', 'get', new get_1.MapStorageGet()); builtins.addContractMember('MapStorage', 'has', new storage_1.StorageHas(constants_1.Types.MapStorage)); builtins.addContractMember('MapStorage', 'delete', new storage_1.StorageDelete(constants_1.Types.MapStorage)); builtins.addContractMember('MapStorage', 'set', new set_1.MapStorageSet()); builtins.addContractMember('MapStorage', 'at', new storage_1.StorageAt(constants_1.Types.MapStorage)); builtins.addContractInterface('MapStorageConstructor', new MapStorageConstructorInterface()); builtins.addContractMember('MapStorageConstructor', 'for', new storage_1.StorageFor(constants_1.Types.MapStorage)); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esa0RBQTJDO0FBRzNDLCtEQUE0RDtBQUM1RCw2REFBMEQ7QUFFMUQsd0NBQThGO0FBQzlGLCtCQUFzQztBQUN0Qyx5Q0FBZ0Q7QUFDaEQsK0JBQXNDO0FBRXRDLE1BQU0sbUJBQW9CLFNBQVEsbUNBQWdCO0NBQUc7QUFDckQsTUFBTSxlQUFnQixTQUFRLHFDQUFpQjtJQUEvQzs7UUFDa0IsU0FBSSxHQUFHLHVCQUF1QixDQUFDO0lBaUJqRCxDQUFDO0lBZlEsY0FBYyxDQUFDLEVBQWlCLEVBQUUsSUFBbUIsRUFBRSxTQUF1QjtRQUNuRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXRELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3REO2FBQU07WUFHTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FDRjtBQUNELE1BQU0sOEJBQStCLFNBQVEsbUNBQWdCO0NBQUc7QUFHbkQsUUFBQSxHQUFHLEdBQUcsQ0FBQyxRQUFrQixFQUFRLEVBQUU7SUFDOUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUN2RSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQztJQUMvRCxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxJQUFJLDZCQUFrQixFQUFFLENBQUMsQ0FBQztJQUNsRixRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLHdCQUFjLENBQUMsaUJBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksbUJBQWEsRUFBRSxDQUFDLENBQUM7SUFDckUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxvQkFBVSxDQUFDLGlCQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRixRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLHVCQUFhLENBQUMsaUJBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksbUJBQWEsRUFBRSxDQUFDLENBQUM7SUFDckUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxtQkFBUyxDQUFDLGlCQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNoRixRQUFRLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLEVBQUUsSUFBSSw4QkFBOEIsRUFBRSxDQUFDLENBQUM7SUFDN0YsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLG9CQUFVLENBQUMsaUJBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQy9GLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2J1aWx0aW5zL2NvbnRyYWN0L21hcFN0b3JhZ2UvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQnVpbHRpbkluc3RhbmNlT2YgfSBmcm9tICcuLi8uLi9CdWlsdGluSW5zdGFuY2VPZic7XG5pbXBvcnQgeyBCdWlsdGluSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vQnVpbHRpbkludGVyZmFjZSc7XG5pbXBvcnQgeyBCdWlsdGlucyB9IGZyb20gJy4uLy4uL0J1aWx0aW5zJztcbmltcG9ydCB7IFN0b3JhZ2VBdCwgU3RvcmFnZURlbGV0ZSwgU3RvcmFnZUZvciwgU3RvcmFnZUZvckVhY2gsIFN0b3JhZ2VIYXMgfSBmcm9tICcuLi9zdG9yYWdlJztcbmltcG9ydCB7IE1hcFN0b3JhZ2VHZXQgfSBmcm9tICcuL2dldCc7XG5pbXBvcnQgeyBNYXBTdG9yYWdlSXRlcmF0b3IgfSBmcm9tICcuL2l0ZXJhdG9yJztcbmltcG9ydCB7IE1hcFN0b3JhZ2VTZXQgfSBmcm9tICcuL3NldCc7XG5cbmNsYXNzIE1hcFN0b3JhZ2VJbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluSW50ZXJmYWNlIHt9XG5jbGFzcyBNYXBTdG9yYWdlVmFsdWUgZXh0ZW5kcyBCdWlsdGluSW5zdGFuY2VPZiB7XG4gIHB1YmxpYyByZWFkb25seSB0eXBlID0gJ01hcFN0b3JhZ2VDb25zdHJ1Y3Rvcic7XG5cbiAgcHVibGljIGVtaXRJbnN0YW5jZU9mKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5FeHByZXNzaW9uLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgLy8gW3ZhbF1cbiAgICBzYi52aXNpdChub2RlLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9uc0luLnB1c2hWYWx1ZSkge1xuICAgICAgLy8gW2Jvb2xlYW5dXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuaXNNYXBTdG9yYWdlKTtcbiAgICAgIC8vIFt2YWxdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMud3JhcEJvb2xlYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBbXVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgIH1cbiAgfVxufVxuY2xhc3MgTWFwU3RvcmFnZUNvbnN0cnVjdG9ySW50ZXJmYWNlIGV4dGVuZHMgQnVpbHRpbkludGVyZmFjZSB7fVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjb25zdCBhZGQgPSAoYnVpbHRpbnM6IEJ1aWx0aW5zKTogdm9pZCA9PiB7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0SW50ZXJmYWNlKCdNYXBTdG9yYWdlJywgbmV3IE1hcFN0b3JhZ2VJbnRlcmZhY2UoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0VmFsdWUoJ01hcFN0b3JhZ2UnLCBuZXcgTWFwU3RvcmFnZVZhbHVlKCkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignTWFwU3RvcmFnZScsICdfX0BpdGVyYXRvcicsIG5ldyBNYXBTdG9yYWdlSXRlcmF0b3IoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0TWVtYmVyKCdNYXBTdG9yYWdlJywgJ2ZvckVhY2gnLCBuZXcgU3RvcmFnZUZvckVhY2goVHlwZXMuTWFwU3RvcmFnZSkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignTWFwU3RvcmFnZScsICdnZXQnLCBuZXcgTWFwU3RvcmFnZUdldCgpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoJ01hcFN0b3JhZ2UnLCAnaGFzJywgbmV3IFN0b3JhZ2VIYXMoVHlwZXMuTWFwU3RvcmFnZSkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignTWFwU3RvcmFnZScsICdkZWxldGUnLCBuZXcgU3RvcmFnZURlbGV0ZShUeXBlcy5NYXBTdG9yYWdlKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0TWVtYmVyKCdNYXBTdG9yYWdlJywgJ3NldCcsIG5ldyBNYXBTdG9yYWdlU2V0KCkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignTWFwU3RvcmFnZScsICdhdCcsIG5ldyBTdG9yYWdlQXQoVHlwZXMuTWFwU3RvcmFnZSkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdEludGVyZmFjZSgnTWFwU3RvcmFnZUNvbnN0cnVjdG9yJywgbmV3IE1hcFN0b3JhZ2VDb25zdHJ1Y3RvckludGVyZmFjZSgpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoJ01hcFN0b3JhZ2VDb25zdHJ1Y3RvcicsICdmb3InLCBuZXcgU3RvcmFnZUZvcihUeXBlcy5NYXBTdG9yYWdlKSk7XG59O1xuIl19