/* Decimal floating point support for GDB.
- Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2017 Free Software Foundation, Inc.
This file is part of GDB.
#ifndef DFP_H
#define DFP_H
-/* When using decimal128, this is the maximum string length + 1
- * (value comes from libdecnumber's DECIMAL128_String constant). */
-#define MAX_DECIMAL_STRING 43
-
-extern void decimal_to_string (const gdb_byte *, int, char *);
-extern int decimal_from_string (gdb_byte *, int, const char *);
-extern void decimal_from_integral (struct value *from, gdb_byte *to, int len);
-extern void decimal_from_floating (struct value *from, gdb_byte *to, int len);
-extern DOUBLEST decimal_to_doublest (const gdb_byte *from, int len);
-extern void decimal_binop (enum exp_opcode, const gdb_byte *, int,
- const gdb_byte *, int, gdb_byte *, int);
-extern int decimal_is_zero (const gdb_byte *x, int len);
-extern int decimal_compare (const gdb_byte *x, int len_x, const gdb_byte *y, int len_y);
-extern void decimal_convert (const gdb_byte *from, int len_from, gdb_byte *to,
- int len_to);
+#include "doublest.h" /* For DOUBLEST. */
+#include "expression.h" /* For enum exp_opcode. */
+
+extern std::string decimal_to_string (const gdb_byte *, int, enum bfd_endian,
+ const char *format = nullptr);
+extern bool decimal_from_string (gdb_byte *, int, enum bfd_endian,
+ const std::string &string);
+extern void decimal_from_longest (LONGEST from, gdb_byte *to,
+ int len, enum bfd_endian byte_order);
+extern void decimal_from_ulongest (ULONGEST from, gdb_byte *to,
+ int len, enum bfd_endian byte_order);
+extern LONGEST decimal_to_longest (const gdb_byte *from, int len,
+ enum bfd_endian byte_order);
+extern void decimal_from_doublest (DOUBLEST from, gdb_byte *to,
+ int len, enum bfd_endian byte_order);
+extern DOUBLEST decimal_to_doublest (const gdb_byte *from, int len,
+ enum bfd_endian byte_order);
+extern void decimal_binop (enum exp_opcode,
+ const gdb_byte *, int, enum bfd_endian,
+ const gdb_byte *, int, enum bfd_endian,
+ gdb_byte *, int, enum bfd_endian);
+extern int decimal_is_zero (const gdb_byte *, int, enum bfd_endian);
+extern int decimal_compare (const gdb_byte *, int, enum bfd_endian,
+ const gdb_byte *, int, enum bfd_endian);
+extern void decimal_convert (const gdb_byte *, int, enum bfd_endian,
+ gdb_byte *, int, enum bfd_endian);
#endif