#include "stdio.h" #include "codeGenerator.h" void generateH(Simulation& simulation, string fileName, string agentSufix, string modelSufix, string messageBoardSufix) { int i, j; FILE* hFile; ModelList& modelList = simulation.getModelList(); AgentList& agentList = simulation.getAgentList(); string simulationName = simulation.getName(); string straux; if((hFile = fopen((char*)fileName.c_str(), "w"))==NULL) { printf("Error opening file %s for writing\n", (char*)fileName.c_str()); return; } straux = "\n#ifndef SIMULATION_" + simulationName + "\n"; straux += "#define SIMULATION_" + simulationName + "\n\n"; fputs((char*)straux.c_str(), hFile); straux = simulation.getHeaderCode() + "\n\n"; fputs((char*)straux.c_str(), hFile); straux = "#include \n#include \n\n"; straux += "using namespace std;\n\n"; fputs((char*)straux.c_str(), hFile); straux = "class " + simulationName + messageBoardSufix + "\n{\npublic:\n"; straux += simulationName + messageBoardSufix + "(){};\n\n"; straux += " void clear()\n {\n messageBoard_.clear();\n };\n\n"; straux += " string getMessage(string index)\n {\n return messageBoard_[index];\n };\n\n"; straux += " void postMessage(string index, string msg)\n {\n messageBoard_[index] = msg;\n };\n\n"; straux += " operator=(" + simulationName + messageBoardSufix + "& msgBrdNew)\n {\n messageBoard_ = msgBrdNew.messageBoard_;\n };\n\n"; straux += "protected:\n map messageBoard_;\n};\n\n"; fputs((char*)straux.c_str(), hFile); straux = "class " + simulationName + agentSufix +"\n{\npublic:\n"; straux += simulationName + agentSufix + "()\n {\n messageBoard_ = NULL;\n };\n\n"; straux += " void setMessageBoard(" + simulationName + messageBoardSufix + "* messageBoard)\n"; straux += " {\n messageBoard_ = messageBoard;\n };\n\n"; straux += " void setMessageBoardNew(" + simulationName + messageBoardSufix + "* messageBoardNew)\n"; straux += " {\n messageBoardNew_ = messageBoardNew;\n };\n\n"; straux += "protected:\n " + simulationName + messageBoardSufix + "* messageBoard_;\n"; straux += " " + simulationName + messageBoardSufix + "* messageBoardNew_;\n};\n\n"; fputs((char*)straux.c_str(), hFile); string modelName; for(i=0; i