--- a/.hgtags Mon Jun 10 17:32:35 2013 +0100
+++ b/.hgtags Fri Jun 21 19:04:37 2013 +0100
@@ -5,8 +5,6 @@
03f1bd57c0016b7761c5a4828408b27157788075 release
135cee5b1fe83574ef2e1336d17930bea5d8fb63 expecco_2_4_1
187baeafc381324b2be71399be1263af19f79b1a rel5_2_8
-1b0f7426a7bb86818ed31dd0aa9b0d81edaa7028 expecco_2_5_0
-1b0f7426a7bb86818ed31dd0aa9b0d81edaa7028 stable
27fb4984e97ba85d254d442042a0a57688f8f586 expecco_1_7_0rc8
288a01786ed5f59915047167fba6c00b36226c4a expeccoNET_1_5_1rc1
28ef0472cf2f08acd9c2056a517e1fae4bc8033d expecco_2_2_5
@@ -16,6 +14,8 @@
471ed2bb3bf16111afbf2e0d6dfb422d78294aca expecco_1_0_3
520c27f8cae267240021277e257e013b60b9cdb8 rel5_2_2
54dd825d531c7adec355b2ffbdd6b66d00d4678a expecco_1_6_0rc5
+5fcd709c7fd282e9c55d8642d1a6b1d5d77baf5e expecco_2_5_0
+5fcd709c7fd282e9c55d8642d1a6b1d5d77baf5e stable
615c4fe0f449a6be077b11450d39fb6560b1695a rel4_1_3_1
62ff001533901d30b624539b2f404d73f01db468 expecco_1_6_0
664991bb352e0a9f98bd7d36ec1c0b6a75e649eb rel5_4_6
--- a/ApplicationDefinition.st Mon Jun 10 17:32:35 2013 +0100
+++ b/ApplicationDefinition.st Fri Jun 21 19:04:37 2013 +0100
@@ -919,7 +919,8 @@
at: 'REQUIRED_LIBS' put: (self generateRequiredLibs_bc_dot_mak);
at: 'PREREQUISITES_LIBS' put: (self generatePreRequisiteLines_bc_dot_mak );
at: 'DEPENDENCIES' put: (self generateDependencies_win32);
- at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_bc_dot_mak );
+ at: 'SUBPROJECT_LIBS' put: (self generateSubProjectLibs_bc_dot_mak );
+ at: 'SUBPROJECTS_LINES' put: (self generateSubProjectLines_bc_dot_mak );
at: 'BUILD_TARGET' put: (self buildTarget );
at: 'REQUIRED_SUPPORT_DIRS' put: (self extraTargets asStringWith:' ');
yourself.
@@ -1062,11 +1063,11 @@
at: 'MAIN_DEFINES' put: (self mainDefines);
at: 'REQUIRED_LIBS' put: (self generateRequiredLibs_make_dot_proto);
at: 'PREREQUISITES_LIBS' put: (self generatePreRequisiteLines_make_dot_proto);
- at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_make_dot_proto);
+ at: 'SUBPROJECTS_LINES' put: (self generateSubProjectLines_make_dot_proto);
+ at: 'SUBPROJECT_LIBS' put: (self generateSubProjectLibs_make_dot_proto);
at: 'REQUIRED_LIBOBJS' put: (self generateRequiredLibobjs_make_dot_proto);
at: 'REQUIRED_LINK_LIBOBJS' put: (self generateRequiredLinkLibobjs_make_dot_proto);
at: 'DEPENDENCIES' put: (self generateDependencies_unix);
- at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_make_dot_proto );
at: 'REQUIRED_SUPPORT_DIRS' put: (self extraTargets asStringWith:' ');
at: 'PRODUCT_NAME' put: (self productName);
at: 'PRODUCT_FILENAME' put: (self productFilename);
@@ -1362,7 +1363,7 @@
subProjectLine_bc_dot_mak_mappings: aProjectID
^ Dictionary new
at: 'LIBRARY_NAME' put: (self libraryNameFor: aProjectID );
- at: 'PATH_TO_SUB_PROJECT' put: ( (PackageId from:aProjectID) module,'\',(PackageId from:aProjectID) directory copy replaceAll:$/ with:$\ );
+ at: 'PATH_TO_SUB_PROJECT' put: (self msdosPathToPackage:aProjectID from:self package);
at: 'PATH_TO_MYPROJECT' put: (self msdosPathToPackage: self package from: aProjectID);
yourself
@@ -1371,9 +1372,9 @@
subProjectLine_make_dot_proto_mappings: aProjectID
^ Dictionary new
- at: 'LIBRARY_NAME' put: (self libraryNameFor: aProjectID );
- at: 'PATH_TO_SUB_PROJECT' put: ( (PackageId from:aProjectID) module,'\',(PackageId from:aProjectID) directory copy replaceAll:$/ with:$\ );
- at: 'PATH_TO_MYPROJECT' put: (self unixPathToPackage: self package from: aProjectID);
+ at: 'LIBRARY_NAME' put: (self libraryNameFor:aProjectID );
+ at: 'PATH_TO_SUB_PROJECT' put: (self unixPathToPackage:aProjectID from:self package);
+ at: 'PATH_TO_MYPROJECT' put: (self unixPathToPackage:self package from:aProjectID);
yourself
"Modified: / 14-09-2006 / 18:59:26 / cg"
@@ -1494,20 +1495,20 @@
!
generateRequiredLibobjs_make_dot_proto
- |libobjPath libPath|
-
^ String streamContents:[:s |
self allPreRequisitesSorted do:[:projectID |
+ |libobjPath libPath|
+
libPath := self pathToPackage_unix:projectID.
libobjPath := libPath , '/', (self libraryNameFor:projectID).
- s space; nextPutAll: libobjPath,'$(O_EXT)'; nextPutLine:' \'.
+ s space; nextPutAll: libobjPath; nextPutLine:'$(O_EXT) \'.
].
s cr.
].
"
- alspa_batch_application generateRequiredLibobjs_make_dot_proto
+ exept_expecco_application generateRequiredLibobjs_make_dot_proto
"
!
@@ -1515,20 +1516,19 @@
^ String streamContents:[:s |
s nextPutLine:' \'.
self allPreRequisitesSorted do:[:projectID |
- s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
+ s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:'.dll \'.
].
- self subProjects do:[:projectID |
- s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
- ].
+
+"/ Subprojects are not linked to the exe!!
+"/ self subProjects do:[:projectID |
+"/ s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
+"/ ].
self isGUIApplication ifTrue:[
self guiClassFileNames_win32 do:[:eachFilename |
s space; nextPutAll:eachFilename; nextPutLine:' \'.
].
].
-"/ self subProjects do:[:projectID |
-"/ s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
-"/ ].
s cr.
].
@@ -1545,18 +1545,16 @@
self allPreRequisitesSorted do:[:projectID |
s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
].
- self subProjects do:[:projectID |
- s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
- ].
+"/ Subprojects are only built, but not linked to the executable!!
+"/ self subProjects do:[:projectID |
+"/ s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
+"/ ].
self isGUIApplication ifTrue:[
self guiClassFileNames_unix do:[:eachFilename |
s space; nextPutAll:eachFilename; nextPutLine:' \'.
].
].
-"/ self subProjects do:[:projectID |
-"/ s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
-"/ ].
s cr.
].
@@ -1588,10 +1586,48 @@
"
!
+generateSubProjectLibs_bc_dot_mak
+ ^ String streamContents:[:s |
+ self subProjects do:[:projectID |
+ |libPath libobjPath|
+
+ libPath := self pathToPackage_win32:projectID.
+ libobjPath := libPath , '\', (self libraryNameFor:projectID).
+ s space; nextPutAll:libobjPath; nextPutLine:'.dll \'.
+ ].
+ s cr.
+ ].
+
+ "
+ exept_expecco_application generateSubProjectLibs_bc_dot_mak
+ cg_newCompiler_driver_stc generateSubProjectLines_bc_dot_mak
+ "
+
+ "Created: / 09-08-2006 / 11:24:39 / fm"
+ "Modified: / 14-09-2006 / 18:46:09 / cg"
+!
+
+generateSubProjectLibs_make_dot_proto
+ ^ String streamContents:[:s |
+ self subProjects do:[:projectID |
+ |libPath libobjPath|
+
+ libPath := self pathToPackage_unix:projectID.
+ libobjPath := libPath , '/', (self libraryNameFor:projectID).
+ s space; nextPutAll:libobjPath; nextPutLine:'$(O_EXT) \'.
+ ].
+ s cr.
+ ].
+
+ "
+ exept_expecco_application generateSubProjectLibs_make_dot_proto
+ "
+!
+
generateSubProjectLines_bc_dot_mak
^ String streamContents:[:s |
- self subProjects do:[:projectID |
+ self effectiveSubProjects do:[:projectID |
|mappings newObjectLine|
mappings := self subProjectLine_bc_dot_mak_mappings: projectID.
@@ -1614,12 +1650,12 @@
generateSubProjectLines_make_dot_proto
^ String streamContents:[:s |
- self subProjects do:[:projectID |
+ self effectiveSubProjects do:[:projectID |
|mappings newObjectLine|
mappings := self subProjectLine_make_dot_proto_mappings: projectID.
newObjectLine := self replaceMappings: mappings
- in: self subProjectLine_bc_dot_mak.
+ in: self subProjectLine_make_dot_proto.
s nextPutAll:newObjectLine.
s cr.
]
@@ -1814,7 +1850,7 @@
%(STX_SOURCE_RULES)
%(PREREQUISITES_LIBS)
-%(SUBPROJECTS_LIBS)
+%(SUBPROJECTS_LINES)
sources\NUL:
mkdir sources
@@ -2209,6 +2245,15 @@
"Created: / 15-10-2006 / 12:50:00 / cg"
!
+defineExtensionLine_nsi_for:extension
+ "the template code for a single extenions definition line in the <appname>.nsi file"
+
+ ^ ' WriteRegStr HKCR ".' , extension
+ , '" "" "%(MODULE_KEY).%(PRODUCT_FILENAME).1"'
+
+ "Created: / 15-10-2006 / 12:50:00 / cg"
+!
+
defineSTXSourceLine_nsi_for: projectID
^
@@ -2313,12 +2358,14 @@
REQUIRED_LINK_LIBOBJS=%(REQUIRED_LINK_LIBOBJS)
REQUIRED_SUPPORT_DIRS=%(REQUIRED_SUPPORT_DIRS)
+SUBPROJECT_LIBS=%(SUBPROJECT_LIBS)
+
target: %(BUILD_TARGET)
all:: prereq ALL_NP
# like ALL, but not prereqs
-ALL_NP:: exe $(REQUIRED_SUPPORT_DIRS) $(SETUP_RULE)
+ALL_NP:: exe $(SUBPROJECT_LIBS) $(REQUIRED_SUPPORT_DIRS) $(SETUP_RULE)
exe: %(APPLICATION)
@@ -2387,7 +2434,7 @@
%(STX_RESOURCE_RULES)
%(PREREQUISITES_LIBS)
-%(SUBPROJECTS_LIBS)
+%(SUBPROJECTS_LINES)
%(ADDITIONAL_RULES)
@@ -2623,7 +2670,6 @@
# Others might be autoloaded or loaded explicit using "Smalltalk loadPackage:xxx".
#
%(ALLPREREQUISITE_LIBS)
-%(SUBPROJECT_LIBS)
'
"Created: / 08-08-2006 / 12:26:58 / fm"
@@ -2944,8 +2990,11 @@
'%(FILE_NAME).so: %(MODULE_DIRECTORY)/%(FILE_NAME).so
ln -sf %(MODULE_DIRECTORY)/%(FILE_NAME).so .
-%(MODULE_DIRECTORY)/%(FILE_NAME).so: $(FORCE)
+%(MODULE_DIRECTORY)/%(FILE_NAME).so: %(MODULE_DIRECTORY)/makefile $(FORCE)
cd %(MODULE_DIRECTORY) && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+
+%(MODULE_DIRECTORY)/makefile: %(MODULE_DIRECTORY)/Make.proto
+ $(TOP)/rules/stmkmf --cd %(MODULE_DIRECTORY)
'
"Modified: / 09-02-2007 / 16:22:47 / cg"
@@ -2953,18 +3002,29 @@
subProjectLine_bc_dot_mak
-^'%(LIBRARY_NAME).dll: $(TOP)\..\%(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll
- copy $(TOP)\..\%(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll *.*
-
-$(TOP)\..\%(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll:
- cd $(TOP)\..\%(PATH_TO_SUB_PROJECT)
- $(MAKE_BAT)
- -cd $(TOP)\..\%(PATH_TO_MYPROJECT)
+^'%(LIBRARY_NAME).dll: %(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll
+ copy %(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll *.*
+
+%(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll:
+ pushd %(PATH_TO_SUB_PROJECT) & $(MAKE_BAT)
'
"Modified: / 26-07-2010 / 12:26:01 / cg"
!
+subProjectLine_make_dot_proto
+
+^'%(LIBRARY_NAME).so: %(PATH_TO_SUB_PROJECT)/%(LIBRARY_NAME).so
+ ln -sf %(PATH_TO_SUB_PROJECT)/%(LIBRARY_NAME).so .
+
+%(PATH_TO_SUB_PROJECT)/%(LIBRARY_NAME).so: %(PATH_TO_SUB_PROJECT)/makefile
+ cd %(PATH_TO_SUB_PROJECT) && $(MAKE)
+
+%(PATH_TO_SUB_PROJECT)/makefile: %(PATH_TO_SUB_PROJECT)/Make.proto
+ $(TOP)/rules/stmkmf --cd %(PATH_TO_SUB_PROJECT)
+'
+!
+
undefineExtenionLine_nsi_for:extension
"the template code for a single extenions undefinition line in the <appname>.nsi file"
@@ -2972,6 +3032,15 @@
' DeleteRegKey HKCR ".',extension,'"'
"Created: / 15-10-2006 / 12:51:00 / cg"
+!
+
+undefineExtensionLine_nsi_for:extension
+ "the template code for a single extenions undefinition line in the <appname>.nsi file"
+
+^
+' DeleteRegKey HKCR ".',extension,'"'
+
+ "Created: / 15-10-2006 / 12:51:00 / cg"
! !
!ApplicationDefinition class methodsFor:'queries'!
@@ -3044,11 +3113,11 @@
!ApplicationDefinition class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.244 2013-06-04 15:30:51 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.248 2013-06-10 18:14:13 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.244 2013-06-04 15:30:51 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.248 2013-06-10 18:14:13 stefan Exp $'
!
version_SVN
--- a/CharacterArray.st Mon Jun 10 17:32:35 2013 +0100
+++ b/CharacterArray.st Fri Jun 21 19:04:37 2013 +0100
@@ -283,6 +283,7 @@
"Created: 3.8.1997 / 18:16:40 / cg"
! !
+
!CharacterArray class methodsFor:'cleanup'!
lowSpaceCleanup
@@ -326,6 +327,7 @@
"
! !
+
!CharacterArray class methodsFor:'pattern matching'!
matchEscapeCharacter
@@ -677,6 +679,7 @@
^ self == CharacterArray
! !
+
!CharacterArray methodsFor:'Compatibility-ANSI'!
addLineDelimiters
@@ -1568,6 +1571,7 @@
! !
+
!CharacterArray methodsFor:'character searching'!
includesMatchCharacters
@@ -3946,6 +3950,8 @@
! !
+
+
!CharacterArray methodsFor:'matching - glob expressions'!
compoundMatch:aString
@@ -4390,6 +4396,7 @@
! !
+
!CharacterArray methodsFor:'padded copying'!
centerPaddedTo:newSize
@@ -4914,6 +4921,7 @@
"Modified: 17.4.1997 / 12:50:23 / cg"
! !
+
!CharacterArray methodsFor:'special string converting'!
expandPlaceholders:escapeCharacter with:argArrayOrDictionary
@@ -5305,6 +5313,7 @@
!
withEscapes
+ <resource: #obsolete>
"has been renamed; the name withEscapes is misleading"
self obsoleteMethodWarning:'use withoutCEscapes'.
@@ -5857,6 +5866,7 @@
"
! !
+
!CharacterArray methodsFor:'substring searching'!
findRangeOfString:subString
@@ -6408,11 +6418,11 @@
!CharacterArray class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.502 2013-05-06 09:55:08 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.504 2013-06-19 06:36:14 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.502 2013-05-06 09:55:08 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.504 2013-06-19 06:36:14 stefan Exp $'
! !
--- a/ClassDescription.st Mon Jun 10 17:32:35 2013 +0100
+++ b/ClassDescription.st Fri Jun 21 19:04:37 2013 +0100
@@ -654,7 +654,6 @@
"Modified: 23.4.1996 / 15:56:54 / cg"
! !
-
!ClassDescription methodsFor:'Compatibility-Dolphin'!
categoriesFor:aMethodSelector
@@ -3316,8 +3315,16 @@
topNameSpace
"return the nameSpace of my topOwningClass (if private) or my own nameSpace."
+ |ns|
+
self isPrivate ifTrue:[^ self topOwningClass topNameSpace].
- ^ self nameSpace
+ ns := self nameSpace.
+ ns isNameSpace ifFalse:[
+ "detect the problem, that a class has the same name as a namsSpace"
+ self halt:'Not a namspace'.
+ ns := Smalltalk. "/ What a KLUDGE
+ ].
+ ^ ns.
!
whichCategoryIncludesSelector:aSelector
@@ -4275,11 +4282,11 @@
!ClassDescription class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.239 2013-06-07 12:18:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.240 2013-06-19 06:42:05 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.239 2013-06-07 12:18:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.240 2013-06-19 06:42:05 stefan Exp $'
! !
--- a/Collection.st Mon Jun 10 17:32:35 2013 +0100
+++ b/Collection.st Fri Jun 21 19:04:37 2013 +0100
@@ -703,6 +703,15 @@
^ self keys asNewOrderedCollection sort
!
+keysSorted:aBlock
+ "return the keys as a sorted sequenceable collection.
+ Some collections (which keep their keys already sorted) may
+ redefine this method to return the keys as they are kept internally.
+ The fallback here sorts them into an OrderedCollection"
+
+ ^ self keys asNewOrderedCollection sort:aBlock
+!
+
last
"return the last element of the collection.
This should be redefined in subclasses."
@@ -2316,6 +2325,40 @@
"Modified: / 13-09-2006 / 11:17:42 / cg"
!
+detect:checkBlock thenCompute:evalBlock
+ "evaluate the argument, aBlock for each element in the receiver until
+ chloeckBck returns true; in this case return the value from evalBlock
+ applied to the element which caused the true evaluation.
+ If none of the evaluations returns true, report an error"
+
+ ^ self detect:checkBlock thenCompute:evalBlock ifNone:[self errorNotFound]
+
+ "
+ #((1 'one') (2 'two') (3 'three') (4 'four'))
+ detect:[:pair | pair first odd] thenCompute:[:pair | pair second]
+ "
+!
+
+detect:checkBlock thenCompute:evalBlock ifNone:exceptionValue
+ "evaluate the argument, aBlock for each element in the receiver until
+ chloeckBck returns true; in this case return the value from evalBlock
+ applied to the element which caused the true evaluation.
+ If none of the evaluations returns true, return the value from exceptionValue."
+
+ ^ evalBlock value:(self detect:checkBlock ifNone:[^ exceptionValue value]).
+
+ "
+ #((1 'one') (2 'two') (3 'three') (4 'four'))
+ detect:[:pair | pair first odd] thenCompute:[:pair | pair second]
+ ifNone:[ nil ].
+ "
+ "
+ #( (2 'two') (4 'four'))
+ detect:[:pair | pair first odd] thenCompute:[:pair | pair second]
+ ifNone:[ nil ].
+ "
+!
+
detectLast:aBlock
"evaluate the argument, aBlock for each element in the receiver until
the block returns true; in this case return the element which caused
@@ -4769,11 +4812,11 @@
!Collection class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.304 2013-06-09 13:03:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.306 2013-06-20 11:29:55 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.304 2013-06-09 13:03:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.306 2013-06-20 11:29:55 cg Exp $'
! !
--- a/CompiledCode.st Mon Jun 10 17:32:35 2013 +0100
+++ b/CompiledCode.st Fri Jun 21 19:04:37 2013 +0100
@@ -659,13 +659,18 @@
isCounting
"return true, if invokations of this method are counted"
- ^ MessageTracer notNil
- and:[MessageTracer isCounting:self]
+ ^ MessageTracer notNil and:[MessageTracer isCounting:self]
"Modified: / 27.7.1998 / 11:06:00 / cg"
"Created: / 30.1.1999 / 14:49:19 / cg"
!
+isCountingByReceiverClass
+ "return true, if invokations of this method are counted"
+
+ ^ MessageTracer notNil and:[MessageTracer isCountingByReceiverClass:self]
+!
+
isCountingMemoryUsage
"return true, if memory allocations done by this method (and callees)
are counted"
@@ -760,6 +765,15 @@
"Created: / 30.1.1999 / 14:50:38 / cg"
!
+startCountingByReceiverClass
+ "start counting invokations of the receiver"
+
+ MessageTracer countMethodByReceiverClass:self
+
+ "Modified: / 12.1.1998 / 18:23:45 / cg"
+ "Created: / 30.1.1999 / 14:50:38 / cg"
+!
+
startCountingMemoryUsage
"start counting memory usage of the receiver (and every callee)"
@@ -1871,13 +1885,14 @@
!CompiledCode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012-11-04 14:13:28 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.121 2013-06-20 11:16:04 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012-11-04 14:13:28 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.121 2013-06-20 11:16:04 cg Exp $'
!
version_SVN
- ^ '§ Id: CompiledCode.st 10643 2011-06-08 21:53:07Z vranyj1 §'
+ ^ '$ Id: CompiledCode.st 10643 2011-06-08 21:53:07Z vranyj1 $'
! !
+
--- a/ExternalBytes.st Mon Jun 10 17:32:35 2013 +0100
+++ b/ExternalBytes.st Fri Jun 21 19:04:37 2013 +0100
@@ -409,7 +409,7 @@
new:numberOfBytes
"allocate some memory usable for data;
- the memory is not controlled by the garbage collector.
+ the memory safe from being finalized by the garbage collector.
Return a corresponding ExternalBytes object or raise MallocFailure (if malloc fails).
Use this, if you have to pass a block of bytes to some
@@ -420,8 +420,8 @@
may change their address.
DANGER ALERT: the memory is NOT automatically freed until it is either
- MANUALLY freed (see #free) or the returned externalBytes object
- is unprotected or the classes releaseAllMemory method is called."
+ MANUALLY freed (see #free) or the returned externalBytes object
+ is unprotected or the classes releaseAllMemory method is called."
|newInst|
@@ -448,14 +448,15 @@
unprotectedNew:numberOfBytes
"allocate some memory usable for data;
- the memory is under the control of the garbage collector.
+ the memory is under the control of the garbage collector (i.e. the instance will
+ be finalized and the malloc'd memory will be freed, if the instance goes away).
Return a corresponding ExternalBytes object or raise MallocFailure (if malloc fails).
DANGER ALERT: the memory block as allocated will be automatically freed
- as soon as the reference to the returned externalBytes object
- is gone (by the next garbage collect).
- If the memory has been passed to a C-function which
- remembers this pointer, bad things may happen ...."
+ as soon as the reference to the returned externalBytes object
+ is gone (by the next garbage collect).
+ If the memory has been passed to a C-function which
+ remembers this pointer, bad things may happen ...."
|newInst|
@@ -1247,6 +1248,7 @@
unprotectFromGC
"remove the receiver from the AllocatedInstances
class variable - if there is no other reference to the receiver,
+ and this was ever allocated by me (i.e. not by the outside world),
the next garbage collect will finalize the receiver and the underlying
memory be freed."
@@ -1258,7 +1260,7 @@
wasBlocked := OperatingSystem blockInterrupts.
"/ AccessLock critical:[
AllocatedInstances notNil ifTrue:[
- AllocatedInstances remove:self ifAbsent:nil.
+ AllocatedInstances remove:self ifAbsent:nil.
].
"/ ]
wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
@@ -1316,11 +1318,11 @@
!ExternalBytes class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.89 2013-05-21 20:44:47 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.90 2013-06-14 12:37:48 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.89 2013-05-21 20:44:47 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.90 2013-06-14 12:37:48 cg Exp $'
! !
--- a/GenericException.st Mon Jun 10 17:32:35 2013 +0100
+++ b/GenericException.st Fri Jun 21 19:04:37 2013 +0100
@@ -1389,7 +1389,7 @@
This will change in the near future; please use #creator to get
the creator. Marked as obsolete, until the change is done!!"
- self obsoleteMethodWarning:'meaning of #signal will change. Use #creator'.
+ self obsoleteFeatureWarning:'meaning of #signal will change. Use #creator'.
^ self creator.
!
@@ -2354,11 +2354,11 @@
!GenericException class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.141 2013-05-27 14:13:24 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.142 2013-06-19 06:34:00 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.141 2013-05-27 14:13:24 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.142 2013-06-19 06:34:00 stefan Exp $'
!
version_HG
--- a/Infinity.st Mon Jun 10 17:32:35 2013 +0100
+++ b/Infinity.st Fri Jun 21 19:04:37 2013 +0100
@@ -206,19 +206,6 @@
vectors (e.g. Points)"
^ 105
-!
-
-retryReverseOf: aSymbol with: aNumber
- self obsoleteMethodWarning:'leftover - no longer used'.
-
- (aSymbol == #* or: [aSymbol == #+]) ifTrue: [
- ^self perform: aSymbol with: aNumber
- ].
- (aSymbol == #/ and: [aNumber isFinite]) ifTrue: [^ 0].
- (aSymbol == #< and: [aNumber isFinite]) ifTrue: [^ self positive].
- (aSymbol == #> and: [ aNumber isFinite ]) ifTrue: [^ self positive not].
- (aSymbol == #= and: [ aNumber isFinite ])ifTrue: [ ^ false ].
- self errorUndefinedResult: aSymbol
! !
!Infinity methodsFor:'comparing'!
@@ -425,11 +412,12 @@
!Infinity class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.13 2009-10-12 19:34:30 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.14 2013-06-19 06:35:15 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.13 2009-10-12 19:34:30 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.14 2013-06-19 06:35:15 stefan Exp $'
! !
+
Infinity initialize!
--- a/Method.st Mon Jun 10 17:32:35 2013 +0100
+++ b/Method.st Fri Jun 21 19:04:37 2013 +0100
@@ -1910,6 +1910,151 @@
"Modified: / 22-10-2010 / 12:07:25 / cg"
!
+printStringForBrowserWithSelector:selector inClass:aClass
+ "return a printString to represent myself to the user in a browser.
+ Defined here to allow for browsers to deal with nonStandard pseudoMethods"
+
+ |s privInfo moreInfo p info n cls ns currentChangeSet isInChangeSet mthdPackage
+ userPreferences shownSelector suppressPackage timeRounded shadowsOrNot
+ overAllCount counts|
+
+ moreInfo := ''.
+ privInfo := ''.
+ userPreferences := UserPreferences current.
+
+ ns := self nameSpace.
+ (ns notNil and:[ns isNameSpace]) ifTrue:[
+ moreInfo := moreInfo ,
+ ((' < %1 >' bindWith: ns name) asText emphasisAllAdd:
+ userPreferences emphasisForNamespacedCode)
+
+ ].
+
+ self isWrapped ifTrue:[
+ (MessageTracer isCounting:self) ifTrue:[
+ (MessageTracer isCountingByReceiverClass:self) ifTrue:[
+ overAllCount := (MessageTracer executionCountOfMethod:self).
+ moreInfo := moreInfo , (' (cnt: %1' bindWith:overAllCount printString allBold).
+ overAllCount ~~ 0 ifTrue:[
+ counts := MessageTracer executionCountsByReceiverClassOfMethod:self.
+ (counts keysSorted:[:a :b | (counts at:a) < (counts at:b)]) reverseDo:[:cls |
+ |cnt clsName percentage|
+
+ clsName := cls name.
+ cnt := counts at:cls.
+ percentage := ((cnt / overAllCount) * 100) rounded.
+ moreInfo := moreInfo , ('; %1->%2%%' bindWith:clsName with:percentage).
+ ].
+ ].
+ moreInfo := moreInfo , ')'.
+ ] ifFalse:[
+ (MessageTracer isCountingMemoryUsage:self) ifTrue:[
+ moreInfo := moreInfo , (' (mem: %1 bytes avg)' bindWith:(MessageTracer memoryUsageOfMethod:self) printString allBold).
+ ] ifFalse:[
+ moreInfo := moreInfo , (' (cnt: %1)' bindWith:(MessageTracer executionCountOfMethod:self) printString allBold).
+ ]
+ ].
+ ] ifFalse:[
+ (MessageTracer isTiming:self) ifTrue:[
+ info := MessageTracer executionTimesOfMethod:self.
+ ((n := info count) == 0) ifTrue:[
+ moreInfo := moreInfo , (' (cnt: %1)' bindWith:n)
+ ] ifFalse:[
+ timeRounded := [:millis |
+ |rnd|
+ rnd := (millis > 100)
+ ifTrue:[ 1 ]
+ ifFalse:[
+ (millis > 10)
+ ifTrue:[ 0.1 ]
+ ifFalse:[
+ (millis > 1)
+ ifTrue:[ 0.01 ]
+ ifFalse:[ 0.001 ]]].
+ millis roundTo:rnd
+ ].
+
+ (n == 1 or:[ info avgTimeRounded = info minTimeRounded ]) ifTrue:[
+ moreInfo := moreInfo ,
+ (' (t: %1ms cnt: %2)'
+ bindWith:((timeRounded value:info avgTimeRounded) printString allBold)
+ with:n)
+ ] ifFalse:[
+ moreInfo := moreInfo ,
+ (' (avg: %1ms min: %2 max: %3 cnt: %4)'
+ bindWith:((timeRounded value:info avgTimeRounded) printString allBold)
+ with:((timeRounded value:info minTimeRounded) printString)
+ with:((timeRounded value:info maxTimeRounded) printString)
+ with:n)
+ ].
+ ].
+ ] ifFalse:[
+ moreInfo := ' !!'
+ ]
+ ].
+ ].
+ p := self privacy.
+
+ p ~~ #public ifTrue:[
+ privInfo := (' (* ' , p , ' *)') allItalic.
+ ].
+
+"/ self isInvalid ifTrue:[
+"/ moreInfo := ' (** not executable **)'.
+"/ ].
+
+ (self isLazyMethod not and:[self isUnloaded]) ifTrue:[
+ moreInfo := ' (** unloaded **)'
+ ].
+
+ privInfo size ~~ 0 ifTrue:[
+ moreInfo := privInfo , ' ' , moreInfo
+ ].
+
+ s := shownSelector := (self selectorPrintStringInBrowserFor:selector class:aClass).
+
+ (cls := aClass) isNil ifTrue:[
+ cls := self containingClass
+ ].
+
+ currentChangeSet := ChangeSet current.
+ isInChangeSet := currentChangeSet includesChangeForClass:cls selector:selector.
+
+ isInChangeSet ifTrue:[
+ s := s asText emphasisAllAdd:(userPreferences emphasisForChangedCode)
+ ].
+
+ (cls isNil or:[(mthdPackage := self package) ~= cls package]) ifTrue:[
+ suppressPackage := false.
+ mthdPackage = PackageId noProjectID ifTrue:[
+ mthdPackage := '+'.
+ "/ suppressPackage := true
+ ].
+ suppressPackage ifFalse:[
+ shadowsOrNot := (self isShadowingExtension)
+ ifTrue:[' shadowed' ]
+ ifFalse:[ '' ].
+ p := ' [' , ((mthdPackage ? '?'), shadowsOrNot allBold) allItalic , '] '.
+ p := p asText emphasisAllAdd:(userPreferences emphasisForDifferentPackage).
+ s := s , ' ' , p
+ ].
+ ].
+
+ moreInfo size == 0 ifTrue:[^ s].
+
+ s := shownSelector , moreInfo.
+
+ self isInvalid ifTrue:[
+ s := s asText emphasizeAllWith:(userPreferences emphasisForObsoleteCode).
+ ].
+ ^ s
+
+ "Modified: / 23-01-1998 / 13:15:15 / stefan"
+ "Created: / 05-02-2000 / 22:55:56 / cg"
+ "Modified: / 05-03-2007 / 16:18:53 / cg"
+ "Modified: / 20-07-2010 / 15:39:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
whoString
"return a string as className>>selector, if this is not an unbound
method. Otherwise return 'unbound'. Used with debugging."
@@ -3244,7 +3389,7 @@
self annotationsDo:[:annot |
(annot refersToLiteral: anObject) ifTrue:[
- self halt.
+ "/ self halt.
^ true
].
].
@@ -3258,7 +3403,7 @@
self annotationsDo:[:annot |
(annot refersToLiteralMatching: aMatchString) ifTrue:[
- self halt.
+ "/ self halt.
^ true
].
].
@@ -3835,11 +3980,11 @@
!Method class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.413 2013-06-09 13:32:28 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.417 2013-06-20 23:00:55 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.413 2013-06-09 13:32:28 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.417 2013-06-20 23:00:55 cg Exp $'
!
version_HG
--- a/Object.st Mon Jun 10 17:32:35 2013 +0100
+++ b/Object.st Fri Jun 21 19:04:37 2013 +0100
@@ -1670,11 +1670,24 @@
| attrs |
attrs := self objectAttributes.
+ "/ only need a WeakIdentityDictionary, if there are any non-symbol keys in
+ "/ it. Start with a regular IDDict, and migrate to WeakIDDict if ever required.
+ "/ Typically, this never happens (but does in the UIPainter!!)
(attrs isNil or:[attrs size == 0]) ifTrue:[
- attrs := WeakIdentityDictionary new.
+ attributeKey isSymbol ifTrue:[
+ attrs := IdentityDictionary new.
+ ] ifFalse:[
+ attrs := WeakIdentityDictionary new.
+ ].
attrs at:attributeKey put:anObject.
self objectAttributes:attrs.
] ifFalse:[
+ attributeKey isSymbol ifFalse:[
+ attrs class == WeakIdentityDictionary ifFalse:[
+ attrs := WeakIdentityDictionary new declareAllFrom:attrs.
+ self objectAttributes:attrs.
+ ].
+ ].
attrs at:attributeKey put:anObject.
].
] valueUninterruptably
@@ -3203,7 +3216,9 @@
].
message notNil ifTrue:[
'------> ' infoPrint. message infoPrintCR
- ]
+ ].
+
+ self halt:'Please fix this now!!'
"
Object obsoleteMethodWarning:'foo' from:thisContext sender sender
@@ -8358,6 +8373,7 @@
if (__InstPtr(self)->i_instvars[i] == anObject) {
__InstPtr(self)->i_instvars[i] = newRef;
__STORE(self, newRef);
+__dumpObject__(self, __LINE__);
anyChange = true;
}
}
@@ -9659,11 +9675,11 @@
!Object class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.724 2013-06-04 13:52:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.726 2013-06-19 06:43:15 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.724 2013-06-04 13:52:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.726 2013-06-19 06:43:15 stefan Exp $'
!
version_SVN
--- a/OrderedCollection.st Mon Jun 10 17:32:35 2013 +0100
+++ b/OrderedCollection.st Fri Jun 21 19:04:37 2013 +0100
@@ -619,7 +619,14 @@
"remove all elements from the collection.
Returns the receiver."
- self initContents:10
+ contentsArray size <= 20 ifTrue:[
+ "/ reuse the contents array
+ contentsArray atAllPut:nil.
+ firstIndex := 1.
+ lastIndex := 0.
+ ] ifFalse:[
+ self initContents:10
+ ].
"Modified: 12.4.1996 / 13:34:19 / cg"
!
@@ -1960,6 +1967,6 @@
!OrderedCollection class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/OrderedCollection.st,v 1.105 2013-04-04 07:59:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/OrderedCollection.st,v 1.106 2013-06-17 21:15:10 cg Exp $'
! !
--- a/ProcessorScheduler.st Mon Jun 10 17:32:35 2013 +0100
+++ b/ProcessorScheduler.st Fri Jun 21 19:04:37 2013 +0100
@@ -2083,66 +2083,66 @@
recomputeDynamicPriorities
"recompute dynamic priorities."
- |processesDecreased processesToIncrease|
+ |processesToDecrease processesToIncrease|
scheduledProcesses notNil ifTrue:[
- "/ this is written a bit cryptic - to avoid creation
- "/ of garbage objects (Id'sets) if possible.
- "/ since this runs 50 times a second and most of the
- "/ time, no rescheduling is req'd
-
- scheduledProcesses do:[:aProcess |
- |range prio|
-
- "/ decrease priority of processes that did run
- (range := aProcess priorityRange) notNil ifTrue:[
- aProcess priority > range start ifTrue:[
- processesDecreased isNil ifTrue:[
- processesDecreased := IdentitySet new.
- ].
- processesDecreased add:aProcess.
- ]
- ]
- ].
-
- processesDecreased notNil ifTrue:[
- processesDecreased do:[:aProcess |
- |newPri|
-
- "/ newPri := aProcess priority - 1.
- newPri := aProcess priorityRange start.
- self changePriority:newPri for:aProcess.
- ].
- ].
-
- "/ and increase all prios of those that did not run, but are runnable
-
- TimeSlicingPriorityLimit to:1 by:-1 do:[:i |
- |list|
-
- (list := quiescentProcessLists at:i) size > 0 ifTrue:[
- list do:[:aProcess |
- |range prio|
-
- (range := aProcess priorityRange) notNil ifTrue:[
- (processesDecreased isNil
- or:[(processesDecreased includes:aProcess) not]) ifTrue:[
- aProcess priority < range stop ifTrue:[
- processesToIncrease isNil ifTrue:[
- processesToIncrease := IdentitySet new.
- ].
- processesToIncrease add:aProcess
- ]
- ]
- ]
- ]
- ]
- ].
- processesToIncrease notNil ifTrue:[
- processesToIncrease do:[:aProcess |
- self changePriority:(aProcess priority + 1) for:aProcess.
- ].
- ].
+ "/ this is written a bit cryptic - to avoid creation
+ "/ of garbage objects (Id'sets) if possible.
+ "/ since this runs 50 times a second and most of the
+ "/ time, no rescheduling is req'd
+
+ scheduledProcesses do:[:aProcess |
+ |range prio|
+
+ "/ decrease priority of processes that did run
+ (range := aProcess priorityRange) notNil ifTrue:[
+ aProcess priority > range start ifTrue:[
+ processesToDecrease isNil ifTrue:[
+ processesToDecrease := IdentitySet new.
+ ].
+ processesToDecrease add:aProcess.
+ ]
+ ]
+ ].
+
+ processesToDecrease notNil ifTrue:[
+ processesToDecrease do:[:aProcess |
+ |newPri|
+
+ "/ newPri := aProcess priority - 1.
+ newPri := aProcess priorityRange start.
+ self changePriority:newPri for:aProcess.
+ ].
+ ].
+
+ "/ and increase all prios of those that did not run, but are runnable
+
+ TimeSlicingPriorityLimit to:1 by:-1 do:[:i |
+ |list|
+
+ (list := quiescentProcessLists at:i) size > 0 ifTrue:[
+ list do:[:aProcess |
+ |range prio|
+
+ (range := aProcess priorityRange) notNil ifTrue:[
+ (processesToDecrease isNil
+ or:[(processesToDecrease includes:aProcess) not]) ifTrue:[
+ aProcess priority < range stop ifTrue:[
+ processesToIncrease isNil ifTrue:[
+ processesToIncrease := OrderedCollection new:10.
+ ].
+ processesToIncrease add:aProcess
+ ]
+ ]
+ ]
+ ]
+ ]
+ ].
+ processesToIncrease notNil ifTrue:[
+ processesToIncrease do:[:aProcess |
+ self changePriority:(aProcess priority + 1) for:aProcess.
+ ].
+ ].
].
"Modified: / 21.9.1998 / 09:07:54 / cg"
@@ -3361,11 +3361,11 @@
!ProcessorScheduler class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.268 2013-04-19 09:35:49 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.269 2013-06-17 21:18:07 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.268 2013-04-19 09:35:49 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.269 2013-06-17 21:18:07 cg Exp $'
! !
--- a/ProjectDefinition.st Mon Jun 10 17:32:35 2013 +0100
+++ b/ProjectDefinition.st Fri Jun 21 19:04:37 2013 +0100
@@ -1487,7 +1487,8 @@
|subProjects|
subProjects := self subProjects asNewSet.
- subProjects
+ subProjects
+ addAll:self includedInSubProjects;
removeAllFoundIn:self excludedFromSubProjects;
remove:self package ifAbsent:[].
@@ -1761,6 +1762,7 @@
"Modified: / 08-08-2006 / 19:24:34 / fm"
"Created: / 17-08-2006 / 21:28:09 / cg"
"Modified: / 09-10-2006 / 14:27:20 / cg"
+ "Modified: / 10-06-2013 / 11:50:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
productInstallDirBaseName_code
@@ -2002,6 +2004,17 @@
^ #()
!
+includedInSubProjects
+ "list packages which are to be explicitely included in the subproject list,
+ even if not found by the automatic search.
+ However: they are not forced to be loaded when a package is loaded;
+ for those, redefine #includedInPreRequisites."
+
+ ^ #()
+
+ "Modified: / 17-08-2006 / 19:57:46 / cg"
+!
+
mandatoryPreRequisites
"list packages which are mandatory as a prerequisite.
This are packages containing superclasses of my classes and classes which
@@ -4417,7 +4430,7 @@
subProjectMakeCallsUsing:callString
^ String streamContents:[:s |
- self subProjects do:[:packageID |
+ self effectiveSubProjects do:[:packageID |
s nextPutLine:'@echo "***********************************"'.
s nextPutLine:'@echo "Buildung ',(packageID copyReplaceAll:$: with:$/).
s nextPutLine:'@echo "***********************************"'.
@@ -5009,8 +5022,8 @@
].
"/ no, don't load subProjects here - will lead to a recursion, which leads
"/ to some classes being loaded from source (soap)
- self activityNotification:'Loading sub projects'.
- meOrMySecondIncarnation loadSubProjectsAsAutoloaded:asAutoloaded.
+"/ self activityNotification:'Loading sub projects'.
+"/ meOrMySecondIncarnation loadSubProjectsAsAutoloaded:asAutoloaded.
].
self activityNotification:('Executing post-load action for %1' bindWith:self package).
@@ -6184,7 +6197,7 @@
"load other packages (at least the projectDefinitions and their extensions)"
self loadSubProjectsAsAutoloaded:false.
- self subProjects do:[:p |
+ self effectiveSubProjects do:[:p |
|subDef|
subDef := self definitionClassForPackage:p.
@@ -6197,7 +6210,7 @@
loadSubProjectsAsAutoloaded:asAutoloaded
"load other packages (at least the projectDefinitions and their extensions)"
- self loadPackages:(self subProjects) asAutoloaded:asAutoloaded
+ self loadPackages:(self effectiveSubProjects) asAutoloaded:asAutoloaded
"Modified: / 25-10-2006 / 17:51:58 / cg"
!
@@ -6341,7 +6354,7 @@
unloadSubProjects
"unload other packages"
- self subProjects do:[:p |
+ self effectiveSubProjects do:[:p |
|subDef|
subDef := self definitionClassForPackage:p.
@@ -6607,7 +6620,7 @@
].
(orderedTuples includes:[:el | el first = el second]) ifTrue:[
- self halt
+ self halt:'oops - something seems to depend upon itself'
].
sortedPackages := orderedTuples topologicalSort.
@@ -7259,11 +7272,11 @@
|emptyProjects nonProjects emptyOrNonProjects classesInImage
classesInDescription onlyInImage onlyInDescription missingPools myPackage|
- emptyProjects := Set withAll:self subProjects.
+ emptyProjects := Set withAll:self effectiveSubProjects.
Smalltalk allClassesDo:[:cls |
emptyProjects remove:(cls package) ifAbsent:[].
].
- nonProjects := self subProjects select:[:p |
+ nonProjects := self effectiveSubProjects select:[:p |
(ProjectDefinition definitionClassForPackage: p) isNil
].
@@ -7353,13 +7366,14 @@
Transcript show:self name; show:': only in description: '; showCR:onlyInDescription
].
(Dialog confirm:'The set of classes in the image is different from the listed classes in the project definition.\\Proceed?' withCRs) ifFalse:[
- AbortSignal raiseRequest
+ AbortOperationRequest raiseRequest
]
].
"/ self validateOrderOfClasses
"
+ exept_expecco_application validateDescription
squeak_vmMaker validateDescription
"
@@ -7479,11 +7493,11 @@
!ProjectDefinition class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.476 2013-06-08 01:00:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.479 2013-06-20 22:45:30 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.476 2013-06-08 01:00:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.479 2013-06-20 22:45:30 cg Exp $'
!
version_HG
--- a/Stream.st Mon Jun 10 17:32:35 2013 +0100
+++ b/Stream.st Fri Jun 21 19:04:37 2013 +0100
@@ -1793,17 +1793,13 @@
^ self nextPutShort:aNumber MSB:true
!
-nextShortPut:aNumber MSB:msbFlag
- "for backward compatibility - this will vanish"
-
- ^ self nextPutShort:aNumber MSB:msbFlag
-
- "Modified: / 1.11.1997 / 18:31:05 / cg"
-!
-
nextTwoBytesPut: anInteger
+ <resource: #obsolete>
"Write anInteger as the next two bytes of the
receiver stream."
+
+ self obsoleteMethodWarning:'use #nextPutShort:MSB:'.
+
self
nextPutByte: (anInteger bitAnd: 255);
nextPutByte: ((anInteger bitShift: -8) bitAnd: 255)
@@ -3308,11 +3304,11 @@
!Stream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Stream.st,v 1.200 2013-04-25 13:11:18 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Stream.st,v 1.201 2013-06-12 08:37:20 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Stream.st,v 1.200 2013-04-25 13:11:18 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Stream.st,v 1.201 2013-06-12 08:37:20 stefan Exp $'
! !
--- a/Win32OperatingSystem.st Mon Jun 10 17:32:35 2013 +0100
+++ b/Win32OperatingSystem.st Fri Jun 21 19:04:37 2013 +0100
@@ -12226,157 +12226,157 @@
//iterate all following objetcs
for (objectIterator=0; objectIterator<numObjectTypes; objectIterator++) {
- //add the st_perObject dictionary to st_objectArray
- st_perObject = __SSEND0(@global(Dictionary), @symbol(new), 0);
- __AT_PUT_(st_objectArray, __mkSmallInteger(objectIterator+1), st_perObject);
-
- //get the object data
- __AT_PUT_(st_perObject, @symbol(ObjectNameTitleIndex), __mkSmallInteger(perfObjectPtr->ObjectNameTitleIndex));
- __AT_PUT_(st_perObject, @symbol(DetailLevel), __mkSmallInteger(perfObjectPtr->DetailLevel));
- __AT_PUT_(st_perObject, @symbol(NumCounters), __mkSmallInteger(perfObjectPtr->NumCounters));
- __AT_PUT_(st_perObject, @symbol(NumInstances), __mkSmallInteger(perfObjectPtr->NumInstances));
-
- //setup counter array and initialize its pointer
- st_counterArray = __ARRAY_NEW_INT(perfObjectPtr->NumCounters);
- perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfObjectPtr + perfObjectPtr->HeaderLength);
-
- //add the st_counterArray to st_perObject dictionary
- __AT_PUT_(st_perObject, @symbol(Counters), st_counterArray);
-
- //iterate all following counter definition
- for (counterIterator=0; counterIterator<perfObjectPtr->NumCounters; counterIterator++) {
- //add the st_perCounter dictionary to st_counterArray
- st_perCounter = __SSEND0(@global(Dictionary), @symbol(new), 0);
- __AT_PUT_(st_counterArray, __mkSmallInteger(counterIterator+1), st_perCounter);
-
- //get the counter data
- __AT_PUT_(st_perCounter, @symbol(CounterNameTitleIndex), __mkSmallInteger(perfCounterPtr->CounterNameTitleIndex));
- __AT_PUT_(st_perCounter, @symbol(CounterTypeBits), __mkSmallInteger(perfCounterPtr->CounterType));
- __AT_PUT_(st_perCounter, @symbol(CounterSize), __mkSmallInteger(perfCounterPtr->CounterSize));
- __AT_PUT_(st_perCounter, @symbol(CounterOffset), __mkSmallInteger(perfCounterPtr->CounterOffset));
-
- //put the counter type size
- switch (perfCounterPtr->CounterType & PERF_SIZE_MASK) {
- case PERF_SIZE_DWORD:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(DWORD));
- break;
- case PERF_SIZE_LARGE:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(LARGE));
- break;
- case PERF_SIZE_ZERO:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(ZERO));
- break;
- case PERF_SIZE_VARIABLE_LEN:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(VARIABLE_LEN));
- break;
- }
- switch (perfCounterPtr->CounterType & PERF_TYPE_MASK) {
- case PERF_TYPE_NUMBER:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(NUMBER));
- switch (perfCounterPtr->CounterType & PERF_NUMBERTYPE_MASK) {
- case PERF_NUMBER_HEX:
- __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(HEX));
- break;
- case PERF_NUMBER_DECIMAL:
- __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DECIMAL));
- break;
- case PERF_NUMBER_DEC_1000:
- __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DEC_1000));
- break;
- }
- break;
- case PERF_TYPE_COUNTER:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(COUNTER));
- switch (perfCounterPtr->CounterType & PERF_COUNTERTYPE_MASK) {
- case PERF_COUNTER_VALUE:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(VALUE));
- break;
- case PERF_COUNTER_RATE:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(RATE));
- break;
- case PERF_COUNTER_FRACTION:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(FRACTION));
- break;
- case PERF_COUNTER_BASE:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(BASE));
- break;
- case PERF_COUNTER_ELAPSED:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(ELAPSED));
- break;
- case PERF_COUNTER_QUEUELEN:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(QUEUELEN));
- break;
- case PERF_COUNTER_HISTOGRAM:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(HISTOGRAM));
- break;
+ //add the st_perObject dictionary to st_objectArray
+ st_perObject = __SSEND0(@global(Dictionary), @symbol(new), 0);
+ __AT_PUT_(st_objectArray, __mkSmallInteger(objectIterator+1), st_perObject);
+
+ //get the object data
+ __AT_PUT_(st_perObject, @symbol(ObjectNameTitleIndex), __mkSmallInteger(perfObjectPtr->ObjectNameTitleIndex));
+ __AT_PUT_(st_perObject, @symbol(DetailLevel), __mkSmallInteger(perfObjectPtr->DetailLevel));
+ __AT_PUT_(st_perObject, @symbol(NumCounters), __mkSmallInteger(perfObjectPtr->NumCounters));
+ __AT_PUT_(st_perObject, @symbol(NumInstances), __mkSmallInteger(perfObjectPtr->NumInstances));
+
+ //setup counter array and initialize its pointer
+ st_counterArray = __ARRAY_NEW_INT(perfObjectPtr->NumCounters);
+ perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfObjectPtr + perfObjectPtr->HeaderLength);
+
+ //add the st_counterArray to st_perObject dictionary
+ __AT_PUT_(st_perObject, @symbol(Counters), st_counterArray);
+
+ //iterate all following counter definition
+ for (counterIterator=0; counterIterator<perfObjectPtr->NumCounters; counterIterator++) {
+ //add the st_perCounter dictionary to st_counterArray
+ st_perCounter = __SSEND0(@global(Dictionary), @symbol(new), 0);
+ __AT_PUT_(st_counterArray, __mkSmallInteger(counterIterator+1), st_perCounter);
+
+ //get the counter data
+ __AT_PUT_(st_perCounter, @symbol(CounterNameTitleIndex), __mkSmallInteger(perfCounterPtr->CounterNameTitleIndex));
+ __AT_PUT_(st_perCounter, @symbol(CounterTypeBits), __mkSmallInteger(perfCounterPtr->CounterType));
+ __AT_PUT_(st_perCounter, @symbol(CounterSize), __mkSmallInteger(perfCounterPtr->CounterSize));
+ __AT_PUT_(st_perCounter, @symbol(CounterOffset), __mkSmallInteger(perfCounterPtr->CounterOffset));
+
+ //put the counter type size
+ switch (perfCounterPtr->CounterType & PERF_SIZE_MASK) {
+ case PERF_SIZE_DWORD:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(DWORD));
+ break;
+ case PERF_SIZE_LARGE:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(LARGE));
+ break;
+ case PERF_SIZE_ZERO:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(ZERO));
+ break;
+ case PERF_SIZE_VARIABLE_LEN:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(VARIABLE_LEN));
+ break;
+ }
+ switch (perfCounterPtr->CounterType & PERF_TYPE_MASK) {
+ case PERF_TYPE_NUMBER:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(NUMBER));
+ switch (perfCounterPtr->CounterType & PERF_NUMBERTYPE_MASK) {
+ case PERF_NUMBER_HEX:
+ __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(HEX));
+ break;
+ case PERF_NUMBER_DECIMAL:
+ __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DECIMAL));
+ break;
+ case PERF_NUMBER_DEC_1000:
+ __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DEC_1000));
+ break;
+ }
+ break;
+ case PERF_TYPE_COUNTER:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(COUNTER));
+ switch (perfCounterPtr->CounterType & PERF_COUNTERTYPE_MASK) {
+ case PERF_COUNTER_VALUE:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(VALUE));
+ break;
+ case PERF_COUNTER_RATE:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(RATE));
+ break;
+ case PERF_COUNTER_FRACTION:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(FRACTION));
+ break;
+ case PERF_COUNTER_BASE:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(BASE));
+ break;
+ case PERF_COUNTER_ELAPSED:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(ELAPSED));
+ break;
+ case PERF_COUNTER_QUEUELEN:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(QUEUELEN));
+ break;
+ case PERF_COUNTER_HISTOGRAM:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(HISTOGRAM));
+ break;
#ifdef PERF_COUNTER_PRECISION
- case PERF_COUNTER_PRECISION:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(PRECISION));
- break;
-#endif
- }
- break;
- case PERF_TYPE_TEXT:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(TEXT));
- switch (perfCounterPtr->CounterType & PERF_TEXTTYPE_MASK) {
- case PERF_TEXT_UNICODE:
- __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(UNICODE));
- break;
- case PERF_TEXT_ASCII:
- __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(ASCII));
- break;
- }
- break;
- case PERF_TYPE_ZERO:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(ZERO));
- break;
- }
-
- //setup the counter pointer to the next counter definition
- perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfCounterPtr + perfCounterPtr->ByteLength);
- }
-
- //goon dependent on the count of instances
- if (perfObjectPtr->NumInstances < 1) {
- perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfCounterPtr);
- __AT_PUT_(st_perObject, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
- } else {
- //setup the instance pointer to the end of all counters
- perfInstancePtr = (PERF_INSTANCE_DEFINITION *)(perfCounterPtr);
-
- //setup st_instanceArray and add it to st_perObject
- st_instanceArray = __ARRAY_NEW_INT(perfObjectPtr->NumInstances);
- __AT_PUT_(st_perObject, @symbol(Instances), st_instanceArray);
-
- //iterate the instances
- for (instanceIterator=0; instanceIterator<perfObjectPtr->NumInstances; instanceIterator++) {
- //setup st_perInstance and add it to st_instanceArray
- st_perInstance = __SSEND0(@global(Dictionary), @symbol(new), 0);
- __AT_PUT_(st_instanceArray, __mkSmallInteger(instanceIterator+1), st_perInstance);
-
- //get the instance data
- __AT_PUT_(st_perInstance, @symbol(Name), __MKBYTEARRAY((wchar_t *)((BYTE *)perfInstancePtr + perfInstancePtr->NameOffset),perfInstancePtr->NameLength));
- __AT_PUT_(st_perInstance, @symbol(ParentObjectTitleIndex), __mkSmallInteger(perfInstancePtr->ParentObjectTitleIndex));
- __AT_PUT_(st_perInstance, @symbol(ParentObjectInstance), __mkSmallInteger(perfInstancePtr->ParentObjectInstance));
- __AT_PUT_(st_perInstance, @symbol(NameOffset), __mkSmallInteger(perfInstancePtr->NameOffset));
- __AT_PUT_(st_perInstance, @symbol(NameLength), __mkSmallInteger(perfInstancePtr->NameLength));
-
- //setup the instance pointer to the its end
- perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfInstancePtr + perfInstancePtr->ByteLength);
-
- //setup the counter block pointer
- perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfInstancePtr);
-
- //get the instance raw data
- __AT_PUT_(st_perInstance, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
-
- //setup the instance pointer to the next instance
- perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfCounterBlockPtr + perfCounterBlockPtr->ByteLength);
- }
- }
-
- //setup the object pointer to the next object
- perfObjectPtr = (PERF_OBJECT_TYPE *)((char *)perfObjectPtr + perfObjectPtr->TotalByteLength);
+ case PERF_COUNTER_PRECISION:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(PRECISION));
+ break;
+#endif
+ }
+ break;
+ case PERF_TYPE_TEXT:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(TEXT));
+ switch (perfCounterPtr->CounterType & PERF_TEXTTYPE_MASK) {
+ case PERF_TEXT_UNICODE:
+ __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(UNICODE));
+ break;
+ case PERF_TEXT_ASCII:
+ __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(ASCII));
+ break;
+ }
+ break;
+ case PERF_TYPE_ZERO:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(ZERO));
+ break;
+ }
+
+ //setup the counter pointer to the next counter definition
+ perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfCounterPtr + perfCounterPtr->ByteLength);
+ }
+
+ //goon dependent on the count of instances
+ if (perfObjectPtr->NumInstances < 1) {
+ perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfCounterPtr);
+ __AT_PUT_(st_perObject, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
+ } else {
+ //setup the instance pointer to the end of all counters
+ perfInstancePtr = (PERF_INSTANCE_DEFINITION *)(perfCounterPtr);
+
+ //setup st_instanceArray and add it to st_perObject
+ st_instanceArray = __ARRAY_NEW_INT(perfObjectPtr->NumInstances);
+ __AT_PUT_(st_perObject, @symbol(Instances), st_instanceArray);
+
+ //iterate the instances
+ for (instanceIterator=0; instanceIterator<perfObjectPtr->NumInstances; instanceIterator++) {
+ //setup st_perInstance and add it to st_instanceArray
+ st_perInstance = __SSEND0(@global(Dictionary), @symbol(new), 0);
+ __AT_PUT_(st_instanceArray, __mkSmallInteger(instanceIterator+1), st_perInstance);
+
+ //get the instance data
+ __AT_PUT_(st_perInstance, @symbol(Name), __MKBYTEARRAY((wchar_t *)((BYTE *)perfInstancePtr + perfInstancePtr->NameOffset),perfInstancePtr->NameLength));
+ __AT_PUT_(st_perInstance, @symbol(ParentObjectTitleIndex), __mkSmallInteger(perfInstancePtr->ParentObjectTitleIndex));
+ __AT_PUT_(st_perInstance, @symbol(ParentObjectInstance), __mkSmallInteger(perfInstancePtr->ParentObjectInstance));
+ __AT_PUT_(st_perInstance, @symbol(NameOffset), __mkSmallInteger(perfInstancePtr->NameOffset));
+ __AT_PUT_(st_perInstance, @symbol(NameLength), __mkSmallInteger(perfInstancePtr->NameLength));
+
+ //setup the instance pointer to the its end
+ perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfInstancePtr + perfInstancePtr->ByteLength);
+
+ //setup the counter block pointer
+ perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfInstancePtr);
+
+ //get the instance raw data
+ __AT_PUT_(st_perInstance, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
+
+ //setup the instance pointer to the next instance
+ perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfCounterBlockPtr + perfCounterBlockPtr->ByteLength);
+ }
+ }
+
+ //setup the object pointer to the next object
+ perfObjectPtr = (PERF_OBJECT_TYPE *)((char *)perfObjectPtr + perfObjectPtr->TotalByteLength);
}
%}.
objectArray := st_objectArray.
@@ -12385,61 +12385,61 @@
perfTime100nSec := st_perfTime100nSec.
getNameBlock := [:i|
- self class counterIndexTextDictionary at:i ifAbsent:['<<no name>>'].
+ self class counterIndexTextDictionary at:i ifAbsent:['<<no name>>'].
].
getCounterValueBlock := [:counter :rawData|
- |offset counterValue|
-
- offset := counter at:#CounterOffset.
- offset >= rawData size ifTrue:[
- counterValue := nil.
- ] ifFalse:[
- (counter at:#SIZE) == #LARGE ifTrue:[
- counterValue := rawData unsignedLongLongAt:offset + 1 bigEndian:false.
- ] ifFalse:[
- (counter at:#SIZE) == #DWORD ifTrue:[
- counterValue := rawData unsignedLongAt:offset + 1 bigEndian:false.
- ] ifFalse:[
- self halt.
- ].
- ].
- ].
-
- counterValue
+ |offset counterValue|
+
+ offset := counter at:#CounterOffset.
+ offset >= rawData size ifTrue:[
+ counterValue := nil.
+ ] ifFalse:[
+ (counter at:#SIZE) == #LARGE ifTrue:[
+ counterValue := rawData unsignedLongLongAt:offset + 1 bigEndian:false.
+ ] ifFalse:[
+ (counter at:#SIZE) == #DWORD ifTrue:[
+ counterValue := rawData unsignedLongAt:offset + 1 bigEndian:false.
+ ] ifFalse:[
+ self halt:'unhandled counter-size; please check'.
+ ].
+ ].
+ ].
+
+ counterValue
].
objectArray do:[:anObject|
- "setup the object name"
- anObject at:#ObjectNameTitle put:(getNameBlock value:(anObject at:#ObjectNameTitleIndex)).
-
- "setup the name and a counter value array to each counter"
- (anObject at:#Counters) do:[:aCounter|
- aCounter at:#CounterNameTitle put:(getNameBlock value:(aCounter at:#CounterNameTitleIndex)).
- aCounter at:#CounterValueArray put:OrderedCollection new.
- ].
-
- (anObject at:#NumInstances) < 1 ifTrue:[
- |rawData|
-
- rawData := anObject at:#RawData.
-
- (anObject at:#Counters) do:[:aCounter|
- (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
- ].
- ] ifFalse:[
- (anObject at:#Instances) do:[:anInstance|
- |rawData|
-
- rawData := anInstance at:#RawData.
-
- anInstance at:#Name put:((Unicode16String fromBytes:(anInstance at:#Name) copy swapBytes) copyButLast:1).
-
- (anObject at:#Counters) do:[:aCounter|
- (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
- ].
- ].
- ].
+ "setup the object name"
+ anObject at:#ObjectNameTitle put:(getNameBlock value:(anObject at:#ObjectNameTitleIndex)).
+
+ "setup the name and a counter value array to each counter"
+ (anObject at:#Counters) do:[:aCounter|
+ aCounter at:#CounterNameTitle put:(getNameBlock value:(aCounter at:#CounterNameTitleIndex)).
+ aCounter at:#CounterValueArray put:OrderedCollection new.
+ ].
+
+ (anObject at:#NumInstances) < 1 ifTrue:[
+ |rawData|
+
+ rawData := anObject at:#RawData.
+
+ (anObject at:#Counters) do:[:aCounter|
+ (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
+ ].
+ ] ifFalse:[
+ (anObject at:#Instances) do:[:anInstance|
+ |rawData|
+
+ rawData := anInstance at:#RawData.
+
+ anInstance at:#Name put:((Unicode16String fromBytes:(anInstance at:#Name) copy swapBytes) copyButLast:1).
+
+ (anObject at:#Counters) do:[:aCounter|
+ (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
+ ].
+ ].
+ ].
].
^ self
@@ -17136,15 +17136,15 @@
!Win32OperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.466 2013-06-06 11:02:00 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.467 2013-06-20 22:33:31 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.466 2013-06-06 11:02:00 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.467 2013-06-20 22:33:31 cg Exp $'
!
version_SVN
- ^ '$Id: Win32OperatingSystem.st,v 1.466 2013-06-06 11:02:00 cg Exp $'
+ ^ '$Id: Win32OperatingSystem.st,v 1.467 2013-06-20 22:33:31 cg Exp $'
! !