void KIM_API_setm_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 % 4 != 0) { std::cout<<"setm_method_by_index: numargs must be multiple of 4"<<std::endl; *err=KIM_STATUS_NUMARGS_NOT_DIVISIBLE_BY_4; va_end(listPointer); return; } for (int i=0; i<numargs/4; i++) { int ind = va_arg(listPointer, int); intptr_t size = va_arg(listPointer, intptr_t); 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; if(dt==NULL) std::cout<<"setm_method_by_index: WARNING: for argument group "<<i<<" data is NULL\n"; if(!pkim->set_method_by_index(ind,size,dt)) { std::cout<<"setm_method_by_index: set data for argument group"<<i<<" failed\n"; va_end(listPointer); return; } } *err=KIM_STATUS_OK; va_end(listPointer); }