/[gzz]/gzz/gfx/libutil/ObjectStorer.hxx
ViewVC logotype

Diff of /gzz/gfx/libutil/ObjectStorer.hxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by tjl, Wed Dec 4 10:54:22 2002 UTC revision 1.10 by tjl, Sat Jan 11 11:47:50 2003 UTC
# Line 7  namespace Util { Line 7  namespace Util {
7      using std::vector;      using std::vector;
8      using std::cout;      using std::cout;
9      using std::cerr;      using std::cerr;
10        using std::string;
11    
12      // XXX NOT ENOUGH SAFETY CHECKS FOR REMOVE!      // XXX NOT ENOUGH SAFETY CHECKS FOR REMOVE!
13      // GET MUSTN'T CHECK; MUST CHECK RANGE BEFORE.      // GET MUSTN'T CHECK; MUST CHECK RANGE BEFORE.
# Line 14  namespace Util { Line 15  namespace Util {
15       */       */
16      template<class T> class ObjectStorer {      template<class T> class ObjectStorer {
17          vector<T *> vec;          vector<T *> vec;
18            string name;
19      public:      public:
20          ObjectStorer() {          ObjectStorer(string name="") : name(name) {
21              // to avoid '0' as id              // to avoid '0' as id
22              vec.insert(vec.end(), 0);              vec.insert(vec.end(), 0);
23          }          }
# Line 46  namespace Util { Line 48  namespace Util {
48          void remove(int p) {          void remove(int p) {
49              if(p == 0) return;              if(p == 0) return;
50              if((unsigned)p >= vec.size()) {              if((unsigned)p >= vec.size()) {
51                  cerr << "Trying to delete element past end "<<p<<"\n";                  cerr << name<<": Trying to delete element past end "<<p<<"\n";
52                  return;                  return;
53              }              }
54              if(vec[p] == NULL) {              if(vec[p] == NULL) {
55                  cerr << "Trying to delete null element! "<<p<<"\n";                  cerr << name<<": Trying to delete null element! "<<p<<"\n";
56                  return;                  return;
57              }              }
58              delete vec[p];              delete vec[p];
# Line 61  namespace Util { Line 63  namespace Util {
63           */           */
64          T *get(int p) {          T *get(int p) {
65              if((unsigned)p >= vec.size()) {              if((unsigned)p >= vec.size()) {
66                  cerr << "Trying to get element past end\n";                  cerr << name<<": Trying to get element past end\n";
67                  return 0;                  return 0;
68              }              }
69              if(vec[p] == NULL) {              if(vec[p] == NULL) {
70                  cerr << "Trying to get null element!\n";                  cerr << name<<": Trying to get null element!\n";
71                  return 0;                  return 0;
72              }              }
73              return vec[p];              return vec[p];

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26