** Closes resources used by a particular layer. */
| 203 | ** Closes resources used by a particular layer. |
| 204 | */ |
| 205 | void msLayerClose(layerObj *layer) |
| 206 | { |
| 207 | int i,j; |
| 208 | |
| 209 | /* no need for items once the layer is closed */ |
| 210 | msLayerFreeItemInfo(layer); |
| 211 | if(layer->items) { |
| 212 | msFreeCharArray(layer->items, layer->numitems); |
| 213 | layer->items = NULL; |
| 214 | layer->numitems = 0; |
| 215 | } |
| 216 | |
| 217 | /* clear out items used as part of expressions (bug #2702) -- what about the layer filter? */ |
| 218 | freeExpressionTokens(&(layer->filter)); |
| 219 | freeExpressionTokens(&(layer->cluster.group)); |
| 220 | freeExpressionTokens(&(layer->cluster.filter)); |
| 221 | for(i=0; i<layer->numclasses; i++) { |
| 222 | freeExpressionTokens(&(layer->class[i]->expression)); |
| 223 | freeExpressionTokens(&(layer->class[i]->text)); |
| 224 | for(j=0; j<layer->class[i]->numstyles; j++) |
| 225 | freeExpressionTokens(&(layer->class[i]->styles[j]->_geomtransform)); |
| 226 | } |
| 227 | |
| 228 | if (layer->vtable) { |
| 229 | layer->vtable->LayerClose(layer); |
| 230 | } |
| 231 | } |
| 232 | |
| 233 | /* |
| 234 | ** Retrieves a list of attributes available for this layer. Most sources also set the iteminfo array |
no test coverage detected