3 std::string get_line_of_code(const std::string code) //return the line of code
5 std::string ret = code;
7 //std::cout<<code<<"\n\n";
8 for(i = 0;i<ret.length();i++)
10 if(ret[i]=='\n'||ret[i]=='{') break;
12 return ret.substr(0,i);
15 std::string cut_commentary(const std::string line) //cut commentary at the end of line
18 for(i = 0;i<line.length()-1;i++)
20 if(line[i]=='/' && line[i+1]=='/') return line.substr(0,i);
21 if(line[i]=='/' && line[i+1]=='*') return line.substr(0,i);
27 std::string cut_namespaces(std::string line) //cut namespaces from the name of the state
29 int i = line.rfind("::");
30 if(i==-1) return line;
31 return line.substr(i+2);
34 bool is_derived(const std::string line) // return true if the struct or class is derived
37 for(i = 0;i<line.length()-1;i++)
41 if(line[i+1]!=':') return true;
48 std::string get_super_class(const std::string line) // get the super class of this declarations
51 for(i = 0;i<line.length()-1;i++)
55 if(line[i+1]!=':') break;
59 return line.substr(i+1);
62 std::string get_next_base(const std::string line) // get the super class of this declarations
66 for(i = 0;i<line.length()-1;i++)
68 if(line[i]=='<') brackets+=1;
69 if(line[i]=='>') brackets-=1;
70 if(line[i]==',' && brackets == 0) break;
72 return line.substr(i+1);
75 std::string get_first_base(const std::string line) // get the super class of this declarations
79 for(i = 0;i<line.length()-1;i++)
81 if(line[i]=='<') brackets+=1;
82 if(line[i]=='>') brackets-=1;
83 if(line[i]==',' && brackets == 0) break;
85 return line.substr(0,i);
89 std::string clean_spaces(const std::string line)
92 std::string new_line = "";
93 for(i = 0;i<line.length();i++)
95 if(!isspace(line[i])) new_line+=line[i];
97 //std::cout<<new_line;
101 bool is_state(const std::string line)
103 int pos = line.find("::");
106 if(line.compare(0,31,"boost::statechart::simple_state")==0)
117 if(line.compare(0,24,"statechart::simple_state")==0)
128 std::string cut_typedef(std::string line) // cut typedef from the beginning
130 if(line.compare(0,8,"typedef ")==0)
132 return line.substr(8);
137 int count(std::string line) //count all < in string
140 for(int i = 0;i<line.length();i++)
142 if(line[i]=='<') number+=1;
147 bool is_list(const std::string line)
149 int pos = line.find("::");
152 if(line.compare(0,16,"boost::mpl::list")==0)
161 if(line.compare(0,9,"mpl::list")==0)
171 std::string get_inner_part(const std::string line)
175 for(i = 0;i<line.length();i++)
177 if(line[i]=='<') break;
179 str = line.substr(i+1);
180 for(i = 0;i<str.length();i++)
182 if(str[i]=='<') pos+=1;
189 //std::cout<<str.substr(0,i);
190 return str.substr(0,i);
193 bool is_transition(const std::string line)
195 int pos = line.find("::");
198 if(line.compare(0,29,"boost::statechart::transition")==0)
209 if(line.compare(0,22,"statechart::transition")==0)
220 std::string get_params(std::string line)
222 int pos_front = line.find("<")+1;
223 int pos_end = line.find(">");
225 params = line.substr(pos_front,pos_end-pos_front);
230 bool is_machine(const std::string line)
232 int pos = line.find("::");
235 if(line.compare(0,32,"boost::statechart::state_machine")==0)
246 if(line.compare(0,25,"statechart::state_machine")==0)