Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

RecursivePass4 Class Reference

Inheritance diagram for RecursivePass4:

Inheritance graph
[legend]
Collaboration diagram for RecursivePass4:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 RecursivePass4 (CvsImplementation &cvs)
void begin ()
void filter (const cmt_string &line)

Private Attributes

CvsImplementationm_cvs

Constructor & Destructor Documentation

RecursivePass4::RecursivePass4 CvsImplementation cvs  ) 
 

Definition at line 2545 of file cmt_cvs.cxx.

02545                                                       : m_cvs (cvs)
02546 {
02547 }


Member Function Documentation

void RecursivePass4::begin  )  [virtual]
 

Reimplemented from Awk.

Definition at line 2549 of file cmt_cvs.cxx.

02550 {
02551 }

void RecursivePass4::filter const cmt_string line  )  [virtual]
 

Reimplemented from Awk.

Definition at line 2553 of file cmt_cvs.cxx.

References CmtSystem::cmt_string_vector, CvsImplementation::do_checkout_phase2(), cmt_string::find(), History::install(), History::instance(), History::is_installed(), m_cvs, cmt_vector< T >::size(), and CmtSystem::split().

02554 {
02555     //if (CmtSystem::testenv ("CMTTESTAWK")) cout << "RecursivePass4::filter> " 
02556     //                                          << "line=[" << line << "]" << endl;
02557 
02564   History& h = History::instance ();
02565   
02566   if (h.is_installed (line)) return;
02567   
02568   h.install (line);
02569   
02570   CmtSystem::cmt_string_vector words;
02571   
02572   CmtSystem::split (line, " \t", words);
02573 
02574   enum
02575   {
02576     need_project,
02577     need_version,
02578     need_tag,
02579     no_need
02580   } state = need_project;
02581 
02582   cmt_string project;
02583   cmt_string version;
02584   cmt_string tag;
02585 
02586   for (int i = 1; i < words.size (); i++)
02587     {
02588       const cmt_string& s = words[i];
02589 
02590       switch (state)
02591         {
02592           case need_project:
02593             project = s;
02594             state = need_version;
02595             break;
02596           case need_version:
02597             version = s;
02598             state = need_tag;
02599             break;
02600           case need_tag:
02601             tag = s;
02602             state = no_need;
02603             break;
02604         }
02605     }
02606 
02607   if (version.find ("*") != cmt_string::npos)
02608     {
02609         /*
02610       cout << "# ================= Project " << project 
02611            << " version " << version
02612            << " has wild cards and will not be considered." << endl;
02613         */
02614     }
02615   else
02616     {
02617       static const cmt_string empty;
02618       m_cvs.do_checkout_phase2 (empty, project, version, tag);
02619     }
02620 }


Member Data Documentation

CvsImplementation& RecursivePass4::m_cvs [private]
 

Definition at line 161 of file cmt_cvs.cxx.

Referenced by filter().


The documentation for this class was generated from the following file:
Generated on Mon May 2 10:26:00 2005 for CMT by doxygen 1.3.5