Skip to content
Martín Dias edited this page Nov 28, 2025 · 18 revisions

Welcome to the PharoSDL3 wiki!

PR/12 serves as a basis for the next time we need to re-generate from scratch the FFI bindings.

Extra scripts post PR/12:

A. Events hierarchy: Add 2 intermediate abstract classes (commit):

superclass :=
	(SDL3MappedEvent << #SDL3WindowIDEvent
		slots: {};
		tag: 'Own';
		package: 'SDL3') install.

SDL3MappedEvent subclasses
	select: [ :each | each includesSelector: #windowID ]
	thenDo: [ :each | each superclass: superclass ].


superclass :=
	(SDL3MappedEvent << #SDL3MouseEvent
		slots: {};
		tag: 'Own';
		package: 'SDL3') install.

SDL3MappedEvent allSubclasses
	select: [ :each |
		(each name includesSubstring: 'Mouse')
		and: [ (each includesSelector: #which)
		and: [ (each includesSelector: #x) ] ] ]
	thenDo: [ :each | each superclass: superclass ]

B. Event hierarchy: delete unneeded API (commit)

SDL3MappedEvent allSubclassesDo: [ :each | each removeSelector: #type ].

(SDL3MappedEvent allSubclasses copyWithout: SDL3UserEvent) 
	do: [ :eachClass |
		(eachClass selectorsInProtocol: #'accessing - structure variables')
			select: [ :eachSelector | eachSelector last = $: ]
			thenDo: [ :eachSelector | eachClass removeSelector: eachSelector ] ].

C. Fix argument name from _Bool to bool (commit)

LibSDL3 compile: '_Bool '.
(ReRenameMethodRefactoring new
	model: (RBNamespace onEnvironment: LibSDL3 asEnvironment);
	renameMethod: #_Bool
	in: LibSDL3
	to: 'bool'
	permutation: #(  );
	renameChanges) execute.
LibSDL3 removeSelector: #bool

Clone this wiki locally