| 164 | } |
| 165 | |
| 166 | SEXP CppMethod__invoke(SEXP args) { // #nocov start |
| 167 | SEXP p = CDR(args); |
| 168 | |
| 169 | // the external pointer to the class |
| 170 | XP_Class clazz(CAR(p)); p = CDR(p); |
| 171 | |
| 172 | // the external pointer to the method |
| 173 | SEXP met = CAR(p); p = CDR(p); |
| 174 | |
| 175 | // the external pointer to the object |
| 176 | SEXP obj = CAR(p); p = CDR(p); |
| 177 | CHECK_DUMMY_OBJ(obj); |
| 178 | |
| 179 | // additional arguments, processed the same way as .Call does |
| 180 | UNPACK_EXTERNAL_ARGS(cargs,p) |
| 181 | |
| 182 | return clazz->invoke(met, obj, cargs, nargs); |
| 183 | } // #nocov end |
| 184 | |
| 185 | SEXP CppMethod__invoke_void(SEXP args) { |
| 186 | SEXP p = CDR(args); |