Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // (c) agrippa1994
- #include <Windows.h>
- #include <stdio.h>
- class CDataStream
- {
- public:
- CDataStream(int MaxSize_=1024);
- ~CDataStream();
- CDataStream& operator <<(int);
- CDataStream& operator <<(float);
- CDataStream& operator <<(void*);
- CDataStream& operator >>(int&);
- CDataStream& operator >>(float&);
- CDataStream& operator >>(void*);
- void Free();
- private:
- BYTE* Data;
- int BytePos;
- int MaxSize;
- template<typename T>bool CopyData(T Data);
- template<typename T> T ExtractData();
- };
- CDataStream::CDataStream(int MaxSize_) : MaxSize(MaxSize_), BytePos(0)
- {
- Data = (BYTE*)malloc(MaxSize);
- memset(this->Data,0,sizeof(this->Data));
- }
- CDataStream::~CDataStream()
- {
- free((BYTE*)Data);
- }
- CDataStream& CDataStream::operator <<(int iVar)
- {
- this->CopyData<int>(iVar);
- return *this;
- }
- CDataStream& CDataStream::operator <<(float fVar)
- {
- this->CopyData<float>(fVar);
- return *this;
- }
- CDataStream& CDataStream::operator <<(void* ptrVar)
- {
- this->CopyData<void*>(ptrVar);
- return *this;
- }
- CDataStream& CDataStream::operator >>(int& iVar)
- {
- iVar=this->ExtractData<int>();
- return *this;
- }
- CDataStream& CDataStream::operator >>(float& fVar)
- {
- fVar=this->ExtractData<float>();
- return *this;
- }
- CDataStream& CDataStream::operator >>(void* ptrVar)
- {
- ptrVar=this->ExtractData<void*>();
- return *this;
- }
- template<typename T> bool CDataStream::CopyData(T tData)
- {
- if((BytePos+(int)sizeof(T))>MaxSize)
- return false;
- *(T*)(Data+BytePos)=tData;
- this->BytePos+=sizeof(T);
- return true;
- }
- template<typename T> T CDataStream::ExtractData()
- {
- if(BytePos<sizeof(T))
- return 0;
- this->BytePos-=sizeof(T);
- return *(T*)(Data+BytePos);
- }
- void CDataStream::Free()
- {
- this->~CDataStream();
- }
- /*
- Beispiel für den Datenstream:
- */
- int main()
- {
- CDataStream Stream;
- int Out[20]={0};
- for(int i=0;i<20;i++)
- Stream << i;
- for(int i=0;i<20;i++)
- {
- Stream >> Out[i];
- printf("%d\n",Out[i]);
- }
- getchar();
- return 1;
- }
Add Comment
Please, Sign In to add comment