ARGV.inl

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 // $Id: ARGV.inl 80826 2008-03-04 14:51:23Z wotte $
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 template <typename CHAR_TYPE> ACE_INLINE
00010 ACE_ARGV_Queue_Entry_T<CHAR_TYPE>::ACE_ARGV_Queue_Entry_T (void)
00011   : arg_(0),
00012     quote_arg_(false)
00013 {
00014   // No-op
00015 }
00016 
00017 template <typename CHAR_TYPE> ACE_INLINE
00018 ACE_ARGV_Queue_Entry_T<CHAR_TYPE>::ACE_ARGV_Queue_Entry_T (const CHAR_TYPE *arg,
00019                                                            bool quote_arg)
00020   : arg_(arg),
00021     quote_arg_(quote_arg)
00022 {
00023   // No-op
00024 }
00025 
00026 template <typename CHAR_TYPE> ACE_INLINE
00027 ACE_ARGV_Queue_Entry_T<CHAR_TYPE>::ACE_ARGV_Queue_Entry_T (const ACE_ARGV_Queue_Entry_T<CHAR_TYPE> &entry)
00028   : arg_(entry.arg_),
00029     quote_arg_(entry.quote_arg_)
00030 {
00031   // No-op
00032 }
00033 
00034 template <typename CHAR_TYPE> ACE_INLINE
00035 ACE_ARGV_Queue_Entry_T<CHAR_TYPE>::~ACE_ARGV_Queue_Entry_T (void)
00036 {
00037   // No-op just to keep some compilers happy...
00038 }
00039 
00040 // Return the number of args
00041 template <typename CHAR_TYPE>
00042 ACE_INLINE int
00043 ACE_ARGV_T<CHAR_TYPE>::argc (void) const
00044 {
00045   ACE_TRACE ("ACE_ARGV_T::argc");
00046  // Try to create the argv_ if it isn't there
00047   ACE_ARGV_T<CHAR_TYPE> *nonconst_this =
00048     const_cast <ACE_ARGV_T<CHAR_TYPE> *> (this);
00049  (void) nonconst_this->argv ();
00050   return this->argc_;
00051 }
00052 
00053 // Return the arguments in a space-separated string
00054 template <typename CHAR_TYPE>
00055 ACE_INLINE const CHAR_TYPE *
00056 ACE_ARGV_T<CHAR_TYPE>::buf (void)
00057 {
00058   ACE_TRACE ("ACE_ARGV_T::buf");
00059 
00060   if (this->buf_ == 0 && this->iterative_)
00061     this->create_buf_from_queue ();
00062 
00063   return (const CHAR_TYPE *) this->buf_;
00064 }
00065 
00066 // Return the arguments in an entry-per-argument array
00067 
00068 template <typename CHAR_TYPE>
00069 ACE_INLINE CHAR_TYPE **
00070 ACE_ARGV_T<CHAR_TYPE>::argv (void)
00071 {
00072   ACE_TRACE ("ACE_ARGV_T::argv");
00073 
00074   // Try to create the argv_ if it isn't there
00075   if (this->argv_ == 0)
00076     {
00077       if (this->iterative_ && this->buf_ == 0)
00078         this->create_buf_from_queue ();
00079 
00080       // Convert buf_ to argv_
00081       if (this->string_to_argv () == -1)
00082         return (CHAR_TYPE **) 0;
00083     }
00084 
00085   return (CHAR_TYPE **) this->argv_;
00086 }
00087 
00088 // Subscript operator.
00089 
00090 template <typename CHAR_TYPE>
00091 ACE_INLINE const CHAR_TYPE *
00092 ACE_ARGV_T<CHAR_TYPE>::operator[] (size_t i)
00093 {
00094   ACE_TRACE ("ACE_ARGV_T::operator[]");
00095 
00096   // Don't go out of bounds.
00097   if (i >= static_cast<size_t> (this->argc_))
00098     return 0;
00099 
00100   return (const CHAR_TYPE *) this->argv ()[i];
00101 }
00102 
00103 // Close versioned namespace, if enabled by the user.
00104 ACE_END_VERSIONED_NAMESPACE_DECL

Generated on Tue Feb 2 17:18:38 2010 for ACE by  doxygen 1.4.7