Changeset 670 in dev for trunk/ab5.0/abdev


Ignore:
Timestamp:
Jun 28, 2008, 9:58:04 PM (16 years ago)
Author:
dai_9181
Message:

Importsが正常に解釈されない不具合を修正

Location:
trunk/ab5.0/abdev/ab_common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/ab_common/include/Lexical/NamespaceSupporter.h

    r669 r670  
    2525    }
    2626
    27     const NamespaceScopesCollection &GetImportedNamespaces()
     27    const NamespaceScopesCollection &GetImportedNamespaces() const
    2828    {
    2929        return importedNamespaces;
     
    6060    // entryName =   "ActiveBasic"
    6161    // この場合、living は entryName を包括している。
    62     bool IsCoverd( const NamespaceScopes &namespaceScopes, const std::string &entryName ) const
    63     {
    64         if( namespaceScopes.IsEqual( entryName ) )
    65         {
    66             return true;
    67         }
    68 
    69         std::string thisStr = namespaceScopes.ToString();
    70 
    71         NamespaceScopes tempLivingNamespaceScopes = livingNamespaceScopes;
    72 
    73         while( tempLivingNamespaceScopes.size() )
    74         {
    75             std::string tempStr = tempLivingNamespaceScopes.ToString() + "." + entryName;
    76             if( thisStr == tempStr )
    77             {
    78                 return true;
    79             }
    80 
    81             tempLivingNamespaceScopes.pop_back();
    82         }
    83         return false;
    84     }
    85     bool IsCoverd( const NamespaceScopes &baseNamespaceScopes, const NamespaceScopes &entryNamespaceScopes ) const
    86     {
    87         return IsCoverd( baseNamespaceScopes, entryNamespaceScopes.ToString() );
    88     }
     62    bool IsCoverd( const NamespaceScopes &base, const NamespaceScopes &entry ) const;
    8963
    9064
  • trunk/ab5.0/abdev/ab_common/src/Lexical/NamespaceSupporter.cpp

    r669 r670  
    2020
    2121    return ImportsNamespace( namespaceScopes );
     22}
     23
     24bool NamespaceSupporter::IsCoverd( const NamespaceScopes &base, const NamespaceScopes &entry ) const
     25{
     26    // まずはそのままでマッチングを試みる
     27    if( base.IsEqual( entry ) )
     28    {
     29        return true;
     30    }
     31
     32    // 現在の名前空間とのマッチングを試みる
     33    NamespaceScopes tempCurrent = this->livingNamespaceScopes;
     34    while( !tempCurrent.empty() )
     35    {
     36        if( base.IsEqual( tempCurrent + entry ) )
     37        {
     38            return true;
     39        }
     40
     41        tempCurrent.pop_back();
     42    }
     43
     44    // Importsされている名前空間とのマッチングを試みる
     45    BOOST_FOREACH( const NamespaceScopes &importedNamespaceScopes, GetImportedNamespaces() )
     46    {
     47        if( base.IsEqual( importedNamespaceScopes + entry ) )
     48        {
     49            return true;
     50        }
     51    }
     52
     53    return false;
    2254}
    2355
Note: See TracChangeset for help on using the changeset viewer.