| 3925 | } |
| 3926 | |
| 3927 | int msUpdateLayerFromString(layerObj *layer, char *string, int url_string) |
| 3928 | { |
| 3929 | int j, k; |
| 3930 | |
| 3931 | if(!layer || !string) return MS_FAILURE; |
| 3932 | |
| 3933 | msAcquireLock( TLOCK_PARSER ); |
| 3934 | |
| 3935 | if(url_string) |
| 3936 | msyystate = MS_TOKENIZE_URL_STRING; |
| 3937 | else |
| 3938 | msyystate = MS_TOKENIZE_STRING; |
| 3939 | msyystring = string; |
| 3940 | msyylex(); /* sets things up, but doesn't process any tokens */ |
| 3941 | |
| 3942 | msyylineno = 1; /* start at line 1 */ |
| 3943 | |
| 3944 | if(loadLayer(layer, layer->map) == -1) { |
| 3945 | msReleaseLock( TLOCK_PARSER ); |
| 3946 | return MS_FAILURE; /* parse error */; |
| 3947 | } |
| 3948 | msReleaseLock( TLOCK_PARSER ); |
| 3949 | |
| 3950 | msyylex_destroy(); |
| 3951 | |
| 3952 | /* step through classes to resolve symbol names */ |
| 3953 | for(j=0; j<layer->numclasses; j++) { |
| 3954 | |
| 3955 | /* class styles */ |
| 3956 | for(k=0; k<layer->class[j]->numstyles; k++) { |
| 3957 | if(layer->class[j]->styles[k]->symbolname) { |
| 3958 | if((layer->class[j]->styles[k]->symbol = msGetSymbolIndex(&(layer->map->symbolset), layer->class[j]->styles[k]->symbolname, MS_TRUE)) == -1) { |
| 3959 | msSetError(MS_MISCERR, "Undefined symbol \"%s\" in class %d, style %d of layer %s.", "msUpdateLayerFromString()", layer->class[j]->styles[k]->symbolname, j, k, layer->name); |
| 3960 | return MS_FAILURE; |
| 3961 | } |
| 3962 | } |
| 3963 | } |
| 3964 | |
| 3965 | /* label styles */ |
| 3966 | for(k=0; k<layer->class[j]->label.numstyles; k++) { |
| 3967 | if(layer->class[j]->label.styles[k]->symbolname) { |
| 3968 | if((layer->class[j]->label.styles[k]->symbol = msGetSymbolIndex(&(layer->map->symbolset), layer->class[j]->label.styles[k]->symbolname, MS_TRUE)) == -1) { |
| 3969 | msSetError(MS_MISCERR, "Undefined symbol \"%s\" in class %d, label style %d of layer %s.", |
| 3970 | "msUpdateLayerFromString()", layer->class[j]->label.styles[k]->symbolname, j, k, layer->name); |
| 3971 | return MS_FAILURE; |
| 3972 | } |
| 3973 | } |
| 3974 | } |
| 3975 | } |
| 3976 | |
| 3977 | return MS_SUCCESS; |
| 3978 | } |
| 3979 | |
| 3980 | static void writeLayer(FILE *stream, int indent, layerObj *layer) |
| 3981 | { |
no test coverage detected