@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
69 lines (67 loc) • 8.54 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const TypedHelper_1 = require("../TypedHelper");
class ToBooleanHelper extends TypedHelper_1.TypedHelper {
emit(sb, node, options) {
if (!options.pushValue) {
sb.emitOp(node, 'DROP');
return;
}
const convertUndefinedOrNull = () => {
sb.emitOp(node, 'DROP');
sb.emitPushBoolean(node, false);
};
const convertBoolean = (innerOptions) => {
sb.emitHelper(node, innerOptions, sb.helpers.unwrapBoolean);
};
const convertNumber = (innerOptions) => {
sb.emitHelper(node, innerOptions, sb.helpers.unwrapNumber);
sb.emitPushInt(node, 0);
sb.emitOp(node, 'NUMNOTEQUAL');
};
const convertString = (innerOptions) => {
sb.emitHelper(node, innerOptions, sb.helpers.unwrapString);
sb.emitPushString(node, '');
sb.emitOp(node, 'EQUAL');
sb.emitOp(node, 'NOT');
};
const convertOther = () => {
sb.emitOp(node, 'DROP');
sb.emitPushBoolean(node, true);
};
sb.emitHelper(node, options, sb.helpers.forBuiltinType({
type: this.type,
knownType: this.knownType,
array: convertOther,
arrayStorage: convertOther,
boolean: convertBoolean,
buffer: convertOther,
null: convertUndefinedOrNull,
number: convertNumber,
object: convertOther,
string: convertString,
symbol: convertOther,
undefined: convertUndefinedOrNull,
map: convertOther,
mapStorage: convertOther,
set: convertOther,
setStorage: convertOther,
error: convertOther,
forwardValue: convertOther,
iteratorResult: convertOther,
iterable: convertOther,
iterableIterator: convertOther,
transaction: convertOther,
output: convertOther,
attribute: convertOther,
input: convertOther,
account: convertOther,
asset: convertOther,
contract: convertOther,
header: convertOther,
block: convertOther,
}));
}
}
exports.ToBooleanHelper = ToBooleanHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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RSxZQUFZO1lBQ3BCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLEtBQUssRUFBRSxZQUFZO1lBQ25CLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLEtBQUssRUFBRSxZQUFZO1lBQ25CLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMUVELDBDQTBFQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci90eXBlcy9ib29sZWFuL1RvQm9vbGVhbkhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBUeXBlZEhlbHBlciB9IGZyb20gJy4uL1R5cGVkSGVscGVyJztcblxuLy8gSW5wdXQ6IFt2YWxdXG4vLyBPdXRwdXQ6IFtib29sZWFuXVxuZXhwb3J0IGNsYXNzIFRvQm9vbGVhbkhlbHBlciBleHRlbmRzIFR5cGVkSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucy5wdXNoVmFsdWUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb252ZXJ0VW5kZWZpbmVkT3JOdWxsID0gKCkgPT4ge1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICBzYi5lbWl0UHVzaEJvb2xlYW4obm9kZSwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBjb252ZXJ0Qm9vbGVhbiA9IChpbm5lck9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4ge1xuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBpbm5lck9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwQm9vbGVhbik7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnZlcnROdW1iZXIgPSAoaW5uZXJPcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHtcbiAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgaW5uZXJPcHRpb25zLCBzYi5oZWxwZXJzLnVud3JhcE51bWJlcik7XG4gICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgIHNiLmVtaXRPcChub2RlLCAnTlVNTk9URVFVQUwnKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY29udmVydFN0cmluZyA9IChpbm5lck9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4ge1xuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBpbm5lck9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwU3RyaW5nKTtcbiAgICAgIHNiLmVtaXRQdXNoU3RyaW5nKG5vZGUsICcnKTtcbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRVFVQUwnKTtcbiAgICAgIHNiLmVtaXRPcChub2RlLCAnTk9UJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnZlcnRPdGhlciA9ICgpID0+IHtcbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgc2IuZW1pdFB1c2hCb29sZWFuKG5vZGUsIHRydWUpO1xuICAgIH07XG5cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmZvckJ1aWx0aW5UeXBlKHtcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICBrbm93blR5cGU6IHRoaXMua25vd25UeXBlLFxuICAgICAgICBhcnJheTogY29udmVydE90aGVyLFxuICAgICAgICBhcnJheVN0b3JhZ2U6IGNvbnZlcnRPdGhlcixcbiAgICAgICAgYm9vbGVhbjogY29udmVydEJvb2xlYW4sXG4gICAgICAgIGJ1ZmZlcjogY29udmVydE90aGVyLFxuICAgICAgICBudWxsOiBjb252ZXJ0VW5kZWZpbmVkT3JOdWxsLFxuICAgICAgICBudW1iZXI6IGNvbnZlcnROdW1iZXIsXG4gICAgICAgIG9iamVjdDogY29udmVydE90aGVyLFxuICAgICAgICBzdHJpbmc6IGNvbnZlcnRTdHJpbmcsXG4gICAgICAgIHN5bWJvbDogY29udmVydE90aGVyLFxuICAgICAgICB1bmRlZmluZWQ6IGNvbnZlcnRVbmRlZmluZWRPck51bGwsXG4gICAgICAgIG1hcDogY29udmVydE90aGVyLFxuICAgICAgICBtYXBTdG9yYWdlOiBjb252ZXJ0T3RoZXIsXG4gICAgICAgIHNldDogY29udmVydE90aGVyLFxuICAgICAgICBzZXRTdG9yYWdlOiBjb252ZXJ0T3RoZXIsXG4gICAgICAgIGVycm9yOiBjb252ZXJ0T3RoZXIsXG4gICAgICAgIGZvcndhcmRWYWx1ZTogY29udmVydE90aGVyLFxuICAgICAgICBpdGVyYXRvclJlc3VsdDogY29udmVydE90aGVyLFxuICAgICAgICBpdGVyYWJsZTogY29udmVydE90aGVyLFxuICAgICAgICBpdGVyYWJsZUl0ZXJhdG9yOiBjb252ZXJ0T3RoZXIsXG4gICAgICAgIHRyYW5zYWN0aW9uOiBjb252ZXJ0T3RoZXIsXG4gICAgICAgIG91dHB1dDogY29udmVydE90aGVyLFxuICAgICAgICBhdHRyaWJ1dGU6IGNvbnZlcnRPdGhlcixcbiAgICAgICAgaW5wdXQ6IGNvbnZlcnRPdGhlcixcbiAgICAgICAgYWNjb3VudDogY29udmVydE90aGVyLFxuICAgICAgICBhc3NldDogY29udmVydE90aGVyLFxuICAgICAgICBjb250cmFjdDogY29udmVydE90aGVyLFxuICAgICAgICBoZWFkZXI6IGNvbnZlcnRPdGhlcixcbiAgICAgICAgYmxvY2s6IGNvbnZlcnRPdGhlcixcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==