[Pkg-javascript-commits] [node-leveldown] 308/492: replace some macros with static inline functions
Andrew Kelley
andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:14:11 UTC 2014
This is an automated email from the git hooks/post-receive script.
andrewrk-guest pushed a commit to annotated tag rocksdb-0.10.1
in repository node-leveldown.
commit 7a22f5401468f86627bc759e3b34f0ec47fe6ba9
Author: Rod Vagg <rod at vagg.org>
Date: Mon Apr 8 10:21:40 2013 +1000
replace some macros with static inline functions
---
src/batch.cc | 2 +-
src/database.cc | 52 +++++++++++++++++++++++++++----------
src/iterator.cc | 19 ++++++++------
src/leveldown.cc | 4 +--
src/leveldown.h | 79 ++++++++++++++++++++++++++++++++++----------------------
5 files changed, 100 insertions(+), 56 deletions(-)
diff --git a/src/batch.cc b/src/batch.cc
index 4762c8f..4b8448e 100644
--- a/src/batch.cc
+++ b/src/batch.cc
@@ -67,7 +67,7 @@ v8::Handle<v8::Value> Batch::New (const v8::Arguments& args) {
optionsObj = v8::Local<v8::Object>::Cast(args[1]);
}
- LD_BOOLEAN_OPTION_VALUE(optionsObj, sync)
+ bool sync = BooleanOptionValue(optionsObj, option_sync);
Batch* batch = new Batch(database, sync);
batch->Wrap(args.This());
diff --git a/src/database.cc b/src/database.cc
index 0539610..d5fbf46 100644
--- a/src/database.cc
+++ b/src/database.cc
@@ -168,7 +168,7 @@ v8::Handle<v8::Value> Database::New (const v8::Arguments& args) {
LD_THROW_RETURN(leveldown() requires a location string argument)
}
- LD_FROM_V8_STRING(location, v8::Handle<v8::String>::Cast(args[0]))
+ char* location = FromV8String(args[0]);
Database* obj = new Database(location);
obj->Wrap(args.This());
@@ -196,14 +196,38 @@ v8::Handle<v8::Value> Database::Open (const v8::Arguments& args) {
LD_METHOD_SETUP_COMMON(open, 0, 1)
- LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, createIfMissing)
- LD_BOOLEAN_OPTION_VALUE(optionsObj, errorIfExists)
- LD_BOOLEAN_OPTION_VALUE(optionsObj, compression)
- LD_UINT32_OPTION_VALUE(optionsObj, cacheSize , 8 << 20 )
- LD_UINT32_OPTION_VALUE(optionsObj, writeBufferSize , 4 << 20 )
- LD_UINT32_OPTION_VALUE(optionsObj, blockSize , 4096 )
- LD_UINT32_OPTION_VALUE(optionsObj, maxOpenFiles , 1000 )
- LD_UINT32_OPTION_VALUE(optionsObj, blockRestartInterval , 16 )
+ bool createIfMissing = BooleanOptionValueDefTrue(
+ optionsObj
+ , option_createIfMissing
+ );
+ bool errorIfExists = BooleanOptionValue(optionsObj, option_errorIfExists);
+ bool compression = BooleanOptionValue(optionsObj, option_compression);
+
+ uint32_t cacheSize = UInt32OptionValue(
+ optionsObj
+ , option_cacheSize
+ , 8 << 20
+ );
+ uint32_t writeBufferSize = UInt32OptionValue(
+ optionsObj
+ , option_writeBufferSize
+ , 4 << 20
+ );
+ uint32_t blockSize = UInt32OptionValue(
+ optionsObj
+ , option_blockSize
+ , 4096
+ );
+ uint32_t maxOpenFiles = UInt32OptionValue(
+ optionsObj
+ , option_maxOpenFiles
+ , 1000
+ );
+ uint32_t blockRestartInterval = UInt32OptionValue(
+ optionsObj
+ , option_blockRestartInterval
+ , 16
+ );
OpenWorker* worker = new OpenWorker(
database
@@ -290,7 +314,7 @@ v8::Handle<v8::Value> Database::Put (const v8::Arguments& args) {
v8::Persistent<v8::Value> valueBuffer =
v8::Persistent<v8::Value>::New(LD_NODE_ISOLATE_PRE valueBufferV);
- LD_BOOLEAN_OPTION_VALUE(optionsObj, sync)
+ bool sync = BooleanOptionValue(optionsObj, option_sync);
WriteWorker* worker = new WriteWorker(
database
@@ -320,8 +344,8 @@ v8::Handle<v8::Value> Database::Get (const v8::Arguments& args) {
LD_NODE_ISOLATE_PRE
keyBufferV);
- LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, asBuffer)
- LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, fillCache)
+ bool asBuffer = BooleanOptionValueDefTrue(optionsObj, option_asBuffer);
+ bool fillCache = BooleanOptionValueDefTrue(optionsObj, option_fillCache);
ReadWorker* worker = new ReadWorker(
database
@@ -349,7 +373,7 @@ v8::Handle<v8::Value> Database::Delete (const v8::Arguments& args) {
v8::Persistent<v8::Value> keyBuffer =
v8::Persistent<v8::Value>::New(LD_NODE_ISOLATE_PRE keyBufferV);
- LD_BOOLEAN_OPTION_VALUE(optionsObj, sync)
+ bool sync = BooleanOptionValue(optionsObj, option_sync);
DeleteWorker* worker = new DeleteWorker(
database
@@ -383,7 +407,7 @@ v8::Handle<v8::Value> Database::Batch (const v8::Arguments& args) {
LD_METHOD_SETUP_COMMON(batch, 1, 2)
- LD_BOOLEAN_OPTION_VALUE(optionsObj, sync)
+ bool sync = BooleanOptionValue(optionsObj, option_sync);
v8::Local<v8::Array> array = v8::Local<v8::Array>::Cast(args[0]);
diff --git a/src/iterator.cc b/src/iterator.cc
index 870294a..6381764 100644
--- a/src/iterator.cc
+++ b/src/iterator.cc
@@ -259,7 +259,7 @@ v8::Handle<v8::Value> Iterator::New (const v8::Arguments& args) {
startBuffer = v8::Local<v8::Value>::New(optionsObj->Get(option_start));
// ignore start if it has size 0 since a Slice can't have length 0
- if (LD_STRING_OR_BUFFER_LENGTH(startBuffer) > 0) {
+ if (StringOrBufferLength(startBuffer) > 0) {
LD_STRING_OR_BUFFER_TO_SLICE(_start, startBuffer, start)
start = new leveldb::Slice(_start.data(), _start.size());
}
@@ -273,7 +273,7 @@ v8::Handle<v8::Value> Iterator::New (const v8::Arguments& args) {
v8::Local<v8::Value>::New(optionsObj->Get(option_end));
// ignore end if it has size 0 since a Slice can't have length 0
- if (LD_STRING_OR_BUFFER_LENGTH(endBuffer) > 0) {
+ if (StringOrBufferLength(endBuffer) > 0) {
LD_STRING_OR_BUFFER_TO_SLICE(_end, endBuffer, end)
end = new std::string(_end.data(), _end.size());
}
@@ -285,12 +285,15 @@ v8::Handle<v8::Value> Iterator::New (const v8::Arguments& args) {
}
}
- LD_BOOLEAN_OPTION_VALUE(optionsObj, reverse)
- LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, keys)
- LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, values)
- LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, keyAsBuffer)
- LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, valueAsBuffer)
- LD_BOOLEAN_OPTION_VALUE(optionsObj, fillCache)
+ bool reverse = BooleanOptionValue(optionsObj, option_reverse);
+ bool keys = BooleanOptionValueDefTrue(optionsObj, option_keys);
+ bool values = BooleanOptionValueDefTrue(optionsObj, option_values);
+ bool keyAsBuffer = BooleanOptionValueDefTrue(optionsObj, option_keyAsBuffer);
+ bool valueAsBuffer = BooleanOptionValueDefTrue(
+ optionsObj
+ , option_valueAsBuffer
+ );
+ bool fillCache = BooleanOptionValue(optionsObj, option_fillCache);
Iterator* iterator = new Iterator(
database
diff --git a/src/leveldown.cc b/src/leveldown.cc
index 209119f..03f7c01 100644
--- a/src/leveldown.cc
+++ b/src/leveldown.cc
@@ -28,7 +28,7 @@ v8::Handle<v8::Value> DestroyDB (const v8::Arguments& args) {
LD_THROW_RETURN(leveldown() requires a callback function argument)
}
- LD_FROM_V8_STRING(location, v8::Handle<v8::String>::Cast(args[0]))
+ char* location = FromV8String(args[0]);
v8::Persistent<v8::Function> callback = v8::Persistent<v8::Function>::New(
LD_NODE_ISOLATE_PRE
@@ -60,7 +60,7 @@ v8::Handle<v8::Value> RepairDB (const v8::Arguments& args) {
LD_THROW_RETURN(leveldown() requires a callback function argument)
}
- LD_FROM_V8_STRING(location, v8::Handle<v8::String>::Cast(args[0]))
+ char* location = FromV8String(args[0]);
v8::Persistent<v8::Function> callback = v8::Persistent<v8::Function>::New(
LD_NODE_ISOLATE_PRE
diff --git a/src/leveldown.h b/src/leveldown.h
index c105227..49fd2fe 100644
--- a/src/leveldown.h
+++ b/src/leveldown.h
@@ -5,7 +5,54 @@
#ifndef LD_LEVELDOWN_H
#define LD_LEVELDOWN_H
-#include <v8.h>
+#include <node.h>
+#include <node_buffer.h>
+
+static inline char* FromV8String(v8::Local<v8::Value> from) {
+ size_t sz_;
+ char* to;
+ v8::Local<v8::String> toStr = from->ToString();
+ sz_ = toStr->Utf8Length();
+ to = new char[sz_ + 1];
+ toStr->WriteUtf8(to, -1, NULL, v8::String::NO_OPTIONS);
+ return to;
+}
+
+static inline size_t StringOrBufferLength(v8::Local<v8::Value> obj) {
+ return node::Buffer::HasInstance(obj->ToObject())
+ ? node::Buffer::Length(obj->ToObject())
+ : obj->ToString()->Utf8Length();
+}
+
+static inline bool BooleanOptionValue(
+ v8::Local<v8::Object> optionsObj
+ , v8::Handle<v8::String> opt) {
+
+ return !optionsObj.IsEmpty()
+ && optionsObj->Has(opt)
+ && optionsObj->Get(opt)->BooleanValue();
+}
+
+static inline bool BooleanOptionValueDefTrue(
+ v8::Local<v8::Object> optionsObj
+ , v8::Handle<v8::String> opt) {
+
+ return optionsObj.IsEmpty()
+ || !optionsObj->Has(opt)
+ || optionsObj->Get(opt)->BooleanValue();
+}
+
+static inline uint32_t UInt32OptionValue(
+ v8::Local<v8::Object> optionsObj
+ , v8::Handle<v8::String> opt
+ , uint32_t def) {
+
+ return !optionsObj.IsEmpty()
+ && optionsObj->Has(opt)
+ && optionsObj->Get(opt)->IsUint32()
+ ? optionsObj->Get(opt)->Uint32Value()
+ : def;
+}
// node_isolate stuff introduced with V8 upgrade, see https://github.com/joyent/node/pull/5077
#if NODE_MODULE_VERSION > 0x000B
@@ -32,14 +79,6 @@
LD_RETURN_CALLBACK_OR_ERROR(callback, #name " cannot be `null` or `undefined`") \
}
-#define LD_FROM_V8_STRING(to, from) \
- size_t to ## Sz_; \
- char* to; \
- v8::Local<v8::String> to ## Str = from->ToString(); \
- to ## Sz_ = to ## Str->Utf8Length(); \
- to = new char[to ## Sz_ + 1]; \
- to ## Str->WriteUtf8(to, -1, NULL, v8::String::NO_OPTIONS);
-
#define LD_STRING_OR_BUFFER_TO_SLICE(to, from, name) \
size_t to ## Sz_; \
char* to ## Ch_; \
@@ -64,28 +103,6 @@
} \
leveldb::Slice to(to ## Ch_, to ## Sz_);
-#define LD_STRING_OR_BUFFER_LENGTH(obj) \
- node::Buffer::HasInstance(obj->ToObject()) \
- ? node::Buffer::Length(obj->ToObject()) \
- : obj->ToString()->Utf8Length()
-
-#define LD_BOOLEAN_OPTION_VALUE(optionsObj, opt) \
- bool opt = !optionsObj.IsEmpty() \
- && optionsObj->Has(option_ ## opt) \
- && optionsObj->Get(option_ ## opt)->BooleanValue();
-
-#define LD_BOOLEAN_OPTION_VALUE_DEFTRUE(optionsObj, opt) \
- bool opt = optionsObj.IsEmpty() \
- || !optionsObj->Has(option_ ## opt) \
- || optionsObj->Get(option_ ## opt)->BooleanValue();
-
-#define LD_UINT32_OPTION_VALUE(optionsObj, opt, default) \
- uint32_t opt = !optionsObj.IsEmpty() \
- && optionsObj->Has(option_ ## opt) \
- && optionsObj->Get(option_ ## opt)->IsUint32() \
- ? optionsObj->Get(option_ ## opt)->Uint32Value() \
- : default;
-
#define LD_RETURN_CALLBACK_OR_ERROR(callback, msg) \
if (!callback.IsEmpty() && callback->IsFunction()) { \
v8::Local<v8::Value> argv[] = { \
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-leveldown.git
More information about the Pkg-javascript-commits
mailing list