Esempio n. 1
0
bool ASTType::resolveType(CompileContext& context, const ASTTypeVariables* ptypevariables)
{
   if ( ptypevariables != NULL )
   {
      const ASTTypeVariable* ptypevariable = ptypevariables->find(mObjectName);
      if ( ptypevariable != NULL )
      {
         mKind = ASTType::eGeneric;
         mpTypeVariable = ptypevariable;

         return true;
      }
   }
      
   if ( mKind == eObject )
   {
      for ( int index = 0; index < mTypeArguments.size(); index++ )
      {
         if ( !mTypeArguments[index].resolveType(context, ptypevariables) )
         {
            return false;
         }
      }

      mpObjectClass = &context.resolveClass(mObjectName);
   }
   else if ( mKind == eArray )
   {
      mpObjectClass = &context.resolveClass(UTEXT("system.InternalArray"));
      return mpArrayType->resolveType(context, ptypevariables);
   }
   else if ( mKind == eString )
   {
      mpObjectClass = &context.resolveClass(UTEXT("system.InternalString"));
   }

   return true;
}