@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
46 lines (44 loc) • 7.74 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 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