#include <Package.h>
Collaboration diagram for Package:
Public Types |
|
typedef cmt_vector |
database |
Public Methods |
|
? | Package () |
? |
A public constructor is required by cmt_vector. More... |
bool? | is_unreachable () const |
void? | set_unreachable () |
bool? | is_done () const |
void? | set_done () |
int? | operator== (const Package& other) const |
? |
Comparison method. More... |
int? | operator!= (const Package& other) const |
const cmt_string&? | get_name () const |
const cmt_string&? | get_version () const |
const cmt_string&? | get_path () const |
const cmt_string&? | get_dot_name () const |
const cmt_string&? | get_cluster_name () const |
const cmt_string&? | get_dot_label () const |
cmt_string? | to_string () const |
void? | collect_clients (tree_node& node) |
void? | set_node (tree_node* n) |
tree_node*? | get_node () const |
bool? | has_version_directory () const |
bool? | auto_imports () const |
bool? | is_public () const |
void? | set_has_version_directory (bool state) |
void? | set_auto_imports (bool state) |
void? | set_is_public (bool state) |
void? | check_client (const Package& other, tree_node& node) |
? |
Is this package a client of "other" ? (ie. More... |
void? | reduce () |
Static Public Methods |
|
database&? | get_database () |
? |
The database singleton. More... |
Package&? | create (const cmt_string& p, const cmt_string& v, const cmt_string& pp, const cmt_string& a = "") |
? |
The factory method. More... |
Private Methods |
|
void? | set (const cmt_string& p, const cmt_string& v, const cmt_string& pp, const cmt_string& a) |
? |
This sets the Package attributes and builds the dot name & label. More... |
Private Attributes |
|
cmt_string? | package |
cmt_string? | version |
cmt_string? | path |
cmt_string? | area |
cmt_string? | dot_name |
cmt_string? | cluster_name |
cmt_string? | dot_label |
bool? | unreachable |
bool? | done |
tree_node*? | node |
bool? | m_has_version_directory |
bool? | m_auto_imports |
bool? | m_is_public |
A database manages unique entries for each package (no duplicate entries) Each package also builds its own dot representation o a name for dot objects o a label to be displayed within dot boxes
Definition at line 37 of file Package.h.
|
? |
|
? |
A public constructor is required by cmt_vector. Definition at line 65 of file Package.cxx. 00066 { 00067 unreachable = false; 00068 done = false; 00069 node = 0; 00070 m_has_version_directory = true; 00071 m_auto_imports = true; 00072 m_is_public = true; 00073 } |
|
? |
Definition at line 169 of file Package.cxx. Referenced by DotGenerator::run(). 00170 { 00171 return (m_auto_imports); 00172 } |
|
? |
Is this package a client of "other" ? (ie. does it use "other") Definition at line 209 of file Package.cxx. Referenced by collect_clients(). 00210 { 00211 //if (done) return; 00212 //done = true; 00213 00214 //cout << "Checking if " << package << " " << version << " " << path << " is client of " << other.package << endl; 00215 00216 const Package& me = *this; 00217 00218 if (me == other) return; 00219 00221 cmt_string req; 00222 00223 req = area; 00224 if (req != "") req += CmtSystem::file_separator (); 00225 if (path != "") 00226 { 00227 req += path; 00228 req += CmtSystem::file_separator (); 00229 } 00230 req += package; 00231 req += CmtSystem::file_separator (); 00232 req += version; 00233 req += CmtSystem::file_separator (); 00234 req += "cmt"; 00235 req += CmtSystem::file_separator (); 00236 req += "requirements"; 00237 00238 if (!CmtSystem::test_file (req)) 00239 { 00240 req = area; 00241 if (req != "") req += CmtSystem::file_separator (); 00242 if (path != "") 00243 { 00244 req += path; 00245 req += CmtSystem::file_separator (); 00246 } 00247 req += package; 00248 req += CmtSystem::file_separator (); 00249 req += version; 00250 req += CmtSystem::file_separator (); 00251 req += "cmt"; 00252 req += CmtSystem::file_separator (); 00253 req += "requirements"; 00254 00255 if (!CmtSystem::test_file (req)) return; 00256 } 00257 00259 static cmt_regexp exp ("^use "); 00260 00266 UseScanner scanner (other, *this, node); 00267 00268 //cout << "req = " << req << endl; 00269 00270 scanner.run (req, exp); 00271 00272 //done = true; 00273 } |
|
? |
Definition at line 196 of file Package.cxx. Referenced by UseScanner::filter(), and main(). 00197 { 00198 const database& db = Package::get_database (); 00199 for (int i = 0; i < db.size (); i++) 00200 { 00201 Package& p = db[i]; 00202 00203 if (p == *this) continue; 00204 00205 p.check_client (*this, node); 00206 } 00207 } |
|
? |
The factory method. Definition at line 12 of file Package.cxx. Referenced by UsesGraphBuilder::UsesGraphBuilder(), UseScanner::filter(), UsesGraphBuilder::filter(), main(), DotGenerator::run(), and PackageViewer::run(). 00016 { 00017 database& db = get_database (); 00018 00019 bool has_wild_card = false; 00020 cmt_string v_prefix = v; 00021 cmt_regexp* v_exp = 0; 00022 int pos; 00023 00024 if ((pos = v.find ("*")) != cmt_string::npos) 00025 { 00026 has_wild_card = true; 00027 v_prefix.erase (pos); 00028 00029 cmt_string v_text_exp = "^"; 00030 v_text_exp += v_prefix; 00031 00032 v_exp = new cmt_regexp (v_text_exp); 00033 } 00034 00035 for (int i = 0; i < db.size (); i++) 00036 { 00037 Package& entry = db[i]; 00038 if ((entry.package == p) && 00039 (entry.path == pp)) 00040 { 00041 if (has_wild_card) 00042 { 00043 if (v_exp->match (entry.version)) 00044 { 00045 return (entry); 00046 } 00047 } 00048 else 00049 { 00050 if (entry.version == v) 00051 { 00052 return (entry); 00053 } 00054 } 00055 } 00056 } 00057 00058 Package& entry = db.add (); 00059 //entry.set (p, v_prefix, pp, a); 00060 entry.set (p, v, pp, a); 00061 00062 return (entry); 00063 } |
|
? |
Definition at line 130 of file Package.cxx. Referenced by tree_node::get_cluster_name(), and DotGenerator::run(). 00131 { 00132 static const cmt_string top = "top"; 00133 if (cluster_name == "") return (top); 00134 return (cluster_name); 00135 } |
|
? |
The database singleton. Definition at line 5 of file Package.cxx. Referenced by collect_clients(), create(), and DotGenerator::run(). 00006 { 00007 static database db; 00008 00009 return (db); 00010 } |
|
? |
Definition at line 137 of file Package.cxx. Referenced by tree_node::get_dot_label(), DotGenerator::run(), and tree_node::show_node(). 00138 { 00139 return (dot_label); 00140 } |
|
? |
Definition at line 125 of file Package.cxx. Referenced by tree_node::get_dot_name(), DotGenerator::run(), and tree_node::show_node(). 00126 { 00127 return (dot_name); 00128 } |
|
? |
Definition at line 110 of file Package.cxx. Referenced by tree_node::check_cycle(), UseScanner::filter(), UsesGraphBuilder::filter(), tree_node::get_name(), and UsesGraphBuilder::start(). 00111 { 00112 return (package); 00113 } |
|
? |
Definition at line 159 of file Package.cxx. Referenced by tree_node::references(). 00160 { 00161 return (node); 00162 } |
|
? |
Definition at line 120 of file Package.cxx. Referenced by UsesGraphBuilder::start(). 00121 { 00122 return (path); 00123 } |
|
? |
Definition at line 115 of file Package.cxx. Referenced by UsesGraphBuilder::start(). 00116 { 00117 return (version); 00118 } |
|
? |
Definition at line 164 of file Package.cxx. Referenced by DotGenerator::run(). 00165 { 00166 return (m_has_version_directory); 00167 } |
|
? |
Definition at line 85 of file Package.cxx. Referenced by UseScanner::filter(), and DotGenerator::run(). 00086 { 00087 return (done); 00088 } |
|
? |
Definition at line 174 of file Package.cxx. Referenced by DotGenerator::run(). 00175 { 00176 return (m_is_public); 00177 } |
|
? |
Definition at line 75 of file Package.cxx. Referenced by DotGenerator::run(), tree_node::show_node(), and tree_node::show_tree(). 00076 { 00077 return (unreachable); 00078 } |
|
? |
Definition at line 104 of file Package.cxx. 00105 { 00106 const Package& me = *this; 00107 return (!(me == other)); 00108 } |
|
? |
Comparison method. Definition at line 95 of file Package.cxx. 00096 { 00097 if (package != other.package) return (0); 00098 if (version != other.version) return (0); 00099 if (path != other.path) return (0); 00100 if (area != other.area) return (0); 00101 return (1); 00102 } |
|
? |
Definition at line 328 of file Package.cxx. 00329 { 00330 if (node == 0) return; 00331 00332 //node->reduce (); 00333 } |
|
? |
This sets the Package attributes and builds the dot name & label. Then, only use statements to "other" are considered. Definition at line 275 of file Package.cxx. Referenced by create(). 00279 { 00280 package = p; 00281 version = v; 00282 path = pp; 00283 area = a; 00284 00285 dot_name = "\""; 00286 dot_name += package; 00287 dot_name += "-"; 00288 dot_name += version; 00289 00290 /* 00291 if (path != "") 00292 { 00293 dot_name += "-"; 00294 dot_name += path; 00295 } 00296 */ 00297 00298 dot_name += "\""; 00299 00300 00301 cluster_name = ""; 00302 if (path != "") 00303 { 00304 cluster_name = path; 00305 cluster_name.replace_all ("/", "_"); 00306 cluster_name.replace_all ("\\", "_"); 00307 } 00308 00309 00310 dot_label = ""; 00311 00312 /* 00313 if (path != "") 00314 { 00315 dot_label += path; 00316 dot_label += "/"; 00317 } 00318 */ 00319 00320 dot_label += package; 00321 if (version != "*") 00322 { 00323 dot_label += "\\n"; 00324 dot_label += version; 00325 } 00326 } |
|
? |
Definition at line 186 of file Package.cxx. Referenced by UsesGraphBuilder::filter(). 00187 { 00188 m_auto_imports = state; 00189 } |
|
? |
Definition at line 90 of file Package.cxx. Referenced by UseScanner::filter(), and UsesGraphBuilder::filter(). 00091 { 00092 done = true; 00093 } |
|
? |
Definition at line 179 of file Package.cxx. Referenced by UsesGraphBuilder::filter(). 00180 { 00181 m_has_version_directory = state; 00182 } |
|
? |
Definition at line 191 of file Package.cxx. Referenced by UsesGraphBuilder::filter(). 00192 { 00193 m_is_public = state; 00194 } |
|
? |
Definition at line 154 of file Package.cxx. Referenced by tree_node::install_as_reference_node(). 00155 { 00156 node = n; 00157 } |
|
? |
Definition at line 80 of file Package.cxx. Referenced by UsesGraphBuilder::filter(). 00081 { 00082 unreachable = true; 00083 } |
|
? |
Definition at line 142 of file Package.cxx. 00143 { 00144 cmt_string result; 00145 result += package; 00146 result += " "; 00147 result += version; 00148 result += " "; 00149 result += path; 00150 00151 return (result); 00152 } |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |
|
? |