18#ifndef _das_dimension_h_
19#define _das_dimension_h_
28#define DASDIM_MAXDEP 16
29#define DASDIM_MAXVAR 16
77DAS_API
extern const char* DASVAR_CENTER;
78DAS_API
extern const char* DASVAR_MIN;
79DAS_API
extern const char* DASVAR_MAX;
80DAS_API
extern const char* DASVAR_WIDTH;
81DAS_API
extern const char* DASVAR_MEAN;
82DAS_API
extern const char* DASVAR_MEDIAN;
83DAS_API
extern const char* DASVAR_MODE;
84DAS_API
extern const char* DASVAR_REF;
85DAS_API
extern const char* DASVAR_OFFSET;
86DAS_API
extern const char* DASVAR_MAX_ERR;
87DAS_API
extern const char* DASVAR_MIN_ERR;
88DAS_API
extern const char* DASVAR_STD_DEV;
91DAS_API
extern const char* DASVAR_COUNT;
92DAS_API
extern const char* DASVAR_WEIGHT;
94DAS_API
extern const char* DASVAR_NORM;
102#define DASDIM_ROLE_SZ 32
104enum dim_type { DASDIM_UNK = 0, DASDIM_COORD, DASDIM_DATA };
131typedef struct das_dim {
148 char axes[DASDIM_NAXES][DASDIM_AXLEN];
160 DasVar* aVars[DASDIM_MAXVAR];
161 char aRoles[DASDIM_MAXVAR][DASDIM_ROLE_SZ];
202DAS_API
DasDim*
new_DasDim(
const char* sDim,
const char* sName,
enum dim_type dtype,
int nRank);
215#define DasDim_dim(P) ((const char*)((P)->sDim))
225#define DasDim_id(P) ((const char*)((P)->sId))
231#define DasDim_type(P) ((P)->dtype)
237#define DasDim_typeName(P) (((P)->dtype == DASDIM_COORD) ? "coord" : "data" )
258#define DasDim_getAxis(P,I) ( (P)->axes[I][0] != '\0' ? (const char*) ((P)->axes[I]) : NULL )
269#define DasDim_hasAxes(P) ((P)->axes[0] != '\0')
274#define DasDim_primeCoord(P, B) ((P)->primary = B)
280#define DasDim_isPrimeCoord(P) ((P)->primary)
419#define DasDim_numVars(P) ((P)->uVars)
431#define DasDim_getVarByIdx(P, I) ( (I)<((P)->uVars) ? ((DasVar*)((P)->aVars[(I)])) : NULL )
443#define DasDim_getRoleByIdx(P, I) ( (I)<((P)->uVars) ? ((const char*)((P)->aRoles[(I)])) : NULL )
573DAS_API
bool DasDim_degenerate(
const DasDim* pThis,
int iIndex);
int DasErrCode
return code type 0 indicates success, negative integer indicates failure
Definition defs.h:189
Buffer class to handle accumulating byte streams.
Definition buffer.h:47
Base structure for Stream Header Items.
Definition descriptor.h:74
Das Physical Dimensions.
Definition dimension.h:131
#define DasDim_toStr(P, B, N)
Print a one line summary of a dimension.
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 int DasDim_info(const DasDim *pThis, char *sBuf, size_t uLen)
Print a multi-line description of a dimension.
#define new_DasDim(S, T, R)
Create a new dimension (not as impressive as it sounds)
DAS_API int DasDim_numAxes(const DasDim *pThis)
Get the number of defined axes for this 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.
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:178
#define DAS_MAX_ID_BUFSZ
The size of an char buffer large enough to hold valid object IDs.
Definition util.h:348
The DasVar layer: named values with formalisms.