tor-browser

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

ConstantUnion.h (4071B)


      1 //
      2 // Copyright 2002 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 
      7 #ifndef COMPILER_TRANSLATOR_CONSTANTUNION_H_
      8 #define COMPILER_TRANSLATOR_CONSTANTUNION_H_
      9 
     10 #include "compiler/translator/BaseTypes.h"
     11 #include "compiler/translator/Common.h"
     12 
     13 namespace sh
     14 {
     15 
     16 class TDiagnostics;
     17 
     18 class TConstantUnion
     19 {
     20  public:
     21    POOL_ALLOCATOR_NEW_DELETE
     22    TConstantUnion();
     23    TConstantUnion(int i);
     24    TConstantUnion(unsigned int u);
     25    TConstantUnion(float f);
     26    TConstantUnion(bool b);
     27 
     28    bool cast(TBasicType newType, const TConstantUnion &constant);
     29 
     30    void setIConst(int i)
     31    {
     32        iConst = i;
     33        type   = EbtInt;
     34    }
     35    void setUConst(unsigned int u)
     36    {
     37        uConst = u;
     38        type   = EbtUInt;
     39    }
     40    void setFConst(float f)
     41    {
     42        fConst = f;
     43        type   = EbtFloat;
     44    }
     45    void setBConst(bool b)
     46    {
     47        bConst = b;
     48        type   = EbtBool;
     49    }
     50 
     51    void setYuvCscStandardEXTConst(TYuvCscStandardEXT s)
     52    {
     53        yuvCscStandardEXTConst = s;
     54        type                   = EbtYuvCscStandardEXT;
     55    }
     56 
     57    int getIConst() const;
     58    unsigned int getUConst() const;
     59    float getFConst() const;
     60    bool getBConst() const;
     61    bool isZero() const;
     62    TYuvCscStandardEXT getYuvCscStandardEXTConst() const;
     63 
     64    bool operator==(const int i) const;
     65    bool operator==(const unsigned int u) const;
     66    bool operator==(const float f) const;
     67    bool operator==(const bool b) const;
     68    bool operator==(const TYuvCscStandardEXT s) const;
     69    bool operator==(const TConstantUnion &constant) const;
     70    bool operator!=(const int i) const;
     71    bool operator!=(const unsigned int u) const;
     72    bool operator!=(const float f) const;
     73    bool operator!=(const bool b) const;
     74    bool operator!=(const TYuvCscStandardEXT s) const;
     75    bool operator!=(const TConstantUnion &constant) const;
     76    bool operator>(const TConstantUnion &constant) const;
     77    bool operator<(const TConstantUnion &constant) const;
     78    static TConstantUnion add(const TConstantUnion &lhs,
     79                              const TConstantUnion &rhs,
     80                              TDiagnostics *diag,
     81                              const TSourceLoc &line);
     82    static TConstantUnion sub(const TConstantUnion &lhs,
     83                              const TConstantUnion &rhs,
     84                              TDiagnostics *diag,
     85                              const TSourceLoc &line);
     86    static TConstantUnion mul(const TConstantUnion &lhs,
     87                              const TConstantUnion &rhs,
     88                              TDiagnostics *diag,
     89                              const TSourceLoc &line);
     90    TConstantUnion operator%(const TConstantUnion &constant) const;
     91    static TConstantUnion rshift(const TConstantUnion &lhs,
     92                                 const TConstantUnion &rhs,
     93                                 TDiagnostics *diag,
     94                                 const TSourceLoc &line);
     95    static TConstantUnion lshift(const TConstantUnion &lhs,
     96                                 const TConstantUnion &rhs,
     97                                 TDiagnostics *diag,
     98                                 const TSourceLoc &line);
     99    TConstantUnion operator&(const TConstantUnion &constant) const;
    100    TConstantUnion operator|(const TConstantUnion &constant) const;
    101    TConstantUnion operator^(const TConstantUnion &constant) const;
    102    TConstantUnion operator&&(const TConstantUnion &constant) const;
    103    TConstantUnion operator||(const TConstantUnion &constant) const;
    104 
    105    TBasicType getType() const { return type; }
    106 
    107  private:
    108    union
    109    {
    110        int iConst;           // used for ivec, scalar ints
    111        unsigned int uConst;  // used for uvec, scalar uints
    112        bool bConst;          // used for bvec, scalar bools
    113        float fConst;         // used for vec, mat, scalar floats
    114        TYuvCscStandardEXT yuvCscStandardEXTConst;
    115    };
    116 
    117    TBasicType type;
    118 };
    119 
    120 }  // namespace sh
    121 
    122 #endif  // COMPILER_TRANSLATOR_CONSTANTUNION_H_