void KIM_API_setm_method(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: 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++) { char *nm = va_arg(listPointer, char *); 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: WARNING: for "<<nm<<" data is NULL\n"; if(!pkim->set_method(nm,size,dt)) { std::cout<<"setm_method: set data for "<<nm<<" failed\n"; va_end(listPointer); return; } } *err=KIM_STATUS_OK; va_end(listPointer); }