SICS-188 hdb_path is now a comma separated list of paths.

NOTE: nodes listed as derived parameter dependencies aren't added to the path.

r2673 | ffr | 2008-08-07 16:43:57 +1000 (Thu, 07 Aug 2008) | 3 lines
This commit is contained in:
Ferdi Franceschini
2008-08-07 16:43:57 +10:00
committed by Douglas Clowes
parent 2567cde82b
commit 7c7ed6cbf9

View File

@@ -16,6 +16,8 @@ InstallHdb
namespace eval ::hdb { namespace eval ::hdb {
namespace export buildHDB attlist namespace export buildHDB attlist
set sobjadd_state(depends) false
set NXlog_template { set NXlog_template {
NXlog { NXlog {
$name { $name {
@@ -462,6 +464,8 @@ proc ::hdb::add_feedback {hpath sobj name} {
#\tor "node nnn kind kkk long_name junk prop_list {propA aaa propB bbb ...}" #\tor "node nnn kind kkk long_name junk prop_list {propA aaa propB bbb ...}"
proc ::hdb::add_node {basePath args} { proc ::hdb::add_node {basePath args} {
global nodeindex global nodeindex
variable sobjadd_state
array unset arg_array array unset arg_array
if [ catch { if [ catch {
array set arg_array $args array set arg_array $args
@@ -492,7 +496,7 @@ proc ::hdb::add_node {basePath args} {
} }
if {[lsearch [hlist $basePath] $node_name] == -1} { if {[lsearch [hlist $basePath] $node_name] == -1} {
#TODO allow hdb nodes of type drivable countable environment #TODO allow hdb nodes of type drivable countable environment
array set attribute [attlist $node_name] array set attribute [::utility::normalattlist $node_name]
switch $arg_array(kind) { switch $arg_array(kind) {
command { command {
# A command is a macro, node=macro name # A command is a macro, node=macro name
@@ -527,7 +531,7 @@ proc ::hdb::add_node {basePath args} {
hsetprop $node_path klass [getatt $node_name klass] hsetprop $node_path klass [getatt $node_name klass]
if [info exists attribute(hdbchain)] { if [info exists attribute(hdbchain)] {
foreach pmot [split $attribute(hdbchain) ,] { foreach pmot [split $attribute(hdbchain) ,] {
hchain $node_path [getatt $pmot hdb_path] hchain $node_path [lindex [split [getatt $pmot hdb_path] ,] 0]
} }
} }
foreach child [hlist $node_path] { foreach child [hlist $node_path] {
@@ -567,10 +571,16 @@ proc ::hdb::add_node {basePath args} {
} }
if {[info exists attribute(depends)]} { if {[info exists attribute(depends)]} {
foreach dep [split [normalgetatt $node_name depends] , ] { foreach dep [split [normalgetatt $node_name depends] , ] {
set sobjadd_state(depends) true
::hdb::sobjadd $node_path $dep ::hdb::sobjadd $node_path $dep
set sobjadd_state(depends) false
} }
} }
sicslist setatt $node_name hdb_path $node_path if { $sobjadd_state(depends) == false && [info exists attribute(hdb_path)] } {
sicslist setatt $node_name hdb_path $attribute(hdb_path),$node_path
} else {
sicslist setatt $node_name hdb_path $node_path
}
return $node_path return $node_path
} }
} message ] { } message ] {