Revert "Minor modernization of DynamicAny code"
[ACE_TAO.git] / TAO / tao / MProfile.inl
blob985b10ab1b35065cca86d084e92bbb9c56301039
1 // -*- C++ -*-
2 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
4 ACE_INLINE
5 TAO_MProfile::TAO_MProfile (CORBA::ULong sz)
6   :  policy_list_ (0),
7      is_policy_list_initialized_ (false),
8      forward_from_(0),
9      pfiles_ (0),
10      current_ (0),
11      size_ (0),
12      last_ (0)
14   this->set (sz);
17 ACE_INLINE
18 TAO_MProfile::TAO_MProfile (const TAO_MProfile &mprofiles)
19   :  policy_list_ (0),
20      is_policy_list_initialized_ (false),
21      forward_from_(0),
22      pfiles_ (0),
23      current_ (0),
24      size_ (0),
25      last_ (0)
27   this->set (mprofiles);
30 ACE_INLINE TAO_MProfile&
31 TAO_MProfile::operator= (const TAO_MProfile& rhs)
33   if (this == &rhs)
34     return *this;
36   this->set (rhs);
37   return *this;
40 /// Cyclic get next.  It will simply cycle through the complete list.
41 ACE_INLINE TAO_Profile *
42 TAO_MProfile::get_cnext ()
44   if (last_ == 0)
45     return 0;
47   if (current_ == last_)
48     current_ = 0;
50   return pfiles_[current_++];
53 /// This will return the next element until either null is found or the
54 /// end of list.  It then continues to return NULL until rewind.
55 ACE_INLINE TAO_Profile *
56 TAO_MProfile::get_next ()
58   // Nolist or EndOfList
59   if (last_ == 0 || current_ == last_)
60     return 0;
61   else
62     return pfiles_[current_++];
65 ACE_INLINE TAO_Profile *
66 TAO_MProfile::get_cprev ()
68   if (last_ == 0)
69     return 0;
70   else if (last_ == 1)
71     current_=1;
72   else if (current_ > 1)
73     --current_;
74   else // current_ == 0 or 1, 0 => list never read before and == 1
75     current_ = last_;
77   return pfiles_[current_ - 1];
80 ACE_INLINE TAO_Profile *
81 TAO_MProfile::get_prev ()
83   if (last_ == 0 || current_ <= 1)
84     // No List of BeginningOfList
85     return 0;
86   if (current_ > 1)
87     --current_;
89   return pfiles_[current_ - 1];
92 // does not affect the current_ setting!
93 ACE_INLINE TAO_Profile *
94 TAO_MProfile::get_profile (TAO_PHandle handle)
96   if (handle < last_)
97     return pfiles_[handle];
98   else
99     return 0;
102 ACE_INLINE TAO_Profile *
103 TAO_MProfile::get_current_profile ()
105   if (last_ == 0)
106     return 0;
107   if (current_ == 0)
108     // means list has not been read before.
109     current_ = 1;
111   return pfiles_[current_ - 1];
114 ACE_INLINE TAO_PHandle
115 TAO_MProfile::get_current_handle ()
117   if (current_ > 0)
118     return current_ - 1;
119   else
120     return 0;
123 ACE_INLINE TAO_PHandle
124 TAO_MProfile::get_current_handle () const
126   if (current_ > 0)
127     return current_ - 1;
128   else
129     return 0;
132 ACE_INLINE void
133 TAO_MProfile::rewind ()
135   current_ = 0;
138 ACE_INLINE int
139 TAO_MProfile::give_profile (TAO_Profile *pfile, int share)
141   if (share)
142     return this->give_shared_profile(pfile);
143   // skip by the used slots
144   if (last_ == size_) // full!
145     return -1;
147   pfiles_[last_++] = pfile;
149   return last_ - 1;
152 ACE_INLINE
153 void
154 TAO_MProfile::forward_from (TAO_MProfile *from)
156   this->forward_from_ = from;
159 ACE_INLINE
160 TAO_MProfile *
161 TAO_MProfile::forward_from ()
163   return this->forward_from_;
166 ACE_INLINE CORBA::ULong
167 TAO_MProfile::profile_count () const
169   return this->last_;
172 ACE_INLINE CORBA::ULong
173 TAO_MProfile::size () const
175   return this->size_;
178 ACE_INLINE const TAO_Profile*
179 TAO_MProfile::get_profile (CORBA::ULong slot) const
181   if (slot >= this->last_)
182     return 0;
183   return this->pfiles_[slot];
186 ACE_INLINE TAO_Profile **
187 TAO_MProfile::pfiles () const
189   return this->pfiles_;
192 ACE_INLINE void
193 TAO_MProfile::policy_list (CORBA::PolicyList *policy_list)
195   this->policy_list_ = policy_list;
198 TAO_END_VERSIONED_NAMESPACE_DECL