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]

Detailed Description

Definition at line 31 of file FlowSpec_Entry.h.


Constructor & Destructor Documentation

TAO_Tokenizer::TAO_Tokenizer ( const char *  string,
char  delimiter 
)

constructor.

Definition at line 4477 of file AVStreams_i.cpp.

References parse().

04478   :token_array_ (10),
04479    count_ (0)
04480 {
04481   this->parse (string, delimiter);
04482 }

TAO_Tokenizer::~TAO_Tokenizer ( void   ) 

destructor.

Definition at line 4484 of file AVStreams_i.cpp.

References num_tokens_, and CORBA::string_free().

04485 {
04486   for (unsigned int i=0; i<this->num_tokens_; i++)
04487     CORBA::string_free (this->token_array_[i]);
04488 }


Member Function Documentation

int TAO_Tokenizer::num_tokens ( void   ) 

Number of tokens.

Definition at line 4560 of file AVStreams_i.cpp.

References num_tokens_.

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

04561 {
04562   return static_cast<int> (this->num_tokens_);
04563 }

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

Definition at line 4566 of file AVStreams_i.cpp.

References token_array_.

04567 {
04568   if (index >= this->num_tokens_)
04569     return 0;
04570 
04571   return this->token_array_[index];
04572 }

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

parses the string and tokenizes it.

Definition at line 4492 of file AVStreams_i.cpp.

References ACE_ERROR_RETURN, ACE_String_Base< CHAR >::c_str(), ACE_String_Base< CHAR >::find(), ACE_String_Base< CHAR >::length(), LM_ERROR, ACE_String_Base_Const::npos, num_tokens_, ACE_Array_Base< T >::set(), ACE_Array_Base< T >::size(), CORBA::string_dup(), ACE_String_Base< CHAR >::substring(), token(), and token_array_.

Referenced by TAO_Tokenizer().

04493 {
04494   ACE_CString new_string (string);
04495   u_int pos =0;
04496   ACE_CString::size_type slash_pos = 0;
04497   u_int count = 0;
04498   int result;
04499   while (pos < new_string.length ())
04500     {
04501       slash_pos = new_string.find (delimiter, pos);
04502       ACE_CString substring;
04503       if (slash_pos != new_string.npos)
04504         {
04505           substring = new_string.substring (pos,
04506                                             slash_pos - pos);
04507           pos = slash_pos + 1;
04508         }
04509       else
04510         {
04511           substring = new_string.substring (pos);
04512           pos = static_cast<int> (new_string.length ());
04513         }
04514       char *token = CORBA::string_dup (substring.c_str ());
04515       result = this->token_array_.set (token, count);
04516       if (result == -1)
04517         {
04518           this->token_array_.size (this->token_array_.size ()*2);
04519           result = this->token_array_.set (token, count);
04520           if (result == -1)
04521             ACE_ERROR_RETURN ((LM_ERROR, "TAO_Tokenizer::parse error"), -1);
04522         }
04523       count++;
04524     }
04525 
04526   /*
04527   ACE_OS::strcpy (this->string_ , string);
04528   char delimiter_str [2] = {0, 0};
04529   delimiter_str [0] = delimiter;
04530   char *token = ACE_OS::strtok (this->string_, delimiter_str);
04531 
04532   while (token != 0)
04533     {
04534       result = this->token_array_.set (token, count);
04535       if (result == -1)
04536         {
04537           this->token_array_.size (this->token_array_.size ()*2);
04538           result = this->token_array_.set (token, count);
04539           if (result == -1)
04540             ACE_ERROR_RETURN ((LM_ERROR, "TAO_Tokenizer::parse error"), -1);
04541         }
04542       token = ACE_OS::strtok (0, delimiter_str);
04543       count++;
04544     }
04545   */
04546   this->num_tokens_ = count;
04547   return 0;
04548 }

char * TAO_Tokenizer::token ( void   ) 

Returns the next token.

Definition at line 4551 of file AVStreams_i.cpp.

References count_, num_tokens_, and CORBA::string_dup().

Referenced by parse().

04552 {
04553   if (count_ < num_tokens_)
04554     return CORBA::string_dup (this->token_array_[this->count_++]);
04555   else
04556     return 0;
04557 }


Member Data Documentation

size_t TAO_Tokenizer::count_ [protected]

Definition at line 53 of file FlowSpec_Entry.h.

Referenced by token().

size_t TAO_Tokenizer::num_tokens_ [protected]

Definition at line 54 of file FlowSpec_Entry.h.

Referenced by num_tokens(), 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 Tue Feb 2 17:48:12 2010 for TAO_AV by  doxygen 1.4.7