Added Bee source writer (both for inidividual classes and for project sources) jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 14 Apr 2015 14:58:44 +0100
branchjv
changeset 3850 461c0b054a4f
parent 3843 9716dc3d2143
child 3851 525e62236712
Added Bee source writer (both for inidividual classes and for project sources) This makes exporting code to Bee a lot easier.
BeeProjectSourceWriter.st
BeeSourceWriter.st
ClassInitializeChange.st
DataBaseSourceCodeManagerUtilities.st
Make.proto
Make.spec
MethodRemoveChangeNotificationParameter.st
TraitClassTraitDefinitionChange.st
TraitDefinitionChange.st
VSEFileSourceWriter.st
VisualAgeChunkFileSourceWriter.st
abbrev.stc
bc.mak
extensions.st
libInit.cc
stx_libbasic3.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BeeProjectSourceWriter.st	Tue Apr 14 14:58:44 2015 +0100
@@ -0,0 +1,160 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libbasic3' }"
+
+"{ NameSpace: Smalltalk }"
+
+Object subclass:#BeeProjectSourceWriter
+	instanceVariableNames:'projectDefinitionClass classesToBeInitialized'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Kernel-Classes-Support'
+!
+
+!BeeProjectSourceWriter class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+! !
+
+!BeeProjectSourceWriter class methodsFor:'simple API'!
+
+fileOut:aClass on:aStream
+    self new fileOut:aClass on:aStream
+
+    "Modified: / 14-04-2015 / 13:52:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BeeProjectSourceWriter methodsFor:'source writing'!
+
+fileOut:packageID on:aStream
+    |classesToFileout methodsToFileOut |
+
+    projectDefinitionClass := packageID asPackageId projectDefinitionClass.
+    classesToBeInitialized := OrderedCollection new.
+
+    aStream lineEndCRLF.
+
+    "/ make sure that everything is loaded.
+    projectDefinitionClass notNil ifTrue:[
+        projectDefinitionClass autoload.
+        projectDefinitionClass ensureFullyLoaded.
+        classesToFileout := Smalltalk allClassesInPackage:packageID.
+    ] ifFalse:[
+        classesToFileout := Smalltalk allClassesInPackage:packageID.
+        classesToFileout := classesToFileout collect:[:each | each autoload].
+    ].
+
+    classesToFileout := classesToFileout reject:[:cls | cls isSubclassOf: ProjectDefinition ].
+    classesToFileout topologicalSort:[:a :b | b isSubclassOf:a].
+
+    classesToFileout do:[:cls | 
+        cls isPrivate ifTrue:[
+            self error:'Cannot file out private class: ',cls name.
+        ].
+    ].
+
+    methodsToFileOut := projectDefinitionClass extensions.
+
+    self activityNotification:'checking for unportable unicode...'.
+    classesToFileout do:[:eachClass |
+        self ensureNoUnicodeInClass:eachClass
+    ].
+    methodsToFileOut do:[:eachClass |
+        self ensureNoUnicodeInMethod:eachClass
+    ].
+
+    self fileOutHeaderOn:aStream.
+    self fileOutClasses: classesToFileout on: aStream.
+    self fileOutExtensions: methodsToFileOut on: aStream.
+
+    "Created: / 14-04-2015 / 13:42:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutClasses: classes on: stream
+    | writer |
+
+    writer := BeeSourceWriter new.
+    classes do:[:class |
+        self activityNotification:'exporting ', class name,'...'.
+        writer fileOut:class on:stream withTimeStamp:false withInitialize:false withDefinition:true methodFilter:[:m | false]
+    ].
+    classes do:[:class |
+        self activityNotification:'exporting ', class name,'...'.
+        writer fileOut:class on:stream withTimeStamp:false withInitialize:false withDefinition:false methodFilter:[:m | true]
+    ].
+
+    "Created: / 14-04-2015 / 13:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutExtensions: methods on:stream
+    | writer |
+
+    writer := BeeSourceWriter new.
+    self activityNotification:'exporting extensions...'.
+    methods do:[:eachMethod |
+        writer fileOutMethods:methods on:stream.
+        stream cr.
+    ]
+
+    "Modified: / 14-04-2015 / 13:51:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutHeaderOn: aStream
+
+    aStream nextPutLine:'"'.
+    aStream nextPutLine:''.
+    aStream nextPutLine:'        __________________________________________________'.
+    aStream nextPutLine:'        Author: ?'.
+    aStream nextPutLine:'        Project name: ?'.
+    aStream nextPutLine:'        Version: ?'.
+    aStream nextPutLine:'        Timestamp: ?'.
+    aStream nextPutLine:'        Description: ?'.
+    aStream nextPutLine:'        __________________________________________________'.
+    aStream nextPutLine:'"'.
+
+    "Created: / 14-04-2015 / 13:42:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BeeProjectSourceWriter methodsFor:'utilities'!
+
+ensureNoUnicodeInClass:aClass
+    "/ check if we need UTF8 encoding
+    aClass withAllPrivateClasses do:[:cls |
+         cls instAndClassMethods contains:[:m |
+            self ensureNoUnicodeInMethod:m
+         ]
+    ].
+!
+
+ensureNoUnicodeInMethod:aMethod
+    |src|
+
+    src := aMethod source.
+    src isNil ifTrue:[
+        self error:'missing source in ',aMethod whoString
+    ].
+    src asSingleByteStringIfPossible isWideString ifTrue:[
+        self error:(aMethod whoString , ' contains unicode strings or character contants. Cannot be exported to VSE')
+    ].
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BeeSourceWriter.st	Tue Apr 14 14:58:44 2015 +0100
@@ -0,0 +1,230 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libbasic3' }"
+
+"{ NameSpace: Smalltalk }"
+
+SmalltalkChunkFileSourceWriter subclass:#BeeSourceWriter
+	instanceVariableNames:'timestamp'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Kernel-Classes-Support'
+!
+
+!BeeSourceWriter class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+! !
+
+!BeeSourceWriter class methodsFor:'simple API'!
+
+fileOut:aClass on:aStream
+    self fileOut:aClass on:aStream withTimeStamp:false
+        withInitialize:true withDefinition:true
+        methodFilter:nil encoder:nil
+
+    "Created: / 14-04-2015 / 13:12:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BeeSourceWriter methodsFor:'source writing'!
+
+fileOut:aClass on:outStreamArg withTimeStamp:stampIt withInitialize:initIt withDefinition:withDefinition methodFilter:methodFilter encoder:encoderOrNil
+    timestamp := Timestamp now printStringFormat:'%d/%m/%y %H:%M:%S'.
+    super fileOut:aClass on:outStreamArg withTimeStamp:stampIt withInitialize:initIt withDefinition:withDefinition methodFilter:methodFilter encoder:encoderOrNil
+
+    "Created: / 14-04-2015 / 12:26:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutAllDefinitionsOf:aNonMetaClass on:aStream withNameSpace: withNameSpacePragma
+    "append expressions on aStream, which defines myself and all of my private classes."
+
+
+    self fileOutDefinitionOf:aNonMetaClass on:aStream withNameSpace: withNameSpacePragma.
+
+    "/ self fileOutDefinitionOf:aNonMetaClass on:aStream.
+    "/ aStream nextPutChunkSeparator. 
+    aStream cr.
+
+    "/
+    "/ optional classInstanceVariables
+    "/
+    aNonMetaClass class instanceVariableString isBlank ifFalse:[
+        self fileOutClassInstVarDefinitionOf:aNonMetaClass on:aStream
+    ].
+
+    "/ here, the full nameSpace prefixes are output,
+    "/ to avoid confusing stc 
+    "/ (which otherwise could not find the correct superclass)
+    "/
+    Class fileOutNameSpaceQuerySignal answer:false do:[
+        Class forceNoNameSpaceQuerySignal answer:true do:[
+            aNonMetaClass privateClassesSorted do:[:aClass |
+                 self fileOutAllDefinitionsOf:aClass on:aStream withNameSpace: false
+            ]
+        ]
+    ].
+
+    "Created: / 14-04-2015 / 13:02:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutCategory:aCategory of:aClass except:skippedMethods only:savedMethods methodFilter:methodFilter on:aStream
+    "file out all methods belonging to aCategory, aString onto aStream.
+     If skippedMethods is nonNil, those are not saved.
+     If savedMethods is nonNil, only those are saved.
+     If both are nil, all are saved. See version-method handling in
+     fileOut for what this is needed."
+
+    |sortedSelectors interestingMethods prjDef|
+
+    interestingMethods := OrderedCollection new.
+    aClass methodsDo:[:each |
+        | wanted method shadowed |
+
+        method := each.
+        (methodsAlreadySaved includes:method) ifFalse:[
+            (aCategory = method category) ifTrue:[
+                wanted := methodFilter isNil or:[methodFilter value:method].
+                wanted ifFalse:[ 
+                    "/ care for methods which have been shadowed by an extension from another package!!
+                    "/ The problem is that we cannot easily introspect the filter, so we cannot know
+                    "/ if the filter is for package or not. In most (all?) cases it is as this method
+                    "/ is mostly used by source code management, so if the filter filters method out,
+                    "/ try afain for possibly shadowed method.
+                    methodFilter notNil ifTrue:[ 
+                        shadowed := method shadowedMethod.
+                        shadowed notNil ifTrue:[ 
+                            wanted := methodFilter value: shadowed.
+                        ].
+                    ].
+                ].
+                wanted ifTrue:[
+                    skippedMethods notNil ifTrue:[
+                        wanted := (skippedMethods includesIdentical:method) not
+                    ] ifFalse:[
+                        wanted := savedMethods isNil or:[ savedMethods includesIdentical:method ].
+                    ].
+                    wanted ifTrue:[
+                        (method selector isSymbol) ifTrue:[
+                            interestingMethods add:method
+                        ] ifFalse:[
+                            Transcript showCR:'skipping non-symbol method ', method selector printString.
+                        ].
+                    ].
+                ]
+            ]
+        ]
+    ].
+
+    interestingMethods notEmpty ifTrue:[
+        "/
+        "/ sort by selector
+        "/
+        sortedSelectors := interestingMethods collect:[:m | aClass selectorAtMethod:m].
+        sortedSelectors sortWith:interestingMethods.
+
+        generatingSourceForOriginal == true ifTrue:[
+            "/ care for methods which have been shadowed by an extension from another package!!
+            (prjDef := aClass theNonMetaclass projectDefinitionClass) notNil ifTrue:[
+                prjDef hasSavedOverwrittenMethods ifTrue:[
+                    interestingMethods := interestingMethods collect:[:m |
+                                                |originalOrNil|
+                                                
+                                                (m package ~~ aClass package) ifTrue:[ 
+                                                    originalOrNil := prjDef savedOverwrittenMethodForClass:aClass selector:m selector.
+                                                    originalOrNil notNil ifTrue:[ 
+                                                        1.
+                                                        self breakPoint:#cg 
+                                                    ].
+                                                ].
+                                                originalOrNil ? m
+                                          ].
+                ]
+            ].
+        ].
+
+        interestingMethods do:[:eachMethod |
+            self fileOutMethod:eachMethod on:aStream.
+            methodsAlreadySaved add:eachMethod.
+        ].
+    ].
+
+    "Created: / 14-04-2015 / 13:05:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-04-2015 / 14:31:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutDefinitionOf:aNonMetaClass on:aStream withNameSpace: withNameSpacePragma
+    aStream nextPutAll: '!!ClassDefinition timeStamp:'; nextPutAll: timestamp storeString; nextPutAll: ' author: nil className: '; nextPutAll: aNonMetaClass name storeString; nextPutAll: '!!'.
+    aStream cr; cr.       
+    aNonMetaClass basicFileOutDefinitionOn:aStream withNameSpace: false withPackage: false.
+    aStream nextPut: $!!; cr.
+
+    "Created: / 14-04-2015 / 12:39:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutMethod:aMethod on:aStream
+    "file a single method onto aStream."
+
+    |source possiblyRewrittenSource rewriteQuery|
+
+    source := aMethod source asSingleByteStringIfPossible.
+    source isNil ifTrue:[
+        Class fileOutErrorSignal 
+            raiseRequestWith:aMethod mclass
+            errorString:' - no source for method: ', (aMethod displayString)
+    ] ifFalse:[
+        "/ hook to allow for just-in-time rewriting of a method's sourceCode while filing out
+        "/ used when saving version_XXX methods in a non-XXX sourceCodeManager
+        "/ (i.e. to rewrite all non-CVS version methods while saving into a CVS repository)
+        "/ this is required because we cannot save an SVN version method (dollar-ID-...-dollar) into a
+        "/ CVS repository without loosing the original string with the next checkout, because it also gets  
+        "/ expanded by CVS. The same is true vice-versa for CVS-Ids, which get clobbered by SVN.
+        "/ also used, when generating sourcecode for another Smalltalk system (VSE fileout)
+
+        rewriteQuery := AbstractSourceFileWriter methodSourceRewriteQuery new.
+        rewriteQuery method:aMethod source:source.
+        possiblyRewrittenSource := (rewriteQuery query) ? source.
+
+        aStream nextPutAll: '!!MethodDefinition timeStamp:'; nextPutAll: timestamp storeString; 
+                nextPutAll: ' author: ';    nextPutAll: 'Unknown' storeString;
+                nextPutAll: ' className: '; nextPutAll: aMethod mclass name storeString; 
+                nextPutAll: ' selector: ';  nextPutAll: aMethod selector storeString; 
+                nextPutAll: ' category: ';  nextPutAll: aMethod category storeString; 
+                nextPutAll: '!!'.
+        aStream cr.
+        aStream nextChunkPut:possiblyRewrittenSource.
+        aStream cr.
+    ].
+
+    "Created: / 14-04-2015 / 12:41:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-04-2015 / 14:48:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileOutMethods: methods on: stream
+
+    methods do:[:method| 
+        self fileOutMethod: method on: stream.
+    ]
+
+    "Created: / 14-04-2015 / 12:41:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/ClassInitializeChange.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/ClassInitializeChange.st	Tue Apr 14 14:58:44 2015 +0100
@@ -1,5 +1,18 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
 "{ Package: 'stx:libbasic3' }"
 
+"{ NameSpace: Smalltalk }"
+
 ClassChange subclass:#ClassInitializeChange
 	instanceVariableNames:''
 	classVariableNames:''
@@ -9,6 +22,20 @@
 
 !ClassInitializeChange class methodsFor:'documentation'!
 
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
 documentation
 "
     Change for class initialization chunk. Unlike DoItChange, 
--- a/DataBaseSourceCodeManagerUtilities.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/DataBaseSourceCodeManagerUtilities.st	Tue Apr 14 14:58:44 2015 +0100
@@ -1,5 +1,18 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
 "{ Package: 'stx:libbasic3' }"
 
+"{ NameSpace: Smalltalk }"
+
 SourceCodeManagerUtilities subclass:#DataBaseSourceCodeManagerUtilities
 	instanceVariableNames:''
 	classVariableNames:''
@@ -7,6 +20,21 @@
 	category:'System-SourceCodeManagement'
 !
 
+!DataBaseSourceCodeManagerUtilities class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+! !
 
 !DataBaseSourceCodeManagerUtilities class methodsFor:'documentation'!
 
--- a/Make.proto	Mon Apr 13 21:45:14 2015 +0100
+++ b/Make.proto	Tue Apr 14 14:58:44 2015 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/Make.proto,v 1.146 2015-01-27 20:35:44 cg Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic3.
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libjavascript
 
 
 # if you need any additional defines for embedded C code,
@@ -92,6 +92,13 @@
 
 
 
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+stx_libbasic3.$(O): $(shell hg root)/.hg/dirstate
+endif
+
 
 
 
@@ -137,6 +144,8 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)AbstractSourceCodeManager.$(O) AbstractSourceCodeManager.$(H): AbstractSourceCodeManager.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BeeProjectSourceWriter.$(O) BeeProjectSourceWriter.$(H): BeeProjectSourceWriter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BeeSourceWriter.$(O) BeeSourceWriter.$(H): BeeSourceWriter.st $(INCLUDE_TOP)/stx/libbasic/AbstractSourceFileWriter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SmalltalkChunkFileSourceWriter.$(H) $(STCHDR)
 $(OUTDIR)CallChain.$(O) CallChain.$(H): CallChain.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Change.$(O) Change.$(H): Change.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ChangeDeltaInformation.$(O) ChangeDeltaInformation.$(H): ChangeDeltaInformation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Mon Apr 13 21:45:14 2015 +0100
+++ b/Make.spec	Tue Apr 14 14:58:44 2015 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/Make.spec,v 1.97 2015-01-27 20:35:39 cg Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic3.
@@ -52,6 +52,8 @@
 
 COMMON_CLASSES= \
 	AbstractSourceCodeManager \
+	BeeProjectSourceWriter \
+	BeeSourceWriter \
 	CallChain \
 	Change \
 	ChangeDeltaInformation \
@@ -130,6 +132,8 @@
 
 COMMON_OBJS= \
     $(OUTDIR_SLASH)AbstractSourceCodeManager.$(O) \
+    $(OUTDIR_SLASH)BeeProjectSourceWriter.$(O) \
+    $(OUTDIR_SLASH)BeeSourceWriter.$(O) \
     $(OUTDIR_SLASH)CallChain.$(O) \
     $(OUTDIR_SLASH)Change.$(O) \
     $(OUTDIR_SLASH)ChangeDeltaInformation.$(O) \
--- a/MethodRemoveChangeNotificationParameter.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/MethodRemoveChangeNotificationParameter.st	Tue Apr 14 14:58:44 2015 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 2006 by eXept Software AG
               All Rights Reserved
@@ -61,5 +59,10 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libbasic3/MethodRemoveChangeNotificationParameter.st,v 1.3 2015-03-20 13:17:02 cg Exp $'
+!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !
 
--- a/TraitClassTraitDefinitionChange.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/TraitClassTraitDefinitionChange.st	Tue Apr 14 14:58:44 2015 +0100
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libbasic3' }"
 
+"{ NameSpace: Smalltalk }"
+
 ClassChange subclass:#TraitClassTraitDefinitionChange
 	instanceVariableNames:'baseTrait traitComposition'
 	classVariableNames:''
--- a/TraitDefinitionChange.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/TraitDefinitionChange.st	Tue Apr 14 14:58:44 2015 +0100
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libbasic3' }"
 
+"{ NameSpace: Smalltalk }"
+
 ClassChange subclass:#TraitDefinitionChange
 	instanceVariableNames:'baseTrait traitComposition category'
 	classVariableNames:''
--- a/VSEFileSourceWriter.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/VSEFileSourceWriter.st	Tue Apr 14 14:58:44 2015 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 2015 by eXept Software AG
               All Rights Reserved
--- a/VisualAgeChunkFileSourceWriter.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/VisualAgeChunkFileSourceWriter.st	Tue Apr 14 14:58:44 2015 +0100
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libbasic3' }"
 
+"{ NameSpace: Smalltalk }"
+
 SmalltalkChunkFileSourceWriter subclass:#VisualAgeChunkFileSourceWriter
 	instanceVariableNames:''
 	classVariableNames:''
--- a/abbrev.stc	Mon Apr 13 21:45:14 2015 +0100
+++ b/abbrev.stc	Tue Apr 14 14:58:44 2015 +0100
@@ -2,6 +2,8 @@
 # this file is needed for stc to be able to compile modules independently.
 # it provides information about a classes filename, category and especially namespace.
 AbstractSourceCodeManager AbstractSourceCodeManager stx:libbasic3 'System-SourceCodeManagement' 0
+BeeProjectSourceWriter BeeProjectSourceWriter stx:libbasic3 'Kernel-Classes-Support' 0
+BeeSourceWriter BeeSourceWriter stx:libbasic3 'Kernel-Classes-Support' 0
 CallChain CallChain stx:libbasic3 'System-Debugging-Support' 0
 Change Change stx:libbasic3 'System-Changes' 0
 ChangeDeltaInformation ChangeDeltaInformation stx:libbasic3 'System-Changes' 0
@@ -50,7 +52,6 @@
 SourceCodeManagerUtilitiesForContainerBasedManagers SourceCodeManagerUtilitiesForContainerBasedManagers stx:libbasic3 'System-SourceCodeManagement' 0
 SourceCodeManagerUtilitiesForWorkspaceBasedManagers SourceCodeManagerUtilitiesForWorkspaceBasedManagers stx:libbasic3 'System-SourceCodeManagement' 0
 StoreSourceCodeManager StoreSourceCodeManager stx:libbasic3 'System-SourceCodeManagement' 0
-VSEChunkFileSourceWriter VSEChunkFileSourceWriter stx:libbasic3 'Kernel-Classes-Support' 0
 VSEPackageFileSourceWriter VSEPackageFileSourceWriter stx:libbasic3 'Kernel-Classes-Support' 0
 ClassCategoryChange ClassCategoryChange stx:libbasic3 'System-Changes' 0
 ClassClassVariableChange ClassClassVariableChange stx:libbasic3 'System-Changes' 0
@@ -77,6 +78,7 @@
 MethodPackageChange MethodPackageChange stx:libbasic3 'System-Changes' 0
 MethodPrivacyChange MethodPrivacyChange stx:libbasic3 'System-Changes' 0
 MethodRemoveChange MethodRemoveChange stx:libbasic3 'System-Changes' 0
-VisualAgeChunkFileSourceWriter VisualAgeChunkFileSourceWriter stx:libbasic3 'Kernel-Classes-Support' 0
+TraitClassTraitDefinitionChange TraitClassTraitDefinitionChange stx:libbasic3 'System-Changes' 0
 TraitDefinitionChange TraitDefinitionChange stx:libbasic3 'System-Changes' 0
-TraitClassTraitDefinitionChange TraitClassTraitDefinitionChange stx:libbasic3 'System-Changes' 0
+VSEChunkFileSourceWriter VSEChunkFileSourceWriter stx:libbasic3 'Kernel-Classes-Support' 0
+VisualAgeChunkFileSourceWriter VisualAgeChunkFileSourceWriter stx:libbasic3 'Kernel-Classes-Support' 0
--- a/bc.mak	Mon Apr 13 21:45:14 2015 +0100
+++ b/bc.mak	Tue Apr 14 14:58:44 2015 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/bc.mak,v 1.126 2015-01-27 20:35:52 cg Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic3.
@@ -38,7 +38,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libjavascript
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMBOLS) -varPrefix=$(LIBNAME)
@@ -72,6 +72,8 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)AbstractSourceCodeManager.$(O) AbstractSourceCodeManager.$(H): AbstractSourceCodeManager.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BeeProjectSourceWriter.$(O) BeeProjectSourceWriter.$(H): BeeProjectSourceWriter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BeeSourceWriter.$(O) BeeSourceWriter.$(H): BeeSourceWriter.st $(INCLUDE_TOP)\stx\libbasic\AbstractSourceFileWriter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SmalltalkChunkFileSourceWriter.$(H) $(STCHDR)
 $(OUTDIR)CallChain.$(O) CallChain.$(H): CallChain.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Change.$(O) Change.$(H): Change.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ChangeDeltaInformation.$(O) ChangeDeltaInformation.$(H): ChangeDeltaInformation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -147,3 +149,12 @@
 $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)stx_libbasic3.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
--- a/extensions.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/extensions.st	Tue Apr 14 14:58:44 2015 +0100
@@ -162,7 +162,7 @@
 
 !stx_libbasic3 class methodsFor:'documentation'!
 
-extensionsVersion_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic3/extensions.st,v 1.17 2014-07-29 09:15:10 vrany Exp $'
+extensionsVersion_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !
-
--- a/libInit.cc	Mon Apr 13 21:45:14 2015 +0100
+++ b/libInit.cc	Tue Apr 14 14:58:44 2015 +0100
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvs/stx/stx/libbasic3/libInit.cc,v 1.112 2015-01-27 20:36:23 cg Exp $
+ * $Header$
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_libbasic3.
@@ -28,6 +28,8 @@
 OBJ snd; struct __vmData__ *__pRT__; {
 __BEGIN_PACKAGE2__("libstx_libbasic3", _libstx_libbasic3_Init, "stx:libbasic3");
 _AbstractSourceCodeManager_Init(pass,__pRT__,snd);
+_BeeProjectSourceWriter_Init(pass,__pRT__,snd);
+_BeeSourceWriter_Init(pass,__pRT__,snd);
 _CallChain_Init(pass,__pRT__,snd);
 _Change_Init(pass,__pRT__,snd);
 _ChangeDeltaInformation_Init(pass,__pRT__,snd);
--- a/stx_libbasic3.st	Mon Apr 13 21:45:14 2015 +0100
+++ b/stx_libbasic3.st	Tue Apr 14 14:58:44 2015 +0100
@@ -73,24 +73,28 @@
     "list packages which are mandatory as a prerequisite.
      This are packages containing superclasses of my classes and classes which
      are extended by myself.
-     They are mandatory, beacuse we need these packages as a prerequisite for loading and compiling.
+     They are mandatory, because we need these packages as a prerequisite for loading and compiling.
      This method is generated automatically,
      by searching along the inheritance chain of all of my classes."
 
     ^ #(
-        #'stx:libbasic'    "AbstractSourceFileWriter - superclass of ChangeSet::ClassSourceWriter "
+        #'stx:libbasic'    "AbstractSourceFileWriter - superclass of BeeSourceWriter"
     )
 !
 
 referencedPreRequisites
     "list packages which are a prerequisite, because they contain
      classes which are referenced by my classes.
-     We do not need these packages as a prerequisite for loading or compiling.
+     We do not need these packages as a prerequisite for compiling or loading,
+     however, a class from it may be referenced during execution and having it
+     unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
+     includes explicit checks for the package being present.
      This method is generated automatically,
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:libbasic2'    "HTMLUtilities - referenced by HTMLDocGenerator>>generateClassDocReferenceFor:text:autoloading: "
+        #'stx:libbasic2'    "HTMLUtilities - referenced by HTMLDocGenerator>>generateClassDocReferenceFor:text:autoloading:"
+        #'stx:libjavascript'    "HTMLDocGeneratorForJavaScript - referenced by HTMLDocGenerator>>printOutHTMLMethodProtocol:on:showClassName:classRef:picturePath:"
     )
 !
 
@@ -131,6 +135,8 @@
     ^ #(
         "<className> or (<className> attributes...) in load order"
         AbstractSourceCodeManager
+        BeeProjectSourceWriter
+        BeeSourceWriter
         CallChain
         Change
         ChangeDeltaInformation
@@ -179,7 +185,6 @@
         SourceCodeManagerUtilitiesForContainerBasedManagers
         SourceCodeManagerUtilitiesForWorkspaceBasedManagers
         StoreSourceCodeManager
-        (VSEChunkFileSourceWriter autoload)
         (VSEPackageFileSourceWriter autoload)
         ClassCategoryChange
         ClassClassVariableChange
@@ -206,15 +211,16 @@
         MethodPackageChange
         MethodPrivacyChange
         MethodRemoveChange
-        (VisualAgeChunkFileSourceWriter autoload)
+        (TraitClassTraitDefinitionChange autoload)
         (TraitDefinitionChange autoload)
-        (TraitClassTraitDefinitionChange autoload)
+        (VSEChunkFileSourceWriter autoload)
+        (VisualAgeChunkFileSourceWriter autoload)
     )
 !
 
 extensionMethodNames
-    "lists the extension methods which are to be included in the project.
-     Entries are pairwise elements, consisting of class-name and selector."
+    "list class/selector pairs of extensions.
+     A correponding method with real names must be present in my concrete subclasses"
 
     ^ #(
         UserPreferences historyManagerModificationLimit
@@ -299,6 +305,10 @@
     ^ '$Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.92 2015-02-21 11:15:56 cg Exp $'
 !
 
+version_HG
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '$Id: stx_libbasic3.st,v 1.92 2015-02-21 11:15:56 cg Exp $'
 ! !