summaryrefslogtreecommitdiff
path: root/node_modules/mongodb/external-libs/bson/bson.h
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2012-09-24 16:22:07 -0400
committerJules Laplace <jules@okfoc.us>2012-09-24 16:22:07 -0400
commit686106d544ecc3b6ffd4db2b665d3bc879a58d8c (patch)
treea5b5e50237cef70e12f0745371896e96f5f6d578 /node_modules/mongodb/external-libs/bson/bson.h
ok
Diffstat (limited to 'node_modules/mongodb/external-libs/bson/bson.h')
-rw-r--r--node_modules/mongodb/external-libs/bson/bson.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/node_modules/mongodb/external-libs/bson/bson.h b/node_modules/mongodb/external-libs/bson/bson.h
new file mode 100644
index 0000000..dcf21d1
--- /dev/null
+++ b/node_modules/mongodb/external-libs/bson/bson.h
@@ -0,0 +1,105 @@
+#ifndef BSON_H_
+#define BSON_H_
+
+#include <node.h>
+#include <node_object_wrap.h>
+#include <v8.h>
+
+using namespace v8;
+using namespace node;
+
+class BSON : public ObjectWrap {
+ public:
+ BSON() : ObjectWrap() {}
+ ~BSON() {}
+
+ static void Initialize(Handle<Object> target);
+ static Handle<Value> BSONDeserializeStream(const Arguments &args);
+
+ // JS based objects
+ static Handle<Value> BSONSerialize(const Arguments &args);
+ static Handle<Value> BSONDeserialize(const Arguments &args);
+
+ // Calculate size of function
+ static Handle<Value> CalculateObjectSize(const Arguments &args);
+ static Handle<Value> SerializeWithBufferAndIndex(const Arguments &args);
+
+ // Experimental
+ static Handle<Value> CalculateObjectSize2(const Arguments &args);
+ static Handle<Value> BSONSerialize2(const Arguments &args);
+
+ // Constructor used for creating new BSON objects from C++
+ static Persistent<FunctionTemplate> constructor_template;
+
+ private:
+ static Handle<Value> New(const Arguments &args);
+ static Handle<Value> deserialize(BSON *bson, char *data, uint32_t dataLength, uint32_t startIndex, bool is_array_item);
+ static uint32_t serialize(BSON *bson, char *serialized_object, uint32_t index, Handle<Value> name, Handle<Value> value, bool check_key, bool serializeFunctions);
+
+ static char* extract_string(char *data, uint32_t offset);
+ static const char* ToCString(const v8::String::Utf8Value& value);
+ static uint32_t calculate_object_size(BSON *bson, Handle<Value> object, bool serializeFunctions);
+
+ static void write_int32(char *data, uint32_t value);
+ static void write_int64(char *data, int64_t value);
+ static void write_double(char *data, double value);
+ static uint16_t deserialize_int8(char *data, uint32_t offset);
+ static uint32_t deserialize_int32(char* data, uint32_t offset);
+ static char *check_key(Local<String> key);
+
+ // BSON type instantiate functions
+ Persistent<Function> longConstructor;
+ Persistent<Function> objectIDConstructor;
+ Persistent<Function> binaryConstructor;
+ Persistent<Function> codeConstructor;
+ Persistent<Function> dbrefConstructor;
+ Persistent<Function> symbolConstructor;
+ Persistent<Function> doubleConstructor;
+ Persistent<Function> timestampConstructor;
+ Persistent<Function> minKeyConstructor;
+ Persistent<Function> maxKeyConstructor;
+
+ // Equality Objects
+ Persistent<String> longString;
+ Persistent<String> objectIDString;
+ Persistent<String> binaryString;
+ Persistent<String> codeString;
+ Persistent<String> dbrefString;
+ Persistent<String> symbolString;
+ Persistent<String> doubleString;
+ Persistent<String> timestampString;
+ Persistent<String> minKeyString;
+ Persistent<String> maxKeyString;
+
+ // Equality speed up comparision objects
+ Persistent<String> _bsontypeString;
+ Persistent<String> _longLowString;
+ Persistent<String> _longHighString;
+ Persistent<String> _objectIDidString;
+ Persistent<String> _binaryPositionString;
+ Persistent<String> _binarySubTypeString;
+ Persistent<String> _binaryBufferString;
+ Persistent<String> _doubleValueString;
+ Persistent<String> _symbolValueString;
+
+ Persistent<String> _dbRefRefString;
+ Persistent<String> _dbRefIdRefString;
+ Persistent<String> _dbRefDbRefString;
+ Persistent<String> _dbRefNamespaceString;
+ Persistent<String> _dbRefDbString;
+ Persistent<String> _dbRefOidString;
+
+ // Decode JS function
+ static Handle<Value> decodeLong(BSON *bson, char *data, uint32_t index);
+ static Handle<Value> decodeTimestamp(BSON *bson, char *data, uint32_t index);
+ static Handle<Value> decodeOid(BSON *bson, char *oid);
+ static Handle<Value> decodeBinary(BSON *bson, uint32_t sub_type, uint32_t number_of_bytes, char *data);
+ static Handle<Value> decodeCode(BSON *bson, char *code, Handle<Value> scope);
+ static Handle<Value> decodeDBref(BSON *bson, Local<Value> ref, Local<Value> oid, Local<Value> db);
+
+ // Experimental
+ static uint32_t calculate_object_size2(Handle<Value> object);
+ static uint32_t serialize2(char *serialized_object, uint32_t index, Handle<Value> name, Handle<Value> value, uint32_t object_size, bool check_key);
+};
+
+#endif // BSON_H_