diff --git a/icu4c/source/common/common.vcproj b/icu4c/source/common/common.vcproj
index 1f0bafac4f..7fdb46d441 100644
--- a/icu4c/source/common/common.vcproj
+++ b/icu4c/source/common/common.vcproj
@@ -525,6 +525,9 @@
Outputs="..\..\include\unicode\$(InputFileName)"/>
+
+
(char *)(base) ? ((char *)(base)+0x7fffffffu) : (char *)-1))
+# endif
+#endif
+
+#endif
diff --git a/icu4c/source/common/ucnv.c b/icu4c/source/common/ucnv.c
index e261675365..516a1c309f 100644
--- a/icu4c/source/common/ucnv.c
+++ b/icu4c/source/common/ucnv.c
@@ -27,6 +27,7 @@
#include "unicode/ucnv.h"
#include "unicode/ucnv_err.h"
#include "unicode/uset.h"
+#include "putilimp.h"
#include "cmemory.h"
#include "cstring.h"
#include "uassert.h"
diff --git a/icu4c/source/common/ucnvdisp.c b/icu4c/source/common/ucnvdisp.c
index 871edaa1ca..ffcc332123 100644
--- a/icu4c/source/common/ucnvdisp.c
+++ b/icu4c/source/common/ucnvdisp.c
@@ -28,6 +28,7 @@
#include "cstring.h"
#include "ustr_imp.h"
#include "ucnv_imp.h"
+#include "putilimp.h"
U_CAPI int32_t U_EXPORT2
ucnv_getDisplayName(const UConverter *cnv,
diff --git a/icu4c/source/common/udata.c b/icu4c/source/common/udata.c
index 4f99286977..27b65e1dfd 100644
--- a/icu4c/source/common/udata.c
+++ b/icu4c/source/common/udata.c
@@ -23,6 +23,7 @@
#include "unicode/uversion.h"
#include "uhash.h"
#include "ucln_cmn.h"
+#include "putilimp.h"
#include "udatamem.h"
#include "umapfile.h"
diff --git a/icu4c/source/common/uloc.c b/icu4c/source/common/uloc.c
index 9f0ab2abe4..e728a0aa84 100644
--- a/icu4c/source/common/uloc.c
+++ b/icu4c/source/common/uloc.c
@@ -32,6 +32,7 @@
#include "unicode/ustring.h"
#include "unicode/uloc.h"
+#include "putilimp.h"
#include "ustr_imp.h"
#include "ulocimp.h"
#include "uresimp.h"
diff --git a/icu4c/source/common/unicode/putil.h b/icu4c/source/common/unicode/putil.h
index 963195f43f..0adb59da70 100644
--- a/icu4c/source/common/unicode/putil.h
+++ b/icu4c/source/common/unicode/putil.h
@@ -42,208 +42,6 @@
* functions may have to be re-implemented.
*/
-/**
- * Floating point utility to determine if a double is Not a Number (NaN).
- * @internal
- */
-U_INTERNAL UBool U_EXPORT2 uprv_isNaN(double d);
-/**
- * Floating point utility to determine if a double has an infinite value.
- * @internal
- */
-U_INTERNAL UBool U_EXPORT2 uprv_isInfinite(double d);
-/**
- * Floating point utility to determine if a double has a positive infinite value.
- * @internal
- */
-U_INTERNAL UBool U_EXPORT2 uprv_isPositiveInfinity(double d);
-/**
- * Floating point utility to determine if a double has a negative infinite value.
- * @internal
- */
-U_INTERNAL UBool U_EXPORT2 uprv_isNegativeInfinity(double d);
-/**
- * Floating point utility that returns a Not a Number (NaN) value.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_getNaN(void);
-/**
- * Floating point utility that returns an infinite value.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_getInfinity(void);
-
-/**
- * Floating point utility to truncate a double.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_trunc(double d);
-/**
- * Floating point utility to calculate the floor of a double.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_floor(double d);
-/**
- * Floating point utility to calculate the ceiling of a double.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_ceil(double d);
-/**
- * Floating point utility to calculate the absolute value of a double.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_fabs(double d);
-/**
- * Floating point utility to calculate the fractional and integer parts of a double.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_modf(double d, double* pinteger);
-/**
- * Floating point utility to calculate the remainder of a double divided by another double.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_fmod(double d, double y);
-/**
- * Floating point utility to calculate d to the power of exponent (d^exponent).
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_pow(double d, double exponent);
-/**
- * Floating point utility to calculate 10 to the power of exponent (10^exponent).
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_pow10(int32_t exponent);
-/**
- * Floating point utility to calculate the maximum value of two doubles.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_fmax(double d, double y);
-/**
- * Floating point utility to calculate the minimum value of two doubles.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_fmin(double d, double y);
-/**
- * Private utility to calculate the maximum value of two integers.
- * @internal
- */
-U_INTERNAL int32_t U_EXPORT2 uprv_max(int32_t d, int32_t y);
-/**
- * Private utility to calculate the minimum value of two integers.
- * @internal
- */
-U_INTERNAL int32_t U_EXPORT2 uprv_min(int32_t d, int32_t y);
-
-#if U_IS_BIG_ENDIAN
-# define uprv_isNegative(number) (*((signed char *)&(number))<0)
-#else
-# define uprv_isNegative(number) (*((signed char *)&(number)+sizeof(number)-1)<0)
-#endif
-
-/**
- * Return the largest positive number that can be represented by an integer
- * type of arbitrary bit length.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_maxMantissa(void);
-
-/**
- * Return the floor of the log base 10 of a given double.
- * This method compensates for inaccuracies which arise naturally when
- * computing logs, and always gives the correct value. The parameter
- * must be positive and finite.
- * (Thanks to Alan Liu for supplying this function.)
- *
- * @param d the double value to apply the common log function for.
- * @return the log of value d.
- * @internal
- */
-U_INTERNAL int16_t U_EXPORT2 uprv_log10(double d);
-
-/**
- * Floating point utility to calculate the logarithm of a double.
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_log(double d);
-
-/**
- * Does common notion of rounding e.g. uprv_floor(x + 0.5);
- * @param x the double number
- * @return the rounded double
- * @internal
- */
-U_INTERNAL double U_EXPORT2 uprv_round(double x);
-
-#if 0
-/**
- * Returns the number of digits after the decimal point in a double number x.
- *
- * @param x the double number
- * @return the number of digits after the decimal point in a double number x.
- * @internal
- */
-/*U_INTERNAL int32_t U_EXPORT2 uprv_digitsAfterDecimal(double x);*/
-#endif
-
-/**
- * Time zone utilities
- *
- * Wrappers for C runtime library functions relating to timezones.
- * The t_tzset() function (similar to tzset) uses the current setting
- * of the environment variable TZ to assign values to three global
- * variables: daylight, timezone, and tzname. These variables have the
- * following meanings, and are declared in <time.h>.
- *
- * daylight Nonzero if daylight-saving-time zone (DST) is specified
- * in TZ; otherwise, 0. Default value is 1.
- * timezone Difference in seconds between coordinated universal
- * time and local time. E.g., -28,800 for PST (GMT-8hrs)
- * tzname(0) Three-letter time-zone name derived from TZ environment
- * variable. E.g., "PST".
- * tzname(1) Three-letter DST zone name derived from TZ environment
- * variable. E.g., "PDT". If DST zone is omitted from TZ,
- * tzname(1) is an empty string.
- *
- * Notes: For example, to set the TZ environment variable to correspond
- * to the current time zone in Germany, you can use one of the
- * following statements:
- *
- * set TZ=GST1GDT
- * set TZ=GST+1GDT
- *
- * If the TZ value is not set, t_tzset() attempts to use the time zone
- * information specified by the operating system. Under Windows NT
- * and Windows 95, this information is specified in the Control Panel’s
- * Date/Time application.
- * @internal
- */
-U_INTERNAL void U_EXPORT2 uprv_tzset(void);
-
-/**
- * Difference in seconds between coordinated universal
- * time and local time. E.g., -28,800 for PST (GMT-8hrs)
- * @return the difference in seconds between coordinated universal time and local time.
- * @internal
- */
-U_STABLE int32_t U_EXPORT2 uprv_timezone(void);
-
-/**
- * tzname(0) Three-letter time-zone name derived from TZ environment
- * variable. E.g., "PST".
- * tzname(1) Three-letter DST zone name derived from TZ environment
- * variable. E.g., "PDT". If DST zone is omitted from TZ,
- * tzname(1) is an empty string.
- * @internal
- */
-U_INTERNAL const char* U_EXPORT2 uprv_tzname(int n);
-
-/**
- * Get UTC (GMT) time measured in milliseconds since 0:00 on 1/1/1970.
- * @return the UTC time measured in milliseconds
- * @internal
- */
-U_INTERNAL UDate U_EXPORT2 uprv_getUTCtime(void);
-
/**
* Return the ICU data directory.
* The data directory is where common format ICU data files (.dat files)
@@ -336,48 +134,4 @@ U_INTERNAL const char* U_EXPORT2 uprv_getDefaultLocaleID(void);
# define U_PATH_SEP_STRING ":"
#endif
-/**
- * Determine whether a pathname is absolute or not, as defined by the platform.
- * @param path Pathname to test
- * @return TRUE if the path is absolute
- * @internal (ICU 3.0)
- */
-U_INTERNAL UBool U_EXPORT2 uprv_pathIsAbsolute(const char *path);
-
-/**
- * Maximum value of a (void*) - use to indicate the limit of an 'infinite' buffer.
- * In fact, buffer sizes must not exceed 2GB so that the difference between
- * the buffer limit and the buffer start can be expressed in an int32_t.
- *
- * The definition of U_MAX_PTR must fulfill the following conditions:
- * - return the largest possible pointer greater than base
- * - return a valid pointer according to the machine architecture (AS/400, 64-bit, etc.)
- * - avoid wrapping around at high addresses
- * - make sure that the returned pointer is not farther from base than 0x7fffffff
- *
- * @param base The beginning of a buffer to find the maximum offset from
- * @internal
- */
-#ifndef U_MAX_PTR
-# ifdef OS390
-# define U_MAX_PTR(base) ((void *)0x7fffffff)
-# elif defined(OS400)
-/*
- * With the provided macro we should never be out of range of a given segment
- * (a traditional/typical segment that is). Our segments have 5 bytes for the id
- * and 3 bytes for the offset. The key is that the casting takes care of only
- * retrieving the offset portion minus x1000. Hence, the smallest offset seen in
- * a program is x001000 and when casted to an int would be 0. That's why we can
- * only add 0xffefff. Otherwise, we would exceed the segment.
- *
- * Currently, 16MB is the current addressing limitation on as/400. This macro
- * may eventually be changed to use 2GB addressability for the newer version of
- * as/400 machines.
- */
-# define U_MAX_PTR(base) ((void *)(((char *)base)-((int32_t)(base))+((int32_t)0xffefff)))
-# else
-# define U_MAX_PTR(base) ((void *)(((char *)(base)+0x7fffffffu) > (char *)(base) ? ((char *)(base)+0x7fffffffu) : (char *)-1))
-# endif
-#endif
-
#endif
diff --git a/icu4c/source/common/unicode/utypes.h b/icu4c/source/common/unicode/utypes.h
index ab9a6ad655..4d778aa2df 100644
--- a/icu4c/source/common/unicode/utypes.h
+++ b/icu4c/source/common/unicode/utypes.h
@@ -783,13 +783,4 @@ U_STABLE const char * U_EXPORT2
u_errorName(UErrorCode code);
-
-
-
-/*===========================================================================*/
-/* Include header for platform utilies */
-/*===========================================================================*/
-
-#include "unicode/putil.h"
-
#endif /* _UTYPES */
diff --git a/icu4c/source/common/unistr_cnv.cpp b/icu4c/source/common/unistr_cnv.cpp
index 47b0cd15e5..f5defc66a8 100644
--- a/icu4c/source/common/unistr_cnv.cpp
+++ b/icu4c/source/common/unistr_cnv.cpp
@@ -26,6 +26,7 @@
#include "unicode/ustring.h"
#include "unicode/unistr.h"
#include "unicode/ucnv.h"
+#include "putilimp.h"
#include "ustr_cnv.h"
#include "ustr_imp.h"
diff --git a/icu4c/source/common/unorm.cpp b/icu4c/source/common/unorm.cpp
index 186ba7a2ff..d4c4d5a3dd 100644
--- a/icu4c/source/common/unorm.cpp
+++ b/icu4c/source/common/unorm.cpp
@@ -41,6 +41,7 @@
#include "utrie.h"
#include "unicode/uset.h"
#include "udataswp.h"
+#include "putilimp.h"
/*
* Status of tailored normalization
diff --git a/icu4c/source/common/uresbund.c b/icu4c/source/common/uresbund.c
index b5cb864d0e..58434cc566 100644
--- a/icu4c/source/common/uresbund.c
+++ b/icu4c/source/common/uresbund.c
@@ -32,6 +32,7 @@
#include "uenumimp.h"
#include "ulocimp.h"
#include "umutex.h"
+#include "putilimp.h"
/*
diff --git a/icu4c/source/common/ushape.c b/icu4c/source/common/ushape.c
index 9e5113d8e8..77135fd043 100644
--- a/icu4c/source/common/ushape.c
+++ b/icu4c/source/common/ushape.c
@@ -19,8 +19,9 @@
#include "unicode/utypes.h"
#include "unicode/uchar.h"
#include "unicode/ustring.h"
-#include "cmemory.h"
#include "unicode/ushape.h"
+#include "cmemory.h"
+#include "putilimp.h"
#include "ustr_imp.h"
#if UTF_SIZE<16
diff --git a/icu4c/source/i18n/anytrans.cpp b/icu4c/source/i18n/anytrans.cpp
index c28e3866ac..51674bca46 100644
--- a/icu4c/source/i18n/anytrans.cpp
+++ b/icu4c/source/i18n/anytrans.cpp
@@ -19,6 +19,7 @@
#include "uvector.h"
#include "tridpars.h"
#include "hash.h"
+#include "putilimp.h"
//------------------------------------------------------------
// Constants
diff --git a/icu4c/source/i18n/astro.cpp b/icu4c/source/i18n/astro.cpp
index 95b751cee9..184d3b2de0 100644
--- a/icu4c/source/i18n/astro.cpp
+++ b/icu4c/source/i18n/astro.cpp
@@ -16,6 +16,7 @@
#include "uhash.h"
#include "umutex.h"
#include "ucln_in.h"
+#include "putilimp.h"
#include // for toString()
#ifdef U_DEBUG_ASTRO
diff --git a/icu4c/source/i18n/choicfmt.cpp b/icu4c/source/i18n/choicfmt.cpp
index dea28fe161..eeac7f381c 100644
--- a/icu4c/source/i18n/choicfmt.cpp
+++ b/icu4c/source/i18n/choicfmt.cpp
@@ -33,6 +33,7 @@
#include "cpputils.h"
#include "ustrfmt.h"
#include "cstring.h"
+#include "putilimp.h"
// *****************************************************************************
// class ChoiceFormat
diff --git a/icu4c/source/i18n/decimfmt.cpp b/icu4c/source/i18n/decimfmt.cpp
index fb9aeea0db..07c95da937 100644
--- a/icu4c/source/i18n/decimfmt.cpp
+++ b/icu4c/source/i18n/decimfmt.cpp
@@ -56,6 +56,7 @@
#include "cstring.h"
#include "umutex.h"
#include "uassert.h"
+#include "putilimp.h"
U_NAMESPACE_BEGIN
diff --git a/icu4c/source/i18n/digitlst.cpp b/icu4c/source/i18n/digitlst.cpp
index c24d7cf006..e8866ac1a5 100644
--- a/icu4c/source/i18n/digitlst.cpp
+++ b/icu4c/source/i18n/digitlst.cpp
@@ -27,6 +27,7 @@
#include "unicode/putil.h"
#include "digitlst.h"
#include "cstring.h"
+#include "putilimp.h"
#include
#include
#include
diff --git a/icu4c/source/i18n/gregoimp.h b/icu4c/source/i18n/gregoimp.h
index 0a2fdaef3a..0adaa48ee1 100644
--- a/icu4c/source/i18n/gregoimp.h
+++ b/icu4c/source/i18n/gregoimp.h
@@ -15,6 +15,7 @@
#include "unicode/ures.h"
#include "unicode/locid.h"
+#include "putilimp.h"
U_NAMESPACE_BEGIN
diff --git a/icu4c/source/i18n/nfrule.h b/icu4c/source/i18n/nfrule.h
index f0af547a1a..757a524a5c 100644
--- a/icu4c/source/i18n/nfrule.h
+++ b/icu4c/source/i18n/nfrule.h
@@ -14,6 +14,7 @@
#include "unicode/utypes.h"
#include "unicode/uobject.h"
#include "unicode/unistr.h"
+#include "putilimp.h"
U_NAMESPACE_BEGIN
diff --git a/icu4c/source/i18n/numfmt.cpp b/icu4c/source/i18n/numfmt.cpp
index 8fb0d9a740..21789ea1e0 100644
--- a/icu4c/source/i18n/numfmt.cpp
+++ b/icu4c/source/i18n/numfmt.cpp
@@ -39,6 +39,7 @@
#include "iculserv.h"
#include "ucln_in.h"
#include "cstring.h"
+#include "putilimp.h"
#include
//#define FMT_DEBUG
diff --git a/icu4c/source/i18n/rbt_pars.cpp b/icu4c/source/i18n/rbt_pars.cpp
index 11841e184f..a529e19041 100644
--- a/icu4c/source/i18n/rbt_pars.cpp
+++ b/icu4c/source/i18n/rbt_pars.cpp
@@ -35,6 +35,7 @@
#include "util.h"
#include "cmemory.h"
#include "uprops.h"
+#include "putilimp.h"
// Operators
#define VARIABLE_DEF_OP ((UChar)0x003D) /*=*/
diff --git a/icu4c/source/i18n/rbt_rule.cpp b/icu4c/source/i18n/rbt_rule.cpp
index cf1c06af9d..4bbb6dc831 100644
--- a/icu4c/source/i18n/rbt_rule.cpp
+++ b/icu4c/source/i18n/rbt_rule.cpp
@@ -21,6 +21,7 @@
#include "strmatch.h"
#include "strrepl.h"
#include "util.h"
+#include "putilimp.h"
static const UChar FORWARD_OP[] = {32,62,32,0}; // " > "
diff --git a/icu4c/source/i18n/rbt_set.cpp b/icu4c/source/i18n/rbt_set.cpp
index 2d63706576..2679e9eec5 100644
--- a/icu4c/source/i18n/rbt_set.cpp
+++ b/icu4c/source/i18n/rbt_set.cpp
@@ -17,6 +17,7 @@
#include "rbt_set.h"
#include "rbt_rule.h"
#include "cmemory.h"
+#include "putilimp.h"
U_CDECL_BEGIN
static void U_EXPORT2 U_CALLCONV _deleteRule(void *rule) {
diff --git a/icu4c/source/i18n/tblcoll.cpp b/icu4c/source/i18n/tblcoll.cpp
index 3d74713315..106f196fa7 100644
--- a/icu4c/source/i18n/tblcoll.cpp
+++ b/icu4c/source/i18n/tblcoll.cpp
@@ -67,6 +67,7 @@
#include "uhash.h"
#include "cmemory.h"
#include "cstring.h"
+#include "putilimp.h"
/* public RuleBasedCollator constructor ---------------------------------- */
diff --git a/icu4c/source/i18n/ucol.cpp b/icu4c/source/i18n/ucol.cpp
index 0f22ba8b5e..ee524a3f70 100644
--- a/icu4c/source/i18n/ucol.cpp
+++ b/icu4c/source/i18n/ucol.cpp
@@ -45,6 +45,7 @@
#include "ucln_in.h"
#include "cstring.h"
#include "utracimp.h"
+#include "putilimp.h"
#ifdef UCOL_DEBUG
#include
diff --git a/icu4c/source/io/uprntf_p.c b/icu4c/source/io/uprntf_p.c
index 0f8f848874..a1fb94599f 100644
--- a/icu4c/source/io/uprntf_p.c
+++ b/icu4c/source/io/uprntf_p.c
@@ -26,6 +26,7 @@
#include "uprintf.h"
#include "ufmt_cmn.h"
#include "cmemory.h"
+#include "putilimp.h"
/* ANSI style formatting */
/* Use US-ASCII characters only for formatting */
diff --git a/icu4c/source/test/cintltst/capitst.c b/icu4c/source/test/cintltst/capitst.c
index 57effc2e0f..581cce49d2 100644
--- a/icu4c/source/test/cintltst/capitst.c
+++ b/icu4c/source/test/cintltst/capitst.c
@@ -27,6 +27,7 @@
#include "cintltst.h"
#include "capitst.h"
#include "ccolltst.h"
+#include "putilimp.h"
static void TestAttribute(void);
int TestBufferSize(); /* defined in "colutil.c" */
diff --git a/icu4c/source/test/cintltst/cnumtst.c b/icu4c/source/test/cintltst/cnumtst.c
index 28c0e663a2..c5d8598ab2 100644
--- a/icu4c/source/test/cintltst/cnumtst.c
+++ b/icu4c/source/test/cintltst/cnumtst.c
@@ -29,6 +29,7 @@
#include "cintltst.h"
#include "cnumtst.h"
#include "cmemory.h"
+#include "putilimp.h"
#define LENGTH(arr) (sizeof(arr)/sizeof(arr[0]))
diff --git a/icu4c/source/test/cintltst/cucdtst.c b/icu4c/source/test/cintltst/cucdtst.c
index e5f8615d27..bb5e2b35e2 100644
--- a/icu4c/source/test/cintltst/cucdtst.c
+++ b/icu4c/source/test/cintltst/cucdtst.c
@@ -24,6 +24,7 @@
#include "unicode/uloc.h"
#include "cintltst.h"
+#include "putilimp.h"
#include "uparse.h"
#include "uprops.h"
#include "uset_imp.h"
diff --git a/icu4c/source/test/cintltst/putiltst.c b/icu4c/source/test/cintltst/putiltst.c
index 48c8b00d65..d00d3e2a4a 100644
--- a/icu4c/source/test/cintltst/putiltst.c
+++ b/icu4c/source/test/cintltst/putiltst.c
@@ -19,6 +19,7 @@
#include "unicode/putil.h"
#include "unicode/ustring.h"
#include "cstring.h"
+#include "putilimp.h"
static UBool compareWithNAN(double x, double y);
static void doAssert(double expect, double got, const char *message);
diff --git a/icu4c/source/test/intltest/callimts.cpp b/icu4c/source/test/intltest/callimts.cpp
index 82ca84cdbb..ff9a02b3ff 100644
--- a/icu4c/source/test/intltest/callimts.cpp
+++ b/icu4c/source/test/intltest/callimts.cpp
@@ -14,6 +14,7 @@
#include "unicode/gregocal.h"
#include "unicode/datefmt.h"
#include "unicode/smpdtfmt.h"
+#include "putilimp.h"
U_NAMESPACE_USE
void CalendarLimitTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
diff --git a/icu4c/source/test/intltest/msfmrgts.cpp b/icu4c/source/test/intltest/msfmrgts.cpp
index 848c3bcfee..15f62b7377 100644
--- a/icu4c/source/test/intltest/msfmrgts.cpp
+++ b/icu4c/source/test/intltest/msfmrgts.cpp
@@ -17,6 +17,7 @@
#include "unicode/numfmt.h"
#include "unicode/choicfmt.h"
#include "unicode/gregocal.h"
+#include "putilimp.h"
// *****************************************************************************
// class MessageFormatRegressionTest
diff --git a/icu4c/source/test/intltest/nmfmtrt.cpp b/icu4c/source/test/intltest/nmfmtrt.cpp
index 6697f5c0a5..b4bbfca9de 100644
--- a/icu4c/source/test/intltest/nmfmtrt.cpp
+++ b/icu4c/source/test/intltest/nmfmtrt.cpp
@@ -13,6 +13,7 @@
#include "unicode/dcfmtsym.h"
#include "unicode/decimfmt.h"
#include "unicode/locid.h"
+#include "putilimp.h"
#include
#include // for sprintf
diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp
index a269c89082..62fc0592ca 100644
--- a/icu4c/source/test/intltest/numfmtst.cpp
+++ b/icu4c/source/test/intltest/numfmtst.cpp
@@ -23,6 +23,7 @@
#include "textfile.h"
#include "tokiter.h"
#include "charstr.h"
+#include "putilimp.h"
#include
#include
diff --git a/icu4c/source/test/intltest/numrgts.cpp b/icu4c/source/test/intltest/numrgts.cpp
index c00e7635f9..b9f821e856 100644
--- a/icu4c/source/test/intltest/numrgts.cpp
+++ b/icu4c/source/test/intltest/numrgts.cpp
@@ -19,6 +19,8 @@
#include "unicode/resbund.h"
#include "unicode/calendar.h"
#include "unicode/datefmt.h"
+#include "putilimp.h"
+
int32_t gMyNumberFormatTestClassID;
UClassID MyNumberFormatTest::getDynamicClassID() const
{
diff --git a/icu4c/source/test/intltest/tsdate.cpp b/icu4c/source/test/intltest/tsdate.cpp
index d8ce5ec788..12eaeb3877 100644
--- a/icu4c/source/test/intltest/tsdate.cpp
+++ b/icu4c/source/test/intltest/tsdate.cpp
@@ -11,6 +11,7 @@
#include "unicode/datefmt.h"
#include "unicode/smpdtfmt.h"
#include "tsdate.h"
+#include "putilimp.h"
#include
#include
diff --git a/icu4c/source/test/intltest/tsnmfmt.cpp b/icu4c/source/test/intltest/tsnmfmt.cpp
index ee7314520a..fab1408a39 100644
--- a/icu4c/source/test/intltest/tsnmfmt.cpp
+++ b/icu4c/source/test/intltest/tsnmfmt.cpp
@@ -10,6 +10,7 @@
#include "unicode/decimfmt.h"
#include "tsnmfmt.h"
+#include "putilimp.h"
#include
#include
diff --git a/icu4c/source/test/intltest/tsputil.cpp b/icu4c/source/test/intltest/tsputil.cpp
index 642f2b38e2..0daf2ab9af 100644
--- a/icu4c/source/test/intltest/tsputil.cpp
+++ b/icu4c/source/test/intltest/tsputil.cpp
@@ -7,6 +7,7 @@
#include "tsputil.h"
#include // DBL_MAX, DBL_MIN
+#include "putilimp.h"
#define CASE(id,test) case id: name = #test; if (exec) { logln(#test "---"); logln((UnicodeString)""); test(); } break;
diff --git a/icu4c/source/test/intltest/tzbdtest.cpp b/icu4c/source/test/intltest/tzbdtest.cpp
index 34b445626b..8ad05ef378 100644
--- a/icu4c/source/test/intltest/tzbdtest.cpp
+++ b/icu4c/source/test/intltest/tzbdtest.cpp
@@ -12,6 +12,7 @@
#include "unicode/timezone.h"
#include "unicode/simpletz.h"
#include "unicode/gregocal.h"
+#include "putilimp.h"
void TimeZoneBoundaryTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
{
diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp
index 9150724ba1..8cc96f80ae 100644
--- a/icu4c/source/test/intltest/tztest.cpp
+++ b/icu4c/source/test/intltest/tztest.cpp
@@ -16,6 +16,7 @@
#include "unicode/strenum.h"
#include "tztest.h"
#include "cmemory.h"
+#include "putilimp.h"
#define CASE(id,test) case id: \
name = #test; \