123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- /****************************************************************************
- (c) 2005 by STEMMER IMAGING
- // License: This file is published under the license of the EMVA GenICam Standard Group.
- // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
- // If for some reason you are missing this file please contact the EMVA or visit the website
- // (http://www.genicam.org) for a full copy.
- //
- // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
- // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
- // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- // POSSIBILITY OF SUCH DAMAGE.
- ****************************************************************************/
- /// \file
- /// \brief Portable string vector implementation
- /// \ingroup Base_PublicUtilities
- #ifndef GENICAM_GCSTRINGLIST_H
- #define GENICAM_GCSTRINGLIST_H
- #include <Base/GCTypes.h>
- #include <Base/GCString.h>
- #pragma pack(push, 8)
- #if defined (_WIN32) || (defined (__GNUC__) && (defined (__linux__) || defined(__APPLE__) || defined(VXWORKS)))
- namespace GENICAM_NAMESPACE
- {
- /**
- \brief A vector of gcstrings which is a clone of std::vector<std::string>
- \ingroup Base_PublicUtilities
- */
- class GCBASE_API gcstring_vector
- {
- // Nested types
- // ---------------------------------------------------------------------------
- public:
- class GCBASE_API const_iterator
- {
- // Ctor / Dtor
- // -------------------------------------------------------------------------
- public:
- const_iterator(gcstring *pStr = 0);
- // Operators
- // -------------------------------------------------------------------------
- public:
- const gcstring & operator * (void) const;
- const gcstring * operator -> (void) const;
- const_iterator & operator ++ (void);
- const_iterator operator ++ (int);
- const_iterator & operator -- (void);
- const_iterator operator -- (int);
- const_iterator & operator += (intptr_t iInc);
- const_iterator operator + (intptr_t iInc) const;
- const_iterator & operator -= (intptr_t iDec);
- intptr_t operator - (const const_iterator &iter) const;
- const_iterator operator - (intptr_t iDec) const;
- const gcstring & operator [] (intptr_t iIndex) const;
- bool operator == (const const_iterator &iter) const;
- bool operator != (const const_iterator &iter) const;
- bool operator < (const const_iterator &iter) const;
- bool operator > (const const_iterator &iter) const;
- bool operator <= (const const_iterator &iter) const;
- bool operator >= (const const_iterator &iter) const;
- GCBASE_API
- friend const_iterator operator + (intptr_t iInc, const const_iterator &iter);
- // Member
- // -------------------------------------------------------------------------
- protected:
- gcstring * _ps;
- };
- class GCBASE_API iterator :
- public const_iterator
- {
- // Ctor / Dtor
- // -------------------------------------------------------------------------
- public:
- iterator(gcstring *pStr = 0);
- // Operators
- // -------------------------------------------------------------------------
- public:
- gcstring & operator * (void) const;
- gcstring * operator -> (void) const;
- iterator & operator ++ (void);
- iterator operator ++ (int);
- iterator & operator -- (void);
- iterator operator -- (int);
- iterator & operator += (intptr_t iInc);
- iterator operator + (intptr_t iInc) const;
- iterator & operator -= (intptr_t iDec);
- intptr_t operator - (const iterator &iter) const;
- iterator operator - (intptr_t iDec) const;
- gcstring & operator [] (intptr_t iIndex) const;
- GCBASE_API
- friend iterator operator + (intptr_t iInc, const iterator &iter);
- };
- // Ctor / Dtor
- // ---------------------------------------------------------------------------
- public:
- gcstring_vector(void);
- explicit gcstring_vector(size_t uiSize, const gcstring &str = gcstring());
- gcstring_vector(const gcstring_vector &obj);
- virtual ~gcstring_vector(void);
- // Element access
- // ---------------------------------------------------------------------------
- public:
- virtual void assign(size_t n, const gcstring &val);
- virtual void clear(void);
- virtual iterator erase(iterator pos);
- virtual gcstring & at(size_t uiIndex);
- virtual const gcstring & at(size_t uiIndex) const;
- virtual gcstring & back(void);
- virtual const gcstring & back(void) const;
- virtual iterator begin(void);
- virtual const_iterator begin(void) const;
- virtual size_t capacity(void) const;
- virtual iterator end(void);
- virtual const_iterator end(void) const;
- virtual gcstring & front(void);
- virtual const gcstring & front(void) const;
- virtual size_t max_size(void) const;
- virtual size_t size(void) const;
- virtual iterator insert(iterator pos, const gcstring &str);
- virtual bool empty(void) const;
- virtual void pop_back(void);
- virtual void push_back(const gcstring &str);
- virtual void resize(size_t uiSize, const gcstring &str = gcstring());
- virtual void reserve(size_t uiSize);
- virtual bool contains(const gcstring &str) const;
- // Do not use the methods below - they only exist for
- // backwards compatibility
- virtual gcstring_vector & assign(const gcstring_vector &obj);
- virtual void erase(size_t uiIndex);
- virtual void insert(size_t uiIndex, const gcstring &str);
- // Operators
- // ---------------------------------------------------------------------------
- public:
- gcstring_vector & operator = (const gcstring_vector &obj);
- gcstring & operator [] (size_t uiIndex);
- const gcstring & operator [] (size_t uiIndex) const;
- void operator delete (void *pWhere);
- void * operator new (size_t uiSize);
- // Member
- // ---------------------------------------------------------------------------
- private:
- void * _pv;
- };
- }
- #else
- # error No known support for shared libraries
- #endif
- #pragma pack(pop)
- #endif // GENICAM_GCSTRINGLIST_H
|