1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
/*********************************************************************
* Copyright 1993, UCAR/Unidata
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
*********************************************************************/
#ifndef ALIGN_H
#define ALIGN_H 1
typedef struct NCtypealignment {
char* typename;
int alignment;
} NCtypealignment;
/* Define indices for every primitive C type */
/* NAT => NOT-A-TYPE*/
#define NCCTYPENAT 0
#define NCCTYPECHAR 1
#define NCCTYPEUCHAR 2
#define NCCTYPESHORT 3
#define NCCTYPEUSHORT 4
#define NCCTYPEINT 5
#define NCCTYPEUINT 6
#define NCCTYPELONG 7
#define NCCTYPEULONG 8
#define NCCTYPELONGLONG 9
#define NCCTYPEULONGLONG 10
#define NCCTYPEFLOAT 11
#define NCCTYPEDOUBLE 12
#define NCCTYPEPTR 13
#define NCCTYPENCVLEN 14
/* Capture in struct and in a vector*/
typedef struct NCtypealignset {
NCtypealignment charalign; /* char*/
NCtypealignment ucharalign; /* unsigned char*/
NCtypealignment shortalign; /* short*/
NCtypealignment ushortalign; /* unsigned short*/
NCtypealignment intalign; /* int*/
NCtypealignment uintalign; /* unsigned int*/
NCtypealignment longalign; /* long*/
NCtypealignment ulongalign; /* unsigned long*/
NCtypealignment longlongalign; /* long long*/
NCtypealignment ulonglongalign; /* unsigned long long*/
NCtypealignment floatalign; /* float*/
NCtypealignment doublealign; /* double*/
NCtypealignment ptralign; /* void**/
NCtypealignment ncvlenalign; /* nc_vlen_t*/
} NCtypealignset;
typedef NCtypealignment NCtypealignvec;
extern void compute_nccalignments(void);
extern unsigned int ncctypealignment(int nctype);
extern int nccpadding(unsigned long offset, int alignment);
#endif /*ALIGN_H*/
|