#include <FlowSpec_Entry.h>
Collaboration diagram for TAO_Tokenizer:
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] |
Definition at line 31 of file FlowSpec_Entry.h.
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 }
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 }
size_t TAO_Tokenizer::count_ [protected] |
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] |