]> rtime.felk.cvut.cz Git - boost-statechart-viewer.git/blobdiff - src/visualizer.cpp
Correction of formatting in this file
[boost-statechart-viewer.git] / src / visualizer.cpp
index 0a034896a3f165f2e4061fe004ab1b2046b763d6..bcdfe0dc0cddf623005479ab4be102d02b43c6c5 100644 (file)
@@ -127,7 +127,7 @@ class FindStates : public ASTConsumer
        FullSourceLoc *fsloc; /** Full Source Location instance for holding Source Manager. */
        public:
 
-       list<string> getStates() /** Return list of states. */
+       list<string> getStates() /** Return list of states of the state machine. */
        {
                return states;
        }
@@ -288,6 +288,7 @@ class FindStates : public ASTConsumer
                const TagDecl *tagDecl = dyn_cast<TagDecl>(decl);
                const DeclContext *declCont = tagDecl->castToDeclContext(tagDecl);                      
                output="";
+               std::cout<<"Found state: "<<state<<std::endl;
                for (DeclContext::decl_iterator i = declCont->decls_begin(), e = declCont->decls_end(); i != e; ++i) 
                {
                        if (i->getKind()==26) // typedefs
@@ -320,8 +321,9 @@ class FindStates : public ASTConsumer
                                        output="";
                                }
                        }
-                       if(i->getKind()==35) method_decl(decl);// C++ method
+                       if(i->getKind()==35) method_decl(*i);// C++ method
                }
+               
        }
 
  /**
@@ -331,15 +333,17 @@ class FindStates : public ASTConsumer
        {
                string output, line, event;     
                llvm::raw_string_ostream x(output);
+
                if(decl->hasBody())
                {
                        decl->print(x);
-                       line = get_return(x.str());
-                       if(test_model(line,"result"))
+                       line = get_return(x.str());                     
+                       if(get_model(line)==5)
                        {
+                               //std::cout<<"metodass"<<std::endl;
                                const FunctionDecl *fDecl = dyn_cast<FunctionDecl>(decl);
                                const ParmVarDecl *pvd = fDecl->getParamDecl(0);
-                                QualType qt = pvd->getOriginalType();
+                               QualType qt = pvd->getOriginalType();
                                event = qt.getAsString();
                                if(event[event.length()-1]=='&') event = event.substr(0,event.length()-2);
                                event = event.substr(event.rfind(" ")+1);
@@ -381,30 +385,35 @@ class FindStates : public ASTConsumer
                type = stmt->getStmtClass();
                switch(type)
                {       
-                       case 8 :                find_return_stmt(dyn_cast<DoStmt>(stmt)->getBody(), event); // do
-                                                       break;
+                       case 8 :        find_return_stmt(dyn_cast<DoStmt>(stmt)->getBody(), event); // do
+                                               break;
                        case 86 :       find_return_stmt(dyn_cast<ForStmt>(stmt)->getBody(), event); // for
-                                                       break;
-                       case 88 :   find_return_stmt(dyn_cast<IfStmt>(stmt)->getThen(), event); //if then
-                                                       find_return_stmt(dyn_cast<IfStmt>(stmt)->getElse(), event); //if else
-                                                       break;
+                                               break;
+                       case 88 :       find_return_stmt(dyn_cast<IfStmt>(stmt)->getThen(), event); //if then
+                                               find_return_stmt(dyn_cast<IfStmt>(stmt)->getElse(), event); //if else
+                                               break;
                        case 90 :       find_return_stmt(dyn_cast<LabelStmt>(stmt)->getSubStmt(), event); //label
-                                                       break;
+                                               break;
                        case 98 :       line = sman.getCharacterData(dyn_cast<ReturnStmt>(stmt)->getReturnLoc()); 
-                                                       line = get_line_of_code(line).substr(6);
-                                                       line = line.substr(0,line.find("("));
-                                                       if(test_model(line,"transit"))
-                                                       {
-                                                               param = get_params(line);
-                                                               transitions.push_back(event.append(",").append(param));
-                                                       }
-                                                       break;
+                                               line = get_line_of_code(line).substr(6);
+                                               line = line.substr(0,line.find("("));
+                                               if(get_model(line)==6)
+                                               {
+                                                       param = get_params(line);
+                                                       transitions.push_back(event.append(",").append(param));
+                                               }
+                                               if(get_model(line) == 7)
+                                               {
+                                                       param = ",";
+                                                       transitions.push_back(param.append(event));
+                                               }
+                                               break;
                        case 99 :       find_return_stmt(stmt, event);
-                                                       break;
+                                               break;
                        case 101 :      find_return_stmt(dyn_cast<SwitchStmt>(stmt)->getBody(), event); // switch
-                                                       break;
+                                               break;
                        case 102 :      find_return_stmt(dyn_cast<WhileStmt>(stmt)->getBody(), event); // while
-                                                       break;
+                                               break;
                }
        }
 
@@ -472,7 +481,7 @@ int main(int argc, char **argv)
        inputFilename = f.Inputs[0].second;
 
        cout<<"Input filename: "<<inputFilename<<"\n"; // print Input filename
-       cout<<"Output filename: "<<outputFilename<<"\n"; // print Output filename
+       cout<<"Output filename: "<<outputFilename<<"\n\n\n"; // print Output filename
 
 
        Preprocessor pp(diag, lang, *ti, sm, *headers);