⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oaverilogparserstype.inl

📁 openaccess与verilog互相转化时所用的源代码
💻 INL
字号:
// *****************************************************************************// *****************************************************************************// oaVerilogParserStype.inl//// This file contains the implementation for inline and template member// functions of classes defined in oaVerilogParserStype.h file.//// *****************************************************************************// Except as specified in the OpenAccess terms of use of Cadence or Silicon// Integration Initiative, this material may not be copied, modified,// re-published, uploaded, executed, or distributed in any way, in any medium,// in whole or in part, without prior written permission from Cadence.////		  Copyright 2003-2005 Cadence Design Systems, Inc.//                           All Rights Reserved.////  $Author: sailajad $//  $Revision: 1.1 $//  $Date: 2005/08/05 21:48:55 $//  $State: Exp $// *****************************************************************************// *****************************************************************************#if !defined(oaVerilogParserStype_I)#define oaVerilogParserStype_IBEGIN_VERILOG_NAMESPACE// *****************************************************************************// ParserStypeWrapper::ParserStypeWrapper()//// These are the constructors of the ParserStypeWrapper class.  Each constructor// sets the type of the value stored as well as the initial value.// *****************************************************************************inlineParserStypeWrapper::ParserStypeWrapper(): type(UnknownType){    value.id = 0;}// *****************************************************************************// ParserStypeWrapper::~ParserStypeWrapper()//// This is the destructor of the ParserStypeWrapper class.// *****************************************************************************inlineParserStypeWrapper::~ParserStypeWrapper(){}// *****************************************************************************// ParserStypeWrapper::clear()//// This is the destructors of the ParserStypeWrapper class.// *****************************************************************************inline voidParserStypeWrapper::clear(){    type = UnknownType;    value.id = 0;}// *****************************************************************************// ParserStypeWrapper::operator=()//// This is the assignment operator for the ParserStypeWrapper.// *****************************************************************************inline ParserStypeWrapper&ParserStypeWrapper::operator=(const ParserStypeWrapper	&rhs){    if (&rhs == this) {	return *this;    }    type = rhs.type;    switch (type) {      case UnknownType:	  value.id = 0;	  break;      case SigTypeEnumType:	  value.oaSigTypeMember = rhs.value.oaSigTypeMember;	  break;      case StringType:	  value.oaStringMember = rhs.value.oaStringMember;	  break;      case ParamType:	  value.oaParamMember = rhs.value.oaParamMember;	  break;      case ParamArrayType:	  value.ParamListMember = rhs.value.ParamListMember;	  break;      case VerilogValueType:	  value.verilogValueMember = rhs.value.verilogValueMember;	  break;      case VerilogRangeType:	  value.verilogRangeMember = rhs.value.verilogRangeMember;	  break;      case VerilogNameListType:	  value.verilogNameListMember = rhs.value.verilogNameListMember;	  break;      case VerilogValueListType:	  value.verilogValueListMember = rhs.value.verilogValueListMember;	  break;      case VerilogRangeListType:	  value.verilogRangeListMember = rhs.value.verilogRangeListMember;	  break;    }    return *this;}// *****************************************************************************// ParserStypeWrapper::deleteValue()//// This function deletes the value stored in the wrapper.  It assumes that the// value was allocated with "new" and that neither managed types nor base types// should be deleted.// *****************************************************************************inline voidParserStypeWrapper::deleteValue(){    switch (type) {      case UnknownType:	  break;      case StringType:	  delete value.oaStringMember;	  break;      case ParamType:	  delete value.oaParamMember;	  break;      case ParamArrayType:	  delete value.ParamListMember;	  break;      case VerilogValueType:	  delete value.verilogValueMember;	  break;      case VerilogRangeType:	  delete value.verilogRangeMember;	  break;      case VerilogNameListType:	  delete value.verilogNameListMember;	  break;      case VerilogValueListType:	  delete value.verilogValueListMember;	  break;      case VerilogRangeListType:	  delete value.verilogRangeListMember;	  break;    }    clear();}// *****************************************************************************// ParserStypeWrapper::oaStringStype()// ParserStypeWrapper::oaSigTypeStype()// ParserStypeWrapper::oaDesignStype()// ParserStypeWrapper::oaParamStype()// ParserStypeWrapper::ParamListStype()// ParserStypeWrapper::verilogValueStype()// ParserStypeWrapper::verilogRangeStype()// ParserStypeWrapper::verilogNameListStype()// ParserStypeWrapper::verilogValueListStype()// ParserStypeWrapper::verilogRangeListStype()//// These are the data member access functions.  They track the type of the// data being accessed as well as the data value.  The types defined in the // Parser.ypp file all end with the characters "()" which will cause// Bison to generate code that will access the data members through these // functions.  Bison does not distingush between dereferencing a data member and// assigning to the data member so we must return a writable reference to the// data member and set the type, even if the the data member is not being// assigned to.  This implies a certain degree of trust in Bison to properly// manage the types.// *****************************************************************************inline oaString*&ParserStypeWrapper::oaStringStype(){    type = StringType;    return value.oaStringMember;}inline oaSigTypeEnum&ParserStypeWrapper::oaSigTypeStype(){    type = SigTypeEnumType;    return value.oaSigTypeMember;}inline oaParam*&ParserStypeWrapper::oaParamStype(){    type = ParamType;    return value.oaParamMember;}inline ParamList*&ParserStypeWrapper::ParamListStype(){    type = ParamArrayType;    return value.ParamListMember;}inline Value*&ParserStypeWrapper::verilogValueStype(){    type = VerilogValueType;    return value.verilogValueMember;}inline Range*&ParserStypeWrapper::verilogRangeStype(){    type = VerilogRangeType;    return value.verilogRangeMember;}inline NameList*&ParserStypeWrapper::verilogNameListStype(){    type = VerilogNameListType;    return value.verilogNameListMember;}inline ValueList*&ParserStypeWrapper::verilogValueListStype(){    type = VerilogValueListType;    return value.verilogValueListMember;}inline RangeList*&ParserStypeWrapper::verilogRangeListStype(){    type = VerilogRangeListType;    return value.verilogRangeListMember;}// *****************************************************************************// ParserStypeCmp::operator()//// This is the comparison operator for the ParserStypeWrapper class.  It returns// true if the left argument is "less" than the right argument, otherwise it// returns false.  Since the value of the ParserStypeWrapper is a union of // pointers and other elements, this operator will only compare the id field of // the value union.// *****************************************************************************inline boolParserStypeCmp::operator()(const ParserStypeWrapper *left,			   const ParserStypeWrapper *right) const{    return left->value.id < right->value.id;}END_VERILOG_NAMESPACE#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -