Changeset 301 in dev for trunk/abdev/BasicCompiler_Common/src/Compiler.cpp
- Timestamp:
- Aug 23, 2007, 10:58:43 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/src/Compiler.cpp
r299 r301 28 28 // ジェネリッククラスをインスタンス化した型の場合 29 29 int i = 0; 30 char className[VN_SIZE] , typeParameter[VN_SIZE];30 char className[VN_SIZE]; 31 31 GetIdentifierToken( className, typeName.c_str(), i ); 32 i++;33 GetIdentifierToken( typeParameter, typeName.c_str(), i );34 32 35 33 // ジェネリクスクラスを取得 36 34 const CClass *pGenericClass = this->GetObjectModule().meta.GetClasses().Find( className ); 37 35 38 // 型パラメータの型情報を取得 39 Type baseType; 40 StringToType( typeParameter, baseType ); 36 if( !pGenericClass ) 37 { 38 Jenga::Throw( "StringToType内のジェネリクスクラス取得部分でpGenericClassがNULL" ); 39 } 40 41 if( typeName[i] != '<' ) 42 { 43 Jenga::Throw( "StringToType内でジェネリクス構文の解析に失敗" ); 44 } 41 45 42 46 GenericTypes genericTypes; 43 genericTypes.push_back( GenericType( "(non support)", baseType ) ); 47 while( true ) 48 { 49 i++; 50 51 char typeParameter[VN_SIZE]; 52 GetIdentifierToken( typeParameter, typeName.c_str(), i ); 53 54 // 型パラメータの型情報を取得 55 Type baseType; 56 StringToType( typeParameter, baseType ); 57 58 genericTypes.push_back( GenericType( "(non support)", baseType ) ); 59 60 if( typeName[i] != ',' ) 61 { 62 break; 63 } 64 } 44 65 45 66 // 基本型をセット
Note:
See TracChangeset
for help on using the changeset viewer.