--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanldd/wlan_common/osa_common/inc/osacarray.h Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,212 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: wrapper on top of C array with C++ STL interface
+*
+*/
+
+/*
+* %version: 3 %
+*/
+
+#ifndef WLANCARRAY_H
+#define WLANCARRAY_H
+
+#include "algorithm.h"
+
+#include "osacarraypolicy.h"
+
+/**
+ * wrapper on top of C array with C++ STL interface
+ *
+ *
+ * @lib wlanosa.lib
+ * @since S60 v3.2
+ */
+template
+<
+ class T,
+ TInt the_size,
+ // check out osacarraypolicy.h 4 these
+ class CopyingPolicy = NoCopy<T>
+>
+class Carray : protected CopyingPolicy, public DBase
+ {
+
+ typedef Carray<T, the_size, CopyingPolicy> Self;
+
+public:
+
+ // type definitions
+ typedef T value_type;
+ typedef T* iterator;
+ typedef const T* const_iterator;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef TInt size_type;
+
+ /**
+ * Constructor.
+ *
+ * @since S60 v3.2
+ */
+ Carray() {};
+
+ /**
+ * Constructor. Construct with inital data
+ *
+ * @since S60 v3.2
+ * @param aP initial data
+ */
+ explicit inline Carray( T* aP ) { copy( aP, aP + the_size, begin()); }
+
+ /**
+ * returns iterator to begin of the sequence
+ *
+ * @since S60 v3.2
+ * @return iterator to begin of the sequence
+ */
+ inline iterator begin() { return v; }
+
+ /**
+ * returns const iterator to begin of the sequence
+ *
+ * @since S60 v3.2
+ * @return const iterator to begin of the sequence
+ */
+ inline const_iterator begin() const { return v; }
+
+ /**
+ * returns iterator to end of the sequence
+ *
+ * @since S60 v3.2
+ * @return iterator to end of the sequence
+ */
+ inline iterator end() { return v + the_size; }
+
+ /**
+ * returns const iterator to end of the sequence
+ *
+ * @since S60 v3.2
+ * @return const iterator to end of the sequence
+ */
+ inline const_iterator end() const { return v + the_size; }
+
+ /**
+ * returns size of the storage
+ *
+ * @since S60 v3.2
+ * @return size of the storage
+ */
+ inline size_type size() const { return the_size; }
+
+ /**
+ * returns max size of the storage
+ *
+ * @since S60 v3.2
+ * @return max size of the storage
+ */
+ inline size_type max_size() const { return the_size; }
+
+ /**
+ * non const [] operator access
+ *
+ * @since S60 v3.2
+ * @return non const reference to element
+ */
+ inline reference operator[](TInt i) { return v[i]; }
+
+ /**
+ * const [] operator access
+ *
+ * @since S60 v3.2
+ * @return const reference to element
+ */
+ inline const_reference operator[](TInt i) const { return v[i]; }
+
+ /**
+ * return non const reference to front of sequence
+ *
+ * @since S60 v3.2
+ * @return non const reference to front of sequence
+ */
+ inline reference front() { return v[0]; }
+
+ /**
+ * return const reference to front of sequence
+ *
+ * @since S60 v3.2
+ * @return const reference to front of sequence
+ */
+ inline const_reference front() const { return v[0]; }
+
+ /**
+ * return non const reference to back of sequence
+ *
+ * @since S60 v3.2
+ * @return non const reference to back of sequence
+ */
+ inline reference back() { return v[the_size-1]; }
+
+ /**
+ * return const reference to back of sequence
+ *
+ * @since S60 v3.2
+ * @return const reference to back of sequence
+ */
+ inline const_reference back() const { return v[the_size-1]; }
+
+ /**
+ * conversion to ordinary array
+ *
+ * @since S60 v3.2
+ * @return const pointer to begin of the sequence
+ */
+ inline const T* data() const { return v; }
+
+ /**
+ * conversion to ordinary array
+ *
+ * @since S60 v3.2
+ * @return non const pointer to begin of the sequence
+ */
+ inline T* data() { return v; }
+
+ /**
+ * assignment operator
+ *
+ * @since S60 v3.2
+ */
+ Self& operator=( const Self& );
+
+ /**
+ * copy constructor
+ *
+ * @since S60 v3.2
+ */
+ inline Carray( const Self& o )
+ {
+ Copy(
+ const_cast<iterator>(o.begin()),
+ const_cast<iterator>(o.end()),
+ begin() );
+ }
+
+private:
+
+ T v[the_size];
+};
+
+#include "osacarray.inl"
+
+#endif // WLANCARRAY_H