[gjs: 5/9] arg-cache: Move generic out in function to Positioned, simplify ArrayLengthOut
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs: 5/9] arg-cache: Move generic out in function to Positioned, simplify ArrayLengthOut
- Date: Mon, 10 Jan 2022 01:47:47 +0000 (UTC)
commit 7bcdf92b28601a35520bdd6c9e4d61d4d5266b23
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Mon Oct 26 02:12:11 2020 +0100
arg-cache: Move generic out in function to Positioned, simplify ArrayLengthOut
We can avoid making ArrayLengthOut inherit from GenericOut so that it
doesn't have to bring all the unneeded data. It only cares about being
positioned.
gi/arg-cache.cpp | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
---
diff --git a/gi/arg-cache.cpp b/gi/arg-cache.cpp
index 67eb60af..91d00c8c 100644
--- a/gi/arg-cache.cpp
+++ b/gi/arg-cache.cpp
@@ -196,6 +196,12 @@ struct Positioned {
m_arg_pos = pos;
}
+ bool set_out_parameter(GjsFunctionCallState* state, GIArgument* arg) {
+ gjs_arg_unset<void*>(&state->out_cvalue(m_arg_pos));
+ gjs_arg_set(arg, &gjs_arg_member<void*>(&state->out_cvalue(m_arg_pos)));
+ return true;
+ }
+
uint8_t m_arg_pos = 0;
};
@@ -335,6 +341,13 @@ struct GenericReturn : ReturnValue {
}
};
+struct SimpleOut : SkipAll, Positioned {
+ bool in(JSContext*, GjsFunctionCallState* state, GIArgument* arg,
+ JS::HandleValue) override {
+ return set_out_parameter(state, arg);
+ };
+};
+
struct ExplicitArray : GenericOut, Array, Nullable {
GjsArgumentFlags flags() const override {
return Argument::flags() | Nullable::flags();
@@ -377,16 +390,7 @@ struct ReturnArray : ExplicitArrayOut {
};
};
-struct ArrayLengthOut : GenericOut {
- bool out(JSContext*, GjsFunctionCallState*, GIArgument*,
- JS::MutableHandleValue) override {
- return skip();
- }
- bool release(JSContext*, GjsFunctionCallState*, GIArgument*,
- GIArgument*) override {
- return skip();
- }
-};
+using ArrayLengthOut = SimpleOut;
struct FallbackIn : GenericIn, Nullable {
bool out(JSContext*, GjsFunctionCallState*, GIArgument*,
@@ -847,9 +851,7 @@ GJS_JSAPI_RETURN_CONVENTION
bool GenericOut::in(JSContext*, GjsFunctionCallState* state, GIArgument* arg,
JS::HandleValue) {
// Default value in case a broken C function doesn't fill in the pointer
- gjs_arg_unset<void*>(&state->out_cvalue(m_arg_pos));
- gjs_arg_set(arg, &gjs_arg_member<void*>(&state->out_cvalue(m_arg_pos)));
- return true;
+ return set_out_parameter(state, arg);
}
GJS_JSAPI_RETURN_CONVENTION
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]