refl inl函数定义需要加inline,避免重定义报错
This commit is contained in:
parent
ba8692659f
commit
faed6a2228
@ -2,7 +2,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include "convert.h"
|
#include "convert.h"
|
||||||
namespace refl {
|
namespace refl {
|
||||||
bool Convert::ToString(Any& dst, const Any& src)
|
inline bool Convert::ToString(Any& dst, const Any& src)
|
||||||
{
|
{
|
||||||
if (src.Parent() == &TypeInfo<char>::StaticClass) {
|
if (src.Parent() == &TypeInfo<char>::StaticClass) {
|
||||||
std::construct_at(dst.CastTo<std::string*>(), src.CastTo<const char*>());
|
std::construct_at(dst.CastTo<std::string*>(), src.CastTo<const char*>());
|
||||||
@ -23,7 +23,7 @@ namespace refl {
|
|||||||
}
|
}
|
||||||
return it->second(dst, src);
|
return it->second(dst, src);
|
||||||
}
|
}
|
||||||
ConvertMap Convert::BuildClassMap()
|
inline ConvertMap Convert::BuildClassMap()
|
||||||
{
|
{
|
||||||
ConvertMap classMap;
|
ConvertMap classMap;
|
||||||
classMap.emplace(&TypeInfo<std::string*>::StaticClass, &ToString);
|
classMap.emplace(&TypeInfo<std::string*>::StaticClass, &ToString);
|
||||||
|
|||||||
@ -8,14 +8,14 @@ namespace refl {
|
|||||||
MemberFunc fptr = (MemberFunc)data.method.fptr;
|
MemberFunc fptr = (MemberFunc)data.method.fptr;
|
||||||
return fptr(std::forward<Args>(args)...);
|
return fptr(std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
bool FieldPtr::Invoke(const sarray<Any>& ArgsList)const{
|
inline bool FieldPtr::Invoke(const sarray<Any>& ArgsList)const{
|
||||||
auto Call = type->vtable.Call;
|
auto Call = type->vtable.Call;
|
||||||
if (Call) {
|
if (Call) {
|
||||||
Call(this, ArgsList);
|
Call(this, ArgsList);
|
||||||
}
|
}
|
||||||
return Call;
|
return Call;
|
||||||
}
|
}
|
||||||
bool FieldPtr::Invoke(svector<Any>& ArgsList)const {
|
inline bool FieldPtr::Invoke(svector<Any>& ArgsList)const {
|
||||||
auto Call = type->vtable.Call;
|
auto Call = type->vtable.Call;
|
||||||
if (Call) {
|
if (Call) {
|
||||||
sarray<const UClass*> params = GetParams();
|
sarray<const UClass*> params = GetParams();
|
||||||
@ -45,7 +45,7 @@ namespace refl {
|
|||||||
}
|
}
|
||||||
return Call;
|
return Call;
|
||||||
}
|
}
|
||||||
sarray<const UClass*> FieldPtr::GetParams() const {
|
inline sarray<const UClass*> FieldPtr::GetParams() const {
|
||||||
auto GetParams = type->vtable.GetParams;
|
auto GetParams = type->vtable.GetParams;
|
||||||
if (GetParams) {
|
if (GetParams) {
|
||||||
return GetParams(type);
|
return GetParams(type);
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
#include "convert.h"
|
#include "convert.h"
|
||||||
namespace refl {
|
namespace refl {
|
||||||
using enum ClassFlag;
|
using enum ClassFlag;
|
||||||
bool Any::Check(const UClass* toClass) const{
|
inline bool Any::Check(const UClass* toClass) const{
|
||||||
if (cls == toClass) {
|
if (cls == toClass) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -28,7 +28,7 @@ namespace refl {
|
|||||||
{
|
{
|
||||||
return cls->parent;
|
return cls->parent;
|
||||||
}
|
}
|
||||||
AnyArgs::AnyArgs(const sarray<Any>& args, const sarray<const UClass*>& params, void* memory)
|
inline AnyArgs::AnyArgs(const sarray<Any>& args, const sarray<const UClass*>& params, void* memory)
|
||||||
: data(memory), num(args.size()), size(GetArgsSize(args, params))
|
: data(memory), num(args.size()), size(GetArgsSize(args, params))
|
||||||
{
|
{
|
||||||
assert(size > 0);
|
assert(size > 0);
|
||||||
@ -124,7 +124,7 @@ namespace refl {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool AnyView::Invoke(const Name& name,const sarray<Any>& ArgsList)
|
inline bool AnyView::Invoke(const Name& name,const sarray<Any>& ArgsList)
|
||||||
{
|
{
|
||||||
auto field = cls->GetField(name, 0);
|
auto field = cls->GetField(name, 0);
|
||||||
if (!field) {
|
if (!field) {
|
||||||
@ -135,7 +135,7 @@ namespace refl {
|
|||||||
}
|
}
|
||||||
return field->Invoke(ArgsList);
|
return field->Invoke(ArgsList);
|
||||||
}
|
}
|
||||||
bool AnyView::Invoke(const Name& name, svector<Any>& ArgsList)
|
inline bool AnyView::Invoke(const Name& name, svector<Any>& ArgsList)
|
||||||
{
|
{
|
||||||
auto field = cls->GetField(name, 0);
|
auto field = cls->GetField(name, 0);
|
||||||
if (!field) {
|
if (!field) {
|
||||||
@ -146,7 +146,7 @@ namespace refl {
|
|||||||
}
|
}
|
||||||
return field->Invoke(ArgsList);
|
return field->Invoke(ArgsList);
|
||||||
}
|
}
|
||||||
AnyView AnyView::Parent() {
|
inline AnyView AnyView::Parent() {
|
||||||
return { ptr, cls ? cls->parent : nullptr };
|
return { ptr, cls ? cls->parent : nullptr };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user