tor-browser

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

Declarator.h (1348B)


      1 //
      2 // Copyright 2017 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 // Declarator.h:
      7 //   Declarator type for parsing structure field declarators.
      8 
      9 #ifndef COMPILER_TRANSLATOR_DECLARATOR_H_
     10 #define COMPILER_TRANSLATOR_DECLARATOR_H_
     11 
     12 #include "compiler/translator/Common.h"
     13 #include "compiler/translator/ImmutableString.h"
     14 
     15 namespace sh
     16 {
     17 
     18 // Declarator like "a[2][4]". Only used for parsing structure field declarators.
     19 class TDeclarator : angle::NonCopyable
     20 {
     21  public:
     22    POOL_ALLOCATOR_NEW_DELETE
     23    TDeclarator(const ImmutableString &name, const TSourceLoc &line);
     24 
     25    TDeclarator(const ImmutableString &name,
     26                const TVector<unsigned int> *arraySizes,
     27                const TSourceLoc &line);
     28 
     29    const ImmutableString &name() const { return mName; }
     30 
     31    bool isArray() const;
     32    const TVector<unsigned int> *arraySizes() const { return mArraySizes; }
     33 
     34    const TSourceLoc &line() const { return mLine; }
     35 
     36  private:
     37    const ImmutableString mName;
     38 
     39    // Outermost array size is stored at the end of the vector.
     40    const TVector<unsigned int> *const mArraySizes;
     41 
     42    const TSourceLoc mLine;
     43 };
     44 
     45 using TDeclaratorList = TVector<TDeclarator *>;
     46 
     47 }  // namespace sh
     48 
     49 #endif  // COMPILER_TRANSLATOR_DECLARATOR_H_