@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
45 lines (43 loc) • 7.17 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 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==