void KIM_API_getm_data(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_data: 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++) { char *nm = va_arg(listPointer, char *); void **dt = va_arg(listPointer, void **); 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_data(nm,err); if(*err != KIM_STATUS_OK) { std::cout<<"getm_data: get data for "<<nm<<" failed\n"; va_end(listPointer); return; } } *err=KIM_STATUS_OK; va_end(listPointer); }