OBDDimal / cofmed

Colaborative Feature-Model Editor
GNU Lesser General Public License v3.0
1 stars 0 forks source link

Support for extended feature models with integer features #23

Open h3ssto opened 5 months ago

h3ssto commented 5 months ago

One of the UVL language levels adds support for non-Boolean features. There already exists basic support in FeatureIDE and UVLS but not for visualization. Something like this, would probably suffice: image

Example UVL file by @acherm.

features
    "Floating Point Experiment" {extended__}
        mandatory
            "Language"
                alternative
                    C
                    Rust
            "Compilation Flags"
                or
                    "-O2"
                    "-O3"
                    "-Os"
                    "-O0"
                    "-Ofast"
                    // customFlags "Specify any custom flags"
            "Data Types"
                or
                    double
                    float
                    long
                    f16
                    f32
                    f64
            Integer "Experiment Repetitions"
            Integer "Random Draws"
            "Random Generation Method"
                alternative
                    "Uniform Distribution"
                    "Uniform Distribution [0,1]"
                    "Naive Random Generator"
            "Operating System"
                alternative
                    Windows
                    MacOS
                    Linux
            "Algebraic Relation"
                or
                    Associativity
                    RelationWithPi
                    Inverses
                    // customRelation "Specify any custom relation"
            "Processor Type"
                alternative
                    CPU
                    GPU

        optional
            "Cross Compilation"
constraints
    C => double | float | long
    Rust => f16 | f32 | f64
    Windows => "Cross Compilation"
    CPU => !GPU
    GPU => !CPU
h3ssto commented 5 months ago

Also, we should more gracefully handle opening models

acherm commented 5 months ago

Thanks a lot!

I can imagine different visualization (physics of notation is a thing), like putting attributes as in class diagram, i.e., within the box of a feature, and in case the attribute is not associated to a feature, put it to the root.

A cool, temporary workaround could be to have an export in SVG... since SVG can be edited and customized owing to the (very) specific needs of a user.

h3ssto commented 5 months ago

Hi @acherm, by removing the extended stuff, you can already export the model as SVG, like this: mathieu_example

Collapse and edit as you like, you can also auto-hide and change the distances.

If possible, could you share your amended SVG with us for inspiration?