X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/374ca955a76ecab1204ca8bfa63ff9238d998416..0f5d89e82340278ed3d7d50029f37cab2c41a57e:/icuSources/layoutex/layout/RunArrays.h
diff --git a/icuSources/layoutex/layout/RunArrays.h b/icuSources/layoutex/layout/RunArrays.h
index f745bd54..5cf6c60b 100644
--- a/icuSources/layoutex/layout/RunArrays.h
+++ b/icuSources/layoutex/layout/RunArrays.h
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
/*
**********************************************************************
- * Copyright (C) 2003-2004, International Business Machines
+ * Copyright (C) 2003-2008, International Business Machines
* Corporation and others. All Rights Reserved.
**********************************************************************
*/
@@ -15,12 +17,17 @@
#include "unicode/utypes.h"
#include "unicode/locid.h"
+/**
+ * \file
+ * \brief C++ API: base class for building classes which represent data that is associated with runs of text.
+ */
+
U_NAMESPACE_BEGIN
/**
* The initial size of an array if it is unspecified.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
#define INITIAL_CAPACITY 16
@@ -28,7 +35,7 @@ U_NAMESPACE_BEGIN
* When an array needs to grow, it will double in size until
* it becomes this large, then it will grow by this amount.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
#define CAPACITY_GROW_LIMIT 128
@@ -38,7 +45,7 @@ U_NAMESPACE_BEGIN
* maintains an array of limit indices into the text, subclasses
* provide one or more arrays of data.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
class U_LAYOUTEX_API RunArray : public UObject
{
@@ -52,9 +59,9 @@ public:
*
* @param count is the number of entries in the limit array.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- RunArray(const le_int32 *limits, le_int32 count);
+ inline RunArray(const le_int32 *limits, le_int32 count);
/**
* Construct an empty RunArray
object. Clients can add limit
@@ -65,14 +72,14 @@ public:
*
* @see add
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
RunArray(le_int32 initialCapacity);
/**
* The destructor; virtual so that subclass destructors are invoked as well.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
virtual ~RunArray();
@@ -81,9 +88,19 @@ public:
*
* @return the number of entries in the limit indices array.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
+ */
+ inline le_int32 getCount() const;
+
+ /**
+ * Reset the limit indices array. This method sets the number of entries in the
+ * limit indices array to zero. It does not delete the array.
+ *
+ * Note: Subclass arrays will also be reset and not deleted.
+ *
+ * @stable ICU 3.6
*/
- le_int32 getCount() const;
+ inline void reset();
/**
* Get the last limit index. This is the number of characters in
@@ -91,9 +108,9 @@ public:
*
* @return the last limit index.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- le_int32 getLimit() const;
+ inline le_int32 getLimit() const;
/**
* Get the limit index for a particular run of text.
@@ -102,9 +119,9 @@ public:
*
* @return the limit index for the run, or -1 if run
is out of bounds.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- le_int32 getLimit(le_int32 run) const;
+ inline le_int32 getLimit(le_int32 run) const;
/**
* Add a limit index to the limit indices array and return the run index
@@ -128,23 +145,23 @@ public:
* @see init
* @see grow
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
le_int32 add(le_int32 limit);
/**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
+ * ICU "poor man's RTTI", returns a UClassID for this class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
+ static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
/**
- * ICU "poor man's RTTI", returns a UClassID for this class.
+ * ICU "poor man's RTTI", returns a UClassID for the actual class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
+ virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
protected:
/**
@@ -157,7 +174,7 @@ protected:
*
* @see add
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
virtual void init(le_int32 capacity);
@@ -171,7 +188,7 @@ protected:
*
* @see add
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
virtual void grow(le_int32 capacity);
@@ -182,7 +199,7 @@ protected:
* add
method won't change the arrays
* and the destructor won't delete them.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
le_bool fClientArrays;
@@ -195,9 +212,9 @@ private:
le_int32 ensureCapacity();
- RunArray();
- RunArray(const RunArray & /*other*/);
- RunArray &operator=(const RunArray & /*other*/) { return *this; };
+ inline RunArray();
+ inline RunArray(const RunArray & /*other*/);
+ inline RunArray &operator=(const RunArray & /*other*/) { return *this; };
const le_int32 *fLimits;
le_int32 fCount;
@@ -227,6 +244,11 @@ inline le_int32 RunArray::getCount() const
return fCount;
}
+inline void RunArray::reset()
+{
+ fCount = 0;
+}
+
inline le_int32 RunArray::getLimit(le_int32 run) const
{
if (run < 0 || run >= fCount) {
@@ -245,7 +267,7 @@ inline le_int32 RunArray::getLimit() const
* The FontRuns
class associates pointers to LEFontInstance
* objects with runs of text.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
class U_LAYOUTEX_API FontRuns : public RunArray
{
@@ -263,9 +285,9 @@ public:
*
* @param count is the number of entries in the two arrays.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- FontRuns(const LEFontInstance **fonts, const le_int32 *limits, le_int32 count);
+ inline FontRuns(const LEFontInstance **fonts, const le_int32 *limits, le_int32 count);
/**
* Construct an empty FontRuns
object. Clients can add font and limit
@@ -276,14 +298,14 @@ public:
*
* @see add
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
FontRuns(le_int32 initialCapacity);
/**
* The destructor; virtual so that subclass destructors are invoked as well.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
virtual ~FontRuns();
@@ -298,7 +320,7 @@ public:
*
* @see RunArray::getLimit
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
const LEFontInstance *getFont(le_int32 run) const;
@@ -323,23 +345,23 @@ public:
*
* @return the run index where the font and limit index were stored, or -1 if the data cannot be stored.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
le_int32 add(const LEFontInstance *font, le_int32 limit);
/**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
+ * ICU "poor man's RTTI", returns a UClassID for this class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
+ static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
/**
- * ICU "poor man's RTTI", returns a UClassID for this class.
+ * ICU "poor man's RTTI", returns a UClassID for the actual class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
+ virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
protected:
virtual void init(le_int32 capacity);
@@ -347,9 +369,9 @@ protected:
private:
- FontRuns();
- FontRuns(const FontRuns &other);
- FontRuns &operator=(const FontRuns & /*other*/) { return *this; };
+ inline FontRuns();
+ inline FontRuns(const FontRuns &other);
+ inline FontRuns &operator=(const FontRuns & /*other*/) { return *this; };
/**
* The address of this static class variable serves as this class's ID
@@ -382,7 +404,7 @@ inline FontRuns::FontRuns(const LEFontInstance **fonts, const le_int32 *limits,
* The LocaleRuns
class associates pointers to Locale
* objects with runs of text.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
class U_LAYOUTEX_API LocaleRuns : public RunArray
{
@@ -400,9 +422,9 @@ public:
*
* @param count is the number of entries in the two arrays.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- LocaleRuns(const Locale **locales, const le_int32 *limits, le_int32 count);
+ inline LocaleRuns(const Locale **locales, const le_int32 *limits, le_int32 count);
/**
* Construct an empty LocaleRuns
object. Clients can add locale and limit
@@ -413,14 +435,14 @@ public:
*
* @see add
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
LocaleRuns(le_int32 initialCapacity);
/**
* The destructor; virtual so that subclass destructors are invoked as well.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
virtual ~LocaleRuns();
@@ -435,7 +457,7 @@ public:
*
* @see RunArray::getLimit
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
const Locale *getLocale(le_int32 run) const;
@@ -460,41 +482,44 @@ public:
*
* @return the run index where the locale and limit index were stored, or -1 if the data cannot be stored.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
le_int32 add(const Locale *locale, le_int32 limit);
/**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
+ * ICU "poor man's RTTI", returns a UClassID for this class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
+ static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
/**
- * ICU "poor man's RTTI", returns a UClassID for this class.
+ * ICU "poor man's RTTI", returns a UClassID for the actual class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
+ virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
protected:
virtual void init(le_int32 capacity);
virtual void grow(le_int32 capacity);
+ /**
+ * @internal
+ */
+ const Locale **fLocales;
+
private:
- LocaleRuns();
- LocaleRuns(const LocaleRuns &other);
- LocaleRuns &operator=(const LocaleRuns & /*other*/) { return *this; };
+ inline LocaleRuns();
+ inline LocaleRuns(const LocaleRuns &other);
+ inline LocaleRuns &operator=(const LocaleRuns & /*other*/) { return *this; };
/**
* The address of this static class variable serves as this class's ID
* for ICU "poor man's RTTI".
*/
static const char fgClassID;
-
- const Locale **fLocales;
};
inline LocaleRuns::LocaleRuns()
@@ -518,7 +543,7 @@ inline LocaleRuns::LocaleRuns(const Locale **locales, const le_int32 *limits, le
/**
* The ValueRuns
class associates integer values with runs of text.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
class U_LAYOUTEX_API ValueRuns : public RunArray
{
@@ -535,9 +560,9 @@ public:
*
* @param count is the number of entries in the two arrays.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- ValueRuns(const le_int32 *values, const le_int32 *limits, le_int32 count);
+ inline ValueRuns(const le_int32 *values, const le_int32 *limits, le_int32 count);
/**
* Construct an empty ValueRuns
object. Clients can add value and limit
@@ -548,14 +573,14 @@ public:
*
* @see add
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
ValueRuns(le_int32 initialCapacity);
/**
* The destructor; virtual so that subclass destructors are invoked as well.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
virtual ~ValueRuns();
@@ -570,7 +595,7 @@ public:
*
* @see RunArray::getLimit
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
le_int32 getValue(le_int32 run) const;
@@ -594,23 +619,23 @@ public:
*
* @return the run index where the value and limit index were stored, or -1 if the data cannot be stored.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
le_int32 add(le_int32 value, le_int32 limit);
/**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
+ * ICU "poor man's RTTI", returns a UClassID for this class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
+ static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
/**
- * ICU "poor man's RTTI", returns a UClassID for this class.
+ * ICU "poor man's RTTI", returns a UClassID for the actual class.
*
- * @draft ICU 2.6
+ * @stable ICU 3.2
*/
- static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
+ virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
protected:
virtual void init(le_int32 capacity);
@@ -618,9 +643,9 @@ protected:
private:
- ValueRuns();
- ValueRuns(const ValueRuns &other);
- ValueRuns &operator=(const ValueRuns & /*other*/) { return *this; };
+ inline ValueRuns();
+ inline ValueRuns(const ValueRuns &other);
+ inline ValueRuns &operator=(const ValueRuns & /*other*/) { return *this; };
/**
* The address of this static class variable serves as this class's ID