Class ::nx::VariableSlot

::nx::VariableSlot[i] create ...

Class Relations

  • class: ::nx::MetaSlot[i]
  • superclass: ::nx::ObjectParameterSlot[i]
  • subclass: ::xotcl::Attribute[i]
::nx::MetaSlot create ::nx::VariableSlot \
     -superclass ::nx::ObjectParameterSlot

Methods (to be applied on instances)

  • __default_from_cmd (scripted)

    ::nsf::directdispatch $obj -frame object  ::trace remove variable $var $op [list [::nsf::self] [::nsf::current method] $obj $cmd]
    ::nsf::var::set $obj $var [$obj eval $cmd]
  • __trace_default (scripted)

    ::nsf::directdispatch $obj -frame object  ::trace remove variable $var $op [list [::nsf::self] [::nsf::current method] $obj]
    ::nsf::var::set $obj $var [:value=default $obj $var]
  • __trace_get (scripted)

    :value=get $obj [string trimleft $var :]
  • __trace_set (scripted)

    set var [string trimleft $var :]
    :value=set $obj $var [::nsf::var::get $obj $var]
  • parameter (scripted)

    set options [:getParameterOptions -withMultiplicity true]
    set spec [:namedParameterSpec -map-private "" ${:name} $options]
    if {[info exists :default]} {lappend spec ${:default}}
    return $spec
  • reconfigure (scripted)

    unset -nocomplain :parameterSpec
    if {${:incremental}} {
      if {${:accessor} eq "none"} { set :accessor "public" }
      if {![:isMultivalued]} { set :multiplicity [string range ${:multiplicity} 0 0]..n }
    }
    :makeAccessor
    if {${:per-object} && [info exists :default]} {
      :setCheckedInstVar -nocomplain=[info exists :nocomplain] ${:domain} ${:default}
    }
    if {[::nsf::is class ${:domain}]} {
      ::nsf::parameter::cache::classinvalidate ${:domain}
    }
  • setCheckedInstVar (scripted)

    if {!$allowpreset && [::nsf::var::exists $object ${:name}] && !$nocomplain} {
      return -code error "object $object has already an instance variable named '${:name}'"
    }
    
    #
    # For checking the default, we do not want substdefault to be
    # passed to is, or is would have to do the subst....
    #
    set options [:getParameterOptions -withMultiplicity true -withSubstdefault false]
    
    if {[llength $options]} {
      ::nsf::is -configure -complain -name ${:name}: [join $options ,] $value
    }
    
    set restore [:removeTraces $object *]
    # was: ::nsf::var::set $object ${:name} ${:default}
    ::nsf::var::set $object ${:name} $value
    if {[info exists restore]} { {*}$restore }
  • value=add (scripted)

    if {![:isMultivalued]} {
      #puts stderr "... vars [[self] info vars] // [[self] eval {set :multiplicity}]"
      return -code error "property $prop of [set :domain] is not multivalued"
    }
    if {[::nsf::var::exists $obj $prop]} {
      ::nsf::var::set $obj $prop [linsert [::nsf::var::set $obj $prop$pos $value]
    } else {
      ::nsf::var::set $obj $prop [list $value]
    }
  • value=delete (scripted)

    set old [::nsf::var::get $obj $prop]
    set p [lsearch -glob $old $value]
    if {$p > -1} {
      ::nsf::var::set $obj $prop [lreplace $old $p $p]
    } elseif {!$nocomplain} {
      return -code error "$obj: '$value' is not in variable '$prop' (values are: '$old')"
    } else {
      return $old
    }
  • value=exists (scripted)

    ::nsf::var::exists $obj $prop
  • value=get (alias)

  • value=set (alias)

  • value=unset (scripted)

    ::nsf::var::unset -nocomplain=$nocomplain $obj $prop