All pastes #885258 Raw Edit

Miscellany

public text v1 · immutable
#885258 ·published 2008-01-30 20:55 UTC
rendered paste body
-- getSuperClassIntances
-- gets all the instances of a given superclass
-- R. Annema - SplutterFish, LLC
fn getSuperClassIntances superClass base:false = (
	local classesStr = stringStream ""
	showclass ("*:" + superClass as string) to:classesStr
	classesStr = classesStr as string
	local classes = filterString classesStr "\n"
	for i = classes.count to 1 by -1 do (
		local class = (filterString classes[i] " ")[1]
		try ( classes[i] = execute class )
		catch ( deleteItem classes i )
	)
	local classInstances = #()
	for class in classes do (
		classInstances += try (getClassInstances class ); catch ( #() )
	)
	if (base == false) do (
		for i = 1 to classInstances.count do (
			local classInstance = classInstances[i]
			local dependents = refs.dependents classInstance
			for dependent in dependents do (
				if (classInstance == dependent) do ( -- WARNING: This comparison is side-specific.  'dependent == classInstance' will always result in 'false'.
					classInstances[i] = dependent
				)
			)
		)
	)
	classInstances
)