int main() { char *stringToSign = "test"; signStringWholeBlock( stringToSign ); printf( "Signature for string signed as block:\n" ); printSignature(); signStringByteByByte( stringToSign ); printf( "Signature for string signed byte-by-byte:\n" ); printSignature(); }
void Ast2SrcVisitor::visitFunctionNode(FunctionNode* node) { _out << "function " << mathvm::typeToName(node->returnType()) << " "; const Signature& signature = node->signature(); printSignature(node->name(), signature.size(), std::bind1st(std::mem_fun<const SignatureElement&, Signature, size_t>(&Signature::operator[]), &signature), std::bind1st(std::ptr_fun<std::ostream*, SignatureElement, void>(&printSignatureElement), &_out), 1); if (node->body()->nodes() && node->body()->nodeAt(0)->isNativeCallNode()) node->body()->nodeAt(0)->visit(this); else node->visitChildren(this); }
void FunctionDeclaration::doPrint(PrintContext &context) const { printComment(context); printSignature(context); context.out() << ';'; }
void Ast2SrcVisitor::visitPrintNode(PrintNode* node) { printSignature("print", node->operands(), std::bind1st(std::mem_fun(&PrintNode::operandAt), node), std::bind2nd(std::mem_fun(&AstNode::visit), this)); }
void Ast2SrcVisitor::visitCallNode(CallNode* node) { printSignature(node->name(), node->parametersNumber(), std::bind1st(std::mem_fun(&CallNode::parameterAt), node), std::bind2nd(std::mem_fun(&AstNode::visit), this)); }