A port of the irrlicht XML parser library.
stringReader.h@0:41a49a73580c, 2010-11-17 (annotated)
- Committer:
- hlipka
- Date:
- Wed Nov 17 20:19:41 2010 +0000
- Revision:
- 0:41a49a73580c
initial version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hlipka | 0:41a49a73580c | 1 | #ifndef STRINGREADER_H |
hlipka | 0:41a49a73580c | 2 | #define STRINGREADER_H |
hlipka | 0:41a49a73580c | 3 | |
hlipka | 0:41a49a73580c | 4 | #include <stdlib.h> |
hlipka | 0:41a49a73580c | 5 | #include <string.h> |
hlipka | 0:41a49a73580c | 6 | |
hlipka | 0:41a49a73580c | 7 | class CStringReadCallBack : public IFileReadCallBack |
hlipka | 0:41a49a73580c | 8 | { |
hlipka | 0:41a49a73580c | 9 | public: |
hlipka | 0:41a49a73580c | 10 | |
hlipka | 0:41a49a73580c | 11 | //! construct from filename |
hlipka | 0:41a49a73580c | 12 | CStringReadCallBack(char* data) |
hlipka | 0:41a49a73580c | 13 | : Size(0), Close(true), _offset(0) |
hlipka | 0:41a49a73580c | 14 | { |
hlipka | 0:41a49a73580c | 15 | _data=data; |
hlipka | 0:41a49a73580c | 16 | Size=strlen(_data); |
hlipka | 0:41a49a73580c | 17 | } |
hlipka | 0:41a49a73580c | 18 | |
hlipka | 0:41a49a73580c | 19 | //! destructor |
hlipka | 0:41a49a73580c | 20 | virtual ~CStringReadCallBack() |
hlipka | 0:41a49a73580c | 21 | { |
hlipka | 0:41a49a73580c | 22 | } |
hlipka | 0:41a49a73580c | 23 | |
hlipka | 0:41a49a73580c | 24 | //! Reads an amount of bytes from the file. |
hlipka | 0:41a49a73580c | 25 | virtual int read(void* buffer, int sizeToRead) |
hlipka | 0:41a49a73580c | 26 | { |
hlipka | 0:41a49a73580c | 27 | int len=sizeToRead; |
hlipka | 0:41a49a73580c | 28 | if (Size-_offset>len) |
hlipka | 0:41a49a73580c | 29 | len=Size-_offset; |
hlipka | 0:41a49a73580c | 30 | memcpy(buffer,_data+_offset,len); |
hlipka | 0:41a49a73580c | 31 | return len; |
hlipka | 0:41a49a73580c | 32 | } |
hlipka | 0:41a49a73580c | 33 | |
hlipka | 0:41a49a73580c | 34 | //! Returns size of file in bytes |
hlipka | 0:41a49a73580c | 35 | virtual int getSize() |
hlipka | 0:41a49a73580c | 36 | { |
hlipka | 0:41a49a73580c | 37 | return Size; |
hlipka | 0:41a49a73580c | 38 | } |
hlipka | 0:41a49a73580c | 39 | |
hlipka | 0:41a49a73580c | 40 | private: |
hlipka | 0:41a49a73580c | 41 | |
hlipka | 0:41a49a73580c | 42 | int Size; |
hlipka | 0:41a49a73580c | 43 | int _offset; |
hlipka | 0:41a49a73580c | 44 | bool Close; |
hlipka | 0:41a49a73580c | 45 | char* _data; |
hlipka | 0:41a49a73580c | 46 | |
hlipka | 0:41a49a73580c | 47 | }; // end class CFileReadCallBack |
hlipka | 0:41a49a73580c | 48 | |
hlipka | 0:41a49a73580c | 49 | #endif |