+2008-01-25 Janis Johnson <janis187@us.ibm.com>
+
+ * decCommonSymbols.h: Commit.
+ * decDPDSybmols.h: Commit.
+
+ * Makefile.in (libdecnumber_a_SOURCES): List Symbols headers.
+ * decCommonSymbols.h: New file.
+ * decCommon.c: Include it.
+ * decDPDSymbols.h: New file.
+ * decDPD.h: Include it.
+ * decNumberLocal.h: Include the two new files.
+ * decContextSymbols.h (DECPOWERS, DECSTICKYTAB): New.
+ * decNumberSymbols.h (LNnn, d2utable): New.
+ * dpd/decimal32Symbols.h (COMBEXP, COMBMSD, DPD2BIN, BIN2DPD): New.
+ * dpd/decimal64Symbols.h (COMBEXP, COMBMSD, DPD2BIN, BIN2DPD): New.
+ * dpd/decimal128Symbols.h (COMBEXP, COMBMSD, DPD2BIN, BIN2DPD): New.
+ * dpd/decimal32.c: Remove redefine of DPD2BIN, BIN2DPD.
+ * dpd/decimal64.c: Ditto.
+ * dpd/decimal128.c: Ditto.
+
2007-11-26 Thiago Jung Bauermann <bauerman@br.ibm.com>
* Makefile.in (decimal32.o): Prepend $(srcdir) to dependencies
libdecnumber_a_SOURCES = decContext.c decContext.h decDPD.h \
decNumber.c decNumber.h decNumberLocal.h \
- dpd/decimal128.c dpd/decimal128.h \
- dpd/decimal32.c dpd/decimal32.h \
- dpd/decimal64.c dpd/decimal64.h \
+ decContextSymbols.h decDPDSymbols.h decNumberSymbols.h \
+ dpd/decimal128.c dpd/decimal128.h dpd/decimal128Symbols.h \
+ dpd/decimal32.c dpd/decimal32.h dpd/decimal32Symbols.h \
+ dpd/decimal64.c dpd/decimal64.h dpd/decimal64Symbols.h \
bid/decimal128.c bid/decimal128.h \
bid/decimal32.c bid/decimal32.h \
bid/decimal64.c bid/decimal64.h
/* OR) or the rounding mode read; all other fields are ignored and */
/* untouched. */
+#include "decCommonSymbols.h"
+
/* names for simpler testing and default context */
#if DECPMAX==7
#define SINGLE 1
--- /dev/null
+#if !defined(DECCOMMONSYMBOLS)
+#define DECCOMMONSYMBOLS
+
+#ifdef IN_LIBGCC2
+#define DECCOMBFROM __decCOMBFROM
+#define DECCOMBMSD __decCOMBMSD
+#endif
+
+#endif
#define decContextTestSavedStatus __decContextTestSavedStatus
#define decContextTestStatus __decContextTestStatus
#define decContextZeroStatus __decContextZeroStatus
+#define DECPOWERS __decPOWERS
+#define DECSTICKYTAB __decSTICKYTAB
#endif
#endif
/* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ */
/* For details, see: http://www2.hursley.ibm.com/decimal/DPDecimal.html */
-/* */
+
+#include "decDPDSymbols.h"
+
/* This include file defines several DPD and BCD conversion tables: */
/* */
/* uint16_t BCD2DPD[2458]; -- BCD -> DPD (0x999 => 2457) */
--- /dev/null
+#if !defined(DECDPDSYMBOLS)
+#define DECDPDSYMBOLS
+
+#ifdef IN_LIBGCC2
+#define BCD2DPD __decBCD2DPD
+#define BIN2BCD8 __decBIN2BCD8
+#define BIN2CHAR __decBIN2CHAR
+#define BIN2DPD __decBIN2DPD
+#define DPD2BCD8 __decDPD2BCD8
+#define DPD2BIN __decDPD2BIN
+#define DPD2BINK __decDPD2BINK
+#define DPD2BINM __decDPD2BINM
+#endif
+
+#endif
extern const uByte DECSTICKYTAB[10]; /* re-round digits if sticky */
extern const uInt DECPOWERS[10]; /* powers of ten table */
/* The following are included from decDPD.h */
+#include "decDPDSymbols.h"
extern const uShort DPD2BIN[1024]; /* DPD -> 0-999 */
extern const uShort BIN2DPD[1000]; /* 0-999 -> DPD */
extern const uInt DPD2BINK[1024]; /* DPD -> 0-999000 */
#define DFISSNAN(df) ((DFWORD(df, 0)&0x7e000000)==0x7e000000)
/* Shared lookup tables */
+#include "decCommonSymbols.h"
extern const uInt DECCOMBMSD[64]; /* Combination field -> MSD */
extern const uInt DECCOMBFROM[48]; /* exp+msd -> Combination */
#define decNumberVersion __decNumberVersion
#define decNumberXor __decNumberXor
#define decNumberZero __decNumberZero
+#define LNnn __decLNnn
+#define d2utable __decd2utable
#endif
#endif
#include "decimal128.h" /* our primary include */
/* Utility routines and tables [in decimal64.c] */
-/* DPD2BIN and the reverse are renamed to prevent link-time conflict */
-/* if decQuad is also built in the same executable */
-#define DPD2BIN DPD2BINx
-#define BIN2DPD BIN2DPDx
extern const uInt COMBEXP[32], COMBMSD[32];
extern const uShort DPD2BIN[1024];
extern const uShort BIN2DPD[1000]; /* [not used] */
#define decimal128ToEngString __decimal128ToEngString
#define decimal128ToNumber __decimal128ToNumber
#define decimal128ToString __decimal128ToString
+#define COMBEXP __decnnCOMBEXP
+#define COMBMSD __decnnCOMBMSD
+
+/* DPD2BIN and BIN2DPD are used in support for decimal32/decimal64/decimal128
+ and also in support for decSingle/decDouble/decQuad. Rename them in case
+ both types of support are used in the same executable. */
+#undef DPD2BIN
+#define DPD2BIN __decnnDPD2BIN
+#undef BIN2DPD
+#define BIN2DPD __decnnBIN2DPD
#endif
#endif
#include "decimal32.h" /* our primary include */
/* Utility tables and routines [in decimal64.c] */
-/* DPD2BIN and the reverse are renamed to prevent link-time conflict */
-/* if decQuad is also built in the same executable */
-#define DPD2BIN DPD2BINx
-#define BIN2DPD BIN2DPDx
extern const uInt COMBEXP[32], COMBMSD[32];
extern const uShort DPD2BIN[1024];
extern const uShort BIN2DPD[1000];
#define decimal32ToEngString __decimal32ToEngString
#define decimal32ToNumber __decimal32ToNumber
#define decimal32ToString __decimal32ToString
+#define COMBEXP __decnnCOMBEXP
+#define COMBMSD __decnnCOMBMSD
+
+/* DPD2BIN and BIN2DPD are used in support for decimal32/decimal64/decimal128
+ and also in support for decSingle/decDouble/decQuad. Rename them in case
+ both types of support are used in the same executable. */
+#undef DPD2BIN
+#define DPD2BIN __decnnDPD2BIN
+#undef BIN2DPD
+#define BIN2DPD __decnnBIN2DPD
#endif
#endif
#include "decimal64.h" /* our primary include */
/* Utility routines and tables [in decimal64.c]; externs for C++ */
-/* DPD2BIN and the reverse are renamed to prevent link-time conflict */
-/* if decQuad is also built in the same executable */
-#define DPD2BIN DPD2BINx
-#define BIN2DPD BIN2DPDx
extern const uInt COMBEXP[32], COMBMSD[32];
extern const uShort DPD2BIN[1024];
extern const uShort BIN2DPD[1000];
#define decimal64ToEngString __decimal64ToEngString
#define decimal64ToNumber __decimal64ToNumber
#define decimal64ToString __decimal64ToString
+#define COMBEXP __decnnCOMBEXP
+#define COMBMSD __decnnCOMBMSD
+
+/* DPD2BIN and BIN2DPD are used in support for decimal32/decimal64/decimal128
+ and also in support for decSingle/decDouble/decQuad. Rename them in case
+ both types of support are used in the same executable. */
+#undef DPD2BIN
+#define DPD2BIN __decnnDPD2BIN
+#undef BIN2DPD
+#define BIN2DPD __decnnBIN2DPD
#endif
#endif