Branch data Line data Source code
1 : : /*
2 : : * property.h - generic property class definitions
3 : : *
4 : : * Copyright (C) 2003, 2004, 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$
22 : : *
23 : : */
24 : :
25 : : #ifndef __PROPERTY_H__
26 : : #define __PROPERTY_H__
27 : :
28 : : #include <string>
29 : :
30 : : namespace qucs {
31 : :
32 : : class variable;
33 : : class vector;
34 : :
35 : : enum property_type {
36 : : PROPERTY_UNKNOWN = -1,
37 : : PROPERTY_INT,
38 : : PROPERTY_DOUBLE,
39 : : PROPERTY_STR,
40 : : PROPERTY_VAR
41 : : };
42 : :
43 : : class property
44 : : {
45 : : public:
46 : : property ();
47 : : property (const std::string &);
48 : : property (const std::string &, const std::string &);
49 : : property (const std::string &, nr_double_t);
50 : : property (const std::string &, variable *);
51 : : property (const property &);
52 : : virtual ~property ();
53 : 398276913 : property * getNext (void) const { return next; }
54 : 12857 : void setNext (property * p) { next = p; }
55 : :
56 : : //! Sets the name of the property.
57 : : void setName (const std::string &n) {
58 : : this->name = n;
59 : : };
60 : :
61 : : //! Returns the name of the property.
62 : 417206568 : std::string getName (void) const {
63 : 417206568 : return this->name;
64 : : }
65 : :
66 : : qucs::vector * getVector (void) const;
67 : : nr_double_t getDouble (void) const;
68 : : int getInteger (void) const;
69 : : const char * getString (void) const;
70 : : const char * getReference (void) const;
71 : : void set (const nr_double_t);
72 : : void set (int);
73 : : void set (const std::string &);
74 : : void set (variable *);
75 : : property * findProperty (const char * const);
76 : : std::string toString (void) const;
77 : 3950 : bool isDefault (void) const { return def; }
78 : 545 : void setDefault (bool d) { def = d; }
79 : :
80 : : private:
81 : : bool def;
82 : : int type;
83 : : std::string name;
84 : : std::string str;
85 : : nr_double_t value;
86 : : variable * var;
87 : : property * next;
88 : : };
89 : :
90 : : } // namespace qucs
91 : :
92 : : #endif /* __PROPERTY_H__ */
|