Changeset 299 in dev for trunk/abdev/BasicCompiler32
- Timestamp:
- Aug 23, 2007, 6:17:00 PM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler32
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/CParameter.cpp
r292 r299 214 214 bByVal = ( params[i2]->IsRef() == false ) ? TRUE:FALSE; 215 215 216 217 ///////////////////////////////////////////////////////// 218 // ☆★☆ ジェネリクスサポート ☆★☆ 219 220 if( dummyType.IsTypeParameter() ) 221 { 222 // 型パラメータだったとき 223 224 int ptrLevel = PTR_LEVEL( dummyType.GetBasicType() ); 225 226 if( leftType.HasActualGenericType() ) 227 { 228 // TODO: GetDummyActualGenericTypeを適切な形に実装し直す 229 dummyType = leftType.GetDummyActualGenericType(); 230 } 231 else 232 { 233 // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする 234 dummyType.SetBasicType( DEF_OBJECT ); 235 } 236 237 for( int i=0; i<ptrLevel; i++ ) 238 { 239 dummyType.PtrLevelUp(); 240 } 241 } 242 243 // 244 ///////////////////////////////////////////////////////// 216 // 型パラメータを解決 217 ResolveFormalGenericTypeParameter( dummyType, leftType ); 245 218 } 246 219 -
trunk/abdev/BasicCompiler32/Compile_Func.cpp
r290 r299 324 324 void Opcode_Func_SizeOf( const string &typeName ){ 325 325 Type tempType; 326 if( ! Compiler::StringToType( typeName, tempType ) ){326 if( !compiler.StringToType( typeName, tempType ) ){ 327 327 SetError(3,typeName,cp); 328 328 return; -
trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
r294 r299 388 388 else{ 389 389 if( pUserProc->ReturnType().IsObject() ){ 390 sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );390 sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, compiler.TypeToString( pUserProc->ReturnType() ).c_str() ); 391 391 } 392 392 else{ 393 393 //戻り値用の変数の定義 394 sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );394 sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, compiler.TypeToString( pUserProc->ReturnType() ).c_str() ); 395 395 } 396 396 -
trunk/abdev/BasicCompiler32/Compile_Var.cpp
r292 r299 223 223 resultType = pMember->GetType(); 224 224 225 226 ///////////////////////////////////////////////////////// 227 // ☆★☆ ジェネリクスサポート ☆★☆ 228 229 if( resultType.IsTypeParameter() ) 230 { 231 // 型パラメータだったとき 232 233 int ptrLevel = PTR_LEVEL( resultType.GetBasicType() ); 234 235 if( classType.HasActualGenericType() ) 236 { 237 // TODO: GetDummyActualGenericTypeを適切な形に実装し直す 238 resultType = classType.GetDummyActualGenericType(); 239 } 240 else 241 { 242 // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする 243 resultType.SetBasicType( DEF_OBJECT ); 244 } 245 246 for( int i=0; i<ptrLevel; i++ ) 247 { 248 resultType.PtrLevelUp(); 249 } 250 } 251 252 // 253 ///////////////////////////////////////////////////////// 225 // 型パラメータを解決 226 ResolveFormalGenericTypeParameter( resultType, classType ); 254 227 255 228 … … 1121 1094 } 1122 1095 1123 void dim( char *VarName, const Subscripts &subscripts, Type &type,const char *InitBuf,const char *ConstractParameter,DWORD dwFlags){1096 void dim( char *VarName, const Subscripts &subscripts, const Type &type,const char *InitBuf,const char *ConstractParameter,DWORD dwFlags){ 1124 1097 if( UserProc::IsGlobalAreaCompiling() ){ 1125 1098 ///////////////////////// -
trunk/abdev/BasicCompiler32/NumOpe.cpp
r293 r299 221 221 //SetUseRegFromRax(resultType.GetBasicType(),UseReg,XmmReg); 222 222 223 224 ///////////////////////////////////////////////////////// 225 // ☆★☆ ジェネリクスサポート ☆★☆ 226 227 if( resultType.IsTypeParameter() ) 228 { 229 // 型パラメータだったとき 230 231 int ptrLevel = PTR_LEVEL( resultType.GetBasicType() ); 232 233 if( leftType.HasActualGenericType() ) 234 { 235 // TODO: GetDummyActualGenericTypeを適切な形に実装し直す 236 resultType = leftType.GetDummyActualGenericType(); 237 } 238 else 239 { 240 // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする 241 resultType.SetBasicType( DEF_OBJECT ); 242 } 243 244 for( int i=0; i<ptrLevel; i++ ) 245 { 246 resultType.PtrLevelUp(); 247 } 248 } 249 250 // 251 ///////////////////////////////////////////////////////// 223 // 型パラメータを解決 224 ResolveFormalGenericTypeParameter( resultType, leftType, pUserProc ); 252 225 } 253 226 … … 780 753 // As演算子の右辺値 781 754 //型名 782 if( Compiler::StringToType( term, resultType ) ){755 if( compiler.StringToType( term, resultType ) ){ 783 756 resultType.SetBasicType( resultType.GetBasicType() | FLAG_CAST ); 784 757 } -
trunk/abdev/BasicCompiler32/Opcode.h
r293 r299 164 164 #define DIMFLAG_STATIC 4 165 165 #define DIMFLAG_CONST 8 166 void dim( char *VarName, const Subscripts &subscripts, Type &type, const char *InitBuf,const char *ConstractParameter,DWORD dwFlags);166 void dim( char *VarName, const Subscripts &subscripts, const Type &type, const char *InitBuf,const char *ConstractParameter,DWORD dwFlags); 167 167 void SetVarPtrToEax(RELATIVE_VAR *pRelativeVar); 168 168 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar); -
trunk/abdev/BasicCompiler32/OperatorProc.cpp
r293 r299 259 259 } 260 260 261 Opcode_CallProc(Parameter,subs[0],0,ObjectName); 262 resultType = subs[0]->ReturnType(); 263 264 265 ///////////////////////////////////////////////////////// 266 // ☆★☆ ジェネリクスサポート ☆★☆ 267 268 if( resultType.IsTypeParameter() ) 269 { 270 // 型パラメータだったとき 271 272 int ptrLevel = PTR_LEVEL( resultType.GetBasicType() ); 273 274 if( classType.HasActualGenericType() ) 275 { 276 // TODO: GetDummyActualGenericTypeを適切な形に実装し直す 277 resultType = classType.GetDummyActualGenericType(); 278 } 279 else 280 { 281 // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする 282 resultType.SetBasicType( DEF_OBJECT ); 283 } 284 285 for( int i=0; i<ptrLevel; i++ ) 286 { 287 resultType.PtrLevelUp(); 288 } 289 } 290 291 // 292 ///////////////////////////////////////////////////////// 293 } 261 const UserProc *pUserProc = subs[0]; 262 263 Opcode_CallProc(Parameter,pUserProc,0,ObjectName); 264 resultType = pUserProc->ReturnType(); 265 266 // 型パラメータを解決 267 ResolveFormalGenericTypeParameter( resultType, classType, pUserProc ); 268 } -
trunk/abdev/BasicCompiler32/stdafx.h
r288 r299 17 17 #include <boost/foreach.hpp> 18 18 19 #include <jenga/include/common/String.h> 20 19 21 #include "../BasicCompiler_Common/common.h" 20 22
Note:
See TracChangeset
for help on using the changeset viewer.