Sequence.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2001-2006
00003  *     DecisionSoft Limited. All rights reserved.
00004  * Copyright (c) 2004-2006
00005  *     Progress Software Corporation. All rights reserved.
00006  * Copyright (c) 2004-2006
00007  *     Oracle. All rights reserved.
00008  *
00009  * See the file LICENSE for redistribution information.
00010  *
00011  * $Id: Sequence.hpp,v 1.8 2006/11/01 16:37:15 jpcs Exp $
00012  */
00013 
00014 #ifndef _SEQUENCE_HPP
00015 #define _SEQUENCE_HPP
00016 
00017 #include <vector>
00018 
00019 #include <xqilla/framework/XQillaExport.hpp>
00020 #include <xqilla/items/ATDecimalOrDerived.hpp>
00021 #include <xqilla/framework/XPath2MemoryManager.hpp>
00022 
00023 #include <xercesc/util/XMemory.hpp>
00024 #include <xercesc/util/PlatformUtils.hpp>
00025 
00026 class DynamicContext;
00027 
00028 typedef std::vector<Item::Ptr, XQillaAllocator<Item::Ptr> > VectorOfItems;
00029 
00033 class XQILLA_API Sequence : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
00034 {
00035 
00036 public:
00037   typedef VectorOfItems::iterator iterator;
00038   typedef VectorOfItems::const_iterator const_iterator;
00039   typedef VectorOfItems::reverse_iterator reverse_iterator;
00040   typedef VectorOfItems::const_reverse_iterator const_reverse_iterator;
00041 
00042   // constructor that takes one Item
00043   Sequence(const Item::Ptr &item, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr =
00044            XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
00045   // constructor that creates a empty sequence
00046   Sequence(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr =
00047            XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
00049   Sequence(unsigned int n, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr =
00050            XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
00051   // copy constructor
00052   Sequence(const Sequence&, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr);
00053   // copy constructor
00054   Sequence(const Sequence&);
00055   Sequence &operator=(const Sequence &);
00056 
00057   ~Sequence();
00058 
00059   void clear();
00060 
00061   const Item::Ptr &first() const;
00062   const Item::Ptr &second() const;
00063 
00065   Sequence::iterator begin(void);
00066   Sequence::const_iterator begin(void) const;
00067 
00069   Sequence::iterator end(void);
00070   Sequence::const_iterator end(void) const;
00071 
00073   Sequence::reverse_iterator rbegin(void);
00074   Sequence::const_reverse_iterator rbegin(void) const;
00075 
00076   Sequence::reverse_iterator rend(void);
00077   Sequence::const_reverse_iterator rend(void) const;
00078 
00080   unsigned int getLength(void) const;
00081 
00083   const Item::Ptr &item(unsigned int index) const;
00085   const Item::Ptr &item(const ATDecimalOrDerived::Ptr &index) const;
00086 
00088   void addItem(const Item::Ptr &item);
00089 
00091   void addItemFront(const Item::Ptr &item);
00092 
00094   void joinSequence(const Sequence & s);
00095 
00097   bool isEmpty() const;
00098 
00100   void sortIntoDocumentOrder(const DynamicContext *context);
00101 
00103   void sortWithCollation(const Collation *collation, const DynamicContext *context);
00104 
00105 private:
00106   VectorOfItems _itemList;
00107 };
00108 
00109 #endif

Generated on Fri Jan 19 15:30:53 2007 for XQilla Simple API by  doxygen 1.4.6