423 lines
27 KiB
C
423 lines
27 KiB
C
/****************************************************************************/
|
|
/* ndcgdata.h */
|
|
/* */
|
|
/* Common include file for all data.c modules (Windows NT specific) */
|
|
/* */
|
|
/* Copyright(c) Microsoft 1996-1997. */
|
|
/* */
|
|
/* The macros in this file allow all aspects of data declaration to be kept */
|
|
/* together. The behaviour of this file is controlled by #defines that can */
|
|
/* be set prior to inclusion of this. */
|
|
/* */
|
|
/* - DC_INIT_DATA Set in XX_Init routines to do inline initialisation if*/
|
|
/* required. */
|
|
/* - DC_INCLUDE_DATA Set where a header file is included in order to get */
|
|
/* external declarations. */
|
|
/* - DC_DEFINE_DATA Set where a header file is included in order to get */
|
|
/* definition without initialisation. */
|
|
/* - DC_CONSTANT_DATA Set to get global initialisation of const data items */
|
|
/* - (default) Gets data definition with initialisation. */
|
|
/* */
|
|
/****************************************************************************/
|
|
/* */
|
|
/* In order to allow for the flexibility required in different environments */
|
|
/* (be that different OSs, C vs C++, or whatever) the structure of the file */
|
|
/* is as follows. */
|
|
/* */
|
|
/* First there is an environment-specific mapping from the macros used in */
|
|
/* the code to internal macros. This mapping also takes the above #defines */
|
|
/* into consideration in performing this expansion. */
|
|
/* */
|
|
/* Secondly, the low-level macros that actually perform the expansion are */
|
|
/* defined. These should be platform-independent. */
|
|
/* */
|
|
/* The intention of this structure is to avoid the confusions caused by the */
|
|
/* old version where, for example, code compiled with DC_INIT_DATA */
|
|
/* explicitly did NOT initialise the data. */
|
|
/* */
|
|
/****************************************************************************/
|
|
|
|
/****************************************************************************/
|
|
/* Clear any previous definitions of the macros. */
|
|
/****************************************************************************/
|
|
#undef DC_DATA
|
|
#undef DC_DATA_NULL
|
|
#undef DC_DATA_ARRAY
|
|
#undef DC_DATA_ARRAY_NULL
|
|
#undef DC_DATA_ARRAY_UNINIT
|
|
#undef DC_DATA_ARRAY_SET
|
|
#undef DC_DATA_2D_ARRAY
|
|
#undef DC_CONST_DATA
|
|
#undef DC_CONST_DATA_ARRAY
|
|
#undef DC_CONST_DATA_2D_ARRAY
|
|
#undef DCI_DATA
|
|
#undef DCI_DATA_NULL
|
|
#undef DCI_DATA_ARRAY
|
|
#undef DCI_DATA_ARRAY_NULL
|
|
#undef DCI_DATA_ARRAY_UNINIT
|
|
#undef DCI_DATA_ARRAY_SET
|
|
#undef DCI_DATA_2D_ARRAY
|
|
#undef DCI_CONST_DATA
|
|
#undef DCI_CONST_DATA_ARRAY
|
|
#undef DCI_CONST_DATA_2D_ARRAY
|
|
|
|
/****************************************************************************/
|
|
/* Now define the main (external) macros. */
|
|
/****************************************************************************/
|
|
#define DC_DATA(A,B,C) DCI_DATA(A,B,C)
|
|
#define DC_DATA_NULL(A,B,C) DCI_DATA_NULL(A,B,C)
|
|
|
|
#define DC_DATA_ARRAY(A,B,C,D) DCI_DATA_ARRAY(A,B,C,D)
|
|
#define DC_DATA_ARRAY_NULL(A,B,C,D) DCI_DATA_ARRAY_NULL(A,B,C,D)
|
|
#define DC_DATA_ARRAY_UNINIT(A,B,C) DCI_DATA_ARRAY_UNINIT(A,B,C)
|
|
#define DC_DATA_ARRAY_SET(A,B,C,D) DCI_DATA_ARRAY_SET(A,B,C,D)
|
|
#define DC_DATA_2D_ARRAY(A,B,C,D,E) DCI_DATA_2D_ARRAY(A,B,C,D,E)
|
|
|
|
#define DC_CONST_DATA(A,B,C) DCI_CONST_DATA(A,B,C)
|
|
#define DC_CONST_DATA_ARRAY(A,B,C,D) DCI_CONST_DATA_ARRAY(A,B,C,D)
|
|
#define DC_CONST_DATA_2D_ARRAY(A,B,C,D,E) DCI_CONST_DATA_2D_ARRAY(A,B,C,D,E)
|
|
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
/* Now map to the target macros */
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
|
|
#if defined(DC_INCLUDE_DATA)
|
|
/****************************************************************************/
|
|
/* External declarations */
|
|
/****************************************************************************/
|
|
#define DCI_DATA(TYPE, Name, VAL) \
|
|
DCI_EXTERN_DATA(TYPE, Name, VAL)
|
|
#define DCI_DATA_NULL(TYPE, Name, VAL) \
|
|
DCI_EXTERN_DATA_NULL(TYPE, Name, VAL)
|
|
#define DCI_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_EXTERN_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) \
|
|
DCI_EXTERN_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_UNINIT(TYPE, Name, Size) \
|
|
DCI_EXTERN_DATA_ARRAY(TYPE, Name, Size, 0)
|
|
#define DCI_DATA_ARRAY_SET(TYPE, Name, Size, VAL) \
|
|
DCI_EXTERN_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_EXTERN_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
#define DCI_CONST_DATA(TYPE, Name, VAL) \
|
|
DCI_EXTERN_CONST_DATA(TYPE, Name, VAL)
|
|
#define DCI_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_EXTERN_CONST_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_EXTERN_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
|
|
#elif defined(DC_INIT_DATA)
|
|
|
|
/****************************************************************************/
|
|
/* Inline initialisation */
|
|
/****************************************************************************/
|
|
#if defined(__cplusplus)
|
|
#define DCI_DATA(TYPE, Name, VAL) \
|
|
DCI_ASSIGN_DATA(TYPE, Name, VAL)
|
|
#define DCI_DATA_NULL(TYPE, Name, VAL) \
|
|
DCI_SET_DATA_NULL(TYPE, Name, VAL)
|
|
#define DCI_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_ASSIGN_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) \
|
|
DCI_SET_DATA_ARRAY_NULL(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_UNINIT(TYPE, Name, Size) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, 0)
|
|
#define DCI_DATA_ARRAY_SET(TYPE, Name, Size, VAL) \
|
|
DCI_SET_DATA_ARRAY_VAL(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_ASSIGN_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
#define DCI_CONST_DATA(TYPE, Name, VAL) \
|
|
DCI_NO_DATA(TYPE, Name, VAL)
|
|
#define DCI_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_NO_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
#else
|
|
#define DCI_DATA(TYPE, Name, VAL) \
|
|
DCI_NO_DATA(TYPE, Name, VAL)
|
|
#define DCI_DATA_NULL(TYPE, Name, VAL) \
|
|
DCI_NO_DATA_NULL(TYPE, Name, VAL)
|
|
#define DCI_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_UNINIT(TYPE, Name, Size) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, 0)
|
|
#define DCI_DATA_ARRAY_SET(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_NO_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
#define DCI_CONST_DATA(TYPE, Name, VAL) \
|
|
DCI_NO_DATA(TYPE, Name, VAL)
|
|
#define DCI_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_NO_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
|
|
#endif
|
|
|
|
#elif defined(DC_DEFINE_DATA)
|
|
|
|
/****************************************************************************/
|
|
/* Definition but no initialisation */
|
|
/****************************************************************************/
|
|
#define DCI_DATA(TYPE, Name, VAL) \
|
|
DCI_DEFINE_DATA(TYPE, Name, VAL)
|
|
#define DCI_DATA_NULL(TYPE, Name, VAL) \
|
|
DCI_DEFINE_DATA_NULL(TYPE, Name, VAL)
|
|
#define DCI_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_DEFINE_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) \
|
|
DCI_DEFINE_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_UNINIT(TYPE, Name, Size) \
|
|
DCI_DEFINE_DATA_ARRAY(TYPE, Name, Size, NULL)
|
|
#define DCI_DATA_ARRAY_SET(TYPE, Name, Size, VAL) \
|
|
DCI_DEFINE_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_DEFINE_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
#define DCI_CONST_DATA(TYPE, Name, VAL) \
|
|
DCI_DEFINE_CONST_DATA(TYPE, Name, VAL)
|
|
#define DCI_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_DEFINE_CONST_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_DEFINE_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
|
|
#elif defined(DC_CONSTANT_DATA)
|
|
|
|
/****************************************************************************/
|
|
/* Definition but no initialisation */
|
|
/****************************************************************************/
|
|
#define DCI_DATA(TYPE, Name, VAL) \
|
|
DCI_NO_DATA(TYPE, Name, VAL)
|
|
#define DCI_DATA_NULL(TYPE, Name, VAL) \
|
|
DCI_NO_DATA_NULL(TYPE, Name, VAL)
|
|
#define DCI_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_UNINIT(TYPE, Name, Size) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, NULL)
|
|
#define DCI_DATA_ARRAY_SET(TYPE, Name, Size, VAL) \
|
|
DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_NO_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
#define DCI_CONST_DATA(TYPE, Name, VAL) \
|
|
DCI_INIT_CONST_DATA(TYPE, Name, VAL)
|
|
#define DCI_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_INIT_CONST_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_INIT_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
|
|
#else
|
|
/****************************************************************************/
|
|
/* Data definition and initialisation */
|
|
/****************************************************************************/
|
|
#define DCI_DATA(TYPE, Name, VAL) \
|
|
DCI_INIT_DATA(TYPE, Name, VAL)
|
|
#define DCI_DATA_NULL(TYPE, Name, VAL) \
|
|
DCI_INIT_DATA_NULL(TYPE, Name, VAL)
|
|
#define DCI_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_INIT_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) \
|
|
DCI_INIT_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_ARRAY_UNINIT(TYPE, Name, Size) \
|
|
DCI_DEFINE_DATA_ARRAY(TYPE, Name, Size, NULL)
|
|
#define DCI_DATA_ARRAY_SET(TYPE, Name, Size, VAL) \
|
|
DCI_INIT_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_INIT_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
#define DCI_CONST_DATA(TYPE, Name, VAL) \
|
|
DCI_INIT_CONST_DATA(TYPE, Name, VAL)
|
|
#define DCI_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
DCI_INIT_CONST_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
DCI_INIT_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
|
|
#endif
|
|
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
/* Finally, the low-level macros required to do the real work. */
|
|
/* */
|
|
/* Avoid multiple inclusion of these. */
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
|
|
#ifndef _H_NDCGDATA
|
|
#define _H_NDCGDATA
|
|
|
|
/****************************************************************************/
|
|
/* Some utilities... */
|
|
/****************************************************************************/
|
|
#define DC_STRUCT1(a) {a}
|
|
#define DC_STRUCT2(a,b) {a,b}
|
|
#define DC_STRUCT3(a,b,c) {a,b,c}
|
|
#define DC_STRUCT4(a,b,c,d) {a,b,c,d}
|
|
#define DC_STRUCT5(a,b,c,d,e) {a,b,c,d,e}
|
|
#define DC_STRUCT6(a,b,c,d,e,f) {a,b,c,d,e,f}
|
|
#define DC_STRUCT7(a,b,c,d,e,f,g) {a,b,c,d,e,f,g}
|
|
#define DC_STRUCT8(a,b,c,d,e,f,g,h) {a,b,c,d,e,f,g,h}
|
|
#define DC_STRUCT9(a,b,c,d,e,f,g,h,i) {a,b,c,d,e,f,g,h,i}
|
|
#define DC_STRUCT10(a,b,c,d,e,f,g,h,i,j) {a,b,c,d,e,f,g,h,i,j}
|
|
#define DC_STRUCT11(a,b,c,d,e,f,g,h,i,j,k) {a,b,c,d,e,f,g,h,i,j,k}
|
|
#define DC_STRUCT12(a,b,c,d,e,f,g,h,i,j,k,l) {a,b,c,d,e,f,g,h,i,j,k,l}
|
|
#define DC_STRUCT13(a,b,c,d,e,f,g,h,i,j,k,l,m) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m}
|
|
#define DC_STRUCT14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n}
|
|
#define DC_STRUCT15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o}
|
|
#define DC_STRUCT16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}
|
|
#define DC_STRUCT17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q}
|
|
#define DC_STRUCT18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}
|
|
#define DC_STRUCT19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s}
|
|
#define DC_STRUCT20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t}
|
|
#define DC_STRUCT21(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u}
|
|
#define DC_STRUCT22(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v}
|
|
#define DC_STRUCT23(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}
|
|
#define DC_STRUCT24(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x}
|
|
#define DC_STRUCT25(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y}
|
|
#define DC_STRUCT26(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
|
|
#define DC_STRUCT27(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa}
|
|
#define DC_STRUCT28(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb}
|
|
#define DC_STRUCT29(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb,cc) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb,cc}
|
|
#define DC_STRUCT30(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd}
|
|
#define DC_STRUCT31(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee}
|
|
#define DC_STRUCT32(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff}
|
|
#define DC_STRUCT33(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg}
|
|
#define DC_STRUCT34(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh}
|
|
#define DC_STRUCT35(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa, \
|
|
bb,cc,dd,ee,ff,gg,hh,ii) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh,ii}
|
|
#define DC_STRUCT36(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa, \
|
|
bb,cc,dd,ee,ff,gg,hh,ii,jj) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh,ii,jj}
|
|
#define DC_STRUCT37(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa, \
|
|
bb,cc,dd,ee,ff,gg,hh,ii,jj,kk) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk}
|
|
#define DC_STRUCT38(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa, \
|
|
bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll}
|
|
#define DC_STRUCT46(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa, \
|
|
bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,PP,QQ,RR,SS,TT) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,PP,QQ,RR,SS,TT}
|
|
#define DC_STRUCT64(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa, \
|
|
bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo, \
|
|
pp,qq,rr,ss,tt,uu,vv,ww,xx,yy,zz,ab,ac,ad,ae, \
|
|
af,ag,ah,ai,aj,ak,al,am) \
|
|
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, \
|
|
aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo, \
|
|
pp,qq,rr,ss,tt,uu,vv,ww,xx,yy,zz,ab,ac,ad,ae, \
|
|
af,ag,ah,ai,aj,ak,al,am}
|
|
|
|
/****************************************************************************/
|
|
/* The extern declarations macros... */
|
|
/****************************************************************************/
|
|
#define DCI_EXTERN_DATA(TYPE, Name, VAL) extern TYPE Name
|
|
#define DCI_EXTERN_DATA_NULL(TYPE, Name, VAL) extern TYPE Name
|
|
#define DCI_EXTERN_DATA_ARRAY(TYPE, Name, Size, VAL) extern TYPE Name[Size]
|
|
#define DCI_EXTERN_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
extern TYPE Name[Size1][Size2]
|
|
#define DCI_EXTERN_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
extern const TYPE Name[Size]
|
|
#define DCI_EXTERN_CONST_DATA(TYPE, Name, VAL) extern const TYPE Name
|
|
#define DCI_EXTERN_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
extern const TYPE Name[Size1][Size2]
|
|
|
|
/****************************************************************************/
|
|
/* The no-op macros... */
|
|
/****************************************************************************/
|
|
#define DCI_NO_DATA(TYPE, Name, VAL)
|
|
#define DCI_NO_DATA_NULL(TYPE, Name, VAL)
|
|
#define DCI_NO_DATA_ARRAY(TYPE, Name, Size, VAL)
|
|
#define DCI_NO_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL)
|
|
|
|
/****************************************************************************/
|
|
/* The declaration macros... */
|
|
/****************************************************************************/
|
|
#define DCI_DEFINE_DATA(TYPE, Name, VAL) TYPE Name
|
|
#define DCI_DEFINE_DATA_NULL(TYPE, Name, VAL) TYPE Name
|
|
#define DCI_DEFINE_DATA_ARRAY(TYPE, Name, Size, VAL) TYPE Name[Size]
|
|
#define DCI_DEFINE_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
TYPE Name[Size1][Size2]
|
|
#define DCI_DEFINE_CONST_DATA(TYPE, Name, VAL) static const TYPE Name
|
|
#define DCI_DEFINE_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
static const TYPE Name[Size]
|
|
#define DCI_DEFINE_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
static const TYPE Name[Size1][Size2]
|
|
|
|
/****************************************************************************/
|
|
/* The define-and-assign macros... */
|
|
/****************************************************************************/
|
|
#define DCI_INIT_DATA(TYPE, Name, VAL) TYPE Name = VAL
|
|
#define DCI_INIT_DATA_NULL(TYPE, Name, VAL) TYPE Name = VAL
|
|
#define DCI_INIT_DATA_ARRAY(TYPE, Name, Size, VAL) TYPE Name[Size] = { VAL }
|
|
#define DCI_INIT_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
TYPE Name[Size1][Size2] = { VAL }
|
|
|
|
/****************************************************************************/
|
|
/* The vanilla C version */
|
|
/****************************************************************************/
|
|
#define DCI_INIT_CONST_DATA(TYPE, Name, VAL) const TYPE SHCLASS Name = VAL
|
|
#define DCI_INIT_CONST_DATA_ARRAY(TYPE, Name, Size, VAL) \
|
|
const TYPE SHCLASS Name[Size] = VAL
|
|
#define DCI_INIT_CONST_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) \
|
|
const TYPE SHCLASS Name[Size1][Size2] = VAL
|
|
|
|
/****************************************************************************/
|
|
/* The procedural code initialisation macros... */
|
|
/****************************************************************************/
|
|
#define DCI_ASSIGN_DATA(TYPE, Name, VAL) Name = VAL
|
|
#define DCI_ASSIGN_DATA_NULL(TYPE, Name, VAL) Error!
|
|
#define DCI_ASSIGN_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) Error!
|
|
#define DCI_ASSIGN_DATA_ARRAY(TYPE, Name, Size, VAL) Error!
|
|
#define DCI_ASSIGN_DATA_2D_ARRAY(TYPE, Name, Size1, Size2, VAL) Error!
|
|
|
|
/****************************************************************************/
|
|
/* The mem-cpy and -set initialisation macros... */
|
|
/****************************************************************************/
|
|
#define DCI_SET_DATA_NULL(TYPE, Name, VAL) memset(&Name, 0, sizeof(TYPE))
|
|
#define DCI_SET_DATA_ARRAY_NULL(TYPE, Name, Size, VAL) \
|
|
memset(&Name, 0, Size*sizeof(TYPE))
|
|
#define DCI_SET_DATA_ARRAY_VAL(TYPE, Name, Size, VAL) \
|
|
memset(&Name, VAL, Size*sizeof(TYPE))
|
|
|
|
#endif /*H_NDCGDATA*/
|
|
|