Skip to content

Commit

Permalink
Not really reduced, but more direct repro.
Browse files Browse the repository at this point in the history
  • Loading branch information
playmer committed Apr 27, 2018
1 parent 84e016a commit fc95aa8
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 31 deletions.
31 changes: 1 addition & 30 deletions Reflection/Function.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,36 +136,7 @@ namespace YTE
return mStaticOrFree;
}

void SetParameterNames(std::initializer_list<const char *> aNames)
{
// Member Function
if (false == mStaticOrFree &&
aNames.size() == (mParameters.size() - 1))
{
mParameters[0].mName = "aThisPointer";

for (size_t i = 1; i < mParameters.size(); ++i)
{
mParameters[i].mName = *(aNames.begin() + i - 1);
}
}
else if (aNames.size() == mParameters.size())
{
for (size_t i = 0; i < mParameters.size(); ++i)
{
mParameters[i].mName = *(aNames.begin() + i);
}
}
else
{
for (size_t i = 0; i < mParameters.size(); ++i)
{
std::string argumentName{ "aArgument" };
argumentName += std::to_string(i);
mParameters[i].mName = argumentName;
}
}
}
void SetParameterNames(std::initializer_list<const char *> aNames);

std::vector<Parameter>& GetParameters()
{
Expand Down
32 changes: 32 additions & 0 deletions Reflection/Type.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,38 @@ namespace YTE
//}
}


void Function::SetParameterNames(std::initializer_list<const char *> aNames)
{
// Member Function
if (false == mStaticOrFree &&
aNames.size() == (mParameters.size() - 1))
{
mParameters[0].mName = "aThisPointer";

for (size_t i = 1; i < mParameters.size(); ++i)
{
mParameters[i].mName = *(aNames.begin() + i - 1);
}
}
else if (aNames.size() == mParameters.size())
{
for (size_t i = 0; i < mParameters.size(); ++i)
{
mParameters[i].mName = *(aNames.begin() + i);
}
}
else
{
for (size_t i = 0; i < mParameters.size(); ++i)
{
std::string argumentName{ "aArgument" };
argumentName += std::to_string(i);
mParameters[i].mName = argumentName;
}
}
}

YTEDefineType(Field)
{
YTERegisterType(Field);
Expand Down
Binary file removed Reflection/a.exe
Binary file not shown.
2 changes: 1 addition & 1 deletion Reflection/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,5 @@ YTEDefineExternalType(YTE::ControllerId)

int main()
{
auto func = YTE::Binding<decltype(&YTE::GamepadSystem::GetXboxController)>:: template BindFunction<&YTE::GamepadSystem::GetXboxController>("GetXboxController");
auto caller = YTE::Binding<decltype(&YTE::GamepadSystem::GetXboxController)>::template Caller<&YTE::GamepadSystem::GetXboxController>;
}

0 comments on commit fc95aa8

Please sign in to comment.