tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

FunctionLookup.h (1899B)


      1 //
      2 // Copyright 2018 The ANGLE Project Authors. All rights reserved.
      3 // Use of this source code is governed by a BSD-style license that can be
      4 // found in the LICENSE file.
      5 //
      6 // FunctionLookup.h: Used for storing function calls that have not yet been resolved during parsing.
      7 //
      8 
      9 #ifndef COMPILER_TRANSLATOR_FUNCTIONLOOKUP_H_
     10 #define COMPILER_TRANSLATOR_FUNCTIONLOOKUP_H_
     11 
     12 #include "compiler/translator/ImmutableString.h"
     13 #include "compiler/translator/IntermNode.h"
     14 
     15 namespace sh
     16 {
     17 
     18 // A function look-up.
     19 class TFunctionLookup : angle::NonCopyable
     20 {
     21  public:
     22    POOL_ALLOCATOR_NEW_DELETE
     23 
     24    static TFunctionLookup *CreateConstructor(const TType *type);
     25    static TFunctionLookup *CreateFunctionCall(const ImmutableString &name, const TSymbol *symbol);
     26 
     27    const ImmutableString &name() const;
     28    ImmutableString getMangledName() const;
     29    static ImmutableString GetMangledName(const char *functionName,
     30                                          const TIntermSequence &arguments);
     31    std::vector<ImmutableString> getMangledNamesForImplicitConversions() const;
     32 
     33    bool isConstructor() const;
     34    const TType &constructorType() const;
     35 
     36    void setThisNode(TIntermTyped *thisNode);
     37    TIntermTyped *thisNode() const;
     38 
     39    void addArgument(TIntermTyped *argument);
     40    TIntermSequence &arguments();
     41 
     42    // Symbol looked up in the lexical phase using only the name of the function.
     43    // This does not necessarily correspond to the correct overloaded function.
     44    const TSymbol *symbol() const;
     45 
     46  private:
     47    TFunctionLookup(const ImmutableString &name,
     48                    const TType *constructorType,
     49                    const TSymbol *symbol);
     50 
     51    const ImmutableString mName;
     52    const TType *const mConstructorType;
     53    TIntermTyped *mThisNode;
     54    TIntermSequence mArguments;
     55    const TSymbol *mSymbol;
     56 };
     57 
     58 }  // namespace sh
     59 
     60 #endif  // COMPILER_TRANSLATOR_FUNCTIONLOOKUP_H_