<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/e9e2938fd8f9d843f525b6238577b861b9d976fd">https://github.com/macports/macports-base/commit/e9e2938fd8f9d843f525b6238577b861b9d976fd</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new e9e2938fd Use dict in macports_dlist
</span>e9e2938fd is described below

<span style='display:block; white-space:pre;color:#808000;'>commit e9e2938fd8f9d843f525b6238577b861b9d976fd
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Feb 12 03:19:55 2024 +1100

<span style='display:block; white-space:pre;color:#404040;'>    Use dict in macports_dlist
</span>---
 src/macports1.0/macports_dlist.tcl | 61 ++++++++++++++++----------------------
 1 file changed, 26 insertions(+), 35 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/macports_dlist.tcl b/src/macports1.0/macports_dlist.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index ba5fb3ee7..3e0047277 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/macports_dlist.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/macports_dlist.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -353,9 +353,9 @@ proc dlist_eval {dlist testcond handler {canfail "0"} {selector "dlist_get_next"
</span> # Anything below this point is subject to change without notice.
 #####
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Each ditem is actually an array in the macports_dlist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Each ditem is actually a dict in the macports_dlist
</span> # namespace.  ditem keys correspond to the equivalent array
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# key.  A dlist is simply a list of names of ditem arrays.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# key.  A dlist is simply a list of names of ditem dicts.
</span> # All private API functions exist in the macports_dlist
 # namespace.
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -368,7 +368,7 @@ proc ditem_create {} {
</span>   incr ditem_uniqid
        set ditem "ditem_${ditem_uniqid}"
        variable $ditem
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        array set $ditem [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set $ditem [dict create]
</span>   return $ditem
 }
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -381,60 +381,51 @@ proc ditem_key {ditem args} {
</span>   variable $ditem
        set nbargs [llength $args]
        if {$nbargs > 1} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                set key [lindex $args 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return [set [set ditem]($key) [lindex $args 1]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           lassign $args key val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           dict set $ditem $key $val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return $val
</span>   } elseif {$nbargs == 1} {
                set key [lindex $args 0]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {[info exists [set ditem]($key)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               return [set [set ditem]($key)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if {[dict exists [set $ditem] $key]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               return [dict get [set $ditem] $key]
</span>           } else {
                    return {}
                }
        } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                return [array get $ditem]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return [set $ditem]
</span>   }
 }
 
 proc ditem_append {ditem key args} {
        variable $ditem
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[info exists [set ditem]($key)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       set x [set [set ditem]($key)]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       set x {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if {$x ne {}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           lappend x {*}$args
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           set x $args
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   set [set ditem]($key) $x
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return $x
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   dict lappend $ditem $key {*}$args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return [dict get [set $ditem] $key]
</span> }
 
 proc ditem_append_unique {ditem key args} {
        variable $ditem
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[info exists [set ditem]($key)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       set x [set [set ditem]($key)]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       set x {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set unique [dict create]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if {[dict exists [set $ditem] $key]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       foreach val [dict get [set $ditem] $key] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           dict set unique $val {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span>   }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {$x ne {}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           lappend x {*}$args
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           set x [lsort -unique $x]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           set x $args
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   set [set ditem]($key) $x
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   foreach val $args {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        dict set unique $val {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set x [dict keys $unique]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   dict set $ditem $key $x
</span>   return $x
 }
 
 proc ditem_contains {ditem key args} {
        variable $ditem
        if {[llength $args] == 0} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                return [info exists [set ditem]($key)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return [dict exists [set $ditem] $key]
</span>   } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {[info exists [set ditem]($key)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   set x [set [set ditem]($key)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if {[dict exists [set $ditem] $key]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   set x [dict get [set $ditem] $key]
</span>           } else {
                        return 0
                }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -448,7 +439,7 @@ proc ditem_contains {ditem key args} {
</span> 
 proc ditem_as_string {ditem} {
        variable $ditem
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        return [array get $ditem]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return [dict get [set $ditem]]
</span> }
 
 # End of macports_dlist namespace
</pre><pre style='margin:0'>

</pre>