Home | History | Annotate | Download | only in src
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_UNICODE_CACHE_H_
      6 #define V8_UNICODE_CACHE_H_
      7 
      8 #include "src/base/macros.h"
      9 #include "src/char-predicates.h"
     10 #include "src/unicode.h"
     11 #include "src/unicode-decoder.h"
     12 
     13 namespace v8 {
     14 namespace internal {
     15 
     16 // Caching predicates used by scanners.
     17 class UnicodeCache {
     18  public:
     19   UnicodeCache() {}
     20   typedef unibrow::Utf8Decoder<512> Utf8Decoder;
     21 
     22   StaticResource<Utf8Decoder>* utf8_decoder() { return &utf8_decoder_; }
     23 
     24   inline bool IsIdentifierStart(unibrow::uchar c);
     25   inline bool IsIdentifierPart(unibrow::uchar c);
     26   inline bool IsLineTerminator(unibrow::uchar c);
     27   inline bool IsLineTerminatorSequence(unibrow::uchar c, unibrow::uchar next);
     28 
     29   inline bool IsWhiteSpace(unibrow::uchar c);
     30   inline bool IsWhiteSpaceOrLineTerminator(unibrow::uchar c);
     31 
     32  private:
     33   unibrow::Predicate<IdentifierStart, 128> kIsIdentifierStart;
     34   unibrow::Predicate<IdentifierPart, 128> kIsIdentifierPart;
     35   unibrow::Predicate<unibrow::LineTerminator, 128> kIsLineTerminator;
     36   unibrow::Predicate<WhiteSpace, 128> kIsWhiteSpace;
     37   unibrow::Predicate<WhiteSpaceOrLineTerminator, 128>
     38       kIsWhiteSpaceOrLineTerminator;
     39   StaticResource<Utf8Decoder> utf8_decoder_;
     40 
     41   DISALLOW_COPY_AND_ASSIGN(UnicodeCache);
     42 };
     43 
     44 }  // namespace internal
     45 }  // namespace v8
     46 
     47 #endif  // V8_UNICODE_CACHE_H_
     48