189ec8a81STyler Dauwalder //---------------------------------------------------------------------- 2*2ca13760SColdfirex // This software is part of the Haiku distribution and is covered 3b6f76ebeSAugustin Cavalier // by the MIT License. 489ec8a81STyler Dauwalder //--------------------------------------------------------------------- 589ec8a81STyler Dauwalder /*! 689ec8a81STyler Dauwalder \file sniffer/CharStream.h 789ec8a81STyler Dauwalder Character stream class 889ec8a81STyler Dauwalder */ 989ec8a81STyler Dauwalder #ifndef _SNIFFER_CHAR_STREAM_H 1089ec8a81STyler Dauwalder #define _SNIFFER_CHAR_STREAM_H 1189ec8a81STyler Dauwalder 1289ec8a81STyler Dauwalder #include <SupportDefs.h> 1389ec8a81STyler Dauwalder 1489ec8a81STyler Dauwalder #include <string> 1589ec8a81STyler Dauwalder 1689ec8a81STyler Dauwalder namespace BPrivate { 1789ec8a81STyler Dauwalder namespace Storage { 1889ec8a81STyler Dauwalder namespace Sniffer { 1989ec8a81STyler Dauwalder 2089ec8a81STyler Dauwalder //! Manages a stream of characters 2189ec8a81STyler Dauwalder /*! CharStream is used by the scanner portion of the parser, which is implemented 2289ec8a81STyler Dauwalder in TokenStream::SetTo(). 2389ec8a81STyler Dauwalder 2489ec8a81STyler Dauwalder It's also used by BPrivate::TRoster while parsing through the the 2589ec8a81STyler Dauwalder roster's RosterSettings file. 2689ec8a81STyler Dauwalder */ 2789ec8a81STyler Dauwalder class CharStream { 2889ec8a81STyler Dauwalder public: 2989ec8a81STyler Dauwalder CharStream(const std::string &string); 3089ec8a81STyler Dauwalder CharStream(); 3189ec8a81STyler Dauwalder virtual ~CharStream(); 3289ec8a81STyler Dauwalder 3389ec8a81STyler Dauwalder status_t SetTo(const std::string &string); 3489ec8a81STyler Dauwalder void Unset(); 3589ec8a81STyler Dauwalder status_t InitCheck() const; 3689ec8a81STyler Dauwalder bool IsEmpty() const; 3789ec8a81STyler Dauwalder size_t Pos() const; 3889ec8a81STyler Dauwalder const std::string& String() const; 3989ec8a81STyler Dauwalder 4089ec8a81STyler Dauwalder char Get(); 4189ec8a81STyler Dauwalder void Unget(); 4289ec8a81STyler Dauwalder 4389ec8a81STyler Dauwalder private: 4489ec8a81STyler Dauwalder std::string fString; 4589ec8a81STyler Dauwalder size_t fPos; 4689ec8a81STyler Dauwalder status_t fCStatus; 4789ec8a81STyler Dauwalder 4889ec8a81STyler Dauwalder CharStream(const CharStream &ref); 4989ec8a81STyler Dauwalder CharStream& operator=(const CharStream &ref); 5089ec8a81STyler Dauwalder }; 5189ec8a81STyler Dauwalder 5289ec8a81STyler Dauwalder }; // namespace Sniffer 5389ec8a81STyler Dauwalder }; // namespace Storage 5489ec8a81STyler Dauwalder }; // namespace BPrivate 5589ec8a81STyler Dauwalder 5689ec8a81STyler Dauwalder #endif // _SNIFFER_CHAR_STREAM_H 57