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

symbol_marker Class Reference

List of all members.

Public Methods

 symbol_marker ()
 symbol_marker (int a_ptr, char a_pattern, int a_intro)
 symbol_marker (const symbol_marker& other)
void set (int a_ptr, char a_pattern, int a_intro)

Public Attributes

int ptr
char pattern
int intro

Static Public Methods

symbol_marker& get_lowest (symbol_marker markers[], int last)

Constructor & Destructor Documentation

symbol_marker::symbol_marker ( ) [inline]
 

Definition at line 83 of file cmt_symbol.cxx.

00084   {
00085     ptr = cmt_string::npos;
00086     pattern = 0;
00087     intro = 0;
00088   }

symbol_marker::symbol_marker ( int a_ptr,
char a_pattern,
int a_intro ) [inline]
 

Definition at line 90 of file cmt_symbol.cxx.

00091   {
00092     ptr = a_ptr;
00093     pattern = a_pattern;
00094     intro = a_intro;
00095   }

symbol_marker::symbol_marker ( const symbol_marker & other ) [inline]
 

Definition at line 97 of file cmt_symbol.cxx.

00098   {
00099     ptr = other.ptr;
00100     pattern = other.pattern;
00101     intro = other.intro;
00102   }


Member Function Documentation

symbol_marker & symbol_marker::get_lowest ( symbol_marker markers[],
int last ) [inline, static]
 

Definition at line 111 of file cmt_symbol.cxx.

Referenced by Symbol::resolve_macro_value(), resolve_value(), resolve_value_for_macros(), and suppress_OS_delimiters().

00112   {
00113     static symbol_marker result;
00114 
00115     // discards trailing npos
00116     while ((last >= 0) && (markers[last].ptr == cmt_string::npos)) last--;
00117 
00118     if (last < 0) return (result);
00119 
00120     int i;
00121 
00122     // since we've passed the previous test, 
00123     // at least one entry (last) is not npos.
00124     // Now discards other npos by moving them to the end
00125     
00126     for (i = 0; i <= last; i++)
00127       {
00128         if (markers[i].ptr == cmt_string::npos)
00129           {
00130             markers[i] = markers[last];
00131             last--;
00132             if (last < 0) break;
00133           }
00134       }
00135     
00136     if (last < 0) return (result);
00137     
00138     // now all entries in [0, last] are not npos
00139     // let's sort the lowest one in [0]
00140     
00141     for (i = 1; i <= last;)
00142       {
00143         if (markers[0].ptr > markers[i].ptr)
00144           {
00145             symbol_marker temp = markers[0];
00146             markers[0] = markers[i];
00147             markers[i] = temp;
00148             i = 1;
00149           }
00150         else
00151           {
00152             i++;
00153             if (i > last) break;
00154           }
00155       }
00156     
00157     return (markers[0]);
00158   }

void symbol_marker::set ( int a_ptr,
char a_pattern,
int a_intro ) [inline]
 

Definition at line 104 of file cmt_symbol.cxx.

Referenced by Symbol::resolve_macro_value(), resolve_value(), resolve_value_for_macros(), and suppress_OS_delimiters().

00105   {
00106     ptr = a_ptr;
00107     pattern = a_pattern;
00108     intro = a_intro;
00109   }


Member Data Documentation

int symbol_marker::intro
 

Definition at line 162 of file cmt_symbol.cxx.

char symbol_marker::pattern
 

Definition at line 161 of file cmt_symbol.cxx.

int symbol_marker::ptr
 

Definition at line 160 of file cmt_symbol.cxx.


The documentation for this class was generated from the following file:
Generated at Thu Apr 11 16:50:57 2002 for CMT by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000