Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_DEV_fwd.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright 2002 Sandia Corporation. Under the terms
5 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
6 // Government retains certain rights in this software.
7 //
8 // Xyce(TM) Parallel Electrical Simulator
9 // Copyright (C) 2002-2011 Sandia Corporation
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //-----------------------------------------------------------------------------
24 
25 //-------------------------------------------------------------------------
26 // Filename : $RCSfile: N_DEV_fwd.h,v $
27 //
28 // Purpose : Forward declarations
29 //
30 // Special Notes : Forward declaring everything as a class breaks if the implementation of the type changes (like during
31 // templatization)
32 //
33 // Creator : David G. Baur Raytheon Sandia National Laboratories 1355
34 //
35 // Creation Date : 2013/04/18 18:01:27
36 //
37 // Revision Information:
38 // ---------------------
39 //
40 // Revision Number: $Revision: 1.23.2.1 $
41 //
42 // Revision Date : $Date: 2014/03/03 18:29:27 $
43 //
44 // Current Owner : $Author: tvrusso $
45 //-------------------------------------------------------------------------
46 
47 #ifndef Xyce_N_DEV_fwd_h
48 #define Xyce_N_DEV_fwd_h
49 
50 #include <map>
51 #include <string>
52 #include <utility>
53 
54 #include <N_UTL_NameLevelKey.h>
55 #include <N_UTL_NoCase.h>
56 #include <N_UTL_TypeIndex.h>
57 
58 namespace Xyce {
59 namespace Device {
60 
61 class CompositeParam;
62 class Configuration;
63 class Depend;
64 class Descriptor;
65 class Device;
66 class DeviceBuilder;
67 class DeviceEntity;
68 class DeviceInstance;
69 class DeviceInterface;
70 class DeviceMgr;
71 class DeviceModel;
72 class DeviceOptions;
73 class DeviceSensitivities;
74 class DeviceState;
75 class DeviceSupport;
76 class ExternalSimulationData;
77 class ExternCodeInterface;
78 class ExternData;
79 class FactoryBlock;
80 class InstanceBlock;
81 class MatrixLoadData;
82 class ModelBlock;
83 class NumericalJacobian;
84 class Param;
85 class Region;
86 class RegionData;
87 class RxnRegion;
88 class RxnRegion2;
89 class RxnRegionData;
90 
91 class SolverState;
92 class SourceInstance;
93 class XyceInterface;
94 
95 class ACData;
96 class ConstData;
97 class ExpData;
98 class PWLinData;
99 class PulseData;
100 class SFFMData;
101 class SinData;
102 class SmoothData;
103 class SmoothPulseData;
104 class SourceData;
105 
106 class DevicePDEInstance;
107 class DevicePDEModel;
108 
109 class PDE_Electrode;
110 class PDE_1DElectrode;
111 class PDE_2DElectrode;
112 
113 class XygraCoilData;
114 
115 class SpecieSource;
116 
117 class ScalingVars;
118 
119 namespace Xygra {
120 class Instance;
121 class Model;
122 }
123 
124 namespace ExternDevice {
125 class Instance;
126 class Model;
127 }
128 
129 namespace Vsrc {
130 class Instance;
131 class Model;
132 }
133 
134 typedef type_index EntityTypeId;
135 typedef type_index ModelTypeId;
136 typedef type_index InstanceTypeId;
137 
138 typedef std::map<std::string, Descriptor *, LessNoCase> ParameterMap;
139 typedef std::map<std::string, CompositeParam *> CompositeMap;
140 
141 typedef std::map<EntityTypeId, Device *> EntityTypeIdDeviceMap;
142 
143 struct ModelGroupLeadTraits;
144 
145 template <class M, class I, class G = ModelGroupLeadTraits>
146 class DeviceTraits;
147 
148 template <class T>
149 class DeviceMaster;
150 
151 template <class T>
152 class Config;
153 
154 } // namespace Device
155 } // namespace Xyce
156 
158 typedef Xyce::Device::DeviceBuilder N_DEV_DeviceBuilder;
169 typedef Xyce::Device::ExternCodeInterface N_DEV_ExternCodeInterface;
178 typedef Xyce::Device::RxnRegion N_DEV_RxnRegion;
179 typedef Xyce::Device::RxnRegion2 N_DEV_RxnRegion2;
180 typedef Xyce::Device::RxnRegionData N_DEV_RxnRegionData;
183 typedef Xyce::Device::XyceInterface N_DEV_XyceInterface;
184 
186 typedef Xyce::Device::SmoothData N_DEV_SmoothData;
195 
198 
202 
205 
207 
209 
211 
212 typedef Xyce::Device::ExternDevice::Instance N_DEV_ExternDeviceInstance;
213 typedef Xyce::Device::ExternDevice::Model N_DEV_ExternDeviceModel;
214 
215 #endif // Xyce_N_DEV_fwd_h
216