TAO_Tokenizer Class Reference

#include <FlowSpec_Entry.h>

Collaboration diagram for TAO_Tokenizer:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TAO_Tokenizer (const char *string, char delimiter)
 constructor.

 ~TAO_Tokenizer (void)
 destructor.

int parse (const char *string, char delimiter)
 parses the string and tokenizes it.

char * token (void)
 Returns the next token.

int num_tokens (void)
 Number of tokens.

const char * operator[] (size_t index) const

Protected Attributes

ACE_Array< char * > token_array_
size_t count_
size_t num_tokens_
char string_ [BUFSIZ]

Constructor & Destructor Documentation

TAO_Tokenizer::TAO_Tokenizer const char *  string,
char  delimiter
 

constructor.

Definition at line 4429 of file AVStreams_i.cpp.

References parse().

04430   :token_array_ (10),
04431    count_ (0)
04432 {
04433   this->parse (string, delimiter);
04434 }

TAO_Tokenizer::~TAO_Tokenizer void   ) 
 

destructor.

Definition at line 4436 of file AVStreams_i.cpp.

References num_tokens_, and CORBA::string_free().

04437 {
04438   for (unsigned int i=0; i<this->num_tokens_; i++)
04439     CORBA::string_free (this->token_array_[i]);
04440 }


Member Function Documentation

int TAO_Tokenizer::num_tokens void   ) 
 

Number of tokens.

Definition at line 4512 of file AVStreams_i.cpp.

References num_tokens_.

Referenced by TAO_Forward_FlowSpec_Entry::parse(), and TAO_FlowSpec_Entry::parse_address().

04513 {
04514   return static_cast<int> (this->num_tokens_);
04515 }

const char * TAO_Tokenizer::operator[] size_t  index  )  const
 

Definition at line 4518 of file AVStreams_i.cpp.

References num_tokens_, and token_array_.

04519 {
04520   if (index >= this->num_tokens_)
04521     return 0;
04522 
04523   return this->token_array_[index];
04524 }

int TAO_Tokenizer::parse const char *  string,
char  delimiter
 

parses the string and tokenizes it.

Definition at line 4444 of file AVStreams_i.cpp.

References ACE_CString, ACE_ERROR_RETURN, LM_ERROR, num_tokens_, ACE_Array_Base< T >::set(), ACE_Array_Base< T >::size(), CORBA::string_dup(), token(), and token_array_.

Referenced by TAO_Tokenizer().

04445 {
04446   ACE_CString new_string (string);
04447   u_int pos =0;
04448   ACE_CString::size_type slash_pos = 0;
04449   u_int count = 0;
04450   int result;
04451   while (pos < new_string.length ())
04452     {
04453       slash_pos = new_string.find (delimiter, pos);
04454       ACE_CString substring;
04455       if (slash_pos != new_string.npos)
04456         {
04457           substring = new_string.substring (pos,
04458                                             slash_pos - pos);
04459           pos = slash_pos + 1;
04460         }
04461       else
04462         {
04463           substring = new_string.substring (pos);
04464           pos = static_cast<int> (new_string.length ());
04465         }
04466       char *token = CORBA::string_dup (substring.c_str ());
04467       result = this->token_array_.set (token, count);
04468       if (result == -1)
04469         {
04470           this->token_array_.size (this->token_array_.size ()*2);
04471           result = this->token_array_.set (token, count);
04472           if (result == -1)
04473             ACE_ERROR_RETURN ((LM_ERROR, "TAO_Tokenizer::parse error"), -1);
04474         }
04475       count++;
04476     }
04477 
04478   /*
04479   ACE_OS::strcpy (this->string_ , string);
04480   char delimiter_str [2] = {0, 0};
04481   delimiter_str [0] = delimiter;
04482   char *token = ACE_OS::strtok (this->string_, delimiter_str);
04483 
04484   while (token != 0)
04485     {
04486       result = this->token_array_.set (token, count);
04487       if (result == -1)
04488         {
04489           this->token_array_.size (this->token_array_.size ()*2);
04490           result = this->token_array_.set (token, count);
04491           if (result == -1)
04492             ACE_ERROR_RETURN ((LM_ERROR, "TAO_Tokenizer::parse error"), -1);
04493         }
04494       token = ACE_OS::strtok (0, delimiter_str);
04495       count++;
04496     }
04497   */
04498   this->num_tokens_ = count;
04499   return 0;
04500 }

char * TAO_Tokenizer::token void   ) 
 

Returns the next token.

Definition at line 4503 of file AVStreams_i.cpp.

References num_tokens_, and CORBA::string_dup().

Referenced by parse().

04504 {
04505   if (count_ < num_tokens_)
04506     return CORBA::string_dup (this->token_array_[this->count_++]);
04507   else
04508     return 0;
04509 }


Member Data Documentation

size_t TAO_Tokenizer::count_ [protected]
 

Definition at line 53 of file FlowSpec_Entry.h.

size_t TAO_Tokenizer::num_tokens_ [protected]
 

Definition at line 54 of file FlowSpec_Entry.h.

Referenced by num_tokens(), operator[](), parse(), token(), and ~TAO_Tokenizer().

char TAO_Tokenizer::string_[BUFSIZ] [protected]
 

Definition at line 55 of file FlowSpec_Entry.h.

ACE_Array<char*> TAO_Tokenizer::token_array_ [protected]
 

Definition at line 52 of file FlowSpec_Entry.h.

Referenced by operator[](), and parse().


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 16:08:16 2008 for TAO_AV by doxygen 1.3.6