Merge pull request #2301 from sonndinh/remove-dup-reactor-functions
[ACE_TAO.git] / ACE / ace / ARGV.inl
blob9788893eb7718afdf3b6121a022866a114aad540
1 /* -*- C++ -*- */
2 #include "ace/Global_Macros.h"
4 // Open versioned namespace, if enabled by the user.
5 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
7 template <typename CHAR_TYPE> ACE_INLINE
8 ACE_ARGV_Queue_Entry_T<CHAR_TYPE>::ACE_ARGV_Queue_Entry_T ()
9   : arg_(0),
10     quote_arg_(false)
12   // No-op
15 template <typename CHAR_TYPE> ACE_INLINE
16 ACE_ARGV_Queue_Entry_T<CHAR_TYPE>::ACE_ARGV_Queue_Entry_T (const CHAR_TYPE *arg,
17                                                            bool quote_arg)
18   : arg_(arg),
19     quote_arg_(quote_arg)
21   // No-op
24 template <typename CHAR_TYPE> ACE_INLINE
25 ACE_ARGV_Queue_Entry_T<CHAR_TYPE>::ACE_ARGV_Queue_Entry_T (const ACE_ARGV_Queue_Entry_T<CHAR_TYPE> &entry)
26   : arg_(entry.arg_),
27     quote_arg_(entry.quote_arg_)
29   // No-op
32 // Return the number of args
33 template <typename CHAR_TYPE>
34 ACE_INLINE int
35 ACE_ARGV_T<CHAR_TYPE>::argc () const
37   ACE_TRACE ("ACE_ARGV_T::argc");
38  // Try to create the argv_ if it isn't there
39   ACE_ARGV_T<CHAR_TYPE> *nonconst_this =
40     const_cast <ACE_ARGV_T<CHAR_TYPE> *> (this);
41  (void) nonconst_this->argv ();
42   return this->argc_;
45 // Return the arguments in a space-separated string
46 template <typename CHAR_TYPE>
47 ACE_INLINE const CHAR_TYPE *
48 ACE_ARGV_T<CHAR_TYPE>::buf ()
50   ACE_TRACE ("ACE_ARGV_T::buf");
52   if (this->buf_ == 0 && this->iterative_)
53     this->create_buf_from_queue ();
55   return (const CHAR_TYPE *) this->buf_;
58 // Return the arguments in an entry-per-argument array
60 template <typename CHAR_TYPE>
61 ACE_INLINE CHAR_TYPE **
62 ACE_ARGV_T<CHAR_TYPE>::argv ()
64   ACE_TRACE ("ACE_ARGV_T::argv");
66   // Try to create the argv_ if it isn't there
67   if (this->argv_ == 0)
68     {
69       if (this->iterative_ && this->buf_ == 0)
70         this->create_buf_from_queue ();
72       // Convert buf_ to argv_
73       if (this->string_to_argv () == -1)
74         return (CHAR_TYPE **) 0;
75     }
77   return (CHAR_TYPE **) this->argv_;
80 // Subscript operator.
82 template <typename CHAR_TYPE>
83 ACE_INLINE const CHAR_TYPE *
84 ACE_ARGV_T<CHAR_TYPE>::operator[] (size_t i)
86   ACE_TRACE ("ACE_ARGV_T::operator[]");
88   // Don't go out of bounds.
89   if (i >= static_cast<size_t> (this->argc_))
90     return 0;
92   return (const CHAR_TYPE *) this->argv ()[i];
95 // Close versioned namespace, if enabled by the user.
96 ACE_END_VERSIONED_NAMESPACE_DECL