Branch data Line data Source code
1 : : /*
2 : : * environment.h - variable environment class definitions
3 : : *
4 : : * Copyright (C) 2004, 2006, 2007, 2009 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 : : /*! \file environment.h
26 : : * \brief The environment class definition.
27 : : *
28 : : * Contains the environment class definition.
29 : : */
30 : :
31 : : #ifndef __ENVIRONMENT_H__
32 : : #define __ENVIRONMENT_H__
33 : :
34 : : #include <list>
35 : : #include <string>
36 : :
37 : : #include "equation.h"
38 : :
39 : : namespace qucs {
40 : :
41 : : class variable;
42 : : class checker;
43 : : class solver;
44 : : class dataset;
45 : :
46 : :
47 : : /*! \class environment
48 : : * \brief Houses the settings for netlist evaluation.
49 : : *
50 : : * The environment class holds information and pointers to the
51 : : * classes and methods used to evaluate a netlist.
52 : : *
53 : : */
54 : : class environment
55 : : {
56 : : public:
57 : : environment ();
58 : : environment (const std::string & p_name);
59 : : environment (const environment &);
60 : : virtual ~environment ();
61 : : void copy (const environment &);
62 : : void setName (char *) = delete;
63 : : void print (const bool all = false) const;
64 : 232 : void setDefinitions (struct definition_t * const d) { defs = d; }
65 : : struct definition_t * getDefinitions (void) const { return defs; }
66 : :
67 : : // variable specific functionality
68 : : void copyVariables (variable *);
69 : : void deleteVariables (void);
70 : : void addVariable (variable * const, const bool pass = true);
71 : : variable * getVariable (const char * const) const;
72 : :
73 : : // equation specific functionality
74 : 116 : void setChecker (eqn::checker * c) { checkee = c; }
75 : 1220 : eqn::checker * getChecker (void) { return checkee; }
76 : 116 : void setSolver (eqn::solver * s) { solvee = s; }
77 : : eqn::solver * getSolver (void) { return solvee; }
78 : : int equationChecker (const int noundefined = 1) const;
79 : : int equationSolver (dataset * const);
80 : : int runSolver (void);
81 : : void equationSolver (void);
82 : :
83 : : // subcircuit specific
84 : : qucs::vector getVector (const char * const) const ;
85 : : void setDoubleConstant (const char * const, const nr_double_t);
86 : : nr_double_t getDoubleConstant (const char * const) const;
87 : : void setDouble (const char * const , nr_double_t);
88 : : nr_double_t getDouble (const char * const) const;
89 : : void setDoubleReference (const char * const, char *);
90 : : char * getDoubleReference (const char * const) const;
91 : : void updateReferences (environment *);
92 : : void passConstants (void);
93 : : void fetchConstants (void);
94 : : variable * findValue (char *);
95 : : void setValue (char *, eqn::constant *);
96 : : void saveResults (void);
97 : :
98 : : /*! Adds a child to the environment. */
99 : 36 : inline void push_front_Child (environment * child) {
100 : 36 : children.push_front (child);
101 : 36 : }
102 : :
103 : : /*! Removes a child from the environment. */
104 : : void remove_Child (environment * child) {
105 : : children.remove (child);
106 : : }
107 : :
108 : : /*! set the name */
109 : 23 : void setName (const std::string &p_name) {
110 : 23 : this->name = p_name;
111 : 23 : }
112 : :
113 : : /*! Returns the name of the environment. */
114 : 103 : const std::string & getName(void) const {
115 : 103 : return this->name;
116 : : }
117 : :
118 : : private:
119 : : std::string name;
120 : : variable * root;
121 : : eqn::checker * checkee;
122 : : eqn::solver * solvee;
123 : : std::list<environment *> children;
124 : : bool iscopy;
125 : : struct definition_t * defs;
126 : : };
127 : :
128 : : } // namespace qucs
129 : :
130 : : #endif /* __ENVIRONMENT_H__ */
|