Edit

kc3-lang/angle/src/compiler/Initialize.h

Branch :

  • Show log

    Commit

  • Author : alokp@chromium.org
    Date : 2010-09-07 17:36:23
    Hash : ad771eb2
    Message : Added mechanism to predefine associated macros for extensions. Also refactored the way extension behavior is initialized and updated. Please note that I still need to add validation that appropriate extensions are enabled before using an extension function. BUG=25 Review URL: http://codereview.appspot.com/2139042 git-svn-id: https://angleproject.googlecode.com/svn/trunk@413 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/compiler/Initialize.h
  • //
    // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #ifndef _INITIALIZE_INCLUDED_
    #define _INITIALIZE_INCLUDED_
    
    #include "compiler/Common.h"
    #include "compiler/ShHandle.h"
    #include "compiler/SymbolTable.h"
    
    typedef TVector<TString> TBuiltInStrings;
    
    class TBuiltIns {
    public:
        POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
    
        void initialize(EShLanguage language, EShSpec spec, const TBuiltInResource& resources);
        const TBuiltInStrings& getBuiltInStrings() { return builtInStrings; }
    
    protected:
        TBuiltInStrings builtInStrings;
    };
    
    void IdentifyBuiltIns(EShLanguage language, EShSpec spec, const TBuiltInResource& resources,
                          TSymbolTable& symbolTable);
    
    void InitExtensionBehavior(const TBuiltInResource& resources,
                               TExtensionBehavior& extensionBehavior);
    
    extern "C" int InitPreprocessor(void);
    extern "C" int FinalizePreprocessor(void);
    extern "C" void PredefineIntMacro(const char *name, int value);
    
    #endif // _INITIALIZE_INCLUDED_