@startuml
'https://plantuml.com/class-diagram


class Plugin {
     name : string
     location : string
     parameters : PluginParameter[]
     type : PluginType
}

Plugin *-- "n" PluginParameter
PluginType *- Plugin

enum PluginType {
    position
    display
    postscanpositioning
}
note left of PluginType::display
    What are these?
end note
note left of PluginType::postscanpositioning
    Rename into
    "positioning" for
    consistency with
    other classes?
end note

enum PluginData {
    int
    double
    string
    axis_id
    channel_id
    device_id
}

class PluginParameter {
     value : string
     name : string
     datatype : PluginData
     default : string
     mandatory : boolean
}
PluginData *- PluginParameter

@enduml