@@ -97,12 +97,12 @@ SignalTable(
9797struct SignalTable <: AbstractDict{String,Any}
9898 dict:: StringDictType
9999 independendentSignalNames:: Vector{String}
100- independentSignalsFirstDimension :: Vector{Int}
100+ independentSignalsSize :: NTuple
101101
102102 function SignalTable (args... )
103103 dict = new_signal_table ()
104104 independendentSignalNames = String[]
105- independentSignalsFirstDimension = Int[]
105+ independentSignalLengths = Int[]
106106 k = 0
107107 for (key, sig) in args
108108 if ! isSignal (sig)
@@ -116,10 +116,14 @@ struct SignalTable <: AbstractDict{String,Any}
116116 end
117117 if get (sig, :independent , false )
118118 k += 1
119+ ndims_sig = ndims (sig_values)
120+ if ndims_sig != 1
121+ error (" SignalTable(.., $key => ..): Independent signal $key must have one dimension, but has $ndims_sig dimensions." )
122+ end
119123 push! (independendentSignalNames, key)
120- push! (independentSignalsFirstDimension, size (sig_values, 1 ))
124+ push! (independentSignalLengths, length (sig_values))
121125 else
122- for (i,val) in enumerate (independentSignalsFirstDimension )
126+ for (i,val) in enumerate (independentSignalLengths )
123127 if size (sig_values, i) != val
124128 error (" SignalTable(\" $key \" => signal, ...): size(signal[:values],$i ) = $(size (sig_values,i)) but must be $val (= length of independent signal)!" )
125129 end
@@ -153,7 +157,7 @@ struct SignalTable <: AbstractDict{String,Any}
153157 end
154158 dict[key] = sig
155159 end
156- new (dict, independendentSignalNames, independentSignalsFirstDimension )
160+ new (dict, independendentSignalNames, ntuple (i -> independentSignalLengths[i], length (independentSignalLengths)) )
157161 end
158162end
159163Base. convert (:: Type{StringDictType} , sig:: SignalTable ) = sig. dict
@@ -199,11 +203,13 @@ end
199203
200204# Implementation of AbstractSignalTableInterface
201205isSignalTable (sigTable:: SignalTable ) = true
202- independentSignalNames (sigTable:: SignalTable ) = sigTable. independendentSignalNames
206+ independentSignalNames ( sigTable:: SignalTable ) = sigTable. independendentSignalNames
207+ getIndependentSignalsSize (sigTable:: SignalTable ) = sigTable. independentSignalsSize
203208signalNames ( sigTable:: SignalTable ) = setdiff (String .(keys (sigTable)), [" _class" ])
204209getSignal ( sigTable:: SignalTable , name:: String ) = sigTable[name]
205210hasSignal ( sigTable:: SignalTable , name:: String ) = haskey (sigTable, name)
206211
212+
207213function getDefaultHeading (sigTable:: SignalTable ):: String
208214 attr = get (sigTable, " attributes" , " " )
209215 if attr == " "
0 commit comments