RexxCollection.hpp
Go to the documentation of this file.
1 /*----------------------------------------------------------------------------*/
2 /* */
3 /* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4 /* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5 /* */
6 /* This program and the accompanying materials are made available under */
7 /* the terms of the Common Public License v1.0 which accompanies this */
8 /* distribution. A copy is also available at the following address: */
9 /* http://www.oorexx.org/license.html */
10 /* */
11 /* Redistribution and use in source and binary forms, with or */
12 /* without modification, are permitted provided that the following */
13 /* conditions are met: */
14 /* */
15 /* Redistributions of source code must retain the above copyright */
16 /* notice, this list of conditions and the following disclaimer. */
17 /* Redistributions in binary form must reproduce the above copyright */
18 /* notice, this list of conditions and the following disclaimer in */
19 /* the documentation and/or other materials provided with the distribution. */
20 /* */
21 /* Neither the name of Rexx Language Association nor the names */
22 /* of its contributors may be used to endorse or promote products */
23 /* derived from this software without specific prior written permission. */
24 /* */
25 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31 /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33 /* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36 /* */
37 /*----------------------------------------------------------------------------*/
38 /******************************************************************************/
39 /* REXX Kernel RexxCollection.hpp */
40 /* */
41 /* Primitive HashTableCollection Class */
42 /* */
43 /******************************************************************************/
44 #ifndef Included_RexxHashTableCollection
45 #define Included_RexxHashTableCollection
46 
47 #include "RexxHashTable.hpp"
48 
50  public:
51  void live(size_t);
52  void liveGeneral(int reason);
53  void flatten(RexxEnvelope *);
56  RexxObject * copy();
57  RexxArray * makeArray();
58 
60  virtual RexxObject *remove(RexxObject *key);
61  virtual RexxObject *get(RexxObject *key);
62  virtual RexxObject *put(RexxObject *, RexxObject *);
63  virtual RexxObject *add(RexxObject *, RexxObject *);
65  virtual RexxObject *hasItem(RexxObject *);
66  virtual RexxObject *getIndex(RexxObject * value);
67 
68  RexxObject *copyValues(int depth);
83  RexxObject *empty();
85 
86  inline HashLink items() { return this->contents->totalEntries(); };
87  inline HashLink first() { return this->contents->first(); };
88  inline HashLink next(HashLink pos) { return this->contents->next(pos);};
89  inline RexxObject *value(HashLink pos) {return this->contents->value(pos); };
90  inline RexxObject *index(HashLink pos) {return this->contents->index(pos); };
91  inline bool available(HashLink pos) {return this->contents->available(pos); };
92 
93  RexxHashTable *contents; /* collection associated hash table */
94  };
95  #endif
size_t HashLink
bool available(HashLink pos)
RexxObject * value(HashLink pos)
HashLink next(HashLink pos)
RexxObject * copyValues(int depth)
virtual RexxObject * get(RexxObject *key)
RexxObject * removeRexx(RexxObject *)
void liveGeneral(int reason)
virtual RexxObject * removeItem(RexxObject *value)
virtual RexxObject * remove(RexxObject *key)
RexxObject * getRexx(RexxObject *)
virtual RexxObject * mergeItem(RexxObject *, RexxObject *)
void flatten(RexxEnvelope *)
virtual RexxObject * hasItem(RexxObject *)
RexxObject * hasItemRexx(RexxObject *)
RexxObject * merge(RexxHashTableCollection *)
RexxHashTable * contents
RexxObject * makeProxy(RexxEnvelope *)
RexxObject * index(HashLink pos)
virtual RexxObject * add(RexxObject *, RexxObject *)
RexxObject * allAt(RexxObject *)
RexxObject * indexRexx(RexxObject *value)
RexxSupplier * supplier()
virtual RexxObject * getIndex(RexxObject *value)
RexxObject * hasIndexRexx(RexxObject *)
RexxObject * putRexx(RexxObject *, RexxObject *)
RexxObject * unflatten(RexxEnvelope *)
RexxObject * addRexx(RexxObject *, RexxObject *)
virtual RexxObject * put(RexxObject *, RexxObject *)
RexxObject * removeItemRexx(RexxObject *value)
RexxObject * index(HashLink position)
HashLink first()
RexxObject * value(HashLink position)
bool available(HashLink position)
size_t totalEntries()
HashLink next(HashLink position)