Main Page ? Class Hierarchy ? Compound List ? File List ? Compound Members ? File Members ?

Include Class Reference

#include <cmt_include.h>

Collaboration diagram for Include:

[legend]
List of all members.

Public Types

typedef cmt_vector< Include >? IncludeVector

Public Methods

? Include ()
? ~Include ()

Static Public Methods

void? action (const CmtSystem::cmt_string_vector &words, Use *use)
Include *? find (const cmt_string &name, Use *use)
Include *? add (const cmt_string &name, Use *use)
void? print_all (PrintMode mode)
void? print_filters (PrintMode mode)
void? clear_all ()

Public Attributes

cmt_string? name
Use *? use

Member Typedef Documentation

typedef cmt_vector Include::IncludeVector
?

Definition at line 16 of file cmt_include.h.


Constructor & Destructor Documentation

Include::Include (? ? )?
?

Definition at line 192 of file cmt_include.cxx.

References use.

00193 {
00194   use = 0;
00195 }

Include::~Include (? ? )?
?

Definition at line 198 of file cmt_include.cxx.

References use.

00199 {
00200   use = 0;
00201 }

Member Function Documentation

void Include::action (? const CmtSystem::cmt_string_vector &? ? words,
Use *? ? use
)? [static]
?

Definition at line 22 of file cmt_include.cxx.

References add(), Use::current(), name, and cmt_vector< cmt_string >::size().

Referenced by KwdIncludeDirs::action().

00023 {
00024   cmt_string name;
00025 
00026   if (use == 0) use = &(Use::current());
00027 
00028   for (int i = 1; i < words.size (); i++)
00029     {
00030       name = words[i];
00031       if (name == "") return;
00032       add (name, use);
00033     }
00034 }

Include * Include::add (? const cmt_string &? ? name,
Use *? ? use
)? [static]
?

Definition at line 63 of file cmt_include.cxx.

References cmt_vector< Include >::add(), Use::current(), find(), Use::includes, name, and use.

Referenced by action().

00064 {
00065   if (name == "") return (0);
00066 
00067   if (use == 0) use = &(Use::current());
00068 
00069   {
00070     Include* incl;
00071 
00072     incl = find (name, use);
00073     if (incl != 0) return (incl);
00074   }
00075 
00076   Include& incl = use->includes.add ();
00077 
00078   incl.name = name;
00079   incl.use = use;
00080 
00081   return (&incl);
00082 }

void Include::clear_all (? ? )? [static]
?

Definition at line 187 of file cmt_include.cxx.

Referenced by Cmt::clear().

00188 {
00189 }

Include * Include::find (? const cmt_string &? ? name,
Use *? ? use
)? [static]
?

Definition at line 37 of file cmt_include.cxx.

References Use::current(), Use::includes, name, cmt_vector< Include >::size(), and use.

Referenced by add().

00038 {
00039   int include_index;
00040 
00041   if (use == 0) use = &(Use::current());
00042 
00043   if (use->includes.size () == 0) return (0);
00044 
00045   for (include_index = 0;
00046        include_index < use->includes.size ();
00047        include_index++)
00048     {
00049       Include& incl = use->includes[include_index];
00050 
00051       if (incl.use != use) continue;
00052 
00053       if (incl.name == name)
00054         {
00055           return (&incl);
00056         }
00057     }
00058 
00059   return (0);
00060 }

void Include::print_all (? PrintMode? ? mode )? [static]
?

Definition at line 85 of file cmt_include.cxx.

References Use::current(), Use::get_ordered_uses(), Use::get_package(), Use::includes, Package::is_cmt(), name, Use::prefix, PrintMode, cmt_vector< Include >::size(), cmt_vector< Use * >::size(), and use.

00086 {
00087   int number;
00088   int include_number;
00089   Use::UsePtrVector& uses = Use::get_ordered_uses ();
00090 
00091   if (uses.size () > 0)
00092     {
00093       for (number = 0; number < uses.size (); number++)
00094         {
00095           const Use* use = uses[number];
00096 
00097           Package* p = use->get_package ();
00098           if (p->is_cmt ()) continue;
00099 
00100           cout << "-I${" << use->prefix << "ROOT}/src ";
00101 
00102           for (include_number = 0;
00103                include_number < use->includes.size ();
00104                include_number++)
00105             {
00106               const Include& incl = use->includes[include_number];
00107 
00108               cout << "-I" << incl.name << " ";
00109             }
00110         }
00111     }
00112 
00113   for (include_number = 0;
00114        include_number < (Use::current()).includes.size ();
00115        include_number++)
00116     {
00117       const Include& incl = (Use::current()).includes[include_number];
00118 
00119       cout << "-I" << incl.name << " ";
00120     }
00121 }

void Include::print_filters (? PrintMode? ? mode )? [static]
?

Definition at line 124 of file cmt_include.cxx.

References Use::current(), Cmt::filter_dir(), Use::get_ordered_uses(), Use::get_package_name(), Use::includes, name, Use::prefix, PrintMode, cmt_string::size(), cmt_vector< Include >::size(), cmt_vector< Use * >::size(), SLASH, use, and Use::version.

00125 {
00126   int number;
00127   int include_number;
00128   Use::UsePtrVector& uses = Use::get_ordered_uses ();
00129 
00130   if (uses.size () > 0)
00131     {
00132       for (number = 0; number < uses.size (); number++)
00133         {
00134           Use* use = uses[number];
00135 
00136           cout << "s#" <<
00137               ".*" << SLASH <<
00138               use->get_package_name () << SLASH <<
00139               use->version << SLASH <<
00140               "#$(" << use->prefix << "ROOT)" << SLASH <<
00141               "#g" << endl;
00142 
00143           for (include_number = 0;
00144                include_number < use->includes.size ();
00145                include_number++)
00146             {
00147               Include& incl = use->includes[include_number];
00148 
00149               const cmt_string& d = Cmt::filter_dir (incl.name);
00150 
00151               if (d.size () > 0)
00152                 {
00153                   cout << "s#" << d << "#" <<
00154                       incl.name << "#g" << endl;
00155                 }
00156             }
00157         }
00158     }
00159 
00160   {
00161     const Use* use = &(Use::current());
00162 
00163     cout << "s#" << ".*" << SLASH <<
00164         use->get_package_name () << SLASH <<
00165         use->version << SLASH <<
00166         "#$(" << use->prefix << "ROOT)" << SLASH <<
00167         "#g" << endl;
00168 
00169     for (include_number = 0;
00170          include_number < use->includes.size ();
00171          include_number++)
00172       {
00173         const Include& incl = use->includes[include_number];
00174 
00175         const cmt_string& d = Cmt::filter_dir (incl.name);
00176 
00177         if (d.size () > 0)
00178           {
00179             cout << "s#" << d << "#" <<
00180                 incl.name << "#g" << endl;
00181           }
00182       }
00183   }
00184 }

Member Data Documentation

cmt_string Include::name
?

Definition at line 29 of file cmt_include.h.

Referenced by action(), add(), DepsBuilder::add_includes(), Cmt::do_show_include_dirs(), StandardMacroBuilder::fill_for_includes(), Use::fill_includes_macro(), find(), print_all(), and print_filters().

Use* Include::use
?

Definition at line 30 of file cmt_include.h.

Referenced by add(), find(), Include(), print_all(), print_filters(), and ~Include().


The documentation for this class was generated from the following files:
Generated on Wed Sep 1 11:00:23 2004 for CMT by 1.2.18