export AbstractProcess, PhysicalProcess, SimulatedProcess export num_outputs, num_inputs, outputrange, inputrange, isstable, isasstable, sampletime, bias, control, measure, initialize, finalize # Interface specification =================================================================== abstract type AbstractProcess end abstract type PhysicalProcess <: AbstractProcess end abstract type SimulatedProcess <: AbstractProcess end ## Function definitions ===================================================================== num_outputs(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") num_inputs(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") outputrange(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") inputrange(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") isstable(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") isasstable(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") sampletime(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") bias(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") control(p::AbstractProcess, u) = error("Function not implemented for $(typeof(p))") measure(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") initialize(p::AbstractProcess) = error("Function not implemented for $(typeof(p))") finalize(p::AbstractProcess) = error("Function not implemented for $(typeof(p))")