/[pearpc]/src/tools/atom.cc
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /src/tools/atom.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Wed Sep 5 17:11:21 2007 UTC (16 years, 7 months ago) by dpavlin
File size: 1633 byte(s)
import upstream CVS
1 dpavlin 1 /*
2     * HT Editor
3     * atom.cc
4     *
5     * Copyright (C) 1999-2002 Stefan Weyergraf
6     *
7     * This program is free software; you can redistribute it and/or modify
8     * it under the terms of the GNU General Public License version 2 as
9     * published by the Free Software Foundation.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19     */
20    
21     #include "atom.h"
22     #include "data.h"
23    
24     #include <cstring>
25    
26     //static
27     AVLTree atoms(true);
28    
29     class Atom: public Object {
30     public:
31     uint id;
32     void *value;
33    
34     Atom(uint i, void *v)
35     {
36     id = i;
37     value = v;
38     }
39    
40     int compareTo(const Object *obj) const
41     {
42     Atom *a = (Atom*)obj;
43     return id - a->id;
44     }
45     };
46    
47     void *getAtomValue(uint id)
48     {
49     if (id != invalid_atom_id) {
50     Atom a(id, NULL);
51     Atom *f = (Atom*)atoms.get(atoms.find(&a));
52     if (f) return f->value;
53     }
54     return NULL;
55     }
56    
57     uint getAtomId(void *value)
58     {
59     if (value) {
60     foreach(Atom, a, atoms,
61     if (a->value == value) return a->id;
62     );
63     }
64     return invalid_atom_id;
65     }
66    
67     #include "debug.h"
68     bool registerAtom(uint id, void *value)
69     {
70     ASSERT(value);
71     atoms.insert(new Atom(id, value));
72     return true;
73     }
74    
75     bool unregisterAtom(uint id)
76     {
77     Atom a(id, NULL);
78     atoms.delObj(&a);
79     return true;
80     }
81    
82     /*
83     * Module Init/Done
84     */
85    
86     bool initAtom()
87     {
88     return true;
89     }
90    
91     void doneAtom()
92     {
93     }

  ViewVC Help
Powered by ViewVC 1.1.26