Changeset 13687


Ignore:
Timestamp:
Oct 7, 2019 4:14:52 PM (2 months ago)
Author:
randersson
Message:

#5819 Merged trunk to stable

Location:
branches/stable
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • branches/stable

  • branches/stable/CHANGELOG.txt

    r13661 r13687  
    11================= Unreleased ==================
     2# Fixed ; Minor ; Compiler ; #5855
     3Nominal are now always positive in the FMI model description.
     4
    25# Fixed ; Minor ; Compiler; #5844
    36Improved attribute evaluation robustness for some cases. Parametric
  • branches/stable/Compiler/FmiXMLCodeGen/test/modelica/FmiXMLTests.mo

    r13661 r13687  
    25432543end ParametricAttributes1;
    25442544
     2545
     2546model NegativeNominal1
     2547    Real x1(nominal=-1);   // Negative integer nominal
     2548    Real x2(nominal=-1.0); // Negative real nominal
     2549equation
     2550    x1 = time;
     2551    x2 = time;
     2552annotation(__JModelica(UnitTesting(tests={
     2553    FmiXMLCodeGenTestCase(
     2554        description="Nominals are always non-negative in FMI",
     2555        fmi_version="2.0",
     2556        template="
     2557$modelVariables$
     2558",      generatedCode="
     2559<ModelVariables>
     2560    <!-- Variable with index #1 -->
     2561    <ScalarVariable name=\"x1\" valueReference=\"0\" causality=\"local\" variability=\"continuous\" initial=\"calculated\">
     2562        <Real relativeQuantity=\"false\" nominal=\"1\" />
     2563    </ScalarVariable>
     2564    <!-- Variable with index #2 -->
     2565    <ScalarVariable name=\"x2\" valueReference=\"0\" causality=\"local\" variability=\"continuous\" initial=\"calculated\">
     2566        <Real relativeQuantity=\"false\" nominal=\"1.0\" />
     2567    </ScalarVariable>
     2568</ModelVariables>
     2569")})));
     2570end NegativeNominal1;
     2571
    25452572end FmiXMLTests;
  • branches/stable/Compiler/GenericCodeGen/src/jastadd/GenericXMLGenerator.jrag

    r13661 r13687  
    217217                    variable.isInput() || variable.isDifferentiatedVariable()) {
    218218                try {
    219                     String value = attributeExp.ceval().xmlValue();
     219                    CValue cvalue = attributeExp.ceval();
     220                    if (name.equals("nominal")) {
     221                        cvalue = cvalue.absoluteValue();
     222                    }
     223                    String value = cvalue.xmlValue();
    220224                    generateAttribute(name, value, printer);
    221225                } catch (ConstantEvaluationException e) {
  • branches/stable/Compiler/ModelicaFlatTree/src/jastadd/Arrays.jrag

    r13017 r13687  
    43144314            for (CommonForIndex fi : forIndices) {
    43154315                indexMap.put(fi.name(), new FIntegerLitExp(ii[j]));
    4316                 fi.setEvaluationValue(new CValueInteger(ii[j]));
     4316                fi.setEvaluationValue(CValueInteger.valueOf(ii[j]));
    43174317                j++;
    43184318            }
  • branches/stable/Compiler/ModelicaFlatTree/src/jastadd/ConstantEvaluation/ConstantEvaluation.jrag

    r13661 r13687  
    8080         * Copy this constant value.
    8181         */
     82        @Override
    8283        public CValue clone() {
    8384            try {
     
    117118         */
    118119        public CValue convertInteger() {
    119             return new CValueInteger(intValue());
     120            return CValueInteger.valueOf(intValue());
    120121        }
    121122
     
    124125         */
    125126        public CValue convertReal() {
    126             return new CValueReal(realValue());
     127            return CValueReal.valueOf(realValue());
    127128        }
    128129
     
    131132         */
    132133        public CValue convertBoolean() {
    133             return new CValueBoolean(booleanValue());
     134            return CValueBoolean.valueOf(booleanValue());
    134135        }
    135136
     
    299300     */
    300301    public class CValueInteger extends CValue {
    301         private int value;
    302        
    303         /**
    304          * Constructor.
    305          *
    306          * @param i Integer value.
    307          */
    308         public CValueInteger(int i) {
     302        private final int value;
     303       
     304        private CValueInteger(int i) {
    309305            this.value = i;
     306        }
     307       
     308        private static final CValueInteger ZERO = new CValueInteger(0);
     309       
     310        public static CValueInteger valueOf(int i) {
     311            if (i == 0) {
     312                return ZERO;
     313            }
     314            return new CValueInteger(i);
    310315        }
    311316
     
    420425            return true;
    421426        }
     427       
     428        @Override
     429        public CValueInteger clone() {
     430            return this;
     431        }       
    422432    }
    423433   
     
    426436     */     
    427437    public class CValueReal extends CValue {
    428         private double value;
     438        private final double value;
    429439       
    430440        /**
     
    433443         * @param d Double value.
    434444         */
    435         public CValueReal(double d) {
     445        private CValueReal(double d) {
    436446            this.value = d;
     447        }
     448       
     449        private static final CValueReal ZERO = new CValueReal(0.0);
     450       
     451        public static CValueReal valueOf(double d) {
     452            if (d == 0.0 && (Double.doubleToLongBits(d) & 0x8000000000000000L) == 0L) {
     453                return ZERO;
     454            }
     455            return new CValueReal(d);
    437456        }
    438457
     
    548567            return true;
    549568        }
     569       
     570        @Override
     571        public CValueReal clone() {
     572            return this;
     573        }       
     574       
    550575    }
    551576   
     
    560585        public static final CValueBoolean TRUE  = new CValueBoolean(true);
    561586       
    562         private boolean value;
     587        private final boolean value;
    563588
    564589        /**
     
    567592         * @param b Boolean value.
    568593         */
    569         public CValueBoolean(boolean b) {
    570             this.value = b;
     594        private CValueBoolean(boolean b) {
     595            this.value = b;
     596        }
     597       
     598        public static CValueBoolean valueOf(boolean b) {
     599            return b ? TRUE : FALSE;
    571600        }
    572601
     
    650679            return true;
    651680        }
     681       
     682        @Override
     683        public CValueBoolean clone() {
     684            return this;
     685        }
    652686    }
    653687
     
    656690     */
    657691    public class CValueString extends CValue {
    658         private String value;
     692        private final String value;
    659693       
    660694        /**
     
    716750            return true;
    717751        }
     752       
     753        @Override
     754        public CValueString clone() {
     755            return this;
     756        }       
     757       
    718758      }
    719759   
     
    16141654    public class CValueEnum extends CValue {
    16151655
    1616         private FEnumType type;
    1617         private String value;
    1618         private int index;
     1656        private final FEnumType type;
     1657        private final String value;
     1658        private final int index;
    16191659
    16201660        /**
     
    16271667            this.type = (FEnumType) type;
    16281668            this.value = value;
    1629             index = 0;
     1669            int temp_index = 0;
    16301670            int n = this.type.getNumFEnumLiteralType();
    1631             for (int i = 0; i < n && index == 0; i++)
    1632                 if (this.type.getFEnumLiteralType(i).getName().equals(value))
    1633                     index = i + 1;
     1671            for (int i = 0; i < n && temp_index == 0; i++) {
     1672                if (this.type.getFEnumLiteralType(i).getName().equals(value)) {
     1673                    temp_index = i + 1;
     1674                }
     1675            }
     1676            index = temp_index;
    16341677        }
    16351678
     
    17051748         *  @return an CommonAccessExp pointing to the literal in the FEnumDecl.
    17061749         */
     1750        @Override
    17071751        public FExp buildLiteral() {
    17081752            return type.createLiteral(index);
     
    17191763        }
    17201764
     1765        @Override
    17211766        public CValue constrainWithin(CValue min, CValue max) {
    17221767            if (!min.isUnknown() && min.intValue() > index)
     
    17261771            return this;
    17271772        }
     1773       
     1774       @Override
     1775       public CValueEnum clone() {
     1776           return this;
     1777       }
    17281778
    17291779    }
     
    17461796    public CValue FType.zeroCValueScalar()        { return CValue.UNKNOWN; }
    17471797    public CValue FArrayType.zeroCValueScalar()   { return getFPrimitiveType().zeroCValueScalar(); }
    1748     public CValue FRealType.zeroCValueScalar()    { return new CValueReal(0.0); }
    1749     public CValue FIntegerType.zeroCValueScalar() { return new CValueInteger(0); }
     1798    public CValue FRealType.zeroCValueScalar()    { return CValueReal.valueOf(0.0); }
     1799    public CValue FIntegerType.zeroCValueScalar() { return CValueInteger.valueOf(0); }
    17501800    public CValue FEnumType.zeroCValueScalar()    { return new CValueEnum(this, 1); }
    17511801    public CValue FStringType.zeroCValueScalar()  { return new CValueString(""); }
    1752     public CValue FBooleanType.zeroCValueScalar() { return new CValueBoolean(false); }
     1802    public CValue FBooleanType.zeroCValueScalar() { return CValueBoolean.FALSE; }
    17531803   
    17541804    public CValue FType.createCValue(int v) {
     
    17631813    }
    17641814   
    1765     public CValue FType.createCValueScalar(int v)     { return new CValueInteger(v); }
    1766     public CValue FRealType.createCValueScalar(int v) { return new CValueReal(v); }
     1815    public CValue FType.createCValueScalar(int v)     { return CValueInteger.valueOf(v); }
     1816    public CValue FRealType.createCValueScalar(int v) { return CValueReal.valueOf(v); }
    17671817
    17681818    public CValue FType.convert(CValue v)        { return v; }
     
    17731823
    17741824    public CValue FType.limitCValueScalar(boolean high)        { return CValue.UNSUPPORTED; }
    1775     public CValue FRealType.limitCValueScalar(boolean high)    { return new CValueReal(      high ? Double.MAX_VALUE  : -Double.MAX_VALUE); }
    1776     public CValue FIntegerType.limitCValueScalar(boolean high) { return new CValueInteger(   high ? Integer.MAX_VALUE : Integer.MIN_VALUE); }
    1777     public CValue FBooleanType.limitCValueScalar(boolean high) { return new CValueBoolean(   high ? true : false); }
     1825    public CValue FRealType.limitCValueScalar(boolean high)    { return CValueReal.valueOf(      high ? Double.MAX_VALUE  : -Double.MAX_VALUE); }
     1826    public CValue FIntegerType.limitCValueScalar(boolean high) { return CValueInteger.valueOf(   high ? Integer.MAX_VALUE : Integer.MIN_VALUE); }
     1827    public CValue FBooleanType.limitCValueScalar(boolean high) { return CValueBoolean.valueOf(high); }
    17781828    public CValue FEnumType.limitCValueScalar(boolean high)    { return new CValueEnum(this, high ? getNumFEnumLiteralType() : 1); }
    17791829
     
    23872437       
    23882438        FType t = type();
    2389         CValue sum = new CValueInteger(0);
     2439        CValue sum = CValueInteger.valueOf(0);
    23902440        CValueArray l = getLeft().ceval(evaluator).array();
    23912441        CValueArray r = getRight().ceval(evaluator).array();
     
    24812531   
    24822532    eq FEndExp.cevalCalc(VariableEvaluator evaluator) = mySize().ceval(evaluator, 0);
    2483     eq FNdimsExp.cevalCalc(VariableEvaluator evaluator) = new CValueInteger(getFExp().ndims());
     2533    eq FNdimsExp.cevalCalc(VariableEvaluator evaluator) = CValueInteger.valueOf(getFExp().ndims());
    24842534   
    24852535    eq FSubscriptedExp.cevalCalc(VariableEvaluator evaluator) {
     
    24902540    eq FCardinality.cevalCalc(VariableEvaluator evaluator) {
    24912541        final int v = getFExp().cardinalityValue();
    2492         return (v <= 0) ? CValue.UNKNOWN : new CValueInteger(v);
     2542        return (v <= 0) ? CValue.UNKNOWN : CValueInteger.valueOf(v);
    24932543    }
    24942544
     
    25002550    eq FConnBoolOp.cevalCalc(VariableEvaluator evaluator) {
    25012551        if (connectionGraph != null && connectionGraph.builtTreesDone())
    2502           return new CValueBoolean(cevalFromGraph());
     2552          return CValueBoolean.valueOf(cevalFromGraph());
    25032553        else
    25042554          throw new ConstantEvaluationNotReadyException();
     
    25472597    public CValue Size.ceval(VariableEvaluator evaluator, int d) {
    25482598        int s = get(d);
    2549         return (s == Size.UNKNOWN) ? CValue.UNKNOWN : new CValueInteger(s);
     2599        return (s == Size.UNKNOWN) ? CValue.UNKNOWN : CValueInteger.valueOf(s);
    25502600    }
    25512601
     
    26142664    /** Set the value for initial() to evaluate to. */
    26152665    public static void FInitialExp.setIsInitial(boolean value) {
    2616           evaluationValue = new CValueBoolean(value);
     2666          evaluationValue = CValueBoolean.valueOf(value);
    26172667    }
    26182668
     
    26292679    eq FMaxExp.selectLesser() = false;
    26302680
    2631     eq FRealLitExp.cevalCalc(VariableEvaluator evaluator)         = new CValueReal(getValue());
    2632     eq FIntegerLitExp.cevalCalc(VariableEvaluator evaluator)      = new CValueInteger(getValue());
    2633     eq FBooleanLitExpTrue.cevalCalc(VariableEvaluator evaluator)  = new CValueBoolean(true);
    2634     eq FBooleanLitExpFalse.cevalCalc(VariableEvaluator evaluator) = new CValueBoolean(false);
     2681    eq FRealLitExp.cevalCalc(VariableEvaluator evaluator)         = CValueReal.valueOf(getValue());
     2682    eq FIntegerLitExp.cevalCalc(VariableEvaluator evaluator)      = CValueInteger.valueOf(getValue());
     2683    eq FBooleanLitExpTrue.cevalCalc(VariableEvaluator evaluator)  = CValueBoolean.TRUE;
     2684    eq FBooleanLitExpFalse.cevalCalc(VariableEvaluator evaluator) = CValueBoolean.FALSE;
    26352685    eq FStringLitExp.cevalCalc(VariableEvaluator evaluator)       = new CValueString(unEscape());
    26362686    eq FEnumLitExp.cevalCalc(VariableEvaluator evaluator)         = new CValueEnum(type(), getValue());
     
    26892739    eq FAbstractDerExp.cevalUse(VariableEvaluator evaluator) {
    26902740        if (getFAccess().variability().discreteOrLess())
    2691             return new CValueInteger(0);
     2741            return CValueInteger.valueOf(0);
    26922742        FAbstractVariable decl = myFV();
    26932743        return decl == null ? CValue.UNKNOWN : evaluator.ceval(decl);
     
    27062756    eq InstGlobalAccess.ceval(VariableEvaluator evaluator, Index i)   = getInstAccess().ceval(evaluator, i);
    27072757    eq InstNamedAccess.ceval(VariableEvaluator evaluator, Index i) {
    2708         CValue res = unknownCValue();
     2758        CValue res;
    27092759        if (myInstComponentDecl().isAssignable()) {
    27102760          Index iHere = Index.NULL;
     
    27282778              res = res.getCell(iHere);
    27292779        } else if (myInstClassDecl().isEnum()) {
    2730             res = new CValueInteger(myInstClassDecl().enumLiterals().size());
     2780            res = CValueInteger.valueOf(myInstClassDecl().enumLiterals().size());
    27312781        } else if (myInstClassDecl().isBoolean()) {
    2732             res = new CValueInteger(2);
     2782            res = CValueInteger.valueOf(2);
     2783        } else {
     2784            res = unknownCValue();
    27332785        }
    27342786        return res;
     
    27862838    eq FAbsExp.cevalCalc(VariableEvaluator evaluator)  = type().abs(getFExp().ceval(evaluator));
    27872839    eq FSignExp.cevalCalc(VariableEvaluator evaluator) = type().sign(getFExp().ceval(evaluator));
    2788     eq FSqrtExp.cevalCalc(VariableEvaluator evaluator)  = new CValueReal(StrictMath.sqrt(getFExp().ceval(evaluator).realValue()));
     2840    eq FSqrtExp.cevalCalc(VariableEvaluator evaluator)  = CValueReal.valueOf(StrictMath.sqrt(getFExp().ceval(evaluator).realValue()));
    27892841    eq FEnumIntegerExp.cevalCalc(VariableEvaluator evaluator) = getFExp().ceval(evaluator).convertInteger();
    27902842    eq FStringExp.cevalCalc(VariableEvaluator evaluator) {
     
    28892941    eq FIntegerFuncExp.cevalCalc(VariableEvaluator evaluator)     = getX().ceval(evaluator).convertInteger();
    28902942
    2891     eq FSinExp.cevalCalc(VariableEvaluator evaluator)   = new CValueReal(StrictMath.sin(getFExp().ceval(evaluator).realValue()));
    2892     eq FCosExp.cevalCalc(VariableEvaluator evaluator)   = new CValueReal(StrictMath.cos(getFExp().ceval(evaluator).realValue()));
    2893     eq FTanExp.cevalCalc(VariableEvaluator evaluator)   = new CValueReal(StrictMath.tan(getFExp().ceval(evaluator).realValue()));
    2894     eq FAsinExp.cevalCalc(VariableEvaluator evaluator)  = new CValueReal(StrictMath.asin(getFExp().ceval(evaluator).realValue()));
    2895     eq FAcosExp.cevalCalc(VariableEvaluator evaluator)  = new CValueReal(StrictMath.acos(getFExp().ceval(evaluator).realValue()));
    2896     eq FAtanExp.cevalCalc(VariableEvaluator evaluator)  = new CValueReal(StrictMath.atan(getFExp().ceval(evaluator).realValue()));
    2897     eq FAtan2Exp.cevalCalc(VariableEvaluator evaluator) = new CValueReal(StrictMath.atan2(getFExp().ceval(evaluator).realValue(),
     2943    eq FSinExp.cevalCalc(VariableEvaluator evaluator)   = CValueReal.valueOf(StrictMath.sin(getFExp().ceval(evaluator).realValue()));
     2944    eq FCosExp.cevalCalc(VariableEvaluator evaluator)   = CValueReal.valueOf(StrictMath.cos(getFExp().ceval(evaluator).realValue()));
     2945    eq FTanExp.cevalCalc(VariableEvaluator evaluator)   = CValueReal.valueOf(StrictMath.tan(getFExp().ceval(evaluator).realValue()));
     2946    eq FAsinExp.cevalCalc(VariableEvaluator evaluator)  = CValueReal.valueOf(StrictMath.asin(getFExp().ceval(evaluator).realValue()));
     2947    eq FAcosExp.cevalCalc(VariableEvaluator evaluator)  = CValueReal.valueOf(StrictMath.acos(getFExp().ceval(evaluator).realValue()));
     2948    eq FAtanExp.cevalCalc(VariableEvaluator evaluator)  = CValueReal.valueOf(StrictMath.atan(getFExp().ceval(evaluator).realValue()));
     2949    eq FAtan2Exp.cevalCalc(VariableEvaluator evaluator) = CValueReal.valueOf(StrictMath.atan2(getFExp().ceval(evaluator).realValue(),
    28982950                                                               getY().ceval(evaluator).realValue()));
    2899     eq FSinhExp.cevalCalc(VariableEvaluator evaluator)  = new CValueReal(StrictMath.sinh(getFExp().ceval(evaluator).realValue()));
    2900     eq FCoshExp.cevalCalc(VariableEvaluator evaluator)  = new CValueReal(StrictMath.cosh(getFExp().ceval(evaluator).realValue()));
    2901     eq FTanhExp.cevalCalc(VariableEvaluator evaluator)  = new CValueReal(StrictMath.tanh(getFExp().ceval(evaluator).realValue()));
    2902     eq FExpExp.cevalCalc(VariableEvaluator evaluator)   = new CValueReal(StrictMath.exp(getFExp().ceval(evaluator).realValue()));
    2903     eq FLogExp.cevalCalc(VariableEvaluator evaluator)   = new CValueReal(StrictMath.log(getFExp().ceval(evaluator).realValue()));
    2904     eq FLog10Exp.cevalCalc(VariableEvaluator evaluator) = new CValueReal(StrictMath.log10(getFExp().ceval(evaluator).realValue()));
     2951    eq FSinhExp.cevalCalc(VariableEvaluator evaluator)  = CValueReal.valueOf(StrictMath.sinh(getFExp().ceval(evaluator).realValue()));
     2952    eq FCoshExp.cevalCalc(VariableEvaluator evaluator)  = CValueReal.valueOf(StrictMath.cosh(getFExp().ceval(evaluator).realValue()));
     2953    eq FTanhExp.cevalCalc(VariableEvaluator evaluator)  = CValueReal.valueOf(StrictMath.tanh(getFExp().ceval(evaluator).realValue()));
     2954    eq FExpExp.cevalCalc(VariableEvaluator evaluator)   = CValueReal.valueOf(StrictMath.exp(getFExp().ceval(evaluator).realValue()));
     2955    eq FLogExp.cevalCalc(VariableEvaluator evaluator)   = CValueReal.valueOf(StrictMath.log(getFExp().ceval(evaluator).realValue()));
     2956    eq FLog10Exp.cevalCalc(VariableEvaluator evaluator) = CValueReal.valueOf(StrictMath.log10(getFExp().ceval(evaluator).realValue()));
    29052957
    29062958    eq FExInStream.cevalCalc(VariableEvaluator evaluator) {
     
    29312983                div += flow;
    29322984            }
    2933             return new CValueReal(sum / div);
     2985            return CValueReal.valueOf(sum / div);
    29342986        }
    29352987    }
     
    29402992    syn CValue FSubscript.ceval(VariableEvaluator evaluator) = CValue.UNSUPPORTED;
    29412993    eq FExpSubscript.ceval(VariableEvaluator evaluator)      = getFExp().ceval(evaluator);
    2942     eq FIntegerSubscript.ceval(VariableEvaluator evaluator)  = new CValueInteger(getValue());
     2994    eq FIntegerSubscript.ceval(VariableEvaluator evaluator)  = CValueInteger.valueOf(getValue());
    29432995   
    29442996    syn int FSubscript.value()   = ceval(defaultVariableEvaluator()).intValue();
     
    31773229    eq InstPrimitive.attributeCValueDefault(String name) {
    31783230        if (name.equals(FAttribute.FIXED))
    3179             return new CValueBoolean(isConstant() || isParameter() || isString());
     3231            return CValueBoolean.valueOf(isConstant() || isParameter() || isString());
    31803232        CValue res = attributeCValueDefaultMap().get(name);
    31813233        return (res == null) ? CValue.UNKNOWN : res;
     
    32033255            real.put(FAttribute.UNIT, emptyStr);
    32043256            real.put(FAttribute.DISPLAY_UNIT, emptyStr);
    3205             real.put(FAttribute.START, new CValueReal(0.0));
     3257            real.put(FAttribute.START, CValueReal.valueOf(0.0));
    32063258            // TODO: add stateSelect, but how to get type?
    32073259            REAL_DEFAULT_ATTRIBUTES = real;
    32083260            Map<String,CValue> integer = new HashMap<String,CValue>();
    32093261            integer.put(FAttribute.QUANTITY, emptyStr);
    3210             integer.put(FAttribute.START, new CValueInteger(0));
     3262            integer.put(FAttribute.START, CValueInteger.valueOf(0));
    32113263            INTEGER_DEFAULT_ATTRIBUTES = integer;
    32123264            Map<String,CValue> bool = new HashMap<String,CValue>();
     
    42314283            return CValue.UNKNOWN;
    42324284        }
    4233         return new CValueReal(v1.realValue() + v2.realValue());
     4285        return CValueReal.valueOf(v1.realValue() + v2.realValue());
    42344286    }
    42354287
     
    42384290            return CValue.UNKNOWN;
    42394291        }
    4240         return new CValueInteger(v1.intValue() + v2.intValue());
     4292        return CValueInteger.valueOf(v1.intValue() + v2.intValue());
    42414293    }
    42424294
     
    42614313            return CValue.UNKNOWN;
    42624314        }
    4263         return new CValueReal(v1.realValue() - v2.realValue());
     4315        return CValueReal.valueOf(v1.realValue() - v2.realValue());
    42644316    }
    42654317
     
    42684320            return CValue.UNKNOWN;
    42694321        }
    4270         return new CValueInteger(v1.intValue() - v2.intValue());
     4322        return CValueInteger.valueOf(v1.intValue() - v2.intValue());
    42714323    }
    42724324
     
    42844336            return CValue.UNKNOWN;
    42854337        }
    4286         return new CValueReal(v1.realValue() * v2.realValue());
     4338        return CValueReal.valueOf(v1.realValue() * v2.realValue());
    42874339    }
    42884340
     
    42914343            return CValue.UNKNOWN;
    42924344        }
    4293         return new CValueInteger(v1.intValue() * v2.intValue());
     4345        return CValueInteger.valueOf(v1.intValue() * v2.intValue());
    42944346    }
    42954347
     
    43074359            return CValue.UNKNOWN;
    43084360        }
    4309         return new CValueReal(v1.realValue() / v2.realValue());
     4361        return CValueReal.valueOf(v1.realValue() / v2.realValue());
    43104362    }
    43114363
     
    43144366            return CValue.UNKNOWN;
    43154367        }
    4316         return new CValueReal(v1.realValue() / v2.realValue());
     4368        return CValueReal.valueOf(v1.realValue() / v2.realValue());
    43174369    }
    43184370
     
    43304382            return CValue.UNKNOWN;
    43314383        }
    4332         return new CValueReal(java.lang.StrictMath.pow(v1.realValue(), v2.realValue()));
     4384        return CValueReal.valueOf(java.lang.StrictMath.pow(v1.realValue(), v2.realValue()));
    43334385    }
    43344386
     
    43404392     */
    43414393    syn CValue FType.neg(CValue v) = CValue.UNKNOWN;
    4342     eq FRealType.neg(CValue v) = v.hasRealValue() ? new CValueReal(-v.realValue()) : CValue.UNKNOWN;
    4343     eq FIntegerType.neg(CValue v) = v.hasIntValue() ? new CValueInteger(-v.intValue()) : CValue.UNKNOWN;
     4394    eq FRealType.neg(CValue v) = v.hasRealValue() ? CValueReal.valueOf(-v.realValue()) : CValue.UNKNOWN;
     4395    eq FIntegerType.neg(CValue v) = v.hasIntValue() ? CValueInteger.valueOf(-v.intValue()) : CValue.UNKNOWN;
    43444396
    43454397    /**
     
    43504402     */
    43514403    syn CValue FType.abs(CValue v) = CValue.UNKNOWN;
    4352     eq FRealType.abs(CValue v) = v.hasRealValue() ? new CValueReal(StrictMath.abs(v.realValue())) : CValue.UNKNOWN;
     4404    eq FRealType.abs(CValue v) = v.hasRealValue() ? CValueReal.valueOf(StrictMath.abs(v.realValue())) : CValue.UNKNOWN;
    43534405    eq FIntegerType.abs(CValue v) =
    4354             v.hasIntValue() ? new CValueInteger(StrictMath.abs(v.intValue())) : CValue.UNKNOWN;
     4406            v.hasIntValue() ? CValueInteger.valueOf(StrictMath.abs(v.intValue())) : CValue.UNKNOWN;
    43554407
    43564408    /**
     
    43634415
    43644416    eq FIntegerType.sign(CValue v) =
    4365             v.hasIntValue() ? new CValueInteger((int) StrictMath.signum(v.realValue())) : CValue.UNKNOWN;
     4417            v.hasIntValue() ? CValueInteger.valueOf((int) StrictMath.signum(v.realValue())) : CValue.UNKNOWN;
    43664418
    43674419    /**
     
    43734425    syn CValue FType.ceil(CValue v) = CValue.UNKNOWN;
    43744426
    4375     eq FRealType.ceil(CValue v) = v.hasRealValue() ? new CValueReal(StrictMath.ceil(v.realValue())) : CValue.UNKNOWN;
     4427    eq FRealType.ceil(CValue v) = v.hasRealValue() ? CValueReal.valueOf(StrictMath.ceil(v.realValue())) : CValue.UNKNOWN;
    43764428
    43774429    eq FIntegerType.ceil(CValue v) =
    4378             v.hasIntValue() ? new CValueInteger((int) StrictMath.ceil(v.realValue())) : CValue.UNKNOWN;
     4430            v.hasIntValue() ? CValueInteger.valueOf((int) StrictMath.ceil(v.realValue())) : CValue.UNKNOWN;
    43794431
    43804432    /**
     
    44134465            return CValue.UNKNOWN;
    44144466        }
    4415         return new CValueBoolean(v1.booleanValue() && v2.booleanValue());
     4467        return CValueBoolean.valueOf(v1.booleanValue() && v2.booleanValue());
    44164468    }
    44174469
     
    44294481            return CValue.UNKNOWN;
    44304482        }
    4431         return new CValueBoolean(v1.booleanValue() || v2.booleanValue());
     4483        return CValueBoolean.valueOf(v1.booleanValue() || v2.booleanValue());
    44324484    }
    44334485
     
    44394491     */
    44404492    syn CValue FType.not(CValue v) = CValue.UNKNOWN;
    4441     eq FBooleanType.not(CValue v) = v.isBoolean() ? new CValueBoolean(!v.booleanValue()) : CValue.UNKNOWN;
     4493    eq FBooleanType.not(CValue v) = v.isBoolean() ? CValueBoolean.valueOf(!v.booleanValue()) : CValue.UNKNOWN;
    44424494
    44434495    /* Machine epsilon */
     
    44644516            return CValue.UNKNOWN;
    44654517        }
    4466         return new CValueBoolean(v1.intValue() == v2.intValue());
     4518        return CValueBoolean.valueOf(v1.intValue() == v2.intValue());
    44674519    }
    44684520
     
    44714523            return CValue.UNKNOWN;
    44724524        }
    4473         return new CValueBoolean(almostZero(v1.realValue() - v2.realValue()));
     4525        return CValueBoolean.valueOf(almostZero(v1.realValue() - v2.realValue()));
    44744526    }
    44754527
     
    44784530            return CValue.UNKNOWN;
    44794531        }
    4480         return new CValueBoolean(v1.stringValue().compareTo(v2.stringValue()) == 0);
     4532        return CValueBoolean.valueOf(v1.stringValue().compareTo(v2.stringValue()) == 0);
    44814533    }
    44824534
     
    44944546            return CValue.UNKNOWN;
    44954547        }
    4496         return new CValueBoolean(v1.intValue() != v2.intValue());
     4548        return CValueBoolean.valueOf(v1.intValue() != v2.intValue());
    44974549    }
    44984550
     
    45014553            return CValue.UNKNOWN;
    45024554        }
    4503         return new CValueBoolean(v1.realValue() != v2.realValue());
     4555        return CValueBoolean.valueOf(v1.realValue() != v2.realValue());
    45044556    }
    45054557
     
    45084560            return CValue.UNKNOWN;
    45094561        }
    4510         return new CValueBoolean(v1.stringValue().compareTo(v2.stringValue()) != 0);
     4562        return CValueBoolean.valueOf(v1.stringValue().compareTo(v2.stringValue()) != 0);
    45114563    }
    45124564
     
    45244576            return CValue.UNKNOWN;
    45254577        }
    4526         return new CValueBoolean(v1.intValue() >= v2.intValue());
     4578        return CValueBoolean.valueOf(v1.intValue() >= v2.intValue());
    45274579    }
    45284580
     
    45314583            return CValue.UNKNOWN;
    45324584        }
    4533         return new CValueBoolean(almostGtZero(v1.realValue() - v2.realValue()));
     4585        return CValueBoolean.valueOf(almostGtZero(v1.realValue() - v2.realValue()));
    45344586    }
    45354587
     
    45384590            return CValue.UNKNOWN;
    45394591        }
    4540         return new CValueBoolean(v1.stringValue().compareTo(v2.stringValue()) >= 0);
     4592        return CValueBoolean.valueOf(v1.stringValue().compareTo(v2.stringValue()) >= 0);
    45414593    }
    45424594
     
    45544606            return CValue.UNKNOWN;
    45554607        }
    4556         return new CValueBoolean(v1.intValue() > v2.intValue());
     4608        return CValueBoolean.valueOf(v1.intValue() > v2.intValue());
    45574609    }
    45584610
     
    45614613            return CValue.UNKNOWN;
    45624614        }
    4563         return new CValueBoolean(v1.realValue() > v2.realValue());
     4615        return CValueBoolean.valueOf(v1.realValue() > v2.realValue());
    45644616    }
    45654617
     
    45684620            return CValue.UNKNOWN;
    45694621        }
    4570         return new CValueBoolean(v1.stringValue().compareTo(v2.stringValue()) > 0);
     4622        return CValueBoolean.valueOf(v1.stringValue().compareTo(v2.stringValue()) > 0);
    45714623    }
    45724624
     
    45844636            return CValue.UNKNOWN;
    45854637        }
    4586         return new CValueBoolean(v1.intValue() <= v2.intValue());
     4638        return CValueBoolean.valueOf(v1.intValue() <= v2.intValue());
    45874639    }
    45884640
     
    45914643            return CValue.UNKNOWN;
    45924644        }
    4593         return new CValueBoolean(almostLtZero(v1.realValue() - v2.realValue()));
     4645        return CValueBoolean.valueOf(almostLtZero(v1.realValue() - v2.realValue()));
    45944646    }
    45954647
     
    45984650            return CValue.UNKNOWN;
    45994651        }
    4600         return new CValueBoolean(v1.stringValue().compareTo(v2.stringValue()) <= 0);
     4652        return CValueBoolean.valueOf(v1.stringValue().compareTo(v2.stringValue()) <= 0);
    46014653    }
    46024654
     
    46144666            return CValue.UNKNOWN;
    46154667        }
    4616         return new CValueBoolean(v1.intValue() < v2.intValue());
     4668        return CValueBoolean.valueOf(v1.intValue() < v2.intValue());
    46174669    }
    46184670
     
    46214673            return CValue.UNKNOWN;
    46224674        }
    4623         return new CValueBoolean(v1.realValue() < v2.realValue());
     4675        return CValueBoolean.valueOf(v1.realValue() < v2.realValue());
    46244676    }
    46254677
     
    46284680            return CValue.UNKNOWN;
    46294681        }
    4630         return new CValueBoolean(v1.stringValue().compareTo(v2.stringValue()) < 0);
     4682        return CValueBoolean.valueOf(v1.stringValue().compareTo(v2.stringValue()) < 0);
    46314683    }
    46324684
    46334685    eq CValueUnknown.lt(CValue v1, CValue v2) = CValue.UNKNOWN;
    46344686
     4687   
     4688    public CValue CValue.absoluteValue() {
     4689        return this;
     4690    }
     4691    @Override
     4692    public CValue CValueReal.absoluteValue() {
     4693        return new CValueReal(Math.abs(realValue()));
     4694    }
     4695    @Override
     4696    public CValue CValueInteger.absoluteValue() {
     4697        return new CValueInteger(Math.abs(intValue()));
     4698    }
     4699   
    46354700}
    46364701
     
    48914956    eq SrcBooleanLitExpTrue.ceval()  = CValueBoolean.TRUE;
    48924957    eq SrcBooleanLitExpFalse.ceval() = CValueBoolean.FALSE;
    4893     eq SrcIntegerLitExp.ceval()      = new CValueInteger(Integer.parseInt(getUNSIGNED_INTEGER()));
    4894     eq SrcRealLitExp.ceval()         = new CValueReal(Double.parseDouble(getUNSIGNED_NUMBER()));
     4958    eq SrcIntegerLitExp.ceval()      = CValueInteger.valueOf(Integer.parseInt(getUNSIGNED_INTEGER()));
     4959    eq SrcRealLitExp.ceval()         = CValueReal.valueOf(Double.parseDouble(getUNSIGNED_NUMBER()));
    48954960    eq SrcArrayConstructor.ceval()   = cevalArray();
    48964961    eq SrcMatrix.ceval()             = cevalArray();
     
    48984963        CValue value = getSrcExp().ceval();
    48994964        if (value.isInteger())
    4900             return new CValueInteger(-value.intValue());
     4965            return CValueInteger.valueOf(-value.intValue());
    49014966        else if (value.isReal())
    4902             return new CValueReal(-value.realValue());
     4967            return CValueReal.valueOf(-value.realValue());
    49034968        else
    49044969            return CValue.UNKNOWN;
  • branches/stable/Compiler/ModelicaFlatTree/src/jastadd/ConstantEvaluation/ExternalConstantEvaluation.jrag

    r11541 r13687  
    330330    }
    331331    public CValue FRealType.deserializeScalar(ProcessCommunicator com) throws IOException {
    332         return new CValueReal(com.deserializeReal());
     332        return CValueReal.valueOf(com.deserializeReal());
    333333    }
    334334    public CValue FIntegerType.deserializeScalar(ProcessCommunicator com) throws IOException {
    335         return new CValueInteger((int) com.deserializeReal());
     335        return CValueInteger.valueOf((int) com.deserializeReal());
    336336    }
    337337    public CValue FBooleanType.deserializeScalar(ProcessCommunicator com) throws IOException {
    338         return new CValueBoolean(com.deserializeReal() != 0);
     338        return CValueBoolean.valueOf(com.deserializeReal() != 0);
    339339    }
    340340    public CValue FStringType.deserializeScalar(ProcessCommunicator com) throws IOException {
  • branches/stable/Compiler/ModelicaFlatTree/src/jastadd/FlatAPI/FlatAPIAttributes.jrag

    r11676 r13687  
    109109    syn CValue FVariable.attributeCValueBoolean(String name, boolean def) {
    110110        FAttribute a = findAttribute(name);
    111         return (attributeSet(a) ? attributeExp(a).ceval() : new CValueBoolean(def)).expandArray(size());
     111        return (attributeSet(a) ? attributeExp(a).ceval() : CValueBoolean.valueOf(def)).expandArray(size());
    112112    }
    113113    syn CValue FVariable.attributeCValueReal(String name, double def) {
    114114        FAttribute a = findAttribute(name);
    115         return (attributeSet(a) ? attributeExp(a).ceval() : new CValueReal(def)).expandArray(size());
     115        return (attributeSet(a) ? attributeExp(a).ceval() : CValueReal.valueOf(def)).expandArray(size());
    116116    }
    117117    syn CValue FVariable.attributeCValueInteger(String name, int def) {
    118118        FAttribute a = findAttribute(name);
    119         return (attributeSet(a) ? attributeExp(a).ceval() : new CValueInteger(def)).expandArray(size());
     119        return (attributeSet(a) ? attributeExp(a).ceval() : CValueInteger.valueOf(def)).expandArray(size());
    120120    }
    121121    syn CValue FVariable.attributeCValueEnum(String name, FType type, int def) {
     
    200200    syn CValue FVariable.startAttributeCValue()   = CValue.UNKNOWN;
    201201    eq FRealVariable.startAttributeCValue()       = attributeCValueReal(FAttribute.START, 0.0);
    202     eq FDerivativeVariable.startAttributeCValue() = new CValueReal(0.0);
     202    eq FDerivativeVariable.startAttributeCValue() = CValueReal.valueOf(0.0);
    203203    eq FIntegerVariable.startAttributeCValue()    = attributeCValueInteger(FAttribute.START, 0);
    204204    eq FBooleanVariable.startAttributeCValue()    = attributeCValueBoolean(FAttribute.START, false);
  • branches/stable/Compiler/ModelicaFrontEnd/src/jastadd/flattening/Flattening.jrag

    r13661 r13687  
    24592459        int i = 0;
    24602460        for (CommonForIndex fi : forIndices) {
    2461             fi.setEvaluationValue(new CValueInteger(index[i++]));
     2461            fi.setEvaluationValue(CValueInteger.valueOf(index[i++]));
    24622462        }
    24632463    }
  • branches/stable/Compiler/ModelicaFrontEnd/src/jastadd/flattening/connections/Connections.jrag

    r13504 r13687  
    13921392            int[] ii = indices.translate(i).index();
    13931393            for (InstForIndex fi : getInstForIndexs()) {
    1394                 fi.getInstPrimitive().setLocalCachedEvaluationValue(new CValueInteger(ii[j]));
     1394                fi.getInstPrimitive().setLocalCachedEvaluationValue(CValueInteger.valueOf(ii[j]));
    13951395                j++;
    13961396            }
  • branches/stable/Compiler/ModelicaFrontEnd/src/jastadd/flattening/connections/ExpandableConnectors.jrag

    r13224 r13687  
    10591059        CValue val = ceval();
    10601060        if (ndims() > 0)
    1061             val = val.reduce(INT_MAX_OP, new CValueInteger(1));
     1061            val = val.reduce(INT_MAX_OP, CValueInteger.valueOf(1));
    10621062        s.set(i, val.intValue());
    10631063        return ndims() == 0 || size().get(0) == len;
  • branches/stable/Compiler/ModelicaFrontEnd/src/jastadd/source/SimpleLookup.jrag

    r13396 r13687  
    8787     * Lookup the class referenced by the QualifiedName.
    8888     * Lookup is both uncached and only among the class members and imported.
    89      * This method is intended as a entry point
     89     * This method is intended as an entry point
    9090     */
    9191     public SrcClassDecl SrcClassDecl.LookupMyMembers(QualifiedName qName) {
     
    105105     * Lookup the class referenced by the QualifiedName. The QualifiedName
    106106     * determines if the lookup is in relative or global scope.
    107      * This method is intended as a entry point
     107     * This method is intended as an entry point
    108108     *
    109109     */
     
    161161    public abstract class ResolvedAccess {
    162162
    163         private SrcClassDecl classDecl;
    164         private SrcComponentDecl componentDecl;
    165         private String context;
    166         private boolean isProtected;
     163        private final SrcClassDecl classDecl;
     164        private final SrcComponentDecl componentDecl;
     165        private final String context;
     166        private final boolean isProtected;
    167167       
    168168        public ResolvedAccess(SrcClassDecl classDecl, SrcComponentDecl componentDecl, String context, boolean isProtected) {
  • branches/stable/Compiler/OptimicaFrontEnd/src/jastadd/OptimicaFlatAPI.jrag

    r11676 r13687  
    7171    syn CValue FVariable.initialGuessAttributeCValue()   = CValue.UNKNOWN;
    7272    eq FRealVariable.initialGuessAttributeCValue()       = attributeCValueReal(FAttribute.INITIAL_GUESS, 0.0);
    73     eq FDerivativeVariable.initialGuessAttributeCValue() = new CValueReal(0.0);
     73    eq FDerivativeVariable.initialGuessAttributeCValue() = CValueReal.valueOf(0.0);
    7474    eq FIntegerVariable.initialGuessAttributeCValue()    = attributeCValueInteger(FAttribute.INITIAL_GUESS, 0);
    7575    eq FBooleanVariable.initialGuessAttributeCValue()    = attributeCValueBoolean(FAttribute.INITIAL_GUESS, false);
     
    157157    syn CValue FOptClass.startTimeAttributeCValue() =
    158158        startTimeAttributeSet()? startTimeAttributeExp().ceval():
    159             new CValueReal(0.0);
     159            CValueReal.valueOf(0.0);
    160160       
    161161    /**
     
    211211    syn CValue FOptClass.startTimeFreeAttributeCValue() =
    212212        startTimeFreeAttributeSet()? startTimeFreeAttributeExp().ceval():
    213             new CValueBoolean(false);
     213            CValueBoolean.FALSE;
    214214       
    215215    /**
     
    265265    syn CValue FOptClass.startTimeInitialGuessAttributeCValue() =
    266266        startTimeInitialGuessAttributeSet()? startTimeInitialGuessAttributeExp().ceval():
    267             new CValueReal(0.0);
     267            CValueReal.valueOf(0.0);
    268268       
    269269    /**
     
    311311    syn CValue FOptClass.finalTimeAttributeCValue() =
    312312        finalTimeAttributeSet()? finalTimeAttributeExp().ceval():
    313             new CValueReal(1.0);
     313            CValueReal.valueOf(1.0);
    314314       
    315315    /**
     
    357357    syn CValue FOptClass.staticAttributeCValue() =
    358358        staticAttributeSet()? staticAttributeExp().ceval():
    359             new CValueBoolean(false);
     359            CValueBoolean.FALSE;
    360360       
    361361    /**
     
    411411    syn CValue FOptClass.finalTimeFreeAttributeCValue() =
    412412        finalTimeFreeAttributeSet()? finalTimeFreeAttributeExp().ceval():
    413             new CValueBoolean(false);
     413            CValueBoolean.FALSE;
    414414
    415415    /**
     
    465465    syn CValue FOptClass.finalTimeInitialGuessAttributeCValue() =
    466466        finalTimeInitialGuessAttributeSet()? finalTimeInitialGuessAttributeExp().ceval():
    467             new CValueReal(1.0);
     467            CValueReal.valueOf(1.0);
    468468       
    469469    /**
Note: See TracChangeset for help on using the changeset viewer.