idltype.cc

来自「编译工具」· CC 代码 · 共 202 行

CC
202
字号
// -*- c++ -*-//                          Package   : omniidl// idltype.cc               Created on: 1999/10/21//			    Author    : Duncan Grisby (dpg1)////    Copyright (C) 1999 AT&T Laboratories Cambridge////  This file is part of omniidl.////  omniidl is free software; you can redistribute it and/or modify it//  under the terms of the GNU General Public License as published by//  the Free Software Foundation; either version 2 of the License, or//  (at your option) any later version.////  This program is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU//  General Public License for more details.////  You should have received a copy of the GNU General Public License//  along with this program; if not, write to the Free Software//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA//  02111-1307, USA.//// Description://   //   Type objects// $Id: idltype.cc,v 1.7.2.4 2001/10/17 16:48:34 dpg1 Exp $// $Log: idltype.cc,v $// Revision 1.7.2.4  2001/10/17 16:48:34  dpg1// Minor error message tweaks//// Revision 1.7.2.3  2000/11/01 12:45:57  dpg1// Update to CORBA 2.4 specification.//// Revision 1.7.2.2  2000/10/27 16:31:10  dpg1// Clean up of omniidl dependencies and types, from omni3_develop.//// Revision 1.7.2.1  2000/07/17 10:36:05  sll// Merged from omni3_develop the diff between omni3_0_0_pre3 and omni3_0_0.//// Revision 1.8  2000/07/13 15:25:52  dpg1// Merge from omni3_develop for 3.0 release.//// Revision 1.5.2.1  2000/03/06 10:40:29  dpg1// Typo in string constant.//// Revision 1.5  1999/11/17 17:16:59  dpg1// Changes to remove static initialisation of objects.//// Revision 1.4  1999/11/04 17:16:54  dpg1// Changes for NT.//// Revision 1.3  1999/11/02 17:07:24  dpg1// Changes to compile on Solaris.//// Revision 1.2  1999/10/29 15:44:14  dpg1// DeclaredType() now takes extra DeclRepoId* argument.//// Revision 1.1  1999/10/27 14:05:54  dpg1// *** empty log message ***//#include <idltype.h>#include <idlast.h>#include <idlerr.h>const char*IdlType::kindAsString() const{  switch(kind_) {  case tk_null:               return "null";  case tk_void:               return "void";  case tk_short:              return "short";  case tk_long:               return "long";  case tk_ushort:             return "unsigned short";  case tk_ulong:              return "unsigned long";  case tk_float:              return "float";  case tk_double:             return "double";  case tk_boolean:            return "boolean";  case tk_char:               return "char";  case tk_octet:              return "octet";  case tk_any:                return "any";  case tk_TypeCode:           return "CORBA::TypeCode";  case tk_Principal:          return "CORBA::Principal";  case tk_objref:             return "interface";  case tk_struct:             return "struct";  case tk_union:              return "union";  case tk_enum:               return "enum";  case tk_string:             return "string";  case tk_sequence:           return "sequence";  case tk_array:              return "array";  case tk_alias:              return "typedef";  case tk_except:             return "exception";  case tk_longlong:           return "long long";  case tk_ulonglong:          return "unsigned long long";  case tk_longdouble:         return "long double";  case tk_wchar:              return "wchar";  case tk_wstring:            return "wstring";  case tk_fixed:              return "fixed";  case tk_value:              return "value";  case tk_value_box:          return "value box";  case tk_native:             return "native";  case tk_abstract_interface: return "abstract interface";  case tk_local_interface:    return "local interface";  case ot_structforward:      return "forward struct";  case ot_unionforward:       return "forward union";  }  assert(0);  return ""; // To keep MSVC happy}IdlType*IdlType::unalias(){  IdlType* t = this;  while (t && t->kind() == tk_alias) {    if (((Declarator*)((DeclaredType*)t)->decl())->sizes()) break;    t = ((Declarator*)((DeclaredType*)t)->decl())->alias()->aliasType();  }  return t;}IdlType*IdlType::scopedNameToType(const char* file, int line, const ScopedName* sn){  const Scope::Entry* se = Scope::current()->findForUse(sn, file, line);  if (se) {    if (se->kind() == Scope::Entry::E_DECL) {      IdlType *t = se->idltype();      if (t) return t;    }    char* ssn = sn->toString();    IdlError(file, line, "'%s' is not a type", ssn);    IdlErrorCont(se->file(), se->line(), "('%s' declared here)", ssn);    delete [] ssn;  }  return 0;}// Static type object pointersIDL_Boolean    IdlType::initialised_             = 0;BaseType*      BaseType::nullType                = 0;BaseType*      BaseType::voidType                = 0;BaseType*      BaseType::shortType               = 0;BaseType*      BaseType::longType                = 0;BaseType*      BaseType::ushortType              = 0;BaseType*      BaseType::ulongType               = 0;BaseType*      BaseType::floatType               = 0;BaseType*      BaseType::doubleType              = 0;BaseType*      BaseType::booleanType             = 0;BaseType*      BaseType::charType                = 0;BaseType*      BaseType::octetType               = 0;BaseType*      BaseType::anyType                 = 0;BaseType*      BaseType::TypeCodeType            = 0;BaseType*      BaseType::PrincipalType           = 0;BaseType*      BaseType::longlongType            = 0;BaseType*      BaseType::ulonglongType           = 0;BaseType*      BaseType::longdoubleType          = 0;BaseType*      BaseType::wcharType               = 0;StringType*    StringType::unboundedStringType   = 0;WStringType*   WStringType::unboundedWStringType = 0;DeclaredType*  DeclaredType::corbaObjectType     = 0;voidIdlType::init(){  if (!initialised_) {    BaseType::nullType                = new BaseType(IdlType::tk_null);    BaseType::voidType                = new BaseType(IdlType::tk_void);    BaseType::shortType               = new BaseType(IdlType::tk_short);    BaseType::longType                = new BaseType(IdlType::tk_long);    BaseType::ushortType              = new BaseType(IdlType::tk_ushort);    BaseType::ulongType               = new BaseType(IdlType::tk_ulong);    BaseType::floatType               = new BaseType(IdlType::tk_float);    BaseType::doubleType              = new BaseType(IdlType::tk_double);    BaseType::booleanType             = new BaseType(IdlType::tk_boolean);    BaseType::charType                = new BaseType(IdlType::tk_char);    BaseType::octetType               = new BaseType(IdlType::tk_octet);    BaseType::anyType                 = new BaseType(IdlType::tk_any);    BaseType::TypeCodeType            = new BaseType(IdlType::tk_TypeCode);    BaseType::PrincipalType           = new BaseType(IdlType::tk_Principal);    BaseType::longlongType            = new BaseType(IdlType::tk_longlong);    BaseType::ulonglongType           = new BaseType(IdlType::tk_ulonglong);    BaseType::longdoubleType          = new BaseType(IdlType::tk_longdouble);    BaseType::wcharType               = new BaseType(IdlType::tk_wchar);    StringType::unboundedStringType   = new StringType(0);    WStringType::unboundedWStringType = new WStringType(0);    DeclaredType::corbaObjectType     = new DeclaredType(IdlType::tk_objref,							 0, 0);    initialised_ = 1;  }}

⌨️ 快捷键说明

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