Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members

FXObjectList.h
Go to the documentation of this file.
1 /********************************************************************************
2 * *
3 * O b j e c t L i s t *
4 * *
5 *********************************************************************************
6 * Copyright (C) 1997,2006 by Jeroen van der Zijp. All Rights Reserved. *
7 *********************************************************************************
8 * This library is free software; you can redistribute it and/or *
9 * modify it under the terms of the GNU Lesser General Public *
10 * License as published by the Free Software Foundation; either *
11 * version 2.1 of the License, or (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16 * Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public *
19 * License along with this library; if not, write to the Free Software *
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
21 *********************************************************************************
22 * $Id: FXObjectList.h,v 1.31.2.1 2007/01/29 20:22:29 fox Exp $ *
23 ********************************************************************************/
24 #ifndef FXOBJECTLIST_H
25 #define FXOBJECTLIST_H
26 
27 #ifndef FXOBJECT_H
28 #include "FXObject.h"
29 #endif
30 
31 namespace FX {
32 
33 /// List of pointers to objects
35 protected:
36  FXObject **ptr;
37 public:
38 
39  /// Default constructor
40  FXObjectList();
41 
42  /// Copy constructor
43  FXObjectList(const FXObjectList& orig);
44 
45  /// Construct and init with single object
46  FXObjectList(FXObject* object);
47 
48  /// Construct and init with list of objects
49  FXObjectList(FXObject** objects,FXint n);
50 
51  /// Assignment operator
52  FXObjectList& operator=(const FXObjectList& orig);
53 
54  /// Return number of objects
55  FXint no() const { return *((FXint*)(ptr-1)); }
56 
57  /// Set number of objects
58  void no(FXint num);
59 
60  /// Indexing operator
61  FXObject*& operator[](FXint i){ return ptr[i]; }
62  FXObject* const& operator[](FXint i) const { return ptr[i]; }
63 
64  /// Indexing operator
65  FXObject*& at(FXint i){ return ptr[i]; }
66  FXObject* const& at(FXint i) const { return ptr[i]; }
67 
68  /// Access to content array
69  FXObject** data() const { return ptr; }
70 
71  /// Assign object p to list
72  FXObjectList& assign(FXObject* object);
73 
74  /// Assign n objects to list
75  FXObjectList& assign(FXObject** objects,FXint n);
76 
77  /// Assign objects to list
78  FXObjectList& assign(FXObjectList& objects);
79 
80  /// Insert object at certain position
81  FXObjectList& insert(FXint pos,FXObject* object);
82 
83  /// Insert n objects at specified position
84  FXObjectList& insert(FXint pos,FXObject** objects,FXint n);
85 
86  /// Insert objects at specified position
87  FXObjectList& insert(FXint pos,FXObjectList& objects);
88 
89  /// Prepend object
90  FXObjectList& prepend(FXObject* object);
91 
92  /// Prepend n objects
93  FXObjectList& prepend(FXObject** objects,FXint n);
94 
95  /// Prepend objects
96  FXObjectList& prepend(FXObjectList& objects);
97 
98  /// Append object
99  FXObjectList& append(FXObject* object);
100 
101  /// Append n objects
102  FXObjectList& append(FXObject** objects,FXint n);
103 
104  /// Append objects
105  FXObjectList& append(FXObjectList& objects);
106 
107  /// Replace object at position by given object
108  FXObjectList& replace(FXint pos,FXObject* object);
109 
110  /// Replaces the m objects at pos with n objects
111  FXObjectList& replace(FXint pos,FXint m,FXObject** objects,FXint n);
112 
113  /// Replace the m objects at pos with objects
114  FXObjectList& replace(FXint pos,FXint m,FXObjectList& objects);
115 
116  /// Remove object at pos
117  FXObjectList& erase(FXint pos);
118 
119  /// Remove n objects at pos
120  FXObjectList& erase(FXint pos,FXint n);
121 
122  /// Remove object
123  FXObjectList& remove(const FXObject* object);
124 
125  /// Find object in list, searching forward; return position or -1
126  FXint find(const FXObject *object,FXint pos=0) const;
127 
128  /// Find object in list, searching backward; return position or -1
129  FXint rfind(const FXObject *object,FXint pos=2147483647) const;
130 
131  /// Remove all objects
132  FXObjectList& clear();
133 
134  /// Save to a stream
135  void save(FXStream& store) const;
136 
137  /// Load from a stream
138  void load(FXStream& store);
139 
140  /// Destructor
141  virtual ~FXObjectList();
142  };
143 
144 
145 /// Specialize list to pointers to TYPE
146 template<class TYPE>
147 class FXObjectListOf : public FXObjectList {
148 public:
149  FXObjectListOf(){}
151  /// Indexing operator
152  TYPE*& operator[](FXint i){ return (TYPE*&)ptr[i]; }
153  TYPE *const& operator[](FXint i) const { return (TYPE*const&)ptr[i]; }
155  /// Access to list
156  TYPE*& at(FXint i){ return (TYPE*&)ptr[i]; }
157  TYPE *const& at(FXint i) const { return (TYPE*const&)ptr[i]; }
159  /// Access to content array
160  TYPE** data() const { return (TYPE**)ptr; }
161  };
162 
163 }
164 
165 #endif
TYPE *& at(FXint i)
Access to list.
Definition: FXObjectList.h:154
#define FXAPI
Definition: fxdefs.h:122
List of pointers to objects.
Definition: FXObjectList.h:34
A stream is a way to serialize data and objects into a byte stream.
Definition: FXStream.h:99
Definition: FX4Splitter.h:31
int FXint
Definition: fxdefs.h:397
Object is the base class for all objects in FOX; in order to receive messages from the user interface...
Definition: FXObject.h:166
TYPE *& operator[](FXint i)
Indexing operator.
Definition: FXObjectList.h:150
FXObjectListOf()
Definition: FXObjectList.h:147
TYPE ** data() const
Access to content array.
Definition: FXObjectList.h:158
Specialize list to pointers to TYPE.
Definition: FXObjectList.h:145

Copyright © 1997-2005 Jeroen van der Zijp