00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef TORC_GENERIC_PARSER_PARSERHELPERS_HPP
00017 #define TORC_GENERIC_PARSER_PARSERHELPERS_HPP
00018
00019 #include <string>
00020 #include <vector>
00021 #include <list>
00022
00023 #include <boost/shared_ptr.hpp>
00024
00025 #include "torc/generic/om/PointerTypes.hpp"
00026 #include "torc/generic/om/Value.hpp"
00027
00028 namespace torc { namespace generic { class Parameter; } }
00029 namespace torc { namespace generic { class PortAttributes; } }
00030 namespace torc { namespace generic { class TimeStamp; } }
00031 namespace torc { namespace generic { class Written; } }
00032 namespace torc { namespace generic { class InterfaceAttributes; } }
00033 namespace torc { namespace generic { class LogicValueAttributes; } }
00034
00035 namespace torc {
00036 namespace generic {
00037
00038 struct NameData {
00039 std::string mName;
00040 std::string mOriginalName;
00041 std::vector<size_t> mIndices;
00042
00043 ~NameData() throw()
00044 {
00045 }
00046 };
00047
00048 struct ArrayData {
00049 NameData *mNameData;
00050 std::vector<size_t> mIndices;
00051 };
00052
00053 struct ViewRefData {
00054 NameData *mViewName;
00055 NameData *mCellName;
00056 NameData *mLibraryName;
00057
00058 ViewRefData()
00059 :mViewName( NULL ),
00060 mCellName( NULL ),
00061 mLibraryName( NULL ) {
00062 }
00063
00064 ~ViewRefData() {
00065 delete mViewName;
00066 delete mCellName;
00067 delete mLibraryName;
00068 }
00069 };
00070
00071 struct CellRefData {
00072 NameData *mCellName;
00073 NameData *mLibraryName;
00074
00075 CellRefData()
00076 :mCellName( NULL ),
00077 mLibraryName( NULL ) {
00078 }
00079
00080 ~CellRefData() {
00081 delete mCellName;
00082 delete mLibraryName;
00083 }
00084 };
00085
00086 struct LogicRefData {
00087 NameData *mLogicName;
00088 NameData *mLibraryName;
00089
00090 LogicRefData()
00091 :mLogicName( NULL ),
00092 mLibraryName( NULL ) {
00093 }
00094
00095 ~LogicRefData() {
00096 delete mLogicName;
00097 delete mLibraryName;
00098 }
00099 };
00100
00101 struct InstanceRefData {
00102 NameData *mName;
00103 ViewRefData *mView;
00104 InstanceRefData()
00105 :mName( NULL ),
00106 mView( NULL ) {
00107 }
00108 };
00109
00110 struct PortRefData {
00111 PortRefData *mParentPort;
00112 NameData *mPortName;
00113 NameData *mInstanceName;
00114 ViewRefData *mView;
00115
00116 PortRefData()
00117 :mParentPort( NULL ),
00118 mPortName( NULL ),
00119 mInstanceName( NULL ),
00120 mView( NULL ) {
00121 }
00122
00123 ~PortRefData()
00124 {
00125 delete mParentPort;
00126 delete mPortName;
00127 delete mInstanceName;
00128 delete mView;
00129 }
00130 };
00131
00132 struct NetRefData {
00133 NetRefData *mParentNet;
00134 NameData *mNetName;
00135 NameData *mInstanceName;
00136 ViewRefData *mView;
00137
00138 NetRefData()
00139 :mParentNet( NULL ),
00140 mNetName( NULL ),
00141 mInstanceName( NULL ),
00142 mView( NULL ) {
00143 }
00144
00145 ~NetRefData()
00146 {
00147 delete mParentNet;
00148 delete mNetName;
00149 delete mInstanceName;
00150 delete mView;
00151 }
00152 };
00153
00154 struct PortInstData {
00155 PortRefData *mRefData;
00156 PortAttributes *mAttribute;
00157
00158 PortInstData()
00159 :mRefData( NULL ),
00160 mAttribute( NULL ) {
00161 }
00162
00163 ~PortInstData() {
00164 delete mRefData;
00165 }
00166 };
00167
00168 struct PortListData {
00169 std::vector<PortRefData *> mPortRefs;
00170
00171 PortListData()
00172 :mPortRefs() {
00173 }
00174
00175 ~PortListData() {
00176 for( std::vector<PortRefData *>::iterator it
00177 = mPortRefs.begin();
00178 it != mPortRefs.end(); ++it )
00179 {
00180 delete *it;
00181 }
00182 }
00183 };
00184
00185 struct VersionData
00186 {
00187 int32_t mFirst;
00188 int32_t mSecond;
00189 int32_t mThird;
00190 };
00191
00192 struct ValueData
00193 {
00194 std::vector<Value> mValues;
00195 };
00196
00197 struct PairData
00198 {
00199 int32_t mX;
00200 int32_t mY;
00201
00202 PairData( int32_t inX = 0, int32_t inY = 0 )
00203 : mX( inX ),
00204 mY( inY ) {
00205 }
00206 };
00207
00208 struct PairStrData {
00209 std::string mFirst;
00210 std::string mSecond;
00211
00212 PairStrData( std::string inFirst = std::string(),
00213 std::string inSecond = std::string())
00214 :mFirst( inFirst ),
00215 mSecond( inSecond ) {
00216 }
00217 };
00218
00219 struct ParamAssignInfo
00220 {
00221 NameData *mNameData;
00222 ValueData *mValueData;
00223
00224 ParamAssignInfo( NameData *inNameData = NULL,
00225 ValueData *inValueData = NULL )
00226 :mNameData( inNameData ),
00227 mValueData( inValueData ) {
00228 }
00229 ~ParamAssignInfo() {
00230 delete mNameData;
00231 delete mValueData;
00232 }
00233 };
00234
00235 struct InstanceInfo {
00236 ViewRefData *mViewRefData;
00237 std::vector<ParamAssignInfo *> mParamAssign;
00238 std::vector<PortInstData *> mPortInst;
00239 std::vector< std::string > mUserData;
00240 std::vector< std::string > mComment;
00241 std::string mDesignator;
00242 TimingSharedPtr mTiming;
00243
00244 InstanceInfo()
00245 :mViewRefData(NULL),
00246 mParamAssign(),
00247 mPortInst(),
00248 mUserData(),
00249 mComment(),
00250 mDesignator(),
00251 mTiming() {
00252 }
00253
00254 ~InstanceInfo() {
00255 delete mViewRefData;
00256 for( std::vector<ParamAssignInfo *>::iterator
00257 it = mParamAssign.begin();
00258 it != mParamAssign.end(); it++ )
00259 {
00260 delete (*it);
00261 }
00262 for( std::vector<PortInstData *>::iterator
00263 it = mPortInst.begin();
00264 it != mPortInst.end(); it++ )
00265 {
00266 delete (*it);
00267 }
00268 mUserData.clear();
00269 mComment.clear();
00270 }
00271 };
00272
00273 struct LogicListData {
00274 std::list<NameData *> mNameDataList;
00275
00276 LogicListData()
00277 :mNameDataList() {
00278 }
00279
00280 ~LogicListData() {
00281 for( std::list<NameData *>::iterator it
00282 = mNameDataList.begin();
00283 it != mNameDataList.end(); ++it )
00284 {
00285 delete *it;
00286 }
00287 }
00288 };
00289
00290 }
00291 }
00292
00293 #endif // TORC_GENERIC_PARSER_PARSERHELPERS_HPP