UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

45 lines (43 loc) 7.17 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 iterator_1 = require("./iterator"); const length_1 = require("./length"); const pop_1 = require("./pop"); const push_1 = require("./push"); class ArrayStorageInterface extends BuiltinInterface_1.BuiltinInterface { } class ArrayStorageValue extends BuiltinInstanceOf_1.BuiltinInstanceOf { constructor() { super(...arguments); this.type = 'ArrayStorageConstructor'; } emitInstanceOf(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.visit(node, options); if (optionsIn.pushValue) { sb.emitHelper(node, options, sb.helpers.isArrayStorage); sb.emitHelper(node, options, sb.helpers.wrapBoolean); } else { sb.emitOp(node, 'DROP'); } } } class ArrayStorageConstructorInterface extends BuiltinInterface_1.BuiltinInterface { } exports.add = (builtins) => { builtins.addContractInterface('ArrayStorage', new ArrayStorageInterface()); builtins.addContractValue('ArrayStorage', new ArrayStorageValue()); builtins.addContractMember('ArrayStorage', '__@iterator', new iterator_1.ArrayStorageIterator()); builtins.addContractMember('ArrayStorage', 'forEach', new storage_1.StorageForEach(constants_1.Types.ArrayStorage)); builtins.addContractMember('ArrayStorage', 'length', new length_1.ArrayStorageLength()); builtins.addContractMember('ArrayStorage', 'push', new push_1.ArrayStoragePush()); builtins.addContractMember('ArrayStorage', 'pop', new pop_1.ArrayStoragePop()); builtins.addContractInterface('ArrayStorageConstructor', new ArrayStorageConstructorInterface()); builtins.addContractMember('ArrayStorageConstructor', 'for', new storage_1.StorageFor(constants_1.Types.ArrayStorage)); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esa0RBQTJDO0FBRzNDLCtEQUE0RDtBQUM1RCw2REFBMEQ7QUFFMUQsd0NBQXdEO0FBQ3hELHlDQUFrRDtBQUNsRCxxQ0FBOEM7QUFDOUMsK0JBQXdDO0FBQ3hDLGlDQUEwQztBQUUxQyxNQUFNLHFCQUFzQixTQUFRLG1DQUFnQjtDQUFHO0FBQ3ZELE1BQU0saUJBQWtCLFNBQVEscUNBQWlCO0lBQWpEOztRQUNrQixTQUFJLEdBQUcseUJBQXlCLENBQUM7SUFpQm5ELENBQUM7SUFmUSxjQUFjLENBQUMsRUFBaUIsRUFBRSxJQUFtQixFQUFFLFNBQXVCO1FBQ25GLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFFdkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFeEQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUdMLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztDQUNGO0FBQ0QsTUFBTSxnQ0FBaUMsU0FBUSxtQ0FBZ0I7Q0FBRztBQUdyRCxRQUFBLEdBQUcsR0FBRyxDQUFDLFFBQWtCLEVBQVEsRUFBRTtJQUM5QyxRQUFRLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDbkUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsSUFBSSwrQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDdEYsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSx3QkFBYyxDQUFDLGlCQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM5RixRQUFRLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLDJCQUFrQixFQUFFLENBQUMsQ0FBQztJQUMvRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxJQUFJLHVCQUFnQixFQUFFLENBQUMsQ0FBQztJQUMzRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLHFCQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLENBQUMsQ0FBQztJQUNqRyxRQUFRLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLElBQUksb0JBQVUsQ0FBQyxpQkFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDbkcsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvYnVpbHRpbnMvY29udHJhY3QvYXJyYXlTdG9yYWdlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEJ1aWx0aW5JbnN0YW5jZU9mIH0gZnJvbSAnLi4vLi4vQnVpbHRpbkluc3RhbmNlT2YnO1xuaW1wb3J0IHsgQnVpbHRpbkludGVyZmFjZSB9IGZyb20gJy4uLy4uL0J1aWx0aW5JbnRlcmZhY2UnO1xuaW1wb3J0IHsgQnVpbHRpbnMgfSBmcm9tICcuLi8uLi9CdWlsdGlucyc7XG5pbXBvcnQgeyBTdG9yYWdlRm9yLCBTdG9yYWdlRm9yRWFjaCB9IGZyb20gJy4uL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQXJyYXlTdG9yYWdlSXRlcmF0b3IgfSBmcm9tICcuL2l0ZXJhdG9yJztcbmltcG9ydCB7IEFycmF5U3RvcmFnZUxlbmd0aCB9IGZyb20gJy4vbGVuZ3RoJztcbmltcG9ydCB7IEFycmF5U3RvcmFnZVBvcCB9IGZyb20gJy4vcG9wJztcbmltcG9ydCB7IEFycmF5U3RvcmFnZVB1c2ggfSBmcm9tICcuL3B1c2gnO1xuXG5jbGFzcyBBcnJheVN0b3JhZ2VJbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluSW50ZXJmYWNlIHt9XG5jbGFzcyBBcnJheVN0b3JhZ2VWYWx1ZSBleHRlbmRzIEJ1aWx0aW5JbnN0YW5jZU9mIHtcbiAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSAnQXJyYXlTdG9yYWdlQ29uc3RydWN0b3InO1xuXG4gIHB1YmxpYyBlbWl0SW5zdGFuY2VPZihzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuRXhwcmVzc2lvbiwgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuICAgIC8vIFt2YWxdXG4gICAgc2IudmlzaXQobm9kZSwgb3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnNJbi5wdXNoVmFsdWUpIHtcbiAgICAgIC8vIFtib29sZWFuXVxuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmlzQXJyYXlTdG9yYWdlKTtcbiAgICAgIC8vIFt2YWxdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMud3JhcEJvb2xlYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBbXVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgIH1cbiAgfVxufVxuY2xhc3MgQXJyYXlTdG9yYWdlQ29uc3RydWN0b3JJbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluSW50ZXJmYWNlIHt9XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBleHBvcnQtbmFtZVxuZXhwb3J0IGNvbnN0IGFkZCA9IChidWlsdGluczogQnVpbHRpbnMpOiB2b2lkID0+IHtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RJbnRlcmZhY2UoJ0FycmF5U3RvcmFnZScsIG5ldyBBcnJheVN0b3JhZ2VJbnRlcmZhY2UoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0VmFsdWUoJ0FycmF5U3RvcmFnZScsIG5ldyBBcnJheVN0b3JhZ2VWYWx1ZSgpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoJ0FycmF5U3RvcmFnZScsICdfX0BpdGVyYXRvcicsIG5ldyBBcnJheVN0b3JhZ2VJdGVyYXRvcigpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoJ0FycmF5U3RvcmFnZScsICdmb3JFYWNoJywgbmV3IFN0b3JhZ2VGb3JFYWNoKFR5cGVzLkFycmF5U3RvcmFnZSkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignQXJyYXlTdG9yYWdlJywgJ2xlbmd0aCcsIG5ldyBBcnJheVN0b3JhZ2VMZW5ndGgoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0TWVtYmVyKCdBcnJheVN0b3JhZ2UnLCAncHVzaCcsIG5ldyBBcnJheVN0b3JhZ2VQdXNoKCkpO1xuICBidWlsdGlucy5hZGRDb250cmFjdE1lbWJlcignQXJyYXlTdG9yYWdlJywgJ3BvcCcsIG5ldyBBcnJheVN0b3JhZ2VQb3AoKSk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0SW50ZXJmYWNlKCdBcnJheVN0b3JhZ2VDb25zdHJ1Y3RvcicsIG5ldyBBcnJheVN0b3JhZ2VDb25zdHJ1Y3RvckludGVyZmFjZSgpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoJ0FycmF5U3RvcmFnZUNvbnN0cnVjdG9yJywgJ2ZvcicsIG5ldyBTdG9yYWdlRm9yKFR5cGVzLkFycmF5U3RvcmFnZSkpO1xufTtcbiJdfQ==