bos_5fbos_2fmop_2finheritance_5fmeta="bos-dispatch/invoke bos/mop/base 0"
declare -a bos_5fbos_2fmop_2finheritance_5fmro=( "bos/mop/inheritance" "bos/mop/base" )
function bos/mop/inheritance/isa-for-into() {
bos-namespaces/store-array-for-into isa "$1" "$2"
}
function bos/mop/inheritance/set-superclasses-for() {
local isa_name; $self isa-for-into "$1" isa_name
local -n isa="$isa_name"
shift
isa=( "$@" )
return 0
}
function bos/mop/inheritance/get-superclasses-for-into() {
local isa_name; $self isa-for-into "$1" isa_name
local -n isa="$isa_name"
local -n dest="$2"
dest=( "${isa[@]}" )
return 0
}
function bos/mop/inheritance/make-mro-for() {
local class="$1"
local mro_name; $self mro-for-into "$class" mro_name
local -n mro="$mro_name"
mro=( "$class" )
local -a nextclasses
$self get-superclasses-for-into "$class" nextclasses
while [[ "${#nextclasses}" -gt 0 ]]; do
mro+=( "${nextclasses[0]}" )
class="${nextclasses[0]}"
$self get-superclasses-for-into "$class" nextclasses
done
return 0
}