diff options
author | dakkar <dakkar@thenautilus.net> | 2023-07-28 11:34:57 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2023-07-28 11:34:57 +0100 |
commit | 59f6d9b888bb0b224754e4bce3a5c01314002202 (patch) | |
tree | d2f5f3daab8800e27980f4a1a8c4cf647081811a /bos-meta-bootstrap.sh | |
parent | BROKEN (diff) | |
download | bash-object-system-59f6d9b888bb0b224754e4bce3a5c01314002202.tar.gz bash-object-system-59f6d9b888bb0b224754e4bce3a5c01314002202.tar.bz2 bash-object-system-59f6d9b888bb0b224754e4bce3a5c01314002202.zip |
STILL BORKEN
we need attribute defaults, probably via functions?
it currently explodes when it can't find a value for
`class_attributes` for metaclasses of non-bootstrap classes
Diffstat (limited to 'bos-meta-bootstrap.sh')
-rw-r--r-- | bos-meta-bootstrap.sh | 106 |
1 files changed, 67 insertions, 39 deletions
diff --git a/bos-meta-bootstrap.sh b/bos-meta-bootstrap.sh index b476f38..4199feb 100644 --- a/bos-meta-bootstrap.sh +++ b/bos-meta-bootstrap.sh @@ -16,133 +16,161 @@ bos-meta/set-metaclass-instance-for bos/meta/attribute "$bos_meta_attribute_meta $bos_meta_attribute_meta_class_instance make-mro-for bos/meta/attribute +# metaclass instance for bos/base + +declare bos_base_meta_class_instance +bos/meta/class/create-object-into bos_base_meta_class_instance bos/meta/class +bos-meta/set-metaclass-instance-for bos/base "$bos_base_meta_class_instance" + +$bos_base_meta_class_instance make-mro-for bos/base + # here we create meta-attributes for the three attributes of # bos/meta/attribute: attribute_name attribute_type associated_class # and register them with the $bos_meta_attribute_meta_class_instance -## we'll re-use this name -declare bos_meta_attribute_instance - ## this is the `attribute_name` meta-attribute -bos/meta/class/create-object-into bos_meta_attribute_instance bos/meta/attribute +bos/meta/class/create-object-into bos_meta_attribute_name_instance bos/meta/attribute attribute_type='scalar' associated_class='bos/meta/attribute' attribute_name='attribute_name' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" attribute_name +$bos_meta_attribute_name_instance set-value "$bos_meta_attribute_name_instance" attribute_name attribute_name='attribute_type' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" scalar +$bos_meta_attribute_name_instance set-value "$bos_meta_attribute_name_instance" scalar attribute_name='associated_class' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" bos/meta/attribute +$bos_meta_attribute_name_instance set-value "$bos_meta_attribute_name_instance" bos/meta/attribute -$bos_meta_attribute_meta_class_instance set-attribute-by-name 'attribute_name' "$bos_meta_attribute_instance" +unset attribute_type attribute_name associated_class + +$bos_meta_attribute_meta_class_instance set-attribute-by-name 'attribute_name' "$bos_meta_attribute_name_instance" ## this is the `attribute_type` meta-attribute -bos/meta/class/create-object-into bos_meta_attribute_instance bos/meta/attribute +bos/meta/class/create-object-into bos_meta_attribute_type_instance bos/meta/attribute attribute_type='scalar' associated_class='bos/meta/attribute' attribute_name='attribute_name' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" attribute_type +$bos_meta_attribute_type_instance set-value "$bos_meta_attribute_type_instance" attribute_type attribute_name='attribute_type' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" scalar +$bos_meta_attribute_type_instance set-value "$bos_meta_attribute_type_instance" scalar attribute_name='associated_class' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" bos/meta/attribute +$bos_meta_attribute_type_instance set-value "$bos_meta_attribute_type_instance" bos/meta/attribute + +unset attribute_type attribute_name associated_class -$bos_meta_attribute_meta_class_instance set-attribute-by-name 'attribute_type' "$bos_meta_attribute_instance" +$bos_meta_attribute_meta_class_instance set-attribute-by-name 'attribute_type' "$bos_meta_attribute_type_instance" ## this is the `associated_class` meta-attribute -bos/meta/class/create-object-into bos_meta_attribute_instance bos/meta/attribute +bos/meta/class/create-object-into bos_meta_attribute_class_instance bos/meta/attribute attribute_type='scalar' associated_class='bos/meta/attribute' attribute_name='attribute_name' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" associated_class +$bos_meta_attribute_class_instance set-value "$bos_meta_attribute_class_instance" associated_class attribute_name='attribute_type' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" scalar +$bos_meta_attribute_class_instance set-value "$bos_meta_attribute_class_instance" scalar attribute_name='associated_class' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" bos/meta/attribute +$bos_meta_attribute_class_instance set-value "$bos_meta_attribute_class_instance" bos/meta/attribute + +unset attribute_type attribute_name associated_class -$bos_meta_attribute_meta_class_instance set-attribute-by-name 'associated_class' "$bos_meta_attribute_instance" +$bos_meta_attribute_meta_class_instance set-attribute-by-name 'associated_class' "$bos_meta_attribute_class_instance" # now we set the attributes for bos/meta/class! ## this is the `class_attributes` meta-attribute -bos/meta/class/create-object-into bos_meta_attribute_instance bos/meta/attribute +bos/meta/class/create-object-into bos_meta_attribute_classattrs_instance bos/meta/attribute attribute_type='scalar' associated_class='bos/meta/attribute' attribute_name='attribute_name' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" 'class_attributes' +$bos_meta_attribute_classattrs_instance set-value "$bos_meta_attribute_classattrs_instance" 'class_attributes' attribute_name='attribute_type' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" assoc +$bos_meta_attribute_classattrs_instance set-value "$bos_meta_attribute_classattrs_instance" assoc attribute_name='associated_class' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" bos/meta/class +$bos_meta_attribute_classattrs_instance set-value "$bos_meta_attribute_classattrs_instance" bos/meta/class -$bos_meta_class_meta_class_instance set-attribute-by-name 'class_attributes' "$bos_meta_attribute_instance" +unset attribute_type attribute_name associated_class + +$bos_meta_class_meta_class_instance set-attribute-by-name 'class_attributes' "$bos_meta_attribute_classattrs_instance" +$bos_base_meta_class_instance set-attribute-by-name 'class_attributes' "$bos_meta_attribute_classattrs_instance" ## this is the `class_name` meta-attribute -bos/meta/class/create-object-into bos_meta_attribute_instance bos/meta/attribute +bos/meta/class/create-object-into bos_meta_attribute_classname_instance bos/meta/attribute attribute_type='scalar' associated_class='bos/meta/attribute' attribute_name='attribute_name' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" 'class_name' +$bos_meta_attribute_classname_instance set-value "$bos_meta_attribute_classname_instance" 'class_name' attribute_name='attribute_type' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" scalar +$bos_meta_attribute_classname_instance set-value "$bos_meta_attribute_classname_instance" scalar attribute_name='associated_class' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" bos/meta/class +$bos_meta_attribute_classname_instance set-value "$bos_meta_attribute_classname_instance" bos/meta/class + +unset attribute_type attribute_name associated_class -$bos_meta_class_meta_class_instance set-attribute-by-name 'class_name' "$bos_meta_attribute_instance" +$bos_meta_class_meta_class_instance set-attribute-by-name 'class_name' "$bos_meta_attribute_classname_instance" + +$bos_meta_attribute_classname_instance set-value "$bos_meta_class_meta_class_instance" 'bos/meta/class' +$bos_meta_attribute_classname_instance set-value "$bos_meta_attribute_meta_class_instance" 'bos/meta/attribute' +$bos_meta_attribute_classname_instance set-value "$bos_base_meta_class_instance" 'bos/base' ## this is the `isa` meta-attribute -bos/meta/class/create-object-into bos_meta_attribute_instance bos/meta/attribute +bos/meta/class/create-object-into bos_meta_attribute_isa_instance bos/meta/attribute attribute_type='scalar' associated_class='bos/meta/attribute' attribute_name='attribute_name' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" 'isa' +$bos_meta_attribute_isa_instance set-value "$bos_meta_attribute_isa_instance" 'isa' attribute_name='attribute_type' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" array +$bos_meta_attribute_isa_instance set-value "$bos_meta_attribute_isa_instance" array attribute_name='associated_class' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" bos/meta/class +$bos_meta_attribute_isa_instance set-value "$bos_meta_attribute_isa_instance" bos/meta/class + +unset attribute_type attribute_name associated_class -$bos_meta_class_meta_class_instance set-attribute-by-name 'isa' "$bos_meta_attribute_instance" +$bos_meta_class_meta_class_instance set-attribute-by-name 'isa' "$bos_meta_attribute_isa_instance" ## this is the `mro` meta-attribute -bos/meta/class/create-object-into bos_meta_attribute_instance bos/meta/attribute +bos/meta/class/create-object-into bos_meta_attribute_mro_instance bos/meta/attribute attribute_type='scalar' -associated_class='bos/meta/class' +associated_class='bos/meta/attribute' attribute_name='attribute_name' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" 'mro' +$bos_meta_attribute_mro_instance set-value "$bos_meta_attribute_mro_instance" 'mro' attribute_name='attribute_type' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" array +$bos_meta_attribute_mro_instance set-value "$bos_meta_attribute_mro_instance" array attribute_name='associated_class' -$bos_meta_attribute_instance set-value "$bos_meta_attribute_instance" bos/meta/class +$bos_meta_attribute_mro_instance set-value "$bos_meta_attribute_mro_instance" bos/meta/class + +unset attribute_type attribute_name associated_class + +$bos_meta_class_meta_class_instance set-attribute-by-name 'mro' "$bos_meta_attribute_mro_instance" -$bos_meta_class_meta_class_instance set-attribute-by-name 'mro' "$bos_meta_attribute_instance" +$bos_meta_attribute_mro_instance set-value "$bos_meta_class_meta_class_instance" 'bos/meta/class' +$bos_meta_attribute_mro_instance set-value "$bos_meta_attribute_meta_class_instance" 'bos/meta/attribute' +$bos_meta_attribute_mro_instance set-value "$bos_base_meta_class_instance" 'bos/base' unset bos_meta_class_meta_class_instance bos_meta_attribute_instance attribute_name attribute_type associated_class |