void OutputFunctionInfo(FunctionPtr func) { auto inputVariables = func->Arguments(); fprintf(stderr, "Function '%S': Input Variables (count=%lu)\n", func->Name().c_str(), inputVariables.size()); for_each(inputVariables.begin(), inputVariables.end(), [](const Variable v) { fprintf(stderr, " name=%S, kind=%d\n", v.Name().c_str(), static_cast<int>(v.Kind())); }); auto outputVariables = func->Outputs(); fprintf(stderr, "Function '%S': Output Variables (count=%lu)\n", func->Name().c_str(), outputVariables.size()); for_each(outputVariables.begin(), outputVariables.end(), [](const Variable v) { fprintf(stderr, " name=%S, kind=%d\n", v.Name().c_str(), static_cast<int>(v.Kind())); }); }
static void PrintGraph(FunctionPtr function, int spaces, bool useName = false) { if (function->Inputs().size() == 0) { cout << string(spaces, '.') + "(" + ToString(useName ? function->Name() : function->Uid()) + ")" + ToString(function->AsString()) << std::endl; return; } for (auto input : function->Inputs()) { cout << string(spaces, '.') + "(" + ToString(useName ? function->Name() : function->Uid()) + ")" + "->" + "(" + ToString(useName ? input.Name() : input.Uid()) + ")" + ToString(input.AsString()) << std::endl; } for (auto input : function->Inputs()) { if (input.Owner() != NULL) { FunctionPtr f = input.Owner(); PrintGraph(f, spaces + 4, useName); } } }