<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>