blueloveTH 2 年 前
コミット
f406488a2c
1 ファイル変更7 行追加3 行削除
  1. 7 3
      src/cffi.h

+ 7 - 3
src/cffi.h

@@ -116,6 +116,12 @@ std::enable_if_t<std::is_pod_v<T> && !std::is_pointer_v<T>, PyObject*> py_var(VM
 /*****************************************************************/
 struct NativeProxyFuncCBase {
     virtual PyObject* operator()(VM* vm, ArgsView args) = 0;
+
+    static void check_args_size(VM* vm, ArgsView args, int n){
+        if (args.size() != n){
+            vm->TypeError("expected " + std::to_string(n) + " arguments, but got " + std::to_string(args.size()));
+        }
+    }
 };
 
 template<typename Ret, typename... Params>
@@ -126,9 +132,7 @@ struct NativeProxyFuncC final: NativeProxyFuncCBase {
     NativeProxyFuncC(_Fp func) : func(func) {}
 
     PyObject* operator()(VM* vm, ArgsView args) override {
-        if (args.size() != N){
-            vm->TypeError("expected " + std::to_string(N) + " arguments, but got " + std::to_string(args.size()));
-        }
+        check_args_size(vm, args, N);
         return call<Ret>(vm, args, std::make_index_sequence<N>());
     }