| 3012 | } |
| 3013 | |
| 3014 | int loadClass(classObj *class, layerObj *layer) |
| 3015 | { |
| 3016 | int state; |
| 3017 | mapObj *map=NULL; |
| 3018 | |
| 3019 | class->layer = (layerObj *) layer; |
| 3020 | if(layer && layer->map) map = layer->map; |
| 3021 | |
| 3022 | for(;;) { |
| 3023 | switch(msyylex()) { |
| 3024 | case(CLASS): |
| 3025 | break; /* for string loads */ |
| 3026 | case(DEBUG): |
| 3027 | if((class->debug = getSymbol(3, MS_ON,MS_OFF, MS_NUMBER)) == -1) return(-1); |
| 3028 | if(class->debug == MS_NUMBER) class->debug = (int) msyynumber; |
| 3029 | break; |
| 3030 | case(EOF): |
| 3031 | msSetError(MS_EOFERR, NULL, "loadClass()"); |
| 3032 | return(-1); |
| 3033 | case(END): |
| 3034 | return(0); |
| 3035 | break; |
| 3036 | case(EXPRESSION): |
| 3037 | if(loadExpression(&(class->expression)) == -1) return(-1); /* loadExpression() cleans up previously allocated expression */ |
| 3038 | if(msyysource == MS_URL_TOKENS) { |
| 3039 | if(msValidateParameter(class->expression.string, msLookupHashTable(&(class->validation), "expression"), msLookupHashTable(&(layer->validation), "expression"), msLookupHashTable(&(map->web.validation), "expression"), NULL) != MS_SUCCESS) { |
| 3040 | msSetError(MS_MISCERR, "URL-based EXPRESSION configuration failed pattern validation." , "loadClass()"); |
| 3041 | freeExpression(&(class->expression)); |
| 3042 | return(-1); |
| 3043 | } |
| 3044 | } |
| 3045 | break; |
| 3046 | case(GROUP): |
| 3047 | if(getString(&class->group) == MS_FAILURE) return(-1); /* getString() cleans up previously allocated string */ |
| 3048 | if(msyysource == MS_URL_TOKENS) { |
| 3049 | if(msValidateParameter(class->group, msLookupHashTable(&(class->validation), "group"), msLookupHashTable(&(layer->validation), "group"), msLookupHashTable(&(map->web.validation), "group"), NULL) != MS_SUCCESS) { |
| 3050 | msSetError(MS_MISCERR, "URL-based GROUP configuration failed pattern validation." , "loadClass()"); |
| 3051 | msFree(class->group); class->group=NULL; |
| 3052 | return(-1); |
| 3053 | } |
| 3054 | } |
| 3055 | break; |
| 3056 | case(KEYIMAGE): |
| 3057 | if(getString(&class->keyimage) == MS_FAILURE) return(-1); /* getString() cleans up previously allocated string */ |
| 3058 | if(msyysource == MS_URL_TOKENS) { |
| 3059 | if(msValidateParameter(class->keyimage, msLookupHashTable(&(class->validation), "keyimage"), msLookupHashTable(&(layer->validation), "keyimage"), msLookupHashTable(&(map->web.validation), "keyimage"), NULL) != MS_SUCCESS) { |
| 3060 | msSetError(MS_MISCERR, "URL-based KEYIMAGE configuration failed pattern validation." , "loadClass()"); |
| 3061 | msFree(class->keyimage); class->keyimage=NULL; |
| 3062 | return(-1); |
| 3063 | } |
| 3064 | } |
| 3065 | break; |
| 3066 | case(LABEL): |
| 3067 | class->label.size = MS_MEDIUM; /* only set a default if the LABEL section is present */ |
| 3068 | if(loadLabel(&(class->label)) == -1) return(-1); |
| 3069 | break; |
| 3070 | case(MAXSCALE): |
| 3071 | case(MAXSCALEDENOM): |
no test coverage detected