summaryrefslogtreecommitdiff
path: root/bos-meta-bootstrap.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bos-meta-bootstrap.sh')
-rw-r--r--bos-meta-bootstrap.sh106
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