int ex_get_names_internal(int exoid, int varid, size_t num_entity, char **names, ex_entity_type obj_type, const char *routine) { size_t i; int status; /* read the names */ for (i=0; i<num_entity; i++) { status = ex_get_name_internal(exoid, varid, i, names[i], obj_type, routine); if (status != NC_NOERR) return status; } return EX_NOERR; }
int ex_get_names_internal(int exoid, int varid, size_t num_entity, char **names, ex_entity_type obj_type, const char *routine) { size_t i; int status; /* Query size of names on file * Use the smaller of the size on file or user-specified length */ int db_name_size = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH); int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH); int name_size = db_name_size < api_name_size ? db_name_size : api_name_size; for (i=0; i<num_entity; i++) { status = ex_get_name_internal(exoid, varid, i, names[i], name_size, obj_type, routine); if (status != NC_NOERR) return status; } return EX_NOERR; }
int ex_get_variable_name (int exoid, ex_entity_type obj_type, int var_num, char *var_name) { int status; int varid; char errmsg[MAX_ERR_LENGTH]; const char *vname = NULL; exerrval = 0; /* clear error code */ /* inquire previously defined variables */ switch (obj_type) { case EX_GLOBAL: vname = VAR_NAME_GLO_VAR; break; case EX_NODAL: vname = VAR_NAME_NOD_VAR; break; case EX_EDGE_BLOCK: vname = VAR_NAME_EDG_VAR; break; case EX_FACE_BLOCK: vname = VAR_NAME_FAC_VAR; break; case EX_ELEM_BLOCK: vname = VAR_NAME_ELE_VAR; break; case EX_NODE_SET: vname = VAR_NAME_NSET_VAR; break; case EX_EDGE_SET: vname = VAR_NAME_ESET_VAR; break; case EX_FACE_SET: vname = VAR_NAME_FSET_VAR; break; case EX_SIDE_SET: vname = VAR_NAME_SSET_VAR; break; case EX_ELEM_SET: vname = VAR_NAME_ELSET_VAR; break; default: exerrval = EX_BADPARAM; sprintf( errmsg, "Error: Invalid variable type (%d) given for file id %d", obj_type, exoid ); ex_err( "ex_get_variable_name", errmsg, exerrval ); return (EX_FATAL); } if ((status = nc_inq_varid(exoid, vname, &varid)) != NC_NOERR) { exerrval = status; sprintf(errmsg, "Warning: no %s variable names stored in file id %d", ex_name_of_object(obj_type), exoid); ex_err("ex_get_variable_name",errmsg,exerrval); return (EX_WARN); } /* read the variable name */ { int db_name_size = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH); int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH); int name_size = db_name_size < api_name_size ? db_name_size : api_name_size; status = ex_get_name_internal(exoid, varid, var_num-1, var_name, name_size, obj_type, "ex_get_variable_name"); if (status != NC_NOERR) { return (EX_FATAL); } } return (EX_NOERR); }
int ex_get_name (int exoid, ex_entity_type obj_type, ex_entity_id entity_id, char *name) { int status; int varid, ent_ndx; char errmsg[MAX_ERR_LENGTH]; char *vobj = NULL; const char *routine = "ex_get_name"; exerrval = 0; switch(obj_type) { case EX_ELEM_BLOCK: vobj = VAR_NAME_EL_BLK; break; case EX_EDGE_BLOCK: vobj = VAR_NAME_ED_BLK; break; case EX_FACE_BLOCK: vobj = VAR_NAME_FA_BLK; break; case EX_NODE_SET: vobj = VAR_NAME_NS; break; case EX_SIDE_SET: vobj = VAR_NAME_SS; break; case EX_EDGE_SET: vobj = VAR_NAME_ES; break; case EX_FACE_SET: vobj = VAR_NAME_FS; break; case EX_ELEM_SET: vobj = VAR_NAME_ELS; break; case EX_NODE_MAP: vobj = VAR_NAME_NM; break; case EX_EDGE_MAP: vobj = VAR_NAME_EDM; break; case EX_FACE_MAP: vobj = VAR_NAME_FAM; break; case EX_ELEM_MAP: vobj = VAR_NAME_EM; break; default: /* invalid variable type */ exerrval = EX_BADPARAM; sprintf(errmsg, "Error: Invalid type specified in file id %d", exoid); ex_err(routine,errmsg,exerrval); return(EX_FATAL); } if ((status = nc_inq_varid(exoid, vobj, &varid)) == NC_NOERR) { /* If this is a null entity, then 'ent_ndx' will be negative. * We don't care in this routine, so make it positive and continue... */ ent_ndx = ex_id_lkup(exoid, obj_type, entity_id); if (ent_ndx < 0) ent_ndx = -ent_ndx; /* read the name */ { int db_name_size = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH); int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH); int name_size = db_name_size < api_name_size ? db_name_size : api_name_size; status = ex_get_name_internal(exoid, varid, ent_ndx-1, name, name_size, obj_type, routine); if (status != NC_NOERR) { return (EX_FATAL); } } } else { /* Name variable does not exist on the database; probably since this is an * older version of the database. Return an empty array... */ name[0] = '\0'; } return (EX_NOERR); }