-void initValue ( );
-value *newValue ( );
-value *constVal (char * );
-value *reverseVal (value * );
-value *reverseValWithType(value * );
-value *copyValue (value * );
-value *copyValueChain (value * );
-value *strVal (char * );
-value *charVal (char * );
-value *symbolVal (symbol * );
-void printVal (value * );
-double floatFromVal (value * );
-value *array2Ptr (value * );
-value *valUnaryPM (value * );
-value *valComplement (value * );
-value *valNot (value * );
-value *valMult (value *, value * );
-value *valDiv (value *, value * );
-value *valMod (value *, value * );
-value *valPlus (value *, value * );
-value *valMinus (value *, value * );
-value *valShift (value *, value *,int);
-value *valCompare (value *, value *,int);
-value *valBitwise (value *, value *,int);
-value *valLogicAndOr (value *, value *,int);
-value *valCastLiteral (link *, double );
-value *valueFromLit (float );
-initList *newiList (int , void * );
-initList *revinit (initList * );
-initList *copyIlist (initList * );
-double list2int (initList * );
-value *list2val (initList * );
-struct ast *list2expr (initList * );
-void resolveIvalSym (initList * );
-value *valFromType (link * );
-value *constFloatVal (char * );
-int getNelements (link *, initList * );
-value *valForArray (struct ast * );
-value *valForStructElem (struct ast *, struct ast *);
-value *valForCastAggr (struct ast *, link *, struct ast *, int ) ;
+value *newValue (void);
+value *constVal (const char *);
+value *constCharVal (unsigned char);
+value *reverseVal (value *);
+value *reverseValWithType (value *);
+value *copyValue (value *);
+value *copyValueChain (value *);
+value *strVal (const char *);
+value *charVal (const char *);
+value *symbolVal (symbol *);
+void printVal (value *);
+double floatFromVal (value *);
+unsigned long ulFromVal (value *);
+
+/* convert a fixed16x16 type to double */
+double doubleFromFixed16x16(TYPE_TARGET_ULONG value);
+
+/* convert a double type to fixed16x16 */
+TYPE_TARGET_ULONG fixed16x16FromDouble(double value);
+
+CCR_RESULT checkConstantRange (sym_link *var, sym_link *lit, int op, bool exchangeOps);
+value *array2Ptr (value *);
+value *valUnaryPM (value *);
+value *valComplement (value *);
+value *valNot (value *);
+value *valMult (value *, value *);
+value *valDiv (value *, value *);
+value *valMod (value *, value *);
+value *valPlus (value *, value *);
+value *valMinus (value *, value *);
+value *valShift (value *, value *, int);
+value *valCompare (value *, value *, int);
+value *valBitwise (value *, value *, int);
+value *valLogicAndOr (value *, value *, int);
+value *valCastLiteral (sym_link *, double);
+value *valueFromLit (double);
+initList *newiList (int, void *);
+initList *revinit (initList *);
+initList *copyIlist (initList *);
+double list2int (initList *);
+value *list2val (initList *);
+struct ast *list2expr (initList *);
+void resolveIvalSym (initList *, sym_link *);
+value *valFromType (sym_link *);
+value *constFloatVal (const char *);
+value *constFixed16x16Val (const char *);
+int getNelements (sym_link *, initList *);
+value *valForArray (struct ast *);
+value *valForStructElem (struct ast *, struct ast *);
+value *valForCastAggr (struct ast *, sym_link *, struct ast *, int);
+value *valForCastArr (struct ast * , sym_link *);
+bool convertIListToConstList(initList *src, literalList **lList, int size);
+literalList *copyLiteralList(literalList *src);