Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 45 additions & 45 deletions bson/_cbsonmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ static PyObject* datetime_from_millis(long long millis) {
int microseconds = diff * 1000;
Time64_T seconds = (millis - diff) / 1000;
struct TM timeinfo;
gmtime64_r(&seconds, &timeinfo);
cbson_gmtime64_r(&seconds, &timeinfo);

return PyDateTime_FromDateAndTime(timeinfo.tm_year + 1900,
timeinfo.tm_mon + 1,
Expand All @@ -175,14 +175,14 @@ static long long millis_from_datetime(PyObject* datetime) {
timeinfo.tm_min = PyDateTime_DATE_GET_MINUTE(datetime);
timeinfo.tm_sec = PyDateTime_DATE_GET_SECOND(datetime);

millis = timegm64(&timeinfo) * 1000;
millis = cbson_timegm64(&timeinfo) * 1000;
millis += PyDateTime_DATE_GET_MICROSECOND(datetime) / 1000;
return millis;
}

/* Just make this compatible w/ the old API. */
int buffer_write_bytes(buffer_t buffer, const char* data, int size) {
if (buffer_write(buffer, data, size)) {
if (pymongo_buffer_write(buffer, data, size)) {
return 0;
}
return 1;
Expand All @@ -207,7 +207,7 @@ void buffer_write_int32_at_position(buffer_t buffer,
int position,
int32_t data) {
uint32_t data_le = BSON_UINT32_TO_LE(data);
memcpy(buffer_get_buffer(buffer) + position, &data_le, 4);
memcpy(pymongo_buffer_get_buffer(buffer) + position, &data_le, 4);
}

static int write_unicode(buffer_t buffer, PyObject* py_string) {
Expand Down Expand Up @@ -419,7 +419,7 @@ static long _type_marker(PyObject* object) {
* Return 1 on success. options->document_class is a new reference.
* Return 0 on failure.
*/
int convert_type_registry(PyObject* registry_obj, type_registry_t* registry) {
int cbson_convert_type_registry(PyObject* registry_obj, type_registry_t* registry) {
registry->encoder_map = NULL;
registry->decoder_map = NULL;
registry->fallback_encoder = NULL;
Expand Down Expand Up @@ -481,7 +481,7 @@ int convert_codec_options(PyObject* options_obj, void* p) {
return 0;
}

if (!convert_type_registry(type_registry_obj,
if (!cbson_convert_type_registry(type_registry_obj,
&options->type_registry)) {
return 0;
}
Expand Down Expand Up @@ -597,7 +597,7 @@ static int _write_regex_to_buffer(
Py_DECREF(encoded_pattern);
return 0;
}
status = check_string((const unsigned char*)pattern_data,
status = cbson_check_string((const unsigned char*)pattern_data,
pattern_length, check_utf8, 1);
if (status == NOT_UTF_8) {
PyObject* InvalidStringData = _error("InvalidStringData");
Expand Down Expand Up @@ -649,7 +649,7 @@ static int _write_regex_to_buffer(
if (!buffer_write_bytes(buffer, flags, flags_length)) {
return 0;
}
*(buffer_get_buffer(buffer) + type_byte) = 0x0B;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x0B;
return 1;
}

Expand Down Expand Up @@ -687,7 +687,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
const char* data;
int size;

*(buffer_get_buffer(buffer) + type_byte) = 0x05;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x05;
subtype_object = PyObject_GetAttrString(value, "subtype");
if (!subtype_object) {
return 0;
Expand Down Expand Up @@ -750,7 +750,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
return 0;
}
Py_DECREF(pystring);
*(buffer_get_buffer(buffer) + type_byte) = 0x07;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x07;
return 1;
}
case 11:
Expand All @@ -772,15 +772,15 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,

if (scope == Py_None) {
Py_DECREF(scope);
*(buffer_get_buffer(buffer) + type_byte) = 0x0D;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x0D;
return write_string(buffer, value);
}

*(buffer_get_buffer(buffer) + type_byte) = 0x0F;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x0F;

start_position = buffer_get_position(buffer);
start_position = pymongo_buffer_get_position(buffer);
/* save space for length */
length_location = buffer_save_space(buffer, 4);
length_location = pymongo_buffer_save_space(buffer, 4);
if (length_location == -1) {
Py_DECREF(scope);
return 0;
Expand All @@ -797,7 +797,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
}
Py_DECREF(scope);

length = buffer_get_position(buffer) - start_position;
length = pymongo_buffer_get_position(buffer) - start_position;
buffer_write_int32_at_position(
buffer, length_location, (int32_t)length);
return 1;
Expand Down Expand Up @@ -834,7 +834,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
return 0;
}

*(buffer_get_buffer(buffer) + type_byte) = 0x11;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x11;
return 1;
}
case 18:
Expand All @@ -849,7 +849,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
if (!buffer_write_int64(buffer, (int64_t)ll)) {
return 0;
}
*(buffer_get_buffer(buffer) + type_byte) = 0x12;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x12;
return 1;
}
case 19:
Expand All @@ -870,7 +870,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
return 0;
}
Py_DECREF(pystring);
*(buffer_get_buffer(buffer) + type_byte) = 0x13;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x13;
return 1;
}
case 100:
Expand All @@ -885,7 +885,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
return 0;
}
Py_DECREF(as_doc);
*(buffer_get_buffer(buffer) + type_byte) = 0x03;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x03;
return 1;
}
case 101:
Expand All @@ -894,19 +894,19 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
if (!write_raw_doc(buffer, value)) {
return 0;
}
*(buffer_get_buffer(buffer) + type_byte) = 0x03;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x03;
return 1;
}
case 255:
{
/* MinKey */
*(buffer_get_buffer(buffer) + type_byte) = 0xFF;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0xFF;
return 1;
}
case 127:
{
/* MaxKey */
*(buffer_get_buffer(buffer) + type_byte) = 0x7F;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x7F;
return 1;
}
}
Expand All @@ -915,7 +915,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,

if (PyBool_Check(value)) {
const char c = (value == Py_True) ? 0x01 : 0x00;
*(buffer_get_buffer(buffer) + type_byte) = 0x08;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x08;
return buffer_write_bytes(buffer, &c, 1);
}
else if (PyLong_Check(value)) {
Expand All @@ -931,20 +931,20 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
"MongoDB can only handle up to 8-byte ints");
return 0;
}
*(buffer_get_buffer(buffer) + type_byte) = 0x12;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x12;
return buffer_write_int64(buffer, (int64_t)long_long_value);
}
*(buffer_get_buffer(buffer) + type_byte) = 0x10;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x10;
return buffer_write_int32(buffer, (int32_t)int_value);
} else if (PyFloat_Check(value)) {
const double d = PyFloat_AsDouble(value);
*(buffer_get_buffer(buffer) + type_byte) = 0x01;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x01;
return buffer_write_double(buffer, d);
} else if (value == Py_None) {
*(buffer_get_buffer(buffer) + type_byte) = 0x0A;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x0A;
return 1;
} else if (PyDict_Check(value)) {
*(buffer_get_buffer(buffer) + type_byte) = 0x03;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x03;
return write_dict(self, buffer, value, check_keys, options, 0);
} else if (PyList_Check(value) || PyTuple_Check(value)) {
Py_ssize_t items, i;
Expand All @@ -953,11 +953,11 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
length;
char zero = 0;

*(buffer_get_buffer(buffer) + type_byte) = 0x04;
start_position = buffer_get_position(buffer);
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x04;
start_position = pymongo_buffer_get_position(buffer);

/* save space for length */
length_location = buffer_save_space(buffer, 4);
length_location = pymongo_buffer_save_space(buffer, 4);
if (length_location == -1) {
return 0;
}
Expand All @@ -972,7 +972,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
return 0;
}
for(i = 0; i < items; i++) {
int list_type_byte = buffer_save_space(buffer, 1);
int list_type_byte = pymongo_buffer_save_space(buffer, 1);
char name[16];
PyObject* item_value;

Expand All @@ -999,7 +999,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
if (!buffer_write_bytes(buffer, &zero, 1)) {
return 0;
}
length = buffer_get_position(buffer) - start_position;
length = pymongo_buffer_get_position(buffer) - start_position;
buffer_write_int32_at_position(
buffer, length_location, (int32_t)length);
return 1;
Expand All @@ -1012,7 +1012,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
return 0;
if ((size = _downcast_and_check(PyBytes_GET_SIZE(value), 0)) == -1)
return 0;
*(buffer_get_buffer(buffer) + type_byte) = 0x05;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x05;
if (!buffer_write_int32(buffer, (int32_t)size)) {
return 0;
}
Expand All @@ -1024,7 +1024,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
}
return 1;
} else if (PyUnicode_Check(value)) {
*(buffer_get_buffer(buffer) + type_byte) = 0x02;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x02;
return write_unicode(buffer, value);
} else if (PyDateTime_Check(value)) {
long long millis;
Expand All @@ -1042,7 +1042,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
} else {
millis = millis_from_datetime(value);
}
*(buffer_get_buffer(buffer) + type_byte) = 0x09;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x09;
return buffer_write_int64(buffer, (int64_t)millis);
} else if (PyObject_TypeCheck(value, state->REType)) {
return _write_regex_to_buffer(buffer, type_byte, value);
Expand All @@ -1059,7 +1059,7 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer,
if (PyErr_Occurred()) {
return 0;
}
*(buffer_get_buffer(buffer) + type_byte) = 0x03;
*(pymongo_buffer_get_buffer(buffer) + type_byte) = 0x03;
return write_dict(self, buffer, value, check_keys, options, 0);
}

Expand Down Expand Up @@ -1189,7 +1189,7 @@ int write_pair(PyObject* self, buffer_t buffer, const char* name, int name_lengt
return 1;
}

type_byte = buffer_save_space(buffer, 1);
type_byte = pymongo_buffer_save_space(buffer, 1);
if (type_byte == -1) {
return 0;
}
Expand Down Expand Up @@ -1362,7 +1362,7 @@ int write_dict(PyObject* self, buffer_t buffer,
}
}

length_location = buffer_save_space(buffer, 4);
length_location = pymongo_buffer_save_space(buffer, 4);
if (length_location == -1) {
return 0;
}
Expand Down Expand Up @@ -1429,7 +1429,7 @@ int write_dict(PyObject* self, buffer_t buffer,
if (!buffer_write_bytes(buffer, &zero, 1)) {
return 0;
}
length = buffer_get_position(buffer) - length_location;
length = pymongo_buffer_get_position(buffer) - length_location;
buffer_write_int32_at_position(
buffer, length_location, (int32_t)length);
return length;
Expand Down Expand Up @@ -1464,23 +1464,23 @@ static PyObject* _cbson_dict_to_bson(PyObject* self, PyObject* args) {
return raw_bson_document_bytes_obj;
}

buffer = buffer_new();
buffer = pymongo_buffer_new();
if (!buffer) {
destroy_codec_options(&options);
return NULL;
}

if (!write_dict(self, buffer, dict, check_keys, &options, top_level)) {
destroy_codec_options(&options);
buffer_free(buffer);
pymongo_buffer_free(buffer);
return NULL;
}

/* objectify buffer */
result = Py_BuildValue("y#", buffer_get_buffer(buffer),
(Py_ssize_t)buffer_get_position(buffer));
result = Py_BuildValue("y#", pymongo_buffer_get_buffer(buffer),
(Py_ssize_t)pymongo_buffer_get_position(buffer));
destroy_codec_options(&options);
buffer_free(buffer);
pymongo_buffer_free(buffer);
return result;
}

Expand Down
14 changes: 7 additions & 7 deletions bson/buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ static void set_memory_error(void) {

/* Allocate and return a new buffer.
* Return NULL and sets MemoryError on allocation failure. */
buffer_t buffer_new(void) {
buffer_t pymongo_buffer_new(void) {
buffer_t buffer;
buffer = (buffer_t)malloc(sizeof(struct buffer));
if (buffer == NULL) {
Expand All @@ -61,7 +61,7 @@ buffer_t buffer_new(void) {

/* Free the memory allocated for `buffer`.
* Return non-zero on failure. */
int buffer_free(buffer_t buffer) {
int pymongo_buffer_free(buffer_t buffer) {
if (buffer == NULL) {
return 1;
}
Expand Down Expand Up @@ -122,7 +122,7 @@ static int buffer_assure_space(buffer_t buffer, int size) {
/* Save `size` bytes from the current position in `buffer` (and grow if needed).
* Return offset for writing, or -1 on failure.
* Sets MemoryError or ValueError on failure. */
buffer_position buffer_save_space(buffer_t buffer, int size) {
buffer_position pymongo_buffer_save_space(buffer_t buffer, int size) {
int position = buffer->position;
if (buffer_assure_space(buffer, size) != 0) {
return -1;
Expand All @@ -134,7 +134,7 @@ buffer_position buffer_save_space(buffer_t buffer, int size) {
/* Write `size` bytes from `data` to `buffer` (and grow if needed).
* Return non-zero on failure.
* Sets MemoryError or ValueError on failure. */
int buffer_write(buffer_t buffer, const char* data, int size) {
int pymongo_buffer_write(buffer_t buffer, const char* data, int size) {
if (buffer_assure_space(buffer, size) != 0) {
return 1;
}
Expand All @@ -144,14 +144,14 @@ int buffer_write(buffer_t buffer, const char* data, int size) {
return 0;
}

int buffer_get_position(buffer_t buffer) {
int pymongo_buffer_get_position(buffer_t buffer) {
return buffer->position;
}

char* buffer_get_buffer(buffer_t buffer) {
char* pymongo_buffer_get_buffer(buffer_t buffer) {
return buffer->buffer;
}

void buffer_update_position(buffer_t buffer, buffer_position new_position) {
void pymongo_buffer_update_position(buffer_t buffer, buffer_position new_position) {
buffer->position = new_position;
}
Loading