@@ -81,28 +81,32 @@ public Long makeVariable(Long pType, String pVarName) {
81
81
82
82
@ Override
83
83
public FormulaType <?> getFormulaType (Long pFormula ) {
84
- System .out .println ("I came here." );
84
+ // System.out.println("I came here.");
85
85
// long type = msat_term_get_type(pFormula);
86
86
// return getFormulaTypeFromTermType(type);
87
- return null ;
87
+ // return null;
88
+ Expr formula = new Expr (pFormula , true );
89
+ FormulaType <?> result = null ;
90
+
91
+ switch (StpJavaApi .getType (formula )) {
92
+ case BOOLEAN_TYPE :
93
+ result = FormulaType .BooleanType ;
94
+ break ;
95
+ case BITVECTOR_TYPE :
96
+ int bvTypeSize = StpJavaApi .getBVLength (formula );
97
+ result = FormulaType .getBitvectorTypeWithSize (bvTypeSize );
98
+ break ;
99
+ case ARRAY_TYPE :
100
+ // long indexType = StpJavaApi.getIWidth(formula);
101
+ // return FormulaType.getArrayType( getFormulaTypeFromTermType());
102
+ throw new IllegalArgumentException ("//TODO implement this for array formula type " );
103
+ case UNKNOWN_TYPE :
104
+ throw new IllegalArgumentException ("Unknown formula type " );
105
+ }
106
+ return result ;
107
+
88
108
}
89
109
90
- /*
91
- * private FormulaType<?> getFormulaTypeFromTermType(Long type) { // long env = getEnv(); if
92
- * (msat_is_bool_type(env, type)) { return FormulaType.BooleanType; } else if
93
- * (msat_is_integer_type(env, type)) { return FormulaType.IntegerType; } else if
94
- * (msat_is_rational_type(env, type)) { return FormulaType.RationalType; } else if
95
- * (msat_is_bv_type(env, type)) { return
96
- * FormulaType.getBitvectorTypeWithSize(msat_get_bv_type_size(env, type)); } else if
97
- * (msat_is_fp_type(env, type)) { return FormulaType.getFloatingPointType(
98
- * msat_get_fp_type_exp_width(env, type), msat_get_fp_type_mant_width(env, type)); } else if
99
- * (msat_is_fp_roundingmode_type(env, type)) { return FormulaType.FloatingPointRoundingModeType; }
100
- * else if (msat_is_array_type(env, type)) { long indexType = msat_get_array_index_type(env,
101
- * type); long elementType = msat_get_array_element_type(env, type); return
102
- * FormulaType.getArrayType( getFormulaTypeFromTermType(indexType),
103
- * getFormulaTypeFromTermType(elementType)); } throw new
104
- * IllegalArgumentException("Unknown formula type " + msat_type_repr(type)); }
105
- */
106
110
@ Override
107
111
public <R > R visit (FormulaVisitor <R > pVisitor , Formula pFormula , Long pF ) {
108
112
// TODO Auto-generated method stub
0 commit comments