empty_sequence.h
Go to the documentation of this file.
1 /*
2  * Copyright 2006-2008 The FLWOR Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #ifndef ZORBA_EMPTY_SEQUENCE_API_H
17 #define ZORBA_EMPTY_SEQUENCE_API_H
18 
19 #include <zorba/config.h>
20 #include <zorba/item_sequence.h>
21 #include <zorba/item.h>
22 #include <zorba/iterator.h>
23 
24 namespace zorba {
25 
26  /** \brief This class is an implementation of the ItemSequence.
27  * Objects of this class return, on the first next call,
28  * an empty sequence.
29  *
30  * See ItemSequence
31  */
32  class ZORBA_DLL_PUBLIC EmptySequence : public ItemSequence
33  {
34  class InternalIterator : public Iterator
35  {
36  private:
37  ItemSequence *theItemSequence;
38  bool is_open;
39  public:
40  InternalIterator(ItemSequence *item_sequence);
41 
42  /** \brief Start iterating.
43  *
44  * This function needs to be called before calling next().
45  *
46  */
47  virtual void open();
48  /** \brief Get the next Item of the sequence.
49  *
50  * This function returns false with no item.
51  * @param aItem not used
52  * @return false always
53  * @throw ZorbaException if iterator is not open.
54  *
55  */
56  virtual bool next(Item& aItem);
57  /** \brief Stop iterating.
58  *
59  * Not mandatory.
60  */
61  virtual void close();
62  /**
63  * brief Check whether the iterator is open or not
64  */
65  virtual bool isOpen() const;
66  };
67  public:
68  /** \brief Constructor
69  */
71 
72  /** \brief Destructor
73  */
74  virtual ~EmptySequence() { }
75 
76  /** \brief get the void Iterator
77  * @return a void iterator
78  */
79  virtual Iterator_t getIterator();
80 
81  }; /* class EmptySequence */
82 
83 } // namespace zorba
84 
85 #endif /* ZORBA_EMPTY_SEQUENCE_API_H */
86 /* vim:set et sw=2 ts=2: */
This interface represents an instance of the XQuery 1.0 and XPath 2.0 Data Model (XDM).
Definition: item_sequence.h:30
The Zorba Item interface.
Definition: item.h:60
This class is an implementation of the ItemSequence.
Interface for an Iterator over an instance of the XML Data Model (i.e., a sequence of items)...
Definition: iterator.h:41
EmptySequence()
Constructor.
virtual ~EmptySequence()
Destructor.