<commit_before>
#pragma once


#include <cppassist/memory/make_unique.h>


#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4100) // 'identifier': unreferenced formal parameter
#endif


namespace cppexpose
{


template <class T, typename RET, typename... Arguments>
MemberFunction<T, RET, Arguments...>::MemberFunction(T * obj, Func func)
: m_obj(obj)
, m_func(func)
{
}

template <class T, typename RET, typename... Arguments>
MemberFunction<T, RET, Arguments...>::~MemberFunction()
{
}

template <class T, typename RET, typename... Arguments>
std::unique_ptr<AbstractFunction> MemberFunction<T, RET, Arguments...>::clone()
{
    return cppassist::make_unique<MemberFunction<T, RET, Arguments...>>(m_obj, m_func);
}

template <class T, typename RET, typename... Arguments>
Variant MemberFunction<T, RET, Arguments...>::call(const std::vector<Variant> & args)
{
    return this->callMethod(typename helper::GenSeq<sizeof...(Arguments)>::Type(), args);
}

template <class T, typename RET, typename... Arguments>
template<size_t... I>
Variant MemberFunction<T, RET, Arguments...>::callMethod(helper::Seq<I...>, const std::vector<Variant> & args)
{
    return helper::CallMethod<T, RET, Arguments...>::call(m_obj, m_func, helper::ArgValueGen<I, Arguments...>::Type::get(args)...);
}


} // namespace cppexpose


#ifdef _MSC_VER
#pragma warning(pop)
#endif<commit_msg>Update MemberFunction.inl<commit_after>
#pragma once


#include <cppassist/memory/make_unique.h>


namespace cppexpose
{


template <class T, typename RET, typename... Arguments>
MemberFunction<T, RET, Arguments...>::MemberFunction(T * obj, Func func)
: m_obj(obj)
, m_func(func)
{
}

template <class T, typename RET, typename... Arguments>
MemberFunction<T, RET, Arguments...>::~MemberFunction()
{
}

template <class T, typename RET, typename... Arguments>
std::unique_ptr<AbstractFunction> MemberFunction<T, RET, Arguments...>::clone()
{
    return cppassist::make_unique<MemberFunction<T, RET, Arguments...>>(m_obj, m_func);
}

template <class T, typename RET, typename... Arguments>
Variant MemberFunction<T, RET, Arguments...>::call(const std::vector<Variant> & args)
{
    return this->callMethod(typename helper::GenSeq<sizeof...(Arguments)>::Type(), args);
}

template <class T, typename RET, typename... Arguments>
template<size_t... I>
Variant MemberFunction<T, RET, Arguments...>::callMethod(helper::Seq<I...>, const std::vector<Variant> & args)
{
    return helper::CallMethod<T, RET, Arguments...>::call(m_obj, m_func, helper::ArgValueGen<I, Arguments...>::Type::get(args)...);
}


} // namespace cppexpose

{'fraction_non_alphanumeric': 0.1747498075442648, 'fraction_numerical': 0.001539645881447267, 'mean_word_length': 5.433168316831683, 'pattern_counts': {'":': 0, '<': 45, '<?xml version=': 0, '>': 47, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4229120', 'n_tokens_mistral': 875, 'n_tokens_neox': 833, 'n_words': 197}