////////////////////////////////////////////////////////////////////// // // Copyright (C) Microsoft Corporation. All rights reserved. // // CSampleIMESampleIMEStructureArray.h // // CSampleIMEStructureArray declaration. // ////////////////////////////////////////////////////////////////////// #pragma once #include template class CSampleIMEStructureArray { typedef typename std::vector value_type; typedef const T& CONST_REF; typedef typename value_type CSampleIMEArray; typedef typename value_type::iterator CSampleIMEIter; public: CSampleIMEStructureArray(): _imeVector() { } explicit CSampleIMEStructureArray(size_t iCount): _imeVector(iCount) { } CSampleIMEStructureArray(size_t iCount, CONST_REF tVal): _imeVector(iCount, tVal) { } virtual ~CSampleIMEStructureArray() {} inline CONST_REF GetAt(size_t iIndex) const { assert(iIndex <= _imeVector.size()); assert(_imeVector.size() > 0); return _imeVector[iIndex]; } inline T& GetAt(size_t iIndex) { assert(iIndex <= _imeVector.size()); assert(_imeVector.size() > 0); return _imeVector[iIndex]; } void RemoveAt(size_t iIndex, size_t iElements) { assert(iIndex <= _imeVector.size()); assert(_imeVector.size() > 0); CSampleIMEIter beginIter = _imeVector.begin() + iIndex; CSampleIMEIter lastIter = beginIter + iElements - 1; _imeVector.erase(beginIter, lastIter); } size_t Count() const { return _imeVector.size(); } void Append(const T& tVal) { _imeVector.push_back(tVal); } void Clear() { _imeVector.clear(); } private: CSampleIMEArray _imeVector; // the actual array of data CSampleIMEIter _imeIter; };