[squeak-dev] FFI: FFI-Tools-mt.2.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue May 19 12:35:15 UTC 2020
Marcel Taeumel uploaded a new version of FFI-Tools to project FFI:
http://source.squeak.org/FFI/FFI-Tools-mt.2.mcz
==================== Summary ====================
Name: FFI-Tools-mt.2
Author: mt
Time: 19 May 2020, 2:35:13.809702 pm
UUID: 9d58bef4-eee3-f741-b93c-6cd39fb77d05
Ancestors: FFI-Tools-mt.1
Adds basic tool support for Squeak's ObjectExplorer.
=============== Diff against FFI-Tools-mt.1 ===============
Item was added:
+ ----- Method: ExternalObject class>>toolIcon (in category '*FFI-Tools') -----
+ toolIcon
+
+ ^ #externalObject!
Item was added:
+ ----- Method: ExternalStructure class>>allFieldSelectors (in category '*FFI-Tools') -----
+ allFieldSelectors
+ "Answer a list of all simple getters for fields in this structure. Rely on the #fields definition but only return selectors that are actually implemented. Consequently for any change in #fields, #defineFields should be called before calling this method."
+
+ ^ self isTypeAlias
+ ifTrue: [#()]
+ ifFalse: [self fields
+ collect: [:spec | spec first]
+ thenSelect: [:selector |
+ selector notNil and: [self includesSelector: selector]]]!
Item was added:
+ ----- Method: ExternalStructure class>>isTypeAlias (in category '*FFI-Tools') -----
+ isTypeAlias
+ "Answer whether this structure is an alias for another C type, enum, etc."
+ "Example: #( nil 'long' )"
+
+ | fields |
+ ^ (fields := self fields) size = 2
+ and: [fields first isNil]!
Item was added:
+ ----- Method: ExternalStructure class>>toolIcon (in category '*FFI-Tools') -----
+ toolIcon
+
+ ^ #externalStructure!
Item was added:
+ ----- Method: ExternalStructure>>explorerContents (in category '*FFI-Tools') -----
+ explorerContents
+
+ ^ self class allFieldSelectors replace: [:simpleGetter |
+ ObjectExplorerWrapper
+ with: (self perform: simpleGetter)
+ name: simpleGetter
+ model: self]!
Item was added:
+ ----- Method: ExternalStructure>>hasContentsInExplorer (in category '*FFI-Tools') -----
+ hasContentsInExplorer
+
+ ^ self class allFieldSelectors notEmpty!
Item was removed:
- ----- Method: ExternalStructureInspector>>recordFieldList (in category 'accessing') -----
- recordFieldList
- | fields |
- fields := object class fields.
- (fields first isKindOf: Array) ifFalse: [fields := Array with: fields].
- ^fields collect: [ :field | field first ] thenSelect: [:name | name notNil]!
Item was changed:
----- Method: ExternalStructureInspector>>streamRecordFieldsOn: (in category 'fields - streaming') -----
streamRecordFieldsOn: aStream
+ self object class allFieldSelectors do: [:field |
- self recordFieldList do: [:field |
aStream nextPut: ((self newFieldForType: #record key: field)
valueGetter: [:object | object perform: field];
valueSetter: [:object :value | (field, ':') asSymbol with: value];
yourself)].!
Item was added:
+ ----- Method: ToolIcons class>>externalObject (in category '*FFI-Tools') -----
+ externalObject
+
+ ^ (Form
+ extent: 12 at 12
+ depth: 32
+ fromArray: #( 0 4294967295 4294967295 4294967295 0 4294967295 4294967295 4294967295 0 4294967295 0 0 4294967295 4278190080 4278190080 4278190080 4294967295 4278190080 4278190080 4278190080 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 4294967295 4294967295 4278190080 4294967295 4294967295 4294967295 4278190080 4294967295 0 4294967295 4278190080 4278190080 4294967295 4294967295 4278190080 4278190080 4294967295 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 0 4294967295 0 0 0 4294967295 0 0 0 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ offset: 0 at 0)!
Item was added:
+ ----- Method: ToolIcons class>>externalStructure (in category '*FFI-Tools') -----
+ externalStructure
+
+ ^ (Form
+ extent: 12 at 12
+ depth: 32
+ fromArray: #( 0 4294967295 4294967295 4294967295 0 4294967295 4294967295 4294967295 0 4294967295 0 0 4294967295 4278190080 4278190080 4278190080 4294967295 4278190080 4278190080 4278190080 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 4294967295 4294967295 4278190080 4294967295 4294967295 4294967295 4278190080 4294967295 0 4294967295 4278190080 4278190080 4294967295 4294967295 4278190080 4278190080 4294967295 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 4294967295 4278190080 4294967295 0 0 4294967295 0 0 4278235136 4278235136 4278235136 0 0 4294967295 0 0 0 0 0 4278235136 4278235136 4294967295 4294967295 4278235136 0 0 0 0 0 0 0 4278235136 4294967295 4294967295 4278235136 4278235136 0 0 0 0 0 0 0 4278235136 4278235136 4294967295 4294967295 4278235136 0 0 0 0 0 0 0 4278235136 4294967295 4294967295
4278235136 4278235136 0 0 0 0 0 0 0 0 4278235136 4278235136 4278235136 0 0 0 0 0)
+ offset: 0 at 0)!
More information about the Squeak-dev
mailing list
|