]> granicus.if.org Git - icu/commitdiff
ICU-20378 Changing APIs for UFieldCategory to int32_t.
authorShane F. Carr <shane@unicode.org>
Mon, 28 Jan 2019 05:29:12 +0000 (21:29 -0800)
committerShane F. Carr <shane@unicode.org>
Sat, 9 Feb 2019 00:45:55 +0000 (16:45 -0800)
icu4c/source/i18n/formattedvalue.cpp
icu4c/source/i18n/unicode/formattedvalue.h
icu4c/source/i18n/unicode/uformattedvalue.h

index 4574ab8cde3f1c5f95b909a5d5eb0f6084797947..4d33a4d4d2a9cf402fbad9a5657f70dd954651a9 100644 (file)
@@ -25,12 +25,12 @@ void ConstrainedFieldPosition::reset() {
     fCategory = UFIELD_CATEGORY_UNDEFINED;
 }
 
-void ConstrainedFieldPosition::constrainCategory(UFieldCategory category) {
+void ConstrainedFieldPosition::constrainCategory(int32_t category) {
     fConstraint = UCFPOS_CONSTRAINT_CATEGORY;
     fCategory = category;
 }
 
-void ConstrainedFieldPosition::constrainField(UFieldCategory category, int32_t field) {
+void ConstrainedFieldPosition::constrainField(int32_t category, int32_t field) {
     fConstraint = UCFPOS_CONSTRAINT_FIELD;
     fCategory = category;
     fField = field;
@@ -41,7 +41,7 @@ void ConstrainedFieldPosition::setInt64IterationContext(int64_t context) {
 }
 
 void ConstrainedFieldPosition::setState(
-        UFieldCategory category,
+        int32_t category,
         int32_t field,
         int32_t start,
         int32_t limit) {
@@ -98,7 +98,7 @@ ucfpos_reset(UConstrainedFieldPosition* ptr, UErrorCode* ec) {
 }
 
 U_CAPI void U_EXPORT2
-ucfpos_constrainCategory(UConstrainedFieldPosition* ptr, UFieldCategory category, UErrorCode* ec) {
+ucfpos_constrainCategory(UConstrainedFieldPosition* ptr, int32_t category, UErrorCode* ec) {
     auto* impl = UConstrainedFieldPositionImpl::validate(ptr, *ec);
     if (U_FAILURE(*ec)) {
         return;
@@ -107,7 +107,7 @@ ucfpos_constrainCategory(UConstrainedFieldPosition* ptr, UFieldCategory category
 }
 
 U_CAPI void U_EXPORT2
-ucfpos_constrainField(UConstrainedFieldPosition* ptr, UFieldCategory category, int32_t field, UErrorCode* ec) {
+ucfpos_constrainField(UConstrainedFieldPosition* ptr, int32_t category, int32_t field, UErrorCode* ec) {
     auto* impl = UConstrainedFieldPositionImpl::validate(ptr, *ec);
     if (U_FAILURE(*ec)) {
         return;
@@ -124,7 +124,7 @@ ucfpos_getConstraintType(const UConstrainedFieldPosition* ptr, UErrorCode* ec) {
     return impl->fImpl.getConstraintType();
 }
 
-U_CAPI UFieldCategory U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucfpos_getCategory(const UConstrainedFieldPosition* ptr, UErrorCode* ec) {
     const auto* impl = UConstrainedFieldPositionImpl::validate(ptr, *ec);
     if (U_FAILURE(*ec)) {
@@ -173,7 +173,7 @@ ucfpos_setInt64IterationContext(UConstrainedFieldPosition* ptr, int64_t context,
 U_CAPI void U_EXPORT2
 ucfpos_setState(
         UConstrainedFieldPosition* ptr,
-        UFieldCategory category,
+        int32_t category,
         int32_t field,
         int32_t start,
         int32_t limit,
index ee2f615e8ef9a286b17074cf239d354cf8459af9..3f195fb623d7d653d60b01f5f4e99c9fd2244545 100644 (file)
@@ -83,7 +83,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
      * @param category The field category to fix when iterating.
      * @draft ICU 64
      */
-    void constrainCategory(UFieldCategory category);
+    void constrainCategory(int32_t category);
 
     /**
      * Sets a constraint on the category and field.
@@ -108,7 +108,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
      * @param field The field to fix when iterating.
      * @draft ICU 64
      */
-    void constrainField(UFieldCategory category, int32_t field);
+    void constrainField(int32_t category, int32_t field);
 
     /**
      * Gets the currently active constraint.
@@ -130,7 +130,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
      * @return The field category saved in the instance.
      * @draft ICU 64
      */
-    inline UFieldCategory getCategory() const {
+    inline int32_t getCategory() const {
         return fCategory;
     };
 
@@ -216,7 +216,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
      * @draft ICU 64
      */
     void setState(
-        UFieldCategory category,
+        int32_t category,
         int32_t field,
         int32_t start,
         int32_t limit);
@@ -230,7 +230,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
     int32_t fStart = 0;
     int32_t fLimit = 0;
     UCFPosConstraintType fConstraint = UCFPOS_CONSTRAINT_NONE;
-    UFieldCategory fCategory = UFIELD_CATEGORY_UNDEFINED;
+    int32_t fCategory = UFIELD_CATEGORY_UNDEFINED;
 };
 
 
index dee34e69d970e581779201db8d77f350ed639519..e4d000261278d00b31c66cc93cd6d99494d8f2be 100644 (file)
 /**
  * All possible field categories in ICU. Every entry in this enum corresponds
  * to another enum that exists in ICU.
+ * 
+ * In the APIs that take a UFieldCategory, an int32_t type is used. Field
+ * categories having any of the top four bits turned on are reserved as
+ * private-use for external APIs implementing FormattedValue. This means that
+ * categories 2^28 and higher or below zero (with the highest bit turned on)
+ * are private-use and will not be used by ICU in the future.
  *
  * @draft ICU 64
  */
@@ -192,7 +198,7 @@ ucfpos_close(UConstrainedFieldPosition* ucfpos);
 U_DRAFT void U_EXPORT2
 ucfpos_constrainCategory(
     UConstrainedFieldPosition* ucfpos,
-    UFieldCategory category,
+    int32_t category,
     UErrorCode* ec);
 
 
@@ -225,7 +231,7 @@ ucfpos_constrainCategory(
 U_DRAFT void U_EXPORT2
 ucfpos_constrainField(
     UConstrainedFieldPosition* ucfpos,
-    UFieldCategory category,
+    int32_t category,
     int32_t field,
     UErrorCode* ec);
 
@@ -256,7 +262,7 @@ ucfpos_getConstraintType(
  * @return The field category saved in the instance.
  * @draft ICU 64
  */
-U_DRAFT UFieldCategory U_EXPORT2
+U_DRAFT int32_t U_EXPORT2
 ucfpos_getCategory(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -353,7 +359,7 @@ ucfpos_setInt64IterationContext(
 U_DRAFT void U_EXPORT2
 ucfpos_setState(
     UConstrainedFieldPosition* ucfpos,
-    UFieldCategory category,
+    int32_t category,
     int32_t field,
     int32_t start,
     int32_t limit,