INCLUDE capability added...

Sean Gillies sgillies at FRII.COM
Thu Jul 6 15:10:59 EDT 2006


Fernando,

Mapscript already has everything you need to create new map objects.  
It does *not* have a general capability for serialization, but that's  
something you can get from your favorite language, no?

cheers,
Sean


On Jul 6, 2006, at 7:54 AM, Fernando Simon wrote:

> Hi Steve,
>     It's really good enhancement. Just a last question. Can we add  
> this
> for Mapscript?
>     Using a new parameter/attribute "include" for objects? I know that
> this issue will be more complicated because we need to force to  
> include
> just full objects or append right objects, and after parse again this
> definitions for new objects, like "refresh" for objects.
>      Best regards.
>
> Fernando Simon
>
>
> Steve Lime wrote:
>> Good questions.
>>
>> 1) The one benefit of leaving this functionality in the lexer is  
>> that it works anywhere. You switch buffers within whatever parent  
>> object you where in when the include was encountered and when you  
>> hit an EOF you revert to the parent buffer. Syntax checking should  
>> still work. Of course this needs to be verified...
>>
>> 2) Yes, you can nest includes. This all works by using a buffer  
>> stack that flex manages. The size of that stack is pre-determined  
>> (I know, another static array) at the moment but that's probably  
>> ok as there are practical limits on include depth (I wouldn't  
>> think more than 2 would be very useful). It's set to 5 now.
>>
>> Steve
>>
>>
>>>>> Fernando Simon <fsimon at univali.br> 07/06/06 8:10 AM >>>
>>>>>
>> Hi all,
>>     It's a very good improvement  for Mapfiles, but I have just a  
>> little
>> questions.
>>     The "INCLUDE" will just accept full objects (layers, symbols,
>> legend) or can I use to append definitions, like:
>> LAYER
>>         TYPE POINT
>>         STATUS DEFAULT
>>         INCLUDE "features_layer.lyr"
>>         INCLUDE "class_layer.cls"
>> END
>>
>>      The "features_layer.lyr" is:
>> FEATURE
>>     POINTS 10 10 40 20 300 300 400 10 10 400 END
>> END
>>
>>      And "class_layer.cls", is:
>> CLASS
>>     NAME 'Church'
>>     COLOR 0 0 0
>>     SYMBOL 'square'
>>     SIZE 7
>>     STYLE
>>         SYMBOL "square"
>>         SIZE 5
>>         COLOR 255 255 255
>>     END
>>     STYLE
>>         SYMBOL "square"
>>         SIZE 3
>>         COLOR 0 0 255
>>     END
>> END
>>
>>     Another question, can I use and include with another include  
>> inside?
>>     Best regards.
>>
>> Fernando Simon
>>
>>
>>
>> Daniel Morissette wrote:
>>
>>> Cool!
>>>
>>> This may not warrant a RFC, but could you please at least create  
>>> a bug
>>> report to document the enhancement, when it was added, what the
>>> implications and limitations are, etc. (basically what you wrote in
>>> your email).
>>>
>>> Sorry to be a pain about this, but it's always easier to point users
>>> to bug reports or RFCs in release notes than having to tell them to
>>> dig through the list archives to find the information (that's  
>>> assuming
>>> they are registered and able to reach the list archives).
>>>
>>> Daniel
>>>
>>> Steve Lime wrote:
>>>
>>>> Hi all: I sat down and actually read the Flex manual last night and
>>>> discovered a simple ability to support INCLUDEd files. It's
>>>> implemented within the lexer so doesn't impact any of the C source.
>>>> Only a basic implementation is in place but it seems to work  
>>>> nicely,
>>>> so now you can do stuff like:
>>>>
>>>> MAP
>>>>   NAME 'include'
>>>>   EXTENT 0 0 500 500
>>>>   SIZE 250 250
>>>>     INCLUDE "test_include_symbols.map"
>>>>   INCLUDE "test_include_layer.map"
>>>> END
>>>>
>>>> where test_include_symbols.map contains:
>>>>
>>>>   SYMBOL
>>>>     NAME 'square'
>>>>     TYPE VECTOR
>>>>     FILLED TRUE
>>>>     POINTS 0 0 0 1 1 1 1 0 0 0 END
>>>>   END
>>>>
>>>> and test_include_layer.map contains:
>>>>
>>>>   LAYER
>>>>     TYPE POINT
>>>>     STATUS DEFAULT
>>>>     FEATURE
>>>>       POINTS 10 10 40 20 300 300 400 10 10 400 END
>>>>     END
>>>>     CLASS
>>>>       NAME 'Church'
>>>>       COLOR 0 0 0
>>>>       SYMBOL 'square'
>>>>       SIZE 7
>>>>       STYLE
>>>>         SYMBOL "square"
>>>>         SIZE 5
>>>>         COLOR 255 255 255
>>>>       END
>>>>       STYLE
>>>>         SYMBOL "square"
>>>>         SIZE 3
>>>>         COLOR 0 0 255
>>>>       END
>>>>     END
>>>>   END
>>>>
>>>> I think this could be extended to non-filebased sources but this'll
>>>> do for now. Some caveats:
>>>>
>>>>   - the filename must be double qouted for the moment
>>>>   - I'm sure there will be some pathing issues
>>>>   - I'm not sure everything (especially file handles) is being
>>>> cleaned up properly yet
>>>>   - includes are never written when the mapObj is written to  
>>>> disk (I
>>>> don't think it's necessary or even possible to do so)
>>>>
>>>> Anyway, it was simple to add and will be simple to back out if
>>>> necessary. Figured it was worth testing since it is backwards
>>>> compatible.
>>>>
>>>> Steve
>>>>
>>>>
>>>
>>
>>

---
Sean Gillies
http://zcologia.com



More information about the mapserver-dev mailing list