@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
45 lines (43 loc) • 7.39 kB
JavaScript
;
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 add_1 = require("./add");
const forEach_1 = require("./forEach");
const iterator_1 = require("./iterator");
class SetStorageInterface extends BuiltinInterface_1.BuiltinInterface {
}
class SetStorageValue extends BuiltinInstanceOf_1.BuiltinInstanceOf {
constructor() {
super(...arguments);
this.type = 'SetStorageConstructor';
}
emitInstanceOf(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.visit(node, options);
if (optionsIn.pushValue) {
sb.emitHelper(node, options, sb.helpers.isSetStorage);
sb.emitHelper(node, options, sb.helpers.wrapBoolean);
}
else {
sb.emitOp(node, 'DROP');
}
}
}
class SetStorageConstructorInterface extends BuiltinInterface_1.BuiltinInterface {
}
exports.add = (builtins) => {
builtins.addContractInterface('SetStorage', new SetStorageInterface());
builtins.addContractValue('SetStorage', new SetStorageValue());
builtins.addContractMember('SetStorage', '__@iterator', new iterator_1.SetStorageIterator());
builtins.addContractMember('SetStorage', 'forEach', new forEach_1.SetStorageForEach());
builtins.addContractMember('SetStorage', 'has', new storage_1.StorageHas(constants_1.Types.SetStorage));
builtins.addContractMember('SetStorage', 'delete', new storage_1.StorageDelete(constants_1.Types.SetStorage));
builtins.addContractMember('SetStorage', 'add', new add_1.SetStorageAdd());
builtins.addContractMember('SetStorage', 'at', new storage_1.StorageAt(constants_1.Types.SetStorage));
builtins.addContractInterface('SetStorageConstructor', new SetStorageConstructorInterface());
builtins.addContractMember('SetStorageConstructor', 'for', new storage_1.StorageFor(constants_1.Types.SetStorage));
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esa0RBQTJDO0FBRzNDLCtEQUE0RDtBQUM1RCw2REFBMEQ7QUFFMUQsd0NBQThFO0FBQzlFLCtCQUFzQztBQUN0Qyx1Q0FBOEM7QUFDOUMseUNBQWdEO0FBRWhELE1BQU0sbUJBQW9CLFNBQVEsbUNBQWdCO0NBQUc7QUFDckQsTUFBTSxlQUFnQixTQUFRLHFDQUFpQjtJQUEvQzs7UUFDa0IsU0FBSSxHQUFHLHVCQUF1QixDQUFDO0lBaUJqRCxDQUFDO0lBZlEsY0FBYyxDQUFDLEVBQWlCLEVBQUUsSUFBbUIsRUFBRSxTQUF1QjtRQUNuRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXRELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3REO2FBQU07WUFHTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FDRjtBQUNELE1BQU0sOEJBQStCLFNBQVEsbUNBQWdCO0NBQUc7QUFHbkQsUUFBQSxHQUFHLEdBQUcsQ0FBQyxRQUFrQixFQUFRLEVBQUU7SUFDOUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUN2RSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQztJQUMvRCxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxJQUFJLDZCQUFrQixFQUFFLENBQUMsQ0FBQztJQUNsRixRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLDJCQUFpQixFQUFFLENBQUMsQ0FBQztJQUM3RSxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLG9CQUFVLENBQUMsaUJBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksdUJBQWEsQ0FBQyxpQkFBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxtQkFBYSxFQUFFLENBQUMsQ0FBQztJQUNyRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLG1CQUFTLENBQUMsaUJBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLDhCQUE4QixFQUFFLENBQUMsQ0FBQztJQUM3RixRQUFRLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksb0JBQVUsQ0FBQyxpQkFBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvYnVpbHRpbnMvY29udHJhY3Qvc2V0U3RvcmFnZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCdWlsdGluSW5zdGFuY2VPZiB9IGZyb20gJy4uLy4uL0J1aWx0aW5JbnN0YW5jZU9mJztcbmltcG9ydCB7IEJ1aWx0aW5JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9CdWlsdGluSW50ZXJmYWNlJztcbmltcG9ydCB7IEJ1aWx0aW5zIH0gZnJvbSAnLi4vLi4vQnVpbHRpbnMnO1xuaW1wb3J0IHsgU3RvcmFnZUF0LCBTdG9yYWdlRGVsZXRlLCBTdG9yYWdlRm9yLCBTdG9yYWdlSGFzIH0gZnJvbSAnLi4vc3RvcmFnZSc7XG5pbXBvcnQgeyBTZXRTdG9yYWdlQWRkIH0gZnJvbSAnLi9hZGQnO1xuaW1wb3J0IHsgU2V0U3RvcmFnZUZvckVhY2ggfSBmcm9tICcuL2ZvckVhY2gnO1xuaW1wb3J0IHsgU2V0U3RvcmFnZUl0ZXJhdG9yIH0gZnJvbSAnLi9pdGVyYXRvcic7XG5cbmNsYXNzIFNldFN0b3JhZ2VJbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluSW50ZXJmYWNlIHt9XG5jbGFzcyBTZXRTdG9yYWdlVmFsdWUgZXh0ZW5kcyBCdWlsdGluSW5zdGFuY2VPZiB7XG4gIHB1YmxpYyByZWFkb25seSB0eXBlID0gJ1NldFN0b3JhZ2VDb25zdHJ1Y3Rvcic7XG5cbiAgcHVibGljIGVtaXRJbnN0YW5jZU9mKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5FeHByZXNzaW9uLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgLy8gW3ZhbF1cbiAgICBzYi52aXNpdChub2RlLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9uc0luLnB1c2hWYWx1ZSkge1xuICAgICAgLy8gW2Jvb2xlYW5dXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuaXNTZXRTdG9yYWdlKTtcbiAgICAgIC8vIFt2YWxdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMud3JhcEJvb2xlYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBbXVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgIH1cbiAgfVxufVxuY2xhc3MgU2V0U3RvcmFnZUNvbnN0cnVjdG9ySW50ZXJmYWNlIGV4dGVuZHMgQnVpbHRpbkludGVyZmFjZSB7fVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjb25zdCBhZGQgPSAoYnVpbHRpbnM6IEJ1aWx0aW5zKTogdm9pZCA9PiB7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0SW50ZXJmYWNlKCdTZXRTdG9yYWdlJywgbmV3IFNldFN0b3JhZ2VJbnRlcmZhY2UoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0VmFsdWUoJ1NldFN0b3JhZ2UnLCBuZXcgU2V0U3RvcmFnZVZhbHVlKCkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignU2V0U3RvcmFnZScsICdfX0BpdGVyYXRvcicsIG5ldyBTZXRTdG9yYWdlSXRlcmF0b3IoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0TWVtYmVyKCdTZXRTdG9yYWdlJywgJ2ZvckVhY2gnLCBuZXcgU2V0U3RvcmFnZUZvckVhY2goKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0TWVtYmVyKCdTZXRTdG9yYWdlJywgJ2hhcycsIG5ldyBTdG9yYWdlSGFzKFR5cGVzLlNldFN0b3JhZ2UpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoJ1NldFN0b3JhZ2UnLCAnZGVsZXRlJywgbmV3IFN0b3JhZ2VEZWxldGUoVHlwZXMuU2V0U3RvcmFnZSkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignU2V0U3RvcmFnZScsICdhZGQnLCBuZXcgU2V0U3RvcmFnZUFkZCgpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoJ1NldFN0b3JhZ2UnLCAnYXQnLCBuZXcgU3RvcmFnZUF0KFR5cGVzLlNldFN0b3JhZ2UpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RJbnRlcmZhY2UoJ1NldFN0b3JhZ2VDb25zdHJ1Y3RvcicsIG5ldyBTZXRTdG9yYWdlQ29uc3RydWN0b3JJbnRlcmZhY2UoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0TWVtYmVyKCdTZXRTdG9yYWdlQ29uc3RydWN0b3InLCAnZm9yJywgbmV3IFN0b3JhZ2VGb3IoVHlwZXMuU2V0U3RvcmFnZSkpO1xufTtcbiJdfQ==