00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #define CPL_CONCAT(a,b) a ## _ ## b
00022 #define CPL_CONCAT2X(a,b) CPL_CONCAT(a,b)
00023
00024
00025 #if CPL_CLASS == CPL_TABLE
00026 #define CPL_OBJECT cpl_table
00027
00028 #elif CPL_CLASS == CPL_PROPERTYLIST
00029 #define CPL_OBJECT cpl_propertylist
00030
00031 #elif CPL_CLASS == CPL_IMAGELIST
00032 #define CPL_OBJECT cpl_imagelist
00033
00034 #elif CPL_CLASS == CPL_IMAGE
00035 #define CPL_OBJECT cpl_image
00036
00037 #else
00038 #undef CPL_OBJECT
00039 #endif
00040
00041 #define CPL_OBJECT_ADD(a) CPL_CONCAT2X(CPL_OBJECT, a)
00042
00043 #if CPL_OPERATION == CPL_NEW
00044
00045 CPL_OBJECT ** ptr
00046 = (CPL_OBJECT **) cpl_malloc(nexts * sizeof(CPL_OBJECT *));
00047 int j;
00048
00049 for(j = 0; j < nexts; j++) {
00050 ptr[j] = NULL;
00051 }
00052
00053 return ptr;
00054
00055 #elif CPL_OPERATION == CPL_DELETE
00056
00057 int j;
00058
00059 if (d == NULL) return;
00060
00061 for(j = 0; j < nexts; j++) {
00062 CPL_OBJECT_ADD(delete)(d[j]);
00063 }
00064 cpl_free(d);
00065
00066 return;
00067
00068 #endif
00069
00070 #undef CPL_OBJECT