Home | History | Annotate | Download | only in parser
      1 // Copyright 2014 The Chromium 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 MediaQueryInputStream_h
      6 #define MediaQueryInputStream_h
      7 
      8 #include "wtf/text/WTFString.h"
      9 
     10 namespace WebCore {
     11 
     12 class MediaQueryInputStream {
     13     WTF_MAKE_NONCOPYABLE(MediaQueryInputStream);
     14     WTF_MAKE_FAST_ALLOCATED;
     15 public:
     16     MediaQueryInputStream(String input);
     17 
     18     UChar peek(unsigned);
     19     inline UChar nextInputChar()
     20     {
     21         return peek(0);
     22     }
     23 
     24     void advance(unsigned = 1);
     25     void pushBack(UChar);
     26 
     27     inline size_t maxLength()
     28     {
     29         return m_string.length() + 1;
     30     }
     31 
     32     inline size_t leftChars()
     33     {
     34         return m_string.length() - m_offset;
     35 
     36     }
     37 
     38     unsigned long long getUInt(unsigned start, unsigned end);
     39     double getDouble(unsigned start, unsigned end);
     40 
     41     template<bool characterPredicate(UChar)>
     42     unsigned skipWhilePredicate(unsigned offset)
     43     {
     44         while ((m_offset + offset) < m_string.length() && characterPredicate(m_string[m_offset + offset]))
     45             ++offset;
     46         return offset;
     47     }
     48 
     49 private:
     50     size_t m_offset;
     51     String m_string;
     52 };
     53 
     54 } // namespace WebCore
     55 
     56 #endif // MediaQueryInputStream_h
     57 
     58