summaryrefslogtreecommitdiff
path: root/gi/arg-cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gi/arg-cache.cpp')
-rw-r--r--gi/arg-cache.cpp35
1 files changed, 6 insertions, 29 deletions
diff --git a/gi/arg-cache.cpp b/gi/arg-cache.cpp
index d5125fd7..ff0e59a2 100644
--- a/gi/arg-cache.cpp
+++ b/gi/arg-cache.cpp
@@ -6,6 +6,7 @@
#include <config.h>
#include <inttypes.h>
+#include <stddef.h> // for size_t
#include <stdint.h>
#include <string.h>
@@ -61,34 +62,9 @@ static const char* expected_type_names[] = {"object", "function", "string"};
static_assert(G_N_ELEMENTS(expected_type_names) == ExpectedType::LAST,
"Names must match the values in ExpectedType");
-// A helper function to retrieve array lengths from a GIArgument (letting the
-// compiler generate good instructions in case of big endian machines)
-[[nodiscard]] size_t gjs_g_argument_get_array_length(GITypeTag tag,
- GIArgument* arg) {
- switch (tag) {
- case GI_TYPE_TAG_INT8:
- return gjs_arg_get<int8_t>(arg);
- case GI_TYPE_TAG_UINT8:
- return gjs_arg_get<uint8_t>(arg);
- case GI_TYPE_TAG_INT16:
- return gjs_arg_get<int16_t>(arg);
- case GI_TYPE_TAG_UINT16:
- return gjs_arg_get<uint16_t>(arg);
- case GI_TYPE_TAG_INT32:
- return gjs_arg_get<int32_t>(arg);
- case GI_TYPE_TAG_UINT32:
- return gjs_arg_get<uint32_t>(arg);
- case GI_TYPE_TAG_INT64:
- return gjs_arg_get<int64_t>(arg);
- case GI_TYPE_TAG_UINT64:
- return gjs_arg_get<uint64_t>(arg);
- default:
- g_assert_not_reached();
- }
-}
-
-static void gjs_g_argument_set_array_length(GITypeTag tag, GIArgument* arg,
- size_t value) {
+static constexpr void gjs_g_argument_set_array_length(GITypeTag tag,
+ GIArgument* arg,
+ size_t value) {
switch (tag) {
case GI_TYPE_TAG_INT8:
gjs_arg_set<int8_t>(arg, value);
@@ -208,7 +184,8 @@ struct Positioned {
m_arg_pos = pos;
}
- bool set_out_parameter(GjsFunctionCallState* state, GIArgument* arg) {
+ constexpr 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;