[squeak-dev] SISS serialisation format?

H. Hirzel hannes.hirzel at gmail.com
Wed Aug 31 16:52:27 UTC 2016


On 8/31/16, Yoshiki Ohshima <Yoshiki.Ohshima at acm.org> wrote:
> On Tue, Aug 30, 2016 at 11:21 PM, H. Hirzel <hannes.hirzel at gmail.com>
> wrote:
>> Hello
>>
>> I understand that the SISS serialisation format has been used in the
>> Etoys 5.0 image to store quick guides. It is a plain text format.
>>
>> What does SISS stand for?
>
> I am really bad at naming things but Umezawa-san had an
> inter-implementation object exchange format called SIXX, based on XML;
> SISS was based on S-Expression instead of XML.
>>
>> Browsing the Etoys 5.0 image .....

>> To use SISS classes need to implement a method
>>
>>    sissExportSpecification
>>
>>
>> For example for Workspace it is
>>
>>
>> sissExportSpecification
>>
>>         ^ #(('contents' #sissGetContents)
>>                 ('bindings' #bindings)
>>                 ('acceptDroppedMorphs' #acceptsDroppingMorphForReference)
>>         )
>>
>>
>> And a method
>>
>> sissWriteValue
>>
>> Morph >> sissWriteValue
>> sissWriteValue
>>
>>         self prepareToBeSaved.
>>
>>
>> or
>>
>> Object>>sissWriteValue
>> sissWriteValue
>>         "Override if you wish"
>>
>>         ^self
>>
>>
>> PasteUpMorph>>sissWriteValue
>> sissWriteValue
>>         "Override if you wish"
>>
>>         | new |
>>         self prepareToBeSaved.
>>         new _ self clone.
>>         new privateSubmorphs: (submorphs reject: [:e |
>>                 (e isKindOf: SolidSugarSuppliesTab)
>>                         or: [(e isKindOf: Viewer)
>>                                 or: [(e isKindOf: SugarNavTab)
>>                                         or: [((e isKindOf: SystemWindow)
>> and: [(e model isKindOf: Workspace) not])
>>                                                 or: [(e isMemberOf:
>> FlapTab) and: [e isGlobalFlap]]]]]]).
>>         new instVarNamed: 'presenter' put: nil.
>>         new instVarNamed: 'worldState' put: nil.
>>         new privateExtension: self extension copy.
>>         new extension removeOtherProperties.
>>         self extension otherProperties keysDo: [:sym |
>>                 (#(commandKeySelectors lastKeystroke locked) includes:
>> sym) ifFalse: [
>>                         new setProperty: sym toValue: (self extension
>> valueOfProperty: sym)
>>                 ].
>>         ].
>>
>>         ^ new.
>>
>>
>>
>> Form>>
>> sissWriteValue
>>
>>         SISSDictionaryForScanning reduceFormDepth ifTrue: [
>>                 ^ (self asFormOfDepth: 8) hibernate.
>>         ].
>>         ^ self hibernate.
>>
>>
>>
>>
>>
>> An example of the format
>>
>> MSExpParser test1
>>
>>         | str1 str2 str3 |
>>         str1 _ '(script :name "testscript1:" :type "Player" :player "12"
>>                 (parameter :name "parameter" :type "Number" :position
>> "1")
>>                 (sequence
>>                         (loop :type "repeat"
>>                                 (initial (literal :value "0"))
>>                                 (increment (literal :value "1"))
>>                                 (test (send :type "Number"
>>                 (selector :selector "+")
>>                 (send :type "Number"
>>                         (selector :getter "x")
>>                         (literal :type "Player" :value "self"))
>>                 (literal :type "Number" :value "1")))
>>                                 (sequence
>>                                         (assign :type "Number"
>> :updating "Incr:" :property "x"
>>                                                 (literal :type
>> "Player" :value "4")
>>                                                 (send :type "Number"
>>                                                         (selector
>> :selector "+")
>>                                                         (literal :type
>> "Number" :value "244.0")
>>                                                         (literal :type
>> "Number" :value "1")))))))'.
>>
>>
>>
>> I understand that the SISS format has been used successfully in the
>> Etoys image to store quick guide projects.
>>
>> As far as Project saving is concerned it there a  difference between
>> Etoy Quick guide projects and regular Squeak Morphic projects?
>
> I can't remember for sure but the difference must be small.  I can't
> even locate etoys-dev image on my computer in front of me so it'd need
> some digging.

The Etoys 6 image contains a slightly refactored version according to
Tim Felgentreff.
http://files.squeak.org/etoys/6.0beta/Etoys6.0beta-7605-32bit/

Three class categories

('SISS-Core' SISSDictionaryForGuideBook SISSDictionaryForMorphCopying
SISSDictionaryForReading SISSDictionaryForScanning SISSProxy)

('SISS-Meta' MSExpParser MSExpTokenizer SExpAttributes SExpElement)

('Etoys-Squeakland-SISS-Serialization' ParseNodeBuilder)



>> Where can I find more information on the SISS format?
>
> I'd like to know about that, too^^;
>
> --
> -- Yoshiki
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SISS_in_Etoys6_beta_2016-08.png
Type: image/png
Size: 27925 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20160831/c5780fa1/SISS_in_Etoys6_beta_2016-08.png


More information about the Squeak-dev mailing list