// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SKY_ENGINE_CORE_CSS_PARSER_MEDIAQUERYINPUTSTREAM_H_ #define SKY_ENGINE_CORE_CSS_PARSER_MEDIAQUERYINPUTSTREAM_H_ #include "sky/engine/wtf/text/WTFString.h" namespace blink { const UChar kEndOfFileMarker = '\0'; class MediaQueryInputStream { WTF_MAKE_NONCOPYABLE(MediaQueryInputStream); WTF_MAKE_FAST_ALLOCATED; public: MediaQueryInputStream(String input); UChar peek(unsigned); inline UChar nextInputChar() { return peek(0); } void advance(unsigned = 1); void pushBack(UChar); inline size_t maxLength() { return m_string.length() + 1; } inline size_t leftChars() { return m_string.length() - m_offset; } unsigned long long getUInt(unsigned start, unsigned end); double getDouble(unsigned start, unsigned end); template unsigned skipWhilePredicate(unsigned offset) { while ((m_offset + offset) < m_string.length() && characterPredicate(m_string[m_offset + offset])) ++offset; return offset; } private: size_t m_offset; String m_string; }; } // namespace blink #endif // SKY_ENGINE_CORE_CSS_PARSER_MEDIAQUERYINPUTSTREAM_H_