Example #1
0
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();
}
Example #2
0
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);
}
Example #3
0
File: calc.c Project: epwn/Calc
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;
}