void KIM_API_getm_method_by_index(void *kimmdl,int *err,int numargs, ...) { KIM_API_model *pkim = (KIM_API_model *) kimmdl; *err=KIM_STATUS_FAIL; va_list listPointer; va_start(listPointer,numargs); if(numargs % 3 != 0) { std::cout<<"getm_method_by_index: numargs must be multiple of 3"<<std::endl; *err=KIM_STATUS_NUMARGS_NOT_DIVISIBLE_BY_3; va_end(listPointer); return; } for (int i=0; i<numargs/3; i++) { int ind = va_arg(listPointer, int); func_ptr *dt = va_arg(listPointer, func_ptr *); int key =va_arg(listPointer, int); if (key != 1 && key != 0 ) { *err= KIM_STATUS_WRONG_GROUP_ARGUMENT_KEY; va_end(listPointer); return; } else if(key ==0) continue; *dt = pkim->get_method_by_index(ind,err); if(*err != KIM_STATUS_OK) { std::cout<<"getm_method_by_index: get data for argument group "<<i<<" failed\n"; va_end(listPointer); return; } } *err=KIM_STATUS_OK; va_end(listPointer); }