void SetSignerList::preCompute() { // Get the quorum and operation info. auto result = determineOperation(ctx_.tx, view().flags(), j_); assert(std::get<0>(result) == tesSUCCESS); assert(std::get<3>(result) != unknown); quorum_ = std::get<1>(result); signers_ = std::get<2>(result); do_ = std::get<3>(result); return Transactor::preCompute(); }
TER SetSignerList::preflight (PreflightContext const& ctx) { if (! ctx.rules.enabled(featureMultiSign, ctx.app.config().features)) return temDISABLED; auto const ret = preflight1 (ctx); if (!isTesSuccess (ret)) return ret; auto const result = determineOperation(ctx.tx, ctx.flags, ctx.j); if (std::get<0>(result) != tesSUCCESS) return std::get<0>(result); if (std::get<3>(result) == unknown) { // Neither a set nor a destroy. Malformed. JLOG(ctx.j.trace) << "Malformed transaction: Invalid signer set list format."; return temMALFORMED; } if (std::get<3>(result) == set) { // Validate our settings. auto const account = ctx.tx.getAccountID(sfAccount); TER const ter = validateQuorumAndSignerEntries(std::get<1>(result), std::get<2>(result), account, ctx.j); if (ter != tesSUCCESS) { return ter; } } return preflight2 (ctx); }
int main(int argc, char *argv[]) { int i = 1; char operation = ' '; int opFlag = 0; int left = 0; int right = 0; int result = 0; for(i = 1; i < argc; i++) { opFlag = isOperator(argv[i]); if(opFlag == 1) { operation = *argv[i++]; right = atoi(argv[i]); struct Expression *expression = Expression_create(left, right, determineOperation(operation)); result = Expression_operate(expression); printf("%d\n", result); Expression_destroy(expression); } else { left = atoi (argv[i]); } } return 0; }