int main(int argc, char** argv){ int opt; int r; AST_Class modelica_class; while((opt = getopt(argc, argv, "d:")) != -1){ switch(opt){ case 'd': if(optarg != NULL && isDebugParam(optarg)){ debugInit(optarg); }else{ ERROR("Command line option d requires an argument\n"); } break; } } if(optind < argc){ modelica_class = parseClass(argv[optind],&r); }else{ /* si no se especifico un archivo leo de stdin*/ modelica_class = parseClass("", &r); } if(r!=0){ return -1; } /* creamos la clase MicroModelica */ TypeSymbolTable ty = newTypeSymbolTable(); MMO_Class mmo_class = newMMO_Class(modelica_class, ty); ReducedGraphBuilder *gb = new ReducedGraphBuilder(mmo_class); CausalizationGraph g = gb->makeGraph(); //para debuggeo: crea archivo grafo.dot if(debugIsEnabled('g')){ GraphPrinter gp(g); gp.printGraph(); } CausalizationStrategy2 *cs = new CausalizationStrategy2(g); if(cs->causalize()){ if(debugIsEnabled('c')){ cout << "Result of causalization (variable, [range,] equationID):" << endl; cs->print(); } }else{ //si no anduvo, probamos con la estrategia clasica DEBUG('c', "Executing the classic strategy\n"); CausalizationStrategy *cs_clasica = new CausalizationStrategy(mmo_class); AST_ClassList cl = newAST_ClassList(); cs_clasica->causalize(mmo_class->name(), cl); DEBUG('c', "Causalized Equations:\n"); MMO_EquationList causalEqs = mmo_class->getEquations(); MMO_EquationListIterator causalEqsIter; foreach(causalEqsIter, causalEqs) { DEBUG('c', "%s", current_element(causalEqsIter)->print().c_str()); } }
AST_Class_::AST_Class_ (AST_String n, AST_Composition comp) : _name (n), _composition (comp), _father (NULL), _basic (false), _encapsulated ( false), _final (false), _prefix () { _extends_list = newAST_StringList (); _sub_classes = newAST_ClassList (); _components = newAST_Element_ComponentList (); }