MCPcopy Index your code
hub / github.com/MapServer/MapServer / msGMLGetGroups

Function msGMLGetGroups

mapgml.c:1003–1057  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1001}
1002
1003gmlGroupListObj *msGMLGetGroups(layerObj *layer, const char *metadata_namespaces)
1004{
1005 int i;
1006 const char *value=NULL;
1007 char tag[64];
1008
1009 char **names=NULL;
1010 int numnames=0;
1011
1012 gmlGroupListObj *groupList=NULL;
1013 gmlGroupObj *group=NULL;
1014
1015 /* allocate the collection */
1016 groupList = (gmlGroupListObj *) malloc(sizeof(gmlGroupListObj));
1017 MS_CHECK_ALLOC(groupList, sizeof(gmlGroupListObj), NULL) ;
1018 groupList->groups = NULL;
1019 groupList->numgroups = 0;
1020
1021 /* list of groups (TODO: make this automatic by parsing metadata) */
1022 if((value = msOWSLookupMetadata(&(layer->metadata), metadata_namespaces, "groups")) != NULL) {
1023 names = msStringSplit(value, ',', &numnames);
1024
1025 /* allocation an array of gmlGroupObj's */
1026 groupList->numgroups = numnames;
1027 groupList->groups = (gmlGroupObj *) malloc(sizeof(gmlGroupObj)*groupList->numgroups);
1028 if (groupList->groups == NULL)
1029 {
1030 msSetError(MS_MEMERR, "Out of memory allocating %u bytes.\n", "msGMLGetGroups()",
1031 sizeof(gmlGroupObj)*groupList->numgroups);
1032 free(groupList);
1033 return NULL;
1034 }
1035
1036 for(i=0; i<groupList->numgroups; i++) {
1037 group = &(groupList->groups[i]);
1038
1039 group->name = msStrdup(names[i]); /* initialize a few things */
1040 group->items = NULL;
1041 group->numitems = 0;
1042 group->type = NULL;
1043
1044 snprintf(tag, 64, "%s_group", group->name);
1045 if((value = msOWSLookupMetadata(&(layer->metadata), metadata_namespaces, tag)) != NULL)
1046 group->items = msStringSplit(value, ',', &group->numitems);
1047
1048 snprintf(tag, 64, "%s_type", group->name);
1049 if((value = msOWSLookupMetadata(&(layer->metadata), metadata_namespaces, tag)) != NULL)
1050 group->type = msStrdup(value);
1051 }
1052
1053 msFreeCharArray(names, numnames);
1054 }
1055
1056 return groupList;
1057}
1058
1059void msGMLFreeGroups(gmlGroupListObj *groupList)
1060{

Callers 3

msGMLWriteQueryFunction · 0.85
msGMLWriteWFSQueryFunction · 0.85
msWFSDescribeFeatureTypeFunction · 0.85

Calls 5

msOWSLookupMetadataFunction · 0.85
msStringSplitFunction · 0.85
msSetErrorFunction · 0.85
msStrdupFunction · 0.85
msFreeCharArrayFunction · 0.85

Tested by

no test coverage detected