Public Methods |
|
| ? | DependencyAnalyzer (const cmt_string &package_name, Constituent &constituent_ref) |
| void? | begin () |
| void? | filter (const cmt_string &line) |
| virtual void? | end () |
Protected Methods |
|
| void? | add_trigger (const cmt_string &name) |
| void? | add_use (Libmap &libmap) |
Protected Attributes |
|
| CmtSystem::cmt_string_vector? | include_dirs |
| cmt_vector< Libmap * >? | uses |
| CmtSystem::cmt_string_vector? | triggers |
| Constituent &? | constituent |
| cmt_string? | package |
| cmt_string? | package_upper |
|
||||||||||||
| ? |
Definition at line 381 of file cmt_triggers.cxx. References CmtSystem::execute(), include_dirs, package_upper, cmt_string::replace_all(), cmt_string::size(), and CmtSystem::split(). 00382 : 00383 package (package_name), 00384 constituent (constituent_ref) 00385 { 00386 cmt_string dirs; 00387 00388 int pos; 00389 char c; 00390 00391 package_upper = package; 00392 00393 for (pos = 0; pos < package_upper.size (); pos++) 00394 { 00395 c = package_upper[pos]; 00396 package_upper[pos] = toupper (c); 00397 } 00398 00399 CmtSystem::execute ("cmt show include_dirs", dirs); 00400 dirs.replace_all ("\n", ""); 00401 CmtSystem::split (dirs, " ", include_dirs); 00402 } |
|
| ? |
Definition at line 539 of file cmt_triggers.cxx. References cmt_vector< cmt_string >::add(), cmt_vector< cmt_string >::size(), and triggers. Referenced by filter(). 00540 {
00541 for (int i = 0; i < triggers.size (); i++)
00542 {
00543 const cmt_string& trigger = triggers[i];
00544
00545 if (trigger == name) return;
00546 }
00547
00548 cmt_string& new_trigger = triggers.add ();
00549
00550 new_trigger = name;
00551 }
|
|
| ? |
Definition at line 553 of file cmt_triggers.cxx. References cmt_vector< Libmap * >::push_back(), cmt_vector< Libmap * >::size(), and uses. Referenced by filter(). |
|
| ? |
Reimplemented from Awk. Definition at line 404 of file cmt_triggers.cxx. 00405 {
00406 }
|
|
| ? |
Reimplemented from Awk. Reimplemented in LibraryAnalyzer, and ApplicationAnalyzer. Definition at line 535 of file cmt_triggers.cxx. 00536 {
00537 }
|
|
| ? |
Reimplemented from Awk. Definition at line 408 of file cmt_triggers.cxx. References add_trigger(), add_use(), CmtSystem::file_separator(), cmt_string::find(), cmt_string::find_last_of(), Libmap::find_with_trigger(), Cmt::get_quiet(), include_dirs, FAwk::m_file_name, cmt_string::npos, Libmap::null(), package_upper, cmt_string::replace(), cmt_string::replace_all(), cmt_vector< cmt_string >::size(), CmtSystem::split(), cmt_string::substr(), and cmt_string::trim(). 00409 {
00410 /* Clip target out of dependency file... */
00411 int pos = line.find ("=");
00412 if ((pos == 0) || (pos == cmt_string::npos))
00413 {
00414 if (!Cmt::get_quiet ())
00415 {
00416 cerr << " ERROR: Syntax in dependency file: " << line << endl;
00417 cerr << " Missing = or target name." << endl;
00418 }
00419 exit (1);
00420 }
00421
00422 cmt_string module;
00423
00424 line.substr (0, pos, module);
00425 module.trim ();
00426 module.replace ("_dependencies", "");
00427
00428 if (module == "cmt_path_make") return;
00429
00430 int underscore = module.find_last_of ("_");
00431
00432 if (underscore != cmt_string::npos)
00433 {
00434 module[underscore] = '.';
00435 }
00436
00437 static cmt_string dependencies;
00438
00439 line.substr (pos + 1, dependencies);
00440
00441 if (dependencies == "")
00442 {
00443 cerr << "#CMT> Warning : It seems there is nothing after \'=\' "
00444 "in dependency file " << m_file_name << endl;
00445 return;
00446 }
00447
00448 CmtSystem::cmt_string_vector deps;
00449
00450 CmtSystem::split (dependencies, " ", deps);
00451
00452 for (int i = 0; i < deps.size (); i++)
00453 {
00454 const cmt_string& dep = deps[i];
00455
00456 //
00457 // dep may either be:
00458 // o the module itself
00459 // o a file in one of include_dirs
00460 // o something else
00461 //
00462
00463 if (dep.find (module) != cmt_string::npos)
00464 {
00465 // This is the module itself.
00466 }
00467 else
00468 {
00469 bool found = false;
00470
00471 for (int j = 0; j < include_dirs.size (); j++)
00472 {
00473 const cmt_string& dir = include_dirs[j];
00474
00475 if (dep.find (dir) == 0)
00476 {
00477 // This is a local dependency.
00478
00479 cmt_string name = dep;
00480
00481 if (dir == "$(src)")
00482 {
00483 cmt_string new_dir;
00484
00485 new_dir = "$(";
00486 new_dir += package_upper;
00487 new_dir += "ROOT)/src/";
00488
00489 name.replace (dir, new_dir);
00490 }
00491
00492 if (CmtSystem::file_separator () == '\\')
00493 {
00494 name.replace_all (CmtSystem::file_separator (), "/");
00495 }
00496
00497 Libmap& libmap = Libmap::find_with_trigger (name);
00498
00499 if (libmap != Libmap::null ())
00500 {
00501 add_use (libmap);
00502 }
00503 else
00504 {
00505 add_trigger (name);
00506 }
00507
00508 found = true;
00509 break;
00510 }
00511 }
00512
00513 if (!found)
00514 {
00515 cmt_string name = dep;
00516
00517 if (CmtSystem::file_separator () == '\\')
00518 {
00519 name.replace_all (CmtSystem::file_separator (), "/");
00520 }
00521
00522 // This is an external dependency.
00523
00524 Libmap& libmap = Libmap::find_with_trigger (name);
00525
00526 if (libmap != Libmap::null ())
00527 {
00528 add_use (libmap);
00529 }
00530 }
00531 }
00532 }
00533 }
|
|
| ? |
Definition at line 358 of file cmt_triggers.cxx. Referenced by ApplicationAnalyzer::end(), and LibraryAnalyzer::end(). |
|
| ? |
Definition at line 355 of file cmt_triggers.cxx. Referenced by DependencyAnalyzer(), and filter(). |
|
| ? |
Definition at line 359 of file cmt_triggers.cxx. |
|
| ? |
Definition at line 360 of file cmt_triggers.cxx. Referenced by DependencyAnalyzer(), and filter(). |
|
| ? |
Definition at line 357 of file cmt_triggers.cxx. Referenced by add_trigger(), and LibraryAnalyzer::end(). |
|
| ? |
Definition at line 356 of file cmt_triggers.cxx. Referenced by add_use(), ApplicationAnalyzer::end(), and LibraryAnalyzer::end(). |