Class.st
changeset 15947 edce1c1a0ab9
parent 15821 5ba671bedf2e
child 16020 fa71b75a7550
equal deleted inserted replaced
15946:45304252112b 15947:edce1c1a0ab9
   149      the sourceCodemanager is always getting the source for the classes correct version.
   149      the sourceCodemanager is always getting the source for the classes correct version.
   150      In contrast, the local file might be different from (edited in an external tool) in
   150      In contrast, the local file might be different from (edited in an external tool) in
   151      the meantime. You have been warned - better leave it false (the sourceCodemanager will
   151      the meantime. You have been warned - better leave it false (the sourceCodemanager will
   152      fill its cache and eventually be just as fast...)"
   152      fill its cache and eventually be just as fast...)"
   153 
   153 
   154     ^ TryLocalSourceFirst
   154     "JV: When smalltalk is not yet initialized, do use local sources
       
   155          because before that, SCM support may not be loaded and configured
       
   156          properly, leading to funny errors."
       
   157     ^ Smalltalk isInitialized not or:[TryLocalSourceFirst == true].
   155 
   158 
   156     "Created: 24.1.1996 / 19:55:35 / cg"
   159     "Created: 24.1.1996 / 19:55:35 / cg"
   157 !
   160 !
   158 
   161 
   159 tryLocalSourceFirst:aBoolean
   162 tryLocalSourceFirst:aBoolean
   362 
   365 
   363     |lines line|
   366     |lines line|
   364 
   367 
   365     lines := aMethodSourceString asCollectionOfLines.
   368     lines := aMethodSourceString asCollectionOfLines.
   366     lines do:[:l |
   369     lines do:[:l |
   367 	|i|
   370         |i|
   368 
   371 
   369 	i := l indexOfSubCollection:'$Header: '.
   372         i := l indexOfSubCollection:'$Header: '.
   370 	"JV @ 2009-12-13: Also search for '$Id: ' (because of SVN-only classes)"
   373         "JV @ 2009-12-13: Also search for '$Id: ' (because of SVN-only classes)"
   371 	i == 0 ifTrue:[
   374         i == 0 ifTrue:[
   372 	i := l indexOfSubCollection:'$Id: '].
   375         i := l indexOfSubCollection:'$Id: '].
   373 	i ~~ 0 ifTrue:[
   376         "JV @ 2013-07-18: Also search for '$Changeset: ' (because of Mercurial-only classes)"
   374 	    line := l copyFrom:i.
   377         i == 0 ifTrue:[
   375 	    i := line lastIndexOf:$$.
   378         i := l indexOfSubCollection:'$Changeset: '].
   376 	    i > 1 ifTrue:[
   379 
   377 		line := line copyTo:i.
   380         i ~~ 0 ifTrue:[
   378 	    ].
   381             line := l copyFrom:i.
   379 	    ^ line
   382             i := line lastIndexOf:$$.
   380 	]
   383             i > 1 ifTrue:[
       
   384                 line := line copyTo:i.
       
   385             ].
       
   386             ^ line
       
   387         ]
   381     ].
   388     ].
   382     ^ nil
   389     ^ nil
   383 
   390 
   384     "Created: / 15-10-1996 / 18:57:57 / cg"
   391     "Created: / 15-10-1996 / 18:57:57 / cg"
   385     "Modified: / 22-10-2008 / 20:29:50 / cg"
   392     "Modified: / 22-10-2008 / 20:29:50 / cg"
       
   393     "Modified: / 19-07-2013 / 23:32:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   386 ! !
   394 ! !
   387 
   395 
   388 !Class class methodsFor:'misc'!
   396 !Class class methodsFor:'misc'!
   389 
   397 
   390 template:aCategoryString
   398 template:aCategoryString
  1730 
  1738 
  1731     "Created: / 07-12-1995 / 13:16:46 / cg"
  1739     "Created: / 07-12-1995 / 13:16:46 / cg"
  1732     "Modified: / 05-12-2006 / 22:04:26 / cg"
  1740     "Modified: / 05-12-2006 / 22:04:26 / cg"
  1733 !
  1741 !
  1734 
  1742 
       
  1743 sourceCodeManagerFromBinaryRevision
       
  1744 
       
  1745     "Returns the source code manager that should be used for
       
  1746      source code access based in class's binary revision.
       
  1747      If not binary revision is available, then configured source
       
  1748      code manager is returned. If source code management
       
  1749      is disabled or particular source code manager is not enabled,
       
  1750      return nil.
       
  1751 
       
  1752      Source code manager for source access may differ from
       
  1753      configured source code manager:
       
  1754 
       
  1755      - #sourceCodeManager returns the manager use has configured for
       
  1756        this class using preferences
       
  1757 
       
  1758      - #sourceCodeManagerForSourceAccess is the manager used when asking
       
  1759        for class source code. It compares version_XXX methods with
       
  1760        class's binary revision and. When method_XXX matches the
       
  1761        binary revision string, XXX source code manager is returned,
       
  1762        as this class has been likely compiled from a source checked out
       
  1763        using returned source code manager
       
  1764 
       
  1765     CAVEAT: Now, the code expects that the revision string is in
       
  1766     format '$revision ident$SCM'. It won't work for managers that
       
  1767     does not use dollar expansion. For, only CVS, SVN and Perforce
       
  1768     are used so this code should work
       
  1769     "
       
  1770 
       
  1771 
       
  1772 
       
  1773 
       
  1774     revision ifNil:[^self sourceCodeManager].
       
  1775 
       
  1776     AbstractSourceCodeManager availableManagers do:[:mgr|
       
  1777         (revision endsWith: mgr managerTypeNameShort) ifTrue:[
       
  1778             ^mgr
       
  1779         ]
       
  1780     ].
       
  1781 
       
  1782     "binary revision is not nil and we haven't found source code manager.
       
  1783      This may happen when (i) given source code manager is not available
       
  1784      or (ii) source version methods are somehow corrupted.
       
  1785 
       
  1786      Let's be strict about it for now and throw and error. More relaxed
       
  1787      version may simply return nil"
       
  1788 
       
  1789 "/    self error:'Cannot find source code manager for source access ' ,
       
  1790 "/               '(manager yet not loaded or binary revision corrupted)'
       
  1791 "/        mayProceed: true.
       
  1792 
       
  1793     ^nil
       
  1794 
       
  1795 
       
  1796     "
       
  1797         Object sourceCodeManager
       
  1798         Object sourceCodeManagerForSourceAccess
       
  1799 
       
  1800         JavaVM sourceCodeManager
       
  1801         JavaVM sourceCodeManagerForSourceAccess
       
  1802     "
       
  1803 
       
  1804     "Created: / 06-10-2011 / 09:33:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1805 !
       
  1806 
  1735 subclasses
  1807 subclasses
  1736     "return a collection of the direct subclasses of the receiver"
  1808     "return a collection of the direct subclasses of the receiver"
  1737 
  1809 
  1738     "/ use cached information (avoid class hierarchy search), if possible
  1810     "/ use cached information (avoid class hierarchy search), if possible
  1739     (subclasses isNil
  1811     (subclasses isNil
  1804     self withAllPrivateClassesDo:[:cls | coll add:cls].
  1876     self withAllPrivateClassesDo:[:cls | coll add:cls].
  1805     ^ coll
  1877     ^ coll
  1806 
  1878 
  1807     "Created: / 18-07-2011 / 09:14:38 / cg"
  1879     "Created: / 18-07-2011 / 09:14:38 / cg"
  1808 ! !
  1880 ! !
  1809 
       
  1810 
  1881 
  1811 !Class methodsFor:'adding & removing'!
  1882 !Class methodsFor:'adding & removing'!
  1812 
  1883 
  1813 removeFromSystem
  1884 removeFromSystem
  1814     "ST-80 compatibility
  1885     "ST-80 compatibility
  2624 !
  2695 !
  2625 
  2696 
  2626 fileOutDefinitionOn:aStream
  2697 fileOutDefinitionOn:aStream
  2627     "append an expression on aStream, which defines myself."
  2698     "append an expression on aStream, which defines myself."
  2628 
  2699 
  2629     ^ self basicFileOutDefinitionOn:aStream withNameSpace:false
  2700     ^ self basicFileOutDefinitionOn:aStream withNameSpace:true
  2630 
  2701 
  2631     "Modified: 4.1.1997 / 20:55:18 / cg"
  2702     "Modified: / 04-01-1997 / 20:55:18 / cg"
       
  2703     "Modified: / 04-02-2014 / 16:49:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2632 !
  2704 !
  2633 
  2705 
  2634 fileOutIn:aDirectoryName
  2706 fileOutIn:aDirectoryName
  2635     "create a file 'class.st' consisting of all methods in self in
  2707     "create a file 'class.st' consisting of all methods in self in
  2636      directory aDirectoryName (ignoring any directory setting in
  2708      directory aDirectoryName (ignoring any directory setting in
  4231     "return the revision-ID from which the class was stc-compiled;
  4303     "return the revision-ID from which the class was stc-compiled;
  4232      nil if its an autoloaded or filedIn class.
  4304      nil if its an autoloaded or filedIn class.
  4233      If a classes binary is up-to-date w.r.t. the source repository,
  4305      If a classes binary is up-to-date w.r.t. the source repository,
  4234      the returned string is the same as the one returned by #revision."
  4306      the returned string is the same as the one returned by #revision."
  4235 
  4307 
  4236     |owner info c|
  4308     |owner manager info c|
  4237 
  4309 
  4238     (owner := self owningClass) notNil ifTrue:[^ owner binaryRevision].
  4310     (owner := self owningClass) notNil ifTrue:[^ owner binaryRevision].
  4239 
  4311 
  4240     revision notNil ifTrue:[
  4312     revision notNil ifTrue:[
  4241 	c := revision first.
  4313         c := revision first.
  4242 	c == $$ ifTrue:[
  4314         c == $$ ifTrue:[
  4243 	    info := Class revisionInfoFromString:revision.
  4315             manager := self sourceCodeManagerFromBinaryRevision.
  4244 	    info isNil ifTrue:[^ '0'].
  4316             manager notNil ifTrue:[
  4245 	    ^ (info revision) ? '0'.
  4317                 info := manager revisionInfoFromString:revision.
  4246 	].
  4318             ].
  4247 	c isDigit ifFalse:[
  4319             info isNil ifTrue:[^ '0'].
  4248 	    ^ '0'
  4320             ^ (info revision) ? '0'.
  4249 	].
  4321         ].
       
  4322         c isDigit ifFalse:[
       
  4323             ^ '0'
       
  4324         ].
  4250     ].
  4325     ].
  4251 
  4326 
  4252     ^ revision
  4327     ^ revision
  4253 
  4328 
  4254     "
  4329     "
  4260      to find all classes which are not up-to-date:
  4335      to find all classes which are not up-to-date:
  4261 
  4336 
  4262      |classes|
  4337      |classes|
  4263 
  4338 
  4264      classes := Smalltalk allClasses
  4339      classes := Smalltalk allClasses
  4265 		    select:[:cls | cls binaryRevision notNil and:[cls binaryRevision ~= cls revision]].
  4340                     select:[:cls | cls binaryRevision notNil and:[cls binaryRevision ~= cls revision]].
  4266      SystemBrowser browseClasses:classes title:'classes which are not up-to-date'
  4341      SystemBrowser browseClasses:classes title:'classes which are not up-to-date'
  4267     "
  4342     "
  4268 
  4343 
  4269     "Created: / 07-12-1995 / 10:58:47 / cg"
  4344     "Created: / 07-12-1995 / 10:58:47 / cg"
  4270     "Modified: / 01-04-1997 / 23:33:01 / stefan"
  4345     "Modified: / 01-04-1997 / 23:33:01 / stefan"
  4271     "Modified: / 22-10-2008 / 20:37:05 / cg"
  4346     "Modified: / 22-10-2008 / 20:37:05 / cg"
       
  4347     "Modified: / 23-01-2012 / 19:38:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  4272 !
  4348 !
  4273 
  4349 
  4274 binaryRevisionString
  4350 binaryRevisionString
  4275     "return the revision-ID from which the class was stc-compiled;
  4351     "return the revision-ID from which the class was stc-compiled;
  4276      nil if its an autoloaded or filedIn class.
  4352      nil if its an autoloaded or filedIn class.
  4322      or the fallBack (for backward compatibility)"
  4398      or the fallBack (for backward compatibility)"
  4323 
  4399 
  4324     |owner|
  4400     |owner|
  4325 
  4401 
  4326     (owner := self owningClass) notNil ifTrue:[^ owner findVersionMethod].
  4402     (owner := self owningClass) notNil ifTrue:[^ owner findVersionMethod].
  4327     ^ self findVersionMethodOfManager:self sourceCodeManager
  4403     ^ self findVersionMethodOfManager:self sourceCodeManagerFromBinaryRevision
  4328 
  4404 
  4329     "
  4405     "
  4330      Smalltalk allClassesDo:[:cls |
  4406      Smalltalk allClassesDo:[:cls |
  4331 	Transcript show:cls name; show:' -> '; showCR:cls findVersionMethod
  4407         Transcript show:cls name; show:' -> '; showCR:cls findVersionMethod
  4332      ].
  4408      ].
  4333 
  4409 
  4334      Number findVersionMethod
  4410      Number findVersionMethod
  4335      FileDirectory findVersionMethod
  4411      FileDirectory findVersionMethod
  4336      Metaclass findVersionMethod
  4412      Metaclass findVersionMethod
  4337      Class findVersionMethod
  4413      Class findVersionMethod
  4338     "
  4414     "
  4339 
  4415 
  4340     "Modified: / 19-04-2011 / 13:30:42 / cg"
  4416     "Modified: / 19-04-2011 / 13:30:42 / cg"
       
  4417     "Modified: / 19-07-2013 / 22:11:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  4341 !
  4418 !
  4342 
  4419 
  4343 findVersionMethodOfManager:aSourceCodemanagerOrNil
  4420 findVersionMethodOfManager:aSourceCodemanagerOrNil
  4344     "{ Pragma: +optSpace }"
  4421     "{ Pragma: +optSpace }"
  4345 
  4422 
  4796 	time           - the time when the logical revision was checked in
  4873 	time           - the time when the logical revision was checked in
  4797 	fileName       - the classes source file name
  4874 	fileName       - the classes source file name
  4798 	repositoryPath - the classes source container
  4875 	repositoryPath - the classes source container
  4799     "
  4876     "
  4800 
  4877 
  4801     ^ self revisionInfoOfManager:self sourceCodeManager
  4878     ^ self revisionInfoOfManager:self sourceCodeManagerFromBinaryRevision
  4802 
  4879 
  4803     "
  4880     "
  4804      Object revisionString
  4881      Object revisionString
  4805      Object revisionInfo
  4882      Object revisionInfo
  4806      Image revisionInfo
  4883      Image revisionInfo
  5049     "/
  5126     "/
  5050     "/ if there is no SourceCodeManager,
  5127     "/ if there is no SourceCodeManager,
  5051     "/ or TryLocalSourceFirst is true,
  5128     "/ or TryLocalSourceFirst is true,
  5052     "/ look in standard places first
  5129     "/ look in standard places first
  5053     "/
  5130     "/
  5054     ((sourceCodeManager := self sourceCodeManager) isNil
  5131     "JV@2011-12-08: 
  5055     or:[TryLocalSourceFirst == true]) ifTrue:[
  5132         (i) first check TryLocalSourceFirst, this avoids useless call to
  5056 	sourceStream := self localSourceStreamFor:source.
  5133             #sourceCodeManagerFromBinaryRevision when TryLocalSourceFirst is
  5057     ].
  5134             set (for whatever reason)
       
  5135         (ii) do NOT ask source code manager during system startup - source code
       
  5136             managers are not configured anyway!! Also, avoids hangups during
       
  5137             startup when CVSROOT is set but server is unreacheable.
       
  5138     CAVEAT: When somebody modifies the code after compilation and methods
       
  5139         are recompiled during startup (for whatever reason), a bad code may
       
  5140         used, compilation may fail. However, it may happen anyway as SCM's
       
  5141         are not yet configured so the system may use wrong one. Moreover,
       
  5142         the source from which the class is compiled may not be the one in
       
  5143         repository. I (JV) think this is a good, less confusing compromise.
       
  5144     "
       
  5145     (TryLocalSourceFirst == true 
       
  5146         or:[Smalltalk isInitialized not
       
  5147             or: [(sourceCodeManager := self sourceCodeManagerFromBinaryRevision) isNil]])
       
  5148                 ifTrue:[
       
  5149         sourceStream := self localSourceStreamFor:source.
       
  5150                 ].
  5058 
  5151 
  5059     sourceStream isNil ifTrue:[
  5152     sourceStream isNil ifTrue:[
  5060 	"/ mhmh - still no source file.
  5153         "/ mhmh - still no source file.
  5061 	"/ If there is a SourceCodeManager, ask it to aquire the
  5154         "/ If there is a SourceCodeManager, ask it to aquire the
  5062 	"/ the source for my class, and return an open stream on it.
  5155         "/ the source for my class, and return an open stream on it.
  5063 	"/ if that one does not know about the source, look in
  5156         "/ if that one does not know about the source, look in
  5064 	"/ standard places
  5157         "/ standard places
  5065 
  5158 
  5066 	sourceCodeManager notNil ifTrue:[
  5159         sourceCodeManager notNil ifTrue:[
  5067 	    classFilename ~= source ifTrue:[
  5160             classFilename ~= source ifTrue:[
  5068 		package notNil ifTrue:[
  5161                 package notNil ifTrue:[
  5069 		    sep := package indexOfAny:'/\:'.
  5162                     sep := package indexOfAny:'/\:'.
  5070 		    sep ~~ 0 ifTrue:[
  5163                     sep ~~ 0 ifTrue:[
  5071 			mod := package copyTo:sep - 1.
  5164                         mod := package copyTo:sep - 1.
  5072 			dir := package copyFrom:sep + 1.
  5165                         dir := package copyFrom:sep + 1.
  5073 			sourceStream := sourceCodeManager streamForClass:nil fileName:source revision:(self binaryRevision) directory:dir module:mod cache:true.
  5166                         sourceStream := sourceCodeManager streamForClass:nil fileName:source revision:(self binaryRevision) directory:dir module:mod cache:true.
  5074 		    ]
  5167                     ]
  5075 		].
  5168                 ].
  5076 	    ].
  5169             ].
  5077 	    sourceStream isNil ifTrue:[
  5170             sourceStream isNil ifTrue:[
  5078 		classFilename isNil ifTrue:[
  5171                 classFilename isNil ifTrue:[
  5079 		    guessedFileName := (Smalltalk fileNameForClass:self) , '.st'.
  5172                     guessedFileName := (Smalltalk fileNameForClass:self) , '.st'.
  5080 		].
  5173                 ].
  5081 		source asFilename baseName = (classFilename ? guessedFileName) asFilename baseName ifTrue:[
  5174                 source asFilename baseName = (classFilename ? guessedFileName) asFilename baseName ifTrue:[
  5082 		    sourceStream := sourceCodeManager getSourceStreamFor:self.
  5175                     sourceStream := sourceCodeManager getSourceStreamFor:self.
  5083 		]
  5176                 ]
  5084 	    ].
  5177             ].
  5085 	    sourceStream notNil ifTrue:[
  5178             sourceStream notNil ifTrue:[
  5086 		(self validateSourceStream:sourceStream) ifFalse:[
  5179                 (self validateSourceStream:sourceStream) ifFalse:[
  5087 		    ('Class [info]: repositories source for "%1" is invalid.' bindWith:self theNonMetaclass name) errorPrintCR.
  5180                     ('Class [info]: repositories source for "%1" is invalid.' bindWith:self theNonMetaclass name) errorPrintCR.
  5088 		    sourceStream close.
  5181                     sourceStream close.
  5089 		    sourceStream := nil
  5182                     sourceStream := nil
  5090 		] ifTrue:[
  5183                 ] ifTrue:[
  5091 		    validated := true.
  5184                     validated := true.
  5092 		].
  5185                 ].
  5093 	    ].
  5186             ].
  5094 	]
  5187         ]
  5095     ].
  5188     ].
  5096 
  5189 
  5097     sourceStream isNil ifTrue:[
  5190     sourceStream isNil ifTrue:[
  5098 	"/
  5191         "/
  5099 	"/ hard case - there is no source file for this class
  5192         "/ hard case - there is no source file for this class
  5100 	"/ (in the source-dir-path).
  5193         "/ (in the source-dir-path).
  5101 	"/
  5194         "/
  5102 
  5195 
  5103 	"/
  5196         "/
  5104 	"/ look if my binary is from a dynamically loaded module,
  5197         "/ look if my binary is from a dynamically loaded module,
  5105 	"/ and, if so, look in the modules directory for the
  5198         "/ and, if so, look in the modules directory for the
  5106 	"/ source file.
  5199         "/ source file.
  5107 	"/
  5200         "/
  5108 	ObjectFileLoader notNil ifTrue:[
  5201         ObjectFileLoader notNil ifTrue:[
  5109 	    ObjectFileLoader loadedObjectHandlesDo:[:h |
  5202             ObjectFileLoader loadedObjectHandlesDo:[:h |
  5110 		|f classes|
  5203                 |f classes|
  5111 
  5204 
  5112 		sourceStream isNil ifTrue:[
  5205                 sourceStream isNil ifTrue:[
  5113 		    (classes := h classes) notEmptyOrNil ifTrue:[
  5206                     (classes := h classes) notEmptyOrNil ifTrue:[
  5114 			(classes includes:self) ifTrue:[
  5207                         (classes includes:self) ifTrue:[
  5115 			    f := h pathName.
  5208                             f := h pathName.
  5116 			    f := f asFilename directory.
  5209                             f := f asFilename directory.
  5117 			    f := f construct:source.
  5210                             f := f construct:source.
  5118 			    f exists ifTrue:[
  5211                             f exists ifTrue:[
  5119 				sourceStream := f readStreamOrNil.
  5212                                 sourceStream := f readStreamOrNil.
  5120 			    ].
  5213                             ].
  5121 			].
  5214                         ].
  5122 		    ].
  5215                     ].
  5123 		]
  5216                 ]
  5124 	    ].
  5217             ].
  5125 	].
  5218         ].
  5126     ].
  5219     ].
  5127 
  5220 
  5128     "/
  5221     "/
  5129     "/ try along sourcePath
  5222     "/ try along sourcePath
  5130     "/
  5223     "/
  5131     sourceStream isNil ifTrue:[
  5224     sourceStream isNil ifTrue:[
  5132 	sourceStream := self localSourceStreamFor:source.
  5225         sourceStream := self localSourceStreamFor:source.
  5133     ].
  5226     ].
  5134 
  5227 
  5135     "/
  5228     "/
  5136     "/ final chance: try current directory
  5229     "/ final chance: try current directory
  5137     "/
  5230     "/
  5138     sourceStream isNil ifTrue:[
  5231     sourceStream isNil ifTrue:[
  5139 	sourceStream := source asFilename readStreamOrNil.
  5232         sourceStream := source asFilename readStreamOrNil.
  5140     ].
  5233     ].
  5141 
  5234 
  5142     (sourceStream notNil and:[validated not]) ifTrue:[
  5235     (sourceStream notNil and:[validated not]) ifTrue:[
  5143 	(self validateSourceStream:sourceStream) ifFalse:[
  5236         (self validateSourceStream:sourceStream) ifFalse:[
  5144 	    ('Class [warning]: source for "%1" is invalid or stripped. Take care.' bindWith:self theNonMetaclass name) errorPrintCR.
  5237             ('Class [warning]: source for "%1" is invalid or stripped. Take care.' bindWith:self theNonMetaclass name) errorPrintCR.
  5145 	    sourceStream close.
  5238             sourceStream close.
  5146 	    sourceStream := nil
  5239             sourceStream := nil
  5147 	].
  5240         ].
  5148     ].
  5241     ].
  5149 "/    (sourceStream notNil and:[sourceStream isFileStream]) ifTrue:[
  5242 "/    (sourceStream notNil and:[sourceStream isFileStream]) ifTrue:[
  5150 "/        guessedFileName notNil ifTrue:[
  5243 "/        guessedFileName notNil ifTrue:[
  5151 "/            self setClassFilename:(aStream pathName asFilename baseName).
  5244 "/            self setClassFilename:(aStream pathName asFilename baseName).
  5152 "/        ]
  5245 "/        ]
  5157      Object sourceStream
  5250      Object sourceStream
  5158      Clock sourceStream
  5251      Clock sourceStream
  5159      Autoload sourceStream
  5252      Autoload sourceStream
  5160     "
  5253     "
  5161 
  5254 
  5162     "Created: / 10.11.1995 / 21:05:13 / cg"
  5255     "Created: / 10-11-1995 / 21:05:13 / cg"
  5163     "Modified: / 22.4.1998 / 19:20:50 / ca"
  5256     "Modified: / 22-04-1998 / 19:20:50 / ca"
  5164     "Modified: / 5.11.2001 / 16:36:30 / cg"
  5257     "Modified: / 05-11-2001 / 16:36:30 / cg"
       
  5258     "Modified: / 08-12-2011 / 19:16:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  5165 !
  5259 !
  5166 
  5260 
  5167 updateVersionMethodFor:newRevisionString
  5261 updateVersionMethodFor:newRevisionString
  5168     "{ Pragma: +optSpace }"
  5262     "{ Pragma: +optSpace }"
  5169 
  5263 
  5551 ! !
  5645 ! !
  5552 
  5646 
  5553 !Class class methodsFor:'documentation'!
  5647 !Class class methodsFor:'documentation'!
  5554 
  5648 
  5555 version
  5649 version
  5556     ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.632 2013-11-21 15:02:57 stefan Exp $'
  5650     ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.633 2014-02-05 17:12:55 cg Exp $'
  5557 !
  5651 !
  5558 
  5652 
  5559 version_CVS
  5653 version_CVS
  5560     ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.632 2013-11-21 15:02:57 stefan Exp $'
  5654     ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.633 2014-02-05 17:12:55 cg Exp $'
  5561 !
  5655 !
  5562 
  5656 
  5563 version_SVN
  5657 version_SVN
  5564     ^ '$ Id: Class.st 10643 2011-06-08 21:53:07Z vranyj1  $'
  5658     ^ '$ Id: Class.st 10643 2011-06-08 21:53:07Z vranyj1  $'
  5565 ! !
  5659 ! !