diff --git a/SYNTAX.rst b/SYNTAX.rst index 260823521..7476f4470 100644 --- a/SYNTAX.rst +++ b/SYNTAX.rst @@ -512,6 +512,17 @@ These are defined in df-code.lisp: but allows the GUI to display it as a list. +```` + + Defines a DF-style linked list node. This translates to:: + + + + + + + + with some extra code to make it easier to interact with. Class type definition ===================== diff --git a/StructType.pm b/StructType.pm index cfc6a6962..d45991348 100644 --- a/StructType.pm +++ b/StructType.pm @@ -191,6 +191,7 @@ sub render_struct_type { my $tag_name = $tag->getAttribute('ld:meta'); my $is_class = ($tag_name eq 'class-type'); + my $is_linked_list = (($tag->getAttribute('ld:subtype') or '') eq 'df-linked-list-type'); my $custom_methods = is_attr_true($tag, 'custom-methods') || $tag->findnodes('custom-methods/cmethod'); my $has_methods = $is_class || is_attr_true($tag, 'has-methods'); my $inherits = $tag->getAttribute('inherits-from'); @@ -206,6 +207,8 @@ sub render_struct_type { $ispec = ' : '.$inherits; } elsif ($is_class) { $ispec = ' : virtual_class'; + } elsif ($is_linked_list) { + $ispec = ' : DfLinkedList<'.$typename.', '.$tag->getAttribute('item-type').'>'; } with_struct_block { diff --git a/df.jobs.xml b/df.jobs.xml index 320e18cb9..3cecca9ab 100644 --- a/df.jobs.xml +++ b/df.jobs.xml @@ -45,12 +45,7 @@ - - (describe-obj $.item) - - - - + diff --git a/df.map.xml b/df.map.xml index 35719bc6f..faa4223b3 100644 --- a/df.map.xml +++ b/df.map.xml @@ -220,11 +220,7 @@ - - - - - + @@ -328,11 +324,7 @@ - - - - - + diff --git a/df.projectile.xml b/df.projectile.xml index 5d88559ea..f64722cca 100644 --- a/df.projectile.xml +++ b/df.projectile.xml @@ -5,11 +5,7 @@ - - - - - + diff --git a/lower-1.xslt b/lower-1.xslt index 0337b5b35..1bada0651 100644 --- a/lower-1.xslt +++ b/lower-1.xslt @@ -61,6 +61,21 @@ + + + (describe-obj $.item) + + + + + + + + + + + +