Ignore:
Timestamp:
Jun 26, 2007, 5:04:50 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler_Common/include
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/include/ClassImpl.h

    r191 r193  
    1414    {
    1515    }
     16
     17    virtual bool IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const;
    1618
    1719    //継承させる
     
    6264    virtual void Compile_System_InitializeUserTypes();
    6365
     66    virtual const CClass *Find( const NamespaceScopes &namespaceScopes, const string &name ) const;
     67
    6468
    6569    // XMLシリアライズ用
  • trunk/abdev/BasicCompiler_Common/include/Compiler.h

    r184 r193  
    22
    33#include <CodeGenerator.h>
     4#include <MetaImpl.h>
     5
    46class Compiler
    57{
    6     static NativeCode nativeCode;
     8    NativeCode nativeCode;
     9    MetaImpl metaImpl;
     10
     11    NamespaceScopesCollection importedNamespaces;
     12
    713public:
    8     static NativeCode &GetNativeCode()
     14    NativeCode &GetNativeCode()
    915    {
    1016        return nativeCode;
    1117    }
     18
     19    MetaImpl &GetMeta()
     20    {
     21        return metaImpl;
     22    }
     23
     24    NamespaceScopesCollection &GetImportedNamespaces()
     25    {
     26        return importedNamespaces;
     27    }
     28    void SetImportedNamespaces( const NamespaceScopesCollection &namespaces )
     29    {
     30        this->importedNamespaces = namespaces;
     31    }
     32    bool ImportsNamespace( const std::string &namespaceStr )
     33    {
     34        NamespaceScopes namespaceScopes( namespaceStr );
     35        if( !this->GetMeta().GetNamespaces().IsExist( namespaceScopes ) ){
     36            return false;
     37        }
     38
     39        this->importedNamespaces.push_back( namespaceScopes );
     40
     41        return true;
     42    }
     43
     44    static bool StringToType( const std::string &typeName, Type &type );
     45    static const std::string TypeToString( const Type &type );
     46
     47    // 指定された名前空間が同一エリアと見なされるかどうかをチェック
     48    bool IsSameAreaNamespace( const NamespaceScopes &baseNamespaceScopes, const NamespaceScopes &entryNamespaceScopes ){
     49        if( entryNamespaceScopes.size() ){
     50            if( baseNamespaceScopes.IsCoverd( entryNamespaceScopes ) ){
     51                // 包括しているときは同一と見なす
     52                return true;
     53            }
     54        }
     55        else{
     56            if( baseNamespaceScopes.size() ){
     57                // 名前空間の判断が必要なとき
     58                if( this->importedNamespaces.IsImported( baseNamespaceScopes )
     59                    || baseNamespaceScopes.IsLiving() ){
     60                    // Using指定があるとき
     61                    // または
     62                    // 指定された名前空間が現在の名前空間スコープと同一のとき
     63                    return true;
     64                }
     65            }
     66            else{
     67                return true;
     68            }
     69        }
     70
     71        return false;
     72    }
    1273};
     74
     75static Compiler compiler;
  • trunk/abdev/BasicCompiler_Common/include/MetaImpl.h

    r191 r193  
    77#include <ClassImpl.h>
    88#include <ProcedureImpl.h>
     9#include <TypeDef.h>
    910
    1011class MetaImpl : public Meta
    1112{
     13    // 名前空間
     14    NamespaceScopesCollection namespaceScopesCollection;
     15
     16    // クラス
    1217    ClassesImpl classesImpl;
    1318    Classes *pNowClassesForDebugger;
    1419
     20    // blittable型
     21    BlittableTypes blittableTypes;
     22
     23    // TypeDef
     24    TypeDefCollection typeDefs;
     25
    1526public:
    16     MetaImpl( ClassesImpl *pClasses )
     27    MetaImpl()
    1728        : Meta( new ProcPointersImpl() )
    1829        , classesImpl()
     
    2031    {
    2132    }
    22     MetaImpl()
    23         : Meta()
     33
     34    const NamespaceScopesCollection &GetNamespaces() const
    2435    {
     36        return namespaceScopesCollection;
    2537    }
    26 
     38    NamespaceScopesCollection &GetNamespaces()
     39    {
     40        return namespaceScopesCollection;
     41    }
    2742
    2843    virtual Classes &GetClasses()
     
    3348    {
    3449        this->pNowClassesForDebugger = pClasses;
     50    }
     51
     52    BlittableTypes &GetBlittableTypes()
     53    {
     54        return blittableTypes;
     55    }
     56
     57    TypeDefCollection &GetTypeDefs()
     58    {
     59        return typeDefs;
    3560    }
    3661
  • trunk/abdev/BasicCompiler_Common/include/ProcedureImpl.h

    r184 r193  
    4949    }
    5050
     51    virtual bool IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const;
     52
    5153    virtual bool SetParamsAndReturnType( const char *sourceOfParams, int nowLine );
    5254};
  • trunk/abdev/BasicCompiler_Common/include/SmoothieImpl.h

    r191 r193  
    99{
    1010    friend Smoothie;
    11     static MetaImpl metaImpl;
     11
    1212public:
    1313    SmoothieImpl()
     
    1515    {
    1616    }
     17
     18    // blittable型
     19    BlittableTypes blittableTypes;
    1720};
Note: See TracChangeset for help on using the changeset viewer.