Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / css / parser / MediaQueryInputStream.h
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 blink {
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 blink
55
56 #endif // MediaQueryInputStream_h
57