summaryrefslogtreecommitdiff
path: root/utils/zenutils/libraries/pelib-0.9/pelib/buffer
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2008-07-11 15:50:46 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2008-07-11 15:50:46 +0000
commit14c7f45cdae826f88dc539c8c38dd95caf305731 (patch)
tree832da054b7cfb2dc6fd63339af736625f31d21aa /utils/zenutils/libraries/pelib-0.9/pelib/buffer
parent7c84ede3781c27db73403bd6302f320c76a58c8c (diff)
downloadrockbox-14c7f45cdae826f88dc539c8c38dd95caf305731.tar.gz
rockbox-14c7f45cdae826f88dc539c8c38dd95caf305731.zip
Add zook's ZenUtils to SVN
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18010 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/zenutils/libraries/pelib-0.9/pelib/buffer')
-rwxr-xr-xutils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.cpp58
-rwxr-xr-xutils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.h52
-rwxr-xr-xutils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.cpp41
-rwxr-xr-xutils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.h51
4 files changed, 202 insertions, 0 deletions
diff --git a/utils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.cpp b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.cpp
new file mode 100755
index 0000000000..ae2584edb1
--- /dev/null
+++ b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.cpp
@@ -0,0 +1,58 @@
1/*
2* InputBuffer.cpp - Part of the PeLib library.
3*
4* Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com)
5* All rights reserved.
6*
7* This software is licensed under the zlib/libpng License.
8* For more details see http://www.opensource.org/licenses/zlib-license.php
9* or the license information file (license.htm) in the root directory
10* of PeLib.
11*/
12
13#include "InputBuffer.h"
14
15namespace PeLib
16{
17 unsigned long InputBuffer::get()
18 {
19 return ulIndex;
20 }
21
22 InputBuffer::InputBuffer(std::vector<unsigned char>& vBuffer) : m_vBuffer(vBuffer), ulIndex(0)
23 {
24 }
25
26 const unsigned char* InputBuffer::data() const
27 {
28 return &m_vBuffer[0];
29 }
30
31 unsigned long InputBuffer::size()
32 {
33 return static_cast<unsigned long>(m_vBuffer.size());
34 }
35
36 void InputBuffer::read(char* lpBuffer, unsigned long ulSize)
37 {
38 std::copy(&m_vBuffer[ulIndex], &m_vBuffer[ulIndex + ulSize], lpBuffer);
39 ulIndex += ulSize;
40 }
41
42 void InputBuffer::reset()
43 {
44 m_vBuffer.clear();
45 }
46
47 void InputBuffer::set(unsigned long ulIndex)
48 {
49 this->ulIndex = ulIndex;
50 }
51
52 void InputBuffer::setBuffer(std::vector<unsigned char>& vBuffer)
53 {
54 m_vBuffer = vBuffer;
55 ulIndex = 0;
56 }
57}
58
diff --git a/utils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.h b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.h
new file mode 100755
index 0000000000..fc5a14e357
--- /dev/null
+++ b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/InputBuffer.h
@@ -0,0 +1,52 @@
1/*
2* InputBuffer.h - Part of the PeLib library.
3*
4* Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com)
5* All rights reserved.
6*
7* This software is licensed under the zlib/libpng License.
8* For more details see http://www.opensource.org/licenses/zlib-license.php
9* or the license information file (license.htm) in the root directory
10* of PeLib.
11*/
12
13#ifndef INPUTBUFFER_H
14#define INPUTBUFFER_H
15
16#include <vector>
17#include <iterator>
18#include <cassert>
19
20namespace PeLib
21{
22 class InputBuffer
23 {
24 private:
25 std::vector<unsigned char>& m_vBuffer;
26 unsigned long ulIndex;
27
28 public:
29 InputBuffer(std::vector<unsigned char>& vBuffer);
30
31 const unsigned char* data() const;
32 unsigned long size();
33
34 template<typename T>
35 InputBuffer& operator>>(T& value)
36 {
37 assert(ulIndex + sizeof(value) <= m_vBuffer.size());
38 value = *(T*)(&m_vBuffer[ulIndex]);//reinterpret_cast<T*>(&m_vBuffer[ulIndex]);
39 ulIndex += sizeof(T);
40 return *this;
41 }
42
43 void read(char* lpBuffer, unsigned long ulSize);
44 void reset();
45 void set(unsigned long ulIndex);
46 unsigned long get();
47 void setBuffer(std::vector<unsigned char>& vBuffer);
48// void updateData(unsigned long ulIndex,
49 };
50}
51
52#endif
diff --git a/utils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.cpp b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.cpp
new file mode 100755
index 0000000000..b47fbb6ff8
--- /dev/null
+++ b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.cpp
@@ -0,0 +1,41 @@
1/*
2* OutputBuffer.cpp - Part of the PeLib library.
3*
4* Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com)
5* All rights reserved.
6*
7* This software is licensed under the zlib/libpng License.
8* For more details see http://www.opensource.org/licenses/zlib-license.php
9* or the license information file (license.htm) in the root directory
10* of PeLib.
11*/
12
13#include "OutputBuffer.h"
14
15namespace PeLib
16{
17 OutputBuffer::OutputBuffer(std::vector<unsigned char>& vBuffer) : m_vBuffer(vBuffer)
18 {
19 m_vBuffer.clear();
20 }
21
22 const unsigned char* OutputBuffer::data() const
23 {
24 return &m_vBuffer[0];
25 }
26
27 unsigned long OutputBuffer::size()
28 {
29 return static_cast<unsigned long>(m_vBuffer.size());
30 }
31
32 void OutputBuffer::add(const char* lpBuffer, unsigned long ulSize)
33 {
34 std::copy(lpBuffer, lpBuffer + ulSize, std::back_inserter(m_vBuffer));
35 }
36
37 void OutputBuffer::reset()
38 {
39 m_vBuffer.clear();
40 }
41}
diff --git a/utils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.h b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.h
new file mode 100755
index 0000000000..f1ab99039b
--- /dev/null
+++ b/utils/zenutils/libraries/pelib-0.9/pelib/buffer/OutputBuffer.h
@@ -0,0 +1,51 @@
1/*
2* OutputBuffer.h - Part of the PeLib library.
3*
4* Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com)
5* All rights reserved.
6*
7* This software is licensed under the zlib/libpng License.
8* For more details see http://www.opensource.org/licenses/zlib-license.php
9* or the license information file (license.htm) in the root directory
10* of PeLib.
11*/
12
13#ifndef OUTPUTBUFFER_H
14#define OUTPUTBUFFER_H
15
16#include <vector>
17#include <iterator>
18
19namespace PeLib
20{
21 class OutputBuffer
22 {
23 private:
24 std::vector<unsigned char>& m_vBuffer;
25
26 public:
27 OutputBuffer(std::vector<unsigned char>& vBuffer);
28 const unsigned char* data() const;
29 unsigned long size();
30
31 template<typename T>
32 OutputBuffer& operator<<(const T& value)
33 {
34 const unsigned char* p = reinterpret_cast<const unsigned char*>(&value);
35 std::copy(p, p + sizeof(value), std::back_inserter(m_vBuffer));
36 return *this;
37 }
38 void add(const char* lpBuffer, unsigned long ulSize);
39 void reset();
40 void resize(unsigned int uiSize);
41 void set(unsigned int uiPosition);
42
43 template<typename T>
44 void update(unsigned long ulIndex, const T& value)
45 {
46 *(T*)(&m_vBuffer[ulIndex]) = value;
47 }
48 };
49}
50
51#endif