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