18#ifndef _das_dimension_h_
19#define _das_dimension_h_
28#define DASDIM_MAXDEP 16
29#define DASDIM_MAXVAR 16
77#ifndef _das_dimension_c_
78extern const char* DASVAR_CENTER;
79extern const char* DASVAR_MIN;
80extern const char* DASVAR_MAX;
81extern const char* DASVAR_WIDTH;
82extern const char* DASVAR_MEAN;
83extern const char* DASVAR_MEDIAN;
84extern const char* DASVAR_MODE;
85extern const char* DASVAR_REF;
86extern const char* DASVAR_OFFSET;
87extern const char* DASVAR_MAX_ERR;
88extern const char* DASVAR_MIN_ERR;
89extern const char* DASVAR_STD_DEV;
92extern const char* DASVAR_COUNT;
93extern const char* DASVAR_WEIGHT;
95extern const char* DASVAR_NORM;
104#define DASDIM_ROLE_SZ 32
106enum dim_type { DASDIM_UNK = 0, DASDIM_COORD, DASDIM_DATA };
133typedef struct das_dim {
150 char axes[DASDIM_NAXES][DASDIM_AXLEN];
162 DasVar* aVars[DASDIM_MAXVAR];
163 char aRoles[DASDIM_MAXVAR][DASDIM_ROLE_SZ];
204DAS_API
DasDim*
new_DasDim(
const char* sDim,
const char* sName,
enum dim_type dtype,
int nRank);
217#define DasDim_dim(P) ((const char*)((P)->sDim))
227#define DasDim_id(P) ((const char*)((P)->sId))
233#define DasDim_type(P) ((P)->dtype)
239#define DasDim_typeName(P) (((P)->dtype == DASDIM_COORD) ? "coord" : "data" )
260#define DasDim_getAxis(P,I) ( (P)->axes[I][0] != '\0' ? (const char*) ((P)->axes[I]) : NULL )
271#define DasDim_hasAxes(P) ((P)->axes[0] != '\0')
276#define DasDim_primeCoord(P, B) ((P)->primary = B)
282#define DasDim_isPrimeCoord(P) ((P)->primary)
388#define DasDim_numVars(P) ((P)->uVars)
400#define DasDim_getVarByIdx(P, I) ( (I)<((P)->uVars) ? ((DasVar*)((P)->aVars[(I)])) : NULL )
412#define DasDim_getRoleByIdx(P, I) ( (I)<((P)->uVars) ? ((const char*)((P)->aRoles[(I)])) : NULL )
542DAS_API
bool DasDim_degenerate(
const DasDim* pThis,
int iIndex);
int DasErrCode
return code type 0 indicates success, negative integer indicates failure
Definition defs.h:184
Base structure for Stream Header Items.
Definition descriptor.h:74
Das Physical Dimensions.
Definition dimension.h:133
DAS_API ptrdiff_t DasDim_lengthIn(const DasDim *pThis, int nIdx, ptrdiff_t *pLoc)
Return the current max value index value + 1 for any partial index.
DAS_API void del_DasDim(DasDim *pThis)
Delete a dimension and drop the reference count on all contained variables.
DAS_API DasVar * DasDim_getPointVar(DasDim *pThis)
Get a variable providing single point values in a dimension.
DAS_API DasDim * new_DasDim(const char *sDim, const char *sName, enum dim_type dtype, int nRank)
Create a new dimension (not as impressive as it sounds)
DAS_API char * DasDim_toStr(const DasDim *pThis, char *sBuf, int nLen)
Print an information string describing a dimension.
DAS_API int DasDim_shape(const DasDim *pThis, ptrdiff_t *pShape)
Get the maximum extent of this dimension in index space.
DAS_API DasVar * DasDim_popVar(DasDim *pThis, const char *role)
Remove a variable by role from a dimensions.
int DasDim_numAxes(const DasDim *pThis)
Get the number of defined axes for this dimension.
DAS_API DasVar * DasDim_getVar(DasDim *pThis, const char *sRole)
Get a variable providing values for a particular role in the dimension.
DAS_API bool DasDim_addVar(DasDim *pThis, const char *sRole, DasVar *pVar)
Add a variable to a dimension.
DAS_API DasErrCode DasDim_setAxis(DasDim *pThis, int iAxis, const char *sAxis)
Set a name for one of the axes associated with this coordinate dimension.
DAS_API const char * das_role_fromStr(const char *sRole)
Canonicalize a variable role arriving from outside.
DAS_API bool DasDim_isKnownRole(const char *sPurpose)
Does the library have built-in handling for a given variable role?
DAS_API void DasDim_setAxes(DasDim *pThis, const DasDim *pOther)
Set my AXES to match some other dimension, Useful for stream filters.
void * pUser
User data pointer.
Definition dimension.h:180
#define DAS_MAX_ID_BUFSZ
The size of an char buffer large enough to hold valid object IDs.
Definition util.h:349
The DasVar layer: named values with formalisms.