Xcos: fix the DSUPER preference over SUPER_f
[scilab.git] / scilab / modules / xcos / src / java / org / scilab / modules / xcos / graph / model / BlockInterFunction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011-2015 - Scilab Enterprises - Clement DAVID
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10  *
11  */
12 package org.scilab.modules.xcos.graph.model;
13
14 import org.scilab.modules.xcos.block.AfficheBlock;
15 import org.scilab.modules.xcos.block.BasicBlock;
16 import org.scilab.modules.xcos.block.SplitBlock;
17 import org.scilab.modules.xcos.block.SuperBlock;
18 import org.scilab.modules.xcos.block.TextBlock;
19 import org.scilab.modules.xcos.block.io.EventInBlock;
20 import org.scilab.modules.xcos.block.io.EventOutBlock;
21 import org.scilab.modules.xcos.block.io.ExplicitInBlock;
22 import org.scilab.modules.xcos.block.io.ExplicitOutBlock;
23 import org.scilab.modules.xcos.block.io.ImplicitInBlock;
24 import org.scilab.modules.xcos.block.io.ImplicitOutBlock;
25 import org.scilab.modules.xcos.block.positionning.BigSom;
26 import org.scilab.modules.xcos.block.positionning.GroundBlock;
27 import org.scilab.modules.xcos.block.positionning.Product;
28 import org.scilab.modules.xcos.block.positionning.RoundBlock;
29 import org.scilab.modules.xcos.block.positionning.Summation;
30 import org.scilab.modules.xcos.block.positionning.VoltageSensorBlock;
31
32 /**
33  * List the specific block interface function name. <BR>
34  * <BR>
35  * <EM>Specific instance must be registered after the most generic one in order
36  * to serialized all the non-default values.</EM>
37  */
38 public enum BlockInterFunction {
39     /** @see TextBlock */
40     TEXT_f(TextBlock.class),
41     /** @see SuperBlock */
42     SUPER_f(SuperBlock.class),
43     /** @see SuperBlock */
44     DSUPER(SuperBlock.class),
45     /** @see AfficheBlock */
46     AFFICH_m(AfficheBlock.class),
47     /** @see ExplicitInBlock */
48     IN_f(ExplicitInBlock.class),
49     /** @see ExplicitOutBlock */
50     OUT_f(ExplicitOutBlock.class),
51     /** @see ImplicitInBlock */
52     INIMPL_f(ImplicitInBlock.class),
53     /** @see ImplicitOutBlock */
54     OUTIMPL_f(ImplicitOutBlock.class),
55     /** @see EventInBlock */
56     CLKINV_f(EventInBlock.class),
57     /** @see EventOutBlock */
58     CLKOUTV_f(EventOutBlock.class),
59     /** @see EventOutBlock */
60     CLKOUT_f(EventOutBlock.class),
61     /** @see SplitBlock */
62     SPLIT_f(SplitBlock.class),
63     /** @see SplitBlock */
64     IMPSPLIT_f(SplitBlock.class),
65     /** @see SplitBlock */
66     CLKSPLIT_f(SplitBlock.class),
67     /** @see GroundBlock */
68     Ground(GroundBlock.class),
69     /** @see VoltageSensorBlock */
70     VoltageSensor(VoltageSensorBlock.class),
71     /** @see RoundBlock */
72     SUM_f(RoundBlock.class),
73     /** @see RoundBlock */
74     PROD_f(RoundBlock.class),
75     /** @see RoundBlock */
76     CLKSOM_f(RoundBlock.class),
77     /** @see RoundBlock */
78     CLKSOMV_f(RoundBlock.class),
79     /** @see BigSom */
80     BIGSOM_f(BigSom.class),
81     /** @see Summation */
82     SUMMATION(Summation.class),
83     /** @see Product */
84     PRODUCT(Product.class),
85     /** @see BasicBlock */
86     BASIC_BLOCK(BasicBlock.class);
87
88     private final Class<? extends BasicBlock> klass;
89
90     /**
91      * Default constructor
92      *
93      * @param block
94      *            The reference instance
95      */
96     private BlockInterFunction(Class<? extends BasicBlock> klass) {
97         this.klass = klass;
98     }
99
100     /**
101      * @return the class to instantiate
102      */
103     public Class<? extends BasicBlock> getKlass() {
104         return klass;
105     }
106 }