ArrayInter.h
1 //%LICENSE////////////////////////////////////////////////////////////////
2 //
3 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
29 //
30 //%/////////////////////////////////////////////////////////////////////////////
31 
32 // Only include if not included as general template or if explicit instantiation
33 #if !defined(Pegasus_ArrayInter_h) || defined(PEGASUS_ARRAY_T)
34 #if !defined(PEGASUS_ARRAY_T)
35 #define Pegasus_ArrayInter_h
36 #endif
37 
38 #include <Pegasus/Common/Linkage.h>
39 
40 #ifndef PEGASUS_ARRAY_T
41 
44 template<class PEGASUS_ARRAY_T> class Array
45 #else
46 PEGASUS_TEMPLATE_SPECIALIZATION
47  class PEGASUS_COMMON_LINKAGE Array<PEGASUS_ARRAY_T>
48 #endif
49 {
50 public:
51 
55  Array();
56 
62  Array(const Array<PEGASUS_ARRAY_T>& x);
63 
69  Array(Uint32 size);
70 
77  Array(Uint32 size, const PEGASUS_ARRAY_T& x);
78 
85  Array(const PEGASUS_ARRAY_T* items, Uint32 size);
86 
90  ~Array();
91 
98 
103  void clear();
104 
114  void reserveCapacity(Uint32 capacity);
115 
124  void grow(Uint32 size, const PEGASUS_ARRAY_T& x);
125 
132  void swap(Array<PEGASUS_ARRAY_T>& x);
133 
138  Uint32 size() const;
139 
144  Uint32 getCapacity() const;
145 
150  const PEGASUS_ARRAY_T* getData() const;
151 
157  PEGASUS_ARRAY_T& operator[](Uint32 index);
158 
165  const PEGASUS_ARRAY_T& operator[](Uint32 index) const;
166 
172  void append(const PEGASUS_ARRAY_T& x);
173 
179  void append(const PEGASUS_ARRAY_T* x, Uint32 size);
180 
186  void appendArray(const Array<PEGASUS_ARRAY_T>& x);
187 
193  void prepend(const PEGASUS_ARRAY_T& x);
194 
200  void prepend(const PEGASUS_ARRAY_T* x, Uint32 size);
201 
208  void insert(Uint32 index, const PEGASUS_ARRAY_T& x);
209 
218  void insert(Uint32 index, const PEGASUS_ARRAY_T* x, Uint32 size);
219 
225  void remove(Uint32 index);
226 
234  void remove(Uint32 index, Uint32 size);
235 
236 private:
237 
238  PEGASUS_ARRAY_T* _data() const;
239 
240  void* _rep;
241 };
242 
243 #endif
Array< PEGASUS_ARRAY_T > & operator=(const Array< PEGASUS_ARRAY_T > &x)
PEGASUS_ARRAY_T & operator[](Uint32 index)
void grow(Uint32 size, const PEGASUS_ARRAY_T &x)
void appendArray(const Array< PEGASUS_ARRAY_T > &x)
Uint32 getCapacity() const
void append(const PEGASUS_ARRAY_T &x)
void reserveCapacity(Uint32 capacity)
void insert(Uint32 index, const PEGASUS_ARRAY_T &x)
const PEGASUS_ARRAY_T * getData() const
void prepend(const PEGASUS_ARRAY_T &x)
Uint32 size() const
Definition: ArrayInter.h:44
void clear()
void swap(Array< PEGASUS_ARRAY_T > &x)