Branch data Line data Source code
1 : : /*
2 : : * object.h - generic object class definitions
3 : : *
4 : : * Copyright (C) 2003, 2004, 2005, 2006, 2008 Stefan Jahn <stefan@lkcc.org>
5 : : *
6 : : * This is free software; you can redistribute it and/or modify
7 : : * it under the terms of the GNU General Public License as published by
8 : : * the Free Software Foundation; either version 2, or (at your option)
9 : : * any later version.
10 : : *
11 : : * This software 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 package; see the file COPYING. If not, write to
18 : : * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
19 : : * Boston, MA 02110-1301, USA.
20 : : *
21 : : * $Id: object.h 1871 2013-03-06 12:53:05Z crobarcro $
22 : : *
23 : : */
24 : :
25 : : /*! \file object.h
26 : : *
27 : : * Contains the definition of the generic object class.
28 : : *
29 : : */
30 : :
31 : : #ifndef __OBJECT_H__
32 : : #define __OBJECT_H__
33 : :
34 : : #define MCREATOR(val) \
35 : : val (); \
36 : : static struct define_t miscdef; \
37 : : static struct define_t * definition (void) { return &miscdef; }
38 : :
39 : : namespace qucs {
40 : :
41 : : class variable;
42 : : class vector;
43 : : class property;
44 : :
45 : : /*! \class object
46 : : * \brief generic object class.
47 : : *
48 : : * Generic object class from which many Qucs classes are
49 : : * inheirited.
50 : : *
51 : : */
52 : 0 : class object
53 : : {
54 : : public:
55 : : object ();
56 : : object (const char *);
57 : : object (const object &);
58 : : virtual ~object ();
59 : 151834156 : object * getNext (void) const { return this->next; }
60 : 528132 : void setNext (object * const o) { this->next = o; }
61 : 331756 : object * getPrev (void) const { return prev; }
62 : 960686 : void setPrev (object * const o) { this->prev = o; }
63 : : void setName (const char * const);
64 : 10317587 : char * getName (void) const { return this->name; };
65 : : void addProperty (property * const);
66 : : property * addProperty (const char * const, const char * const);
67 : : property * addProperty (const char * const, const nr_double_t);
68 : : property * addProperty (const char * const, variable * const);
69 : : void setProperty (const char * const, const char * const);
70 : : void setProperty (const char * const, nr_double_t);
71 : : void setScaledProperty (const char * const, const nr_double_t);
72 : : void setProperty (const char * const, variable * const);
73 : : vector * getPropertyVector (const char * const) const;
74 : : const char * getPropertyString (const char * const) const;
75 : : const char * getPropertyReference (const char * const) const;
76 : : nr_double_t getPropertyDouble (const char * const) const;
77 : : nr_double_t getScaledProperty (const char * const) const;
78 : : int getPropertyInteger (const char * const) const;
79 : : bool hasProperty (const char * const) const ;
80 : : bool isPropertyGiven (const char * const) const;
81 : : void copyProperties (property *);
82 : : void deleteProperties (void);
83 : : int countProperties (void) const;
84 : : const char *
85 : : propertyList (void) const;
86 : :
87 : : private:
88 : : char * name;
89 : : object * next;
90 : : object * prev;
91 : : property * prop;
92 : : };
93 : :
94 : : } // namespace qucs
95 : :
96 : : #endif /* __OBJECT_H__ */
|