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 10namespace WebCore { 11 12class MediaQueryInputStream { 13 WTF_MAKE_NONCOPYABLE(MediaQueryInputStream); 14 WTF_MAKE_FAST_ALLOCATED; 15public: 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 49private: 50 size_t m_offset; 51 String m_string; 52}; 53 54} // namespace WebCore 55 56#endif // MediaQueryInputStream_h 57 58