Qucs-core  0.0.19
states.h
Go to the documentation of this file.
00001 /*
00002  * states.h - save-state variable class definitions
00003  *
00004  * Copyright (C) 2004 Stefan Jahn <stefan@lkcc.org>
00005  *
00006  * This is free software; you can redistribute it and/or modify
00007  * it under the terms of the GNU General Public License as published by
00008  * the Free Software Foundation; either version 2, or (at your option)
00009  * any later version.
00010  *
00011  * This software is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this package; see the file COPYING.  If not, write to
00018  * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
00019  * Boston, MA 02110-1301, USA.
00020  *
00021  * $Id$
00022  *
00023  */
00024 
00025 #ifndef __STATES_H__
00026 #define __STATES_H__
00027 
00028 namespace qucs {
00029 
00037 template <class state_type_t>
00038 class states
00039 {
00040  public:
00041   // constructor and destructor set
00042   states ();
00043   states (const states &);
00044   ~states ();
00045 
00046   // save-state variables for transient analysis
00047   state_type_t getState (int, int n = 0);
00048   void setState (int, state_type_t, int n = 0);
00049   void initStates (void);
00050   void clearStates (void);
00051   int  getStates (void) { return nstates; }
00052   void setStates (int n) { nstates = n; }
00053   void nextState (void);
00054   void prevState (void);
00055   void fillState (int, state_type_t);
00056   void saveState (int, state_type_t *);
00057   void inputState (int, state_type_t *);
00058 
00059  private:
00060   // stateval: array for holding all the sets of states. Multiple sets of
00061   // states are stored in one large array which is indexed appropriately
00062   // to get the right state set and value
00063   state_type_t * stateval;
00064   int nstates; // the number of sets of states stored
00065   int currentstate;
00066 };
00067 
00068 } // namespace qucs
00069 
00070 #include "states.cpp"
00071 
00072 #endif /* __STATES_H__ */