A port of the irrlicht XML parser library.

Committer:
hlipka
Date:
Wed Nov 17 20:19:41 2010 +0000
Revision:
0:41a49a73580c
initial version

Who changed what in which revision?

UserRevisionLine numberNew 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