00001 /* -*- C++ -*- */ 00002 // ARGV.inl,v 4.4 2006/06/09 07:47:19 jwillemsen Exp 00003 00004 #include "ace/Global_Macros.h" 00005 00006 // Open versioned namespace, if enabled by the user. 00007 ACE_BEGIN_VERSIONED_NAMESPACE_DECL 00008 00009 // Return the number of args 00010 template <typename CHAR_TYPE> 00011 ACE_INLINE int 00012 ACE_ARGV_T<CHAR_TYPE>::argc (void) const 00013 { 00014 ACE_TRACE ("ACE_ARGV_T::argc"); 00015 return this->argc_; 00016 } 00017 00018 // Return the arguments in a space-separated string 00019 template <typename CHAR_TYPE> 00020 ACE_INLINE const CHAR_TYPE * 00021 ACE_ARGV_T<CHAR_TYPE>::buf (void) 00022 { 00023 ACE_TRACE ("ACE_ARGV_T::buf"); 00024 00025 if (this->buf_ == 0 && this->iterative_) 00026 this->create_buf_from_queue (); 00027 00028 return (const CHAR_TYPE *) this->buf_; 00029 } 00030 00031 // Return the arguments in an entry-per-argument array 00032 00033 template <typename CHAR_TYPE> 00034 ACE_INLINE CHAR_TYPE ** 00035 ACE_ARGV_T<CHAR_TYPE>::argv (void) 00036 { 00037 ACE_TRACE ("ACE_ARGV_T::argv"); 00038 00039 // Try to create the argv_ if it isn't there 00040 if (this->argv_ == 0) 00041 { 00042 if (this->iterative_ && this->buf_ == 0) 00043 this->create_buf_from_queue (); 00044 00045 // Convert buf_ to argv_ 00046 if (this->string_to_argv () == -1) 00047 return (CHAR_TYPE **) 0; 00048 } 00049 00050 return (CHAR_TYPE **) this->argv_; 00051 } 00052 00053 // Subscript operator. 00054 00055 template <typename CHAR_TYPE> 00056 ACE_INLINE const CHAR_TYPE * 00057 ACE_ARGV_T<CHAR_TYPE>::operator[] (size_t i) 00058 { 00059 ACE_TRACE ("ACE_ARGV_T::operator[]"); 00060 00061 // Don't go out of bounds. 00062 if (i >= static_cast<size_t> (this->argc_)) 00063 return 0; 00064 00065 return (const CHAR_TYPE *) this->argv ()[i]; 00066 } 00067 00068 // Close versioned namespace, if enabled by the user. 00069 ACE_END_VERSIONED_NAMESPACE_DECL