Vault  4.1
vtextiostream.h
Go to the documentation of this file.
00001 /*
00002 Copyright c1997-2014 Trygve Isaacson. All rights reserved.
00003 This file is part of the Code Vault version 4.1
00004 http://www.bombaydigital.com/
00005 License: MIT. See LICENSE.md in the Vault top level directory.
00006 */
00007 
00008 #ifndef vtextiostream_h
00009 #define vtextiostream_h
00010 
00013 #include "viostream.h"
00014 #include "vstring.h"
00015 
00031 class VTextIOStream : public VIOStream {
00032     public:
00033 
00035         enum {
00036             kLineEndingsUnknown,    
00037             kLineEndingsUnix,        
00038             kLineEndingsDOS,        
00039             kLineEndingsMac,        
00040             kLineEndingsMixed,        
00041 
00042             kNumLineEndingsReadKinds
00043         };
00044 
00046         enum {
00047             kUseUnixLineEndings,        
00048             kUseDOSLineEndings,            
00049             kUseMacLineEndings,            
00050             kUseSuppliedLineEndings,    
00051             kUseNativeLineEndings,        
00052 
00053             kNumLineEndingsWriteKinds
00054         };
00055 
00062         VTextIOStream(VStream& rawStream, int lineEndingsWriteKind = kUseNativeLineEndings);
00066         virtual ~VTextIOStream() {}
00067 
00077         void readLine(VString& s, bool includeLineEnding = false);
00078 
00090         VCodePoint readUTF8CodePoint();
00101         VChar readCharacterByte();
00102 
00115         void readAll(VString& s, bool includeLineEndings = true);
00122         void readAll(VStringVector& lines);
00123 
00133         void writeLine(const VString& s);
00134 
00139         void writeString(const VString& s);
00140 
00146         void writeLineEnd();
00147 
00154         int getLineEndingsReadKind() const { return mLineEndingsReadKind; }
00161         int getLineEndingsReadKindForWrite() const;
00167         int getLineEndingsWriteKind() const { return mLineEndingsWriteKind; }
00174         void setLineEndingsKind(int kind);
00175 
00176     private:
00177 
00179         void _updateLineEndingsReadKind(int lineEndingKind);
00180 
00181         int         mLineEndingsReadKind;   
00182         int         mLineEndingsWriteKind;  
00183         VCodePoint  mPendingCharacter;      
00184         int         mReadState;             
00185         VString     mLineBuffer;            
00186         Vu8         mLineEndingChars[2];    
00187         int         mLineEndingCharsLength; 
00188 
00189         enum {
00190             kReadStateReady,    
00191             kReadStateGot0x0D,  
00192 
00193             kNumReadStates
00194         };
00195 
00196 };
00197 
00198 #endif /* vtextiostream_h */

Copyright ©1997-2014 Trygve Isaacson. All rights reserved. This documentation was generated with Doxygen.