diff options
Diffstat (limited to 'doc/html/ksquirrel-libs-fio.html')
-rw-r--r-- | doc/html/ksquirrel-libs-fio.html | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/doc/html/ksquirrel-libs-fio.html b/doc/html/ksquirrel-libs-fio.html new file mode 100644 index 0000000..2ead0b7 --- /dev/null +++ b/doc/html/ksquirrel-libs-fio.html @@ -0,0 +1,140 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> + <title>KSquirrel: development</title> + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name='Author' content='Baryshev Dmitry/Krasu'> + + <link rel="stylesheet" href="styles.css" type="text/css"> +</head> +<body> + +For reading and writing data I use the following classes, inherited from ifstream and ofstream. + +<table cellpadding="2" cellspacing="2" width="70%" align="center"> +<tbody> +<tr> +<td valign="top" bgcolor="#CCCCCC"> +<pre> +<b>Class for reading binary data</b> +class ifstreamK : public ifstream +{ + public: + ifstreamK(); + + <b>Read 'size' bytes of binary data and store it into 'data'. + Returns true if reading was successful, and false otherwise</b> + bool readK(void *data, int size); + + <b>Read string from file</b> + bool getS(char *, const int); + + <b>Read ascii hex value from file (like "0xFFFF00")</b> + bool readCHex(u32 &hex); + + <b>big-endian-oriented reading</b> + bool be_getchar(u8 *c); + bool be_getshort(u16 *s); + bool be_getlong(u32 *l); +}; + +<b>Class for writing binary data</b> +class ofstreamK : public ofstream +{ + public: + ofstreamK(); + + bool writeK(void *data, int size); +}; +</pre> +</td> +</tr> +</tbody> +</table> + +<b><u>Examples</u></b> + +<ul> +<li> Read structure from binary file +<br><br> +<table cellpadding="2" cellspacing="2" width="70%" align="center"> + <tbody> + <tr> + <td valign="top" bgcolor="#CCCCCC"> + + <pre> + typedef struct + { + int a; + short b; + char c; + + }Data; + + ... + + class::class() + { + fs.open("file.bin", ios::in | ios::binary); + } + + int class::readstruct(Data *s) + { + bool b = fs.readK(s, sizeof(Data)); + + cerr << "Reading " << (b ? "OK" : "Failed") << endl; + } + + </pre> + </td> + </tr> + </tbody> +</table> + +<br><br> +<li> Write structure to binary file +<br><br> +<table cellpadding="2" cellspacing="2" width="70%" align="center"> + <tbody> + <tr> + <td valign="top" bgcolor="#CCCCCC"> + + <pre> + typedef struct + { + int a; + short b; + char c; + + }Data; + + ... + + class::class() + { + fs.open("file.bin", ios::out | ios::binary); + } + + int class::writestruct(Data *s) + { + bool b = fs.writeK(s, sizeof(Data)); + + cerr << "Writing " << (b ? "OK" : "Failed") << endl; + } + + </pre> + </td> + </tr> + </tbody> +</table> + +<br> + +<b><u>Note:</u></b> remember, that reading and writing structures in binary mode is not doog idea. This is just example. See <a href='http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#7'>http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#7</a> and <a href='http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#3'>http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#3</a> for more. + +<br><br> + +</ul> +</body> +</html> |