@@ -81,28 +81,32 @@ public Long makeVariable(Long pType, String pVarName) {
8181
8282 @ Override
8383 public FormulaType <?> getFormulaType (Long pFormula ) {
84- System .out .println ("I came here." );
84+ // System.out.println("I came here.");
8585// long type = msat_term_get_type(pFormula);
8686// 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+
88108 }
89109
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- */
106110 @ Override
107111 public <R > R visit (FormulaVisitor <R > pVisitor , Formula pFormula , Long pF ) {
108112 // TODO Auto-generated method stub
0 commit comments