Skip to content

Commit c4f0cd0

Browse files
author
Anton Shabouta
committed
Use deque for buffer
1 parent f80bbb8 commit c4f0cd0

File tree

3 files changed

+7
-18
lines changed

3 files changed

+7
-18
lines changed

Buffer.cpp

+2-12
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,11 @@
1313
Buffer::Buffer() noexcept {
1414
}
1515

16-
Buffer::Buffer(const std::vector<unsigned char> &_buffer) noexcept:
17-
buffer(_buffer) {
18-
}
19-
2016
void Buffer::clear() noexcept {
2117
buffer.clear();
2218
}
2319

24-
void Buffer::write(char * str, long length) noexcept {
20+
void Buffer::write(char * str, unsigned long length) noexcept {
2521
buffer.insert(buffer.end(), str, str + length);
2622
}
2723

@@ -45,13 +41,7 @@ void Buffer::merge(const Buffer &other) noexcept {
4541
}
4642

4743
std::string Buffer::bytes() const noexcept {
48-
std::stringstream stream;
49-
50-
unsigned long long size = buffer.size();
51-
for (unsigned long long i = 0; i < size; ++i)
52-
stream << buffer[i];
53-
54-
return stream.str();
44+
return std::string(buffer.begin(), buffer.end());
5545
}
5646

5747
std::string Buffer::flush() noexcept {

Buffer.hpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,18 @@
88
*/
99

1010
#pragma once
11-
#include <vector>
12-
#include <sstream>
11+
#include <deque>
12+
#include <string>
1313
#include <exception>
1414

1515
struct BufferOverflow : public std::exception {};
1616

1717
class Buffer {
1818
public:
1919
Buffer() noexcept;
20-
Buffer(const std::vector<unsigned char>&) noexcept;
2120

2221
void clear() noexcept;
23-
void write(char * str, long length) noexcept;
22+
void write(char * str, unsigned long length) noexcept;
2423
void discard(unsigned long long n);
2524

2625
unsigned long long size() const noexcept;
@@ -102,5 +101,5 @@ class Buffer {
102101

103102
~Buffer();
104103
private:
105-
std::vector<unsigned char> buffer;
104+
std::deque<unsigned char> buffer;
106105
};

buffer.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ static zend_function_entry buffer_object_methods[] = {
720720
};
721721

722722
static zend_object* buffer_object_create(zend_class_entry *ce) {
723-
buffer_object *objval = (buffer_object*) ecalloc(1, sizeof(buffer_object) + zend_object_properties_size(ce));
723+
buffer_object *objval = (buffer_object*) emalloc(sizeof(buffer_object) + zend_object_properties_size(ce));
724724

725725
zend_object* ret = buffer_object_to_zend_object(objval);
726726

0 commit comments

Comments
 (0)