mirror of https://github.com/OpenRCT2/OpenRCT2.git
Improve dukglue's includes
This commit is contained in:
parent
2c4cf49fb1
commit
a0877d1518
|
@ -1,6 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include "detail_stack.h"
|
||||
#include "detail_types.h"
|
||||
#include "detail_primitive_types.h"
|
||||
|
||||
namespace dukglue
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
#include "detail_primitive_types.h"
|
||||
#include "detail_traits.h"
|
||||
#include "detail_types.h"
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <duktape.h>
|
||||
#include <typeindex>
|
||||
|
||||
namespace dukglue
|
||||
|
@ -7,7 +8,7 @@ namespace dukglue
|
|||
namespace detail
|
||||
{
|
||||
// same as duk_get_type_name, which is private for some reason *shakes fist*
|
||||
static const char* get_type_name(duk_int_t type_idx) {
|
||||
static inline const char* get_type_name(duk_int_t type_idx) {
|
||||
static const char* names[] = {
|
||||
"none",
|
||||
"undefined",
|
||||
|
@ -21,7 +22,7 @@ namespace dukglue
|
|||
"lightfunc"
|
||||
};
|
||||
|
||||
if (type_idx >= 0 && type_idx < sizeof(names) / sizeof(names[0]))
|
||||
if (type_idx >= 0 && type_idx < static_cast<duk_int_t>(sizeof(names) / sizeof(names[0])))
|
||||
return names[type_idx];
|
||||
else
|
||||
return "unknown";
|
||||
|
|
|
@ -145,7 +145,7 @@ namespace dukglue {
|
|||
typedef typename Bare<T>::type BareType;
|
||||
//typedef DukType<BareType> ThisDukType;
|
||||
typedef typename DukType<BareType>::IsValueType IsValueType;
|
||||
|
||||
|
||||
static_assert(!IsValueType::value || !std::is_pointer<T>::value, "Cannot return pointer to value type.");
|
||||
static_assert(!IsValueType::value ||
|
||||
(!std::is_reference<T>::value || std::is_const<typename std::remove_reference<T>::type>::value),
|
||||
|
@ -156,5 +156,3 @@ namespace dukglue {
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
#include "detail_primitive_types.h"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <duktape.h>
|
||||
#include <sstream>
|
||||
#include <exception>
|
||||
|
||||
|
@ -37,4 +38,4 @@ public:
|
|||
duk_pop(ctx);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "dukexception.h"
|
||||
#include "detail_traits.h" // for index_tuple/make_indexes
|
||||
#include "detail_types.h"
|
||||
|
||||
// This file has some useful utility functions for users.
|
||||
// Hopefully this saves you from wading through the implementation.
|
||||
|
@ -125,7 +126,7 @@ typename std::enable_if<std::is_void<RetT>::value, RetT>::type dukglue_pcall_met
|
|||
dukglue::detail::SafeMethodCallData<RetT, ObjT, ArgTs...> data {
|
||||
&obj, method_name, std::tuple<ArgTs...>(args...), nullptr
|
||||
};
|
||||
|
||||
|
||||
duk_idx_t rc = duk_safe_call(ctx, &dukglue::detail::call_method_safe<RetT, ObjT, ArgTs...>, (void*) &data, 0, 1);
|
||||
if (rc != 0)
|
||||
throw DukErrorException(ctx, rc);
|
||||
|
@ -234,11 +235,11 @@ typename std::enable_if<!std::is_void<RetT>::value, RetT>::type dukglue_pcall(du
|
|||
dukglue::detail::SafeCallData<RetT, ObjT, ArgTs...> data{
|
||||
&obj, std::tuple<ArgTs...>(args...), &result
|
||||
};
|
||||
|
||||
|
||||
duk_int_t rc = duk_safe_call(ctx, &dukglue::detail::call_safe<RetT, ObjT, ArgTs...>, (void*) &data, 0, 1);
|
||||
if (rc != 0)
|
||||
throw DukErrorException(ctx, rc);
|
||||
|
||||
|
||||
duk_pop(ctx); // remove result from stack
|
||||
return std::move(result);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue