1#ifndef __DCL_ARRAY_T_H__
2#define __DCL_ARRAY_T_H__ 20110304
4#ifndef __DCL_CONFIG_H__
8#if !__DCL_DEBUG && !defined(__DCL_INCLUDED_STDLIB_H)
10 #define __DCL_INCLUDED_STDLIB_H
12#ifndef __DCL_INCLUDED_STRING_H
14 #define __DCL_INCLUDED_STRING_H
17#ifndef __DCL_OBJECT_H__
23#if __DCL_HAVE_ALLOC_DEBUG
24 #undef __DCL_ALLOC_LEVEL
25 #define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
27 #define new __DCL_DEBUG_NEW
30#if __DCL_HAVE_THIS_FILE__
31 static const char_t __szArrayT_h__[] =
__T(
"dcl/ArrayT.h");
33 #define __THIS_FILE__ __szArrayT_h__
40template<
typename ELEMENT>
45 typedef const ELEMENT* ConstIterator;
46 typedef ELEMENT* Iterator;
56 ConstIterator
end()
const;
65 Iterator
insert(Iterator _pos,
const ELEMENT& _element);
70 Iterator
find(
const ELEMENT& _element);
74 Iterator
erase(Iterator _first, Iterator _last);
78 size_t index(Iterator _pos)
const;
86 size_t size(ConstIterator _first, ConstIterator _last)
const;
87 size_t size(Iterator _first, Iterator _last)
const;
96 ELEMENT*
data() {
return (ELEMENT*) (
this + 1); }
109template<
typename ELEMENT>
114 return (
const ELEMENT*)
__pData;
117template<
typename ELEMENT>
125template<
typename ELEMENT>
127typename Array<ELEMENT>::Iterator
133template<
typename ELEMENT>
135typename Array<ELEMENT>::Iterator
141template<
typename ELEMENT>
149template<
typename ELEMENT>
151typename Array<ELEMENT>::Iterator
165template<
typename ELEMENT>
167typename Array<ELEMENT>::Iterator
176template<
typename ELEMENT>
182 return erase(_index, 1);
185template<
typename ELEMENT>
194template<
typename ELEMENT>
199 return __buf()->__size;;
202template<
typename ELEMENT>
210template<
typename ELEMENT>
219template<
typename ELEMENT>
228template<
typename ELEMENT>
236template<
typename ELEMENT>
242 return _last - _first;
245template<
typename ELEMENT>
251 return _last - _first;
258template<
typename ELEMENT>
261 __DCL_NAMESPACE_STRING __S(
Array),
266template<
typename ELEMENT>
272template<
typename ELEMENT>
275 return typeid(
Array);
279template<
typename ELEMENT>
284 for(; _size; _size--, _pElements++)
286#if __DCL_HAVE_ALLOC_DEBUG
290 new((
void*)_pElements) ELEMENT;
292#if __DCL_HAVE_ALLOC_DEBUG
293#define new __DCL_DEBUG_NEW
298template<
typename ELEMENT>
303 for( ; _size; _size--, _pElements++)
305 _pElements->~ELEMENT();
309template<
typename ELEMENT>
316template<
typename ELEMENT>
323template<
typename ELEMENT>
330template<
typename ELEMENT>
338 for(
size_t i = 0; i < _src.
size(); i++)
344template<
typename ELEMENT>
355template<
typename ELEMENT>
367 buf->__maxSize =
buf->__size;
372template<
typename ELEMENT>
411 buf->__maxSize = _size;
413 memset((
void*)(
__pData +
buf->__size), 0, (_size -
buf->__size) *
sizeof(ELEMENT));
420template<
typename ELEMENT>
421typename Array<ELEMENT>::Iterator
432template<
typename ELEMENT>
439 size_t newSize =
size() + 1;
448 buf->__maxSize = newSize;
452 memmove((
void*)(
__pData + _index + 1), (
const void*)(
__pData + _index),
453 sizeof(ELEMENT) * (
buf->__size - _index));
458 __pData[_index] = (ELEMENT) _element;
462template<
typename ELEMENT>
468 size_t newSize =
size() + _src.
size();
481 for(
size_t i = 0; i < _src.
size(); i++)
489template<
typename ELEMENT>
490typename Array<ELEMENT>::Iterator
493 Iterator it =
begin();
494 for ( ; it !=
end(); it++)
502template<
typename ELEMENT>
510 if (_index + _size <
size())
511 memmove((
void*)(
__pData + _index), (
const void*)(
__pData + _index + _size),
512 (
size() - (_index + _size)) *
sizeof(ELEMENT));
519#if __DCL_HAVE_THIS_FILE__
521 #define __THIS_FILE__ __T(__FILE__)
524#if __DCL_HAVE_ALLOC_DEBUG
525 #undef __DCL_ALLOC_LEVEL
526 #define __DCL_ALLOC_LEVEL __DCL_ALLOC_USER
528 #define new __DCL_DEBUG_NEW
#define constructElements(_pElements, _size)
#define destructElements(_pElements, _size)
#define __DCL_ASSERT_PARAM(expr)
#define DECLARE_CLASSINFO(class_name)
#define CLASSINFO(class_name)
#define __DCL_ASSERT(expr)
#define __DCL_ASSERT_HANDLE(expr)
void CharsetConvertException *__fields clear()
Iterator erase(Iterator _pos)
ConstIterator end() const
Iterator find(const ELEMENT &_element)
void destructElements(ELEMENT *_pElements, size_t _size)
Iterator insert(Iterator _pos, const ELEMENT &_element)
void constructElements(ELEMENT *_pElements, size_t _size)
ELEMENT & operator[](size_t _index)
Array< ELEMENT > & add(const ELEMENT &_element)
void resize(size_t _size)
const Array< ELEMENT > & operator=(const Array< ELEMENT > &_src)
size_t & __maxSize() const
ConstIterator begin() const
size_t index(Iterator _pos) const
virtual const std::type_info & typeInfo() const