UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

44 lines (42 loc) 2.04 kB
import { Types } from '../../../constants'; import { BuiltinInstanceOf } from '../../BuiltinInstanceOf'; import { BuiltinInterface } from '../../BuiltinInterface'; import { StorageAt, StorageDelete, StorageFor, StorageForEach, StorageHas } from '../storage'; import { MapStorageGet } from './get'; import { MapStorageIterator } from './iterator'; import { MapStorageSet } from './set'; class MapStorageInterface extends BuiltinInterface { } class MapStorageValue extends 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 { } export const add = (builtins) => { builtins.addContractInterface('MapStorage', new MapStorageInterface()); builtins.addContractValue('MapStorage', new MapStorageValue()); builtins.addContractMember('MapStorage', '__@iterator', new MapStorageIterator()); builtins.addContractMember('MapStorage', 'forEach', new StorageForEach(Types.MapStorage)); builtins.addContractMember('MapStorage', 'get', new MapStorageGet()); builtins.addContractMember('MapStorage', 'has', new StorageHas(Types.MapStorage)); builtins.addContractMember('MapStorage', 'delete', new StorageDelete(Types.MapStorage)); builtins.addContractMember('MapStorage', 'set', new MapStorageSet()); builtins.addContractMember('MapStorage', 'at', new StorageAt(Types.MapStorage)); builtins.addContractInterface('MapStorageConstructor', new MapStorageConstructorInterface()); builtins.addContractMember('MapStorageConstructor', 'for', new StorageFor(Types.MapStorage)); }; //# sourceMappingURL=index.js.map