@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
43 lines (41 loc) • 1.92 kB
JavaScript
import { Types } from '../../../constants';
import { BuiltinInstanceOf } from '../../BuiltinInstanceOf';
import { BuiltinInterface } from '../../BuiltinInterface';
import { StorageFor, StorageForEach } from '../storage';
import { ArrayStorageIterator } from './iterator';
import { ArrayStorageLength } from './length';
import { ArrayStoragePop } from './pop';
import { ArrayStoragePush } from './push';
class ArrayStorageInterface extends BuiltinInterface {
}
class ArrayStorageValue extends 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 {
}
export const add = (builtins) => {
builtins.addContractInterface('ArrayStorage', new ArrayStorageInterface());
builtins.addContractValue('ArrayStorage', new ArrayStorageValue());
builtins.addContractMember('ArrayStorage', '__@iterator', new ArrayStorageIterator());
builtins.addContractMember('ArrayStorage', 'forEach', new StorageForEach(Types.ArrayStorage));
builtins.addContractMember('ArrayStorage', 'length', new ArrayStorageLength());
builtins.addContractMember('ArrayStorage', 'push', new ArrayStoragePush());
builtins.addContractMember('ArrayStorage', 'pop', new ArrayStoragePop());
builtins.addContractInterface('ArrayStorageConstructor', new ArrayStorageConstructorInterface());
builtins.addContractMember('ArrayStorageConstructor', 'for', new StorageFor(Types.ArrayStorage));
};
//# sourceMappingURL=index.js.map