Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit 932f0fe

Browse files
committed
Facemark API: Complex getters & setters macro
1 parent 8782a6a commit 932f0fe

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

cc/macros.h

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@
99
#define FF_GETTER(clazz, name, prop) \
1010
NAN_GETTER(name) { info.GetReturnValue().Set(Nan::ObjectWrap::Unwrap<clazz>(info.This())->prop); }
1111

12+
#define FF_GETTER_SIMPLE(clazz, name, prop, converter) \
13+
NAN_GETTER(name) { \
14+
v8::Local<v8::Value> jsValue = converter::wrap( \
15+
Nan::ObjectWrap::Unwrap<clazz>(info.This())->prop \
16+
); \
17+
info.GetReturnValue().Set(jsValue); \
18+
}
19+
20+
#define FF_GETTER_COMPLEX(clazz, name, prop, converter) FF_GETTER_SIMPLE(clazz, name, prop, converter)
21+
1222
#define FF_GETTER_JSOBJ(clazz, name, value, unwrapper, ctor) \
1323
NAN_GETTER(name) { \
1424
v8::Local<v8::Object> jsObj = FF_NEW_INSTANCE(ctor); \
@@ -129,6 +139,22 @@ static FF_FUNC_TYPE ff_func = FF_FUNC_TYPE();
129139
#define FF_SETTER_NUMBER(clazz, name, prop) FF_SETTER(clazz, name, prop, ff_number)
130140
#define FF_SETTER_BOOL(clazz, name, prop) FF_SETTER(clazz, name, prop, ff_bool)
131141

142+
#define FF_SETTER_SIMPLE(clazz, name, prop, converter) \
143+
NAN_SETTER(name##Set) { \
144+
FF_METHOD_CONTEXT(#name); \
145+
Nan::ObjectWrap::Unwrap<clazz>(info.This())->prop = converter::unwrap( \
146+
value \
147+
); \
148+
}
149+
150+
#define FF_SETTER_COMPLEX(clazz, name, prop, type, converter) \
151+
NAN_SETTER(name##Set) { \
152+
FF_METHOD_CONTEXT(#name); \
153+
type target; \
154+
converter::unwrap(&target, value); \
155+
Nan::ObjectWrap::Unwrap<clazz>(info.This())->prop = target; \
156+
}
157+
132158
namespace FF {
133159
template<typename toType, typename type>
134160
static inline v8::Local<v8::Array> stdVecToJSArray(std::vector<type> vec) {
@@ -140,4 +166,4 @@ namespace FF {
140166
}
141167
}
142168

143-
#endif
169+
#endif

0 commit comments

Comments
 (0)