source: nrEngine/src/IStream.cpp @ 30

Revision 30, 3.3 KB checked in by art, 12 years ago (diff)

::std wurde durch std ueberall ersetzt!

Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13
14//----------------------------------------------------------------------------------
15// Includes
16//----------------------------------------------------------------------------------
17#include "IStream.h"
18
19namespace nrEngine {
20
21        //----------------------------------------------------------------------------------
22        IStream::IStream(uint32 streamBufSize) : mSize(0), mStreamBufSize(streamBufSize)
23        {
24                // check for the size. If size is smaller than 1 we want to have unbuffered data
25                if (streamBufSize < 1)
26                        mStreamBufSize = 1;
27
28                // allocate memory for the buffer
29                mBuffer = new byte[mStreamBufSize];
30        }
31
32
33        //----------------------------------------------------------------------------------
34        IStream::IStream(const std::string& name, uint32 streamBufSize) : mName(name), mSize(0), mStreamBufSize(streamBufSize)
35        {
36                // check for the size. If size is smaller than 1 we want to have unbuffered data
37                if (streamBufSize < 1)
38                        mStreamBufSize = 1;
39
40                // allocate memory for the buffer
41                mBuffer = new byte[mStreamBufSize];
42        }
43
44        //----------------------------------------------------------------------------------
45        IStream::~IStream()
46        {
47                // release the buffer
48                NR_SAFE_DELETE_ARRAY(mBuffer);
49        }
50
51
52        //----------------------------------------------------------------------------------
53  template <typename T> IStream& IStream::operator >>(T& val)
54  {
55                read(static_cast<void*>(&val), sizeof(T));
56                return *this;
57        }
58
59
60        //----------------------------------------------------------------------------------
61        std::string IStream::getLine()
62        {
63
64                // some variables to store the data
65                size_t c = mStreamBufSize;
66                std::string str;
67
68                // read until we reached end of file or got
69                // on got the new line character
70                while (c == mStreamBufSize - 1){
71
72                        c = readDelim(mBuffer, mStreamBufSize - 1);
73
74                        // copy the content of the bufer to the string
75                        str += (char*)mBuffer;
76                }
77
78                // return the string
79                return str;
80        }
81
82        //----------------------------------------------------------------------------------
83        std::string IStream::getAsString(){
84
85                // create buffer to hold the whole data
86                char* pBuf = new char[mSize+1];
87
88                // read the whole data
89                size_t c = read(pBuf, mSize);
90
91                // setup the end characeter and create the string
92                pBuf[c] = '\0';
93                std::string str(pBuf);
94
95                // free data and return
96                delete [] pBuf;
97
98                return str;
99        }
100
101        //----------------------------------------------------------------------------------
102        size_t IStream::read(void *buf, size_t count)
103        {
104                return read(buf, count, 1);
105        }
106
107
108};
109
Note: See TracBrowser for help on using the repository browser.