Lines Matching full:code

46  * In functions with an error code parameter,
47 * the <code>pErrorCode</code> pointer must be valid
64 * <h4> Sample code for the ICU Bidi API </h4>
68 * This is (hypothetical) sample code that illustrates
70 * Rendering code depends highly on the graphics system,
71 * therefore this sample code must make a lot of assumptions,
79 * characters (code units) in logical order.</li>
82 * and therefore its implementation omitted from this sample code.</li>
86 * \code
302 * <code>paraLevel</code> and <code>embeddingLevels</code>
303 * arguments of <code>ubidi_setPara()</code>; there:
305 * <li>bit&nbsp;7 of an <code>embeddingLevels[]</code>
309 * <li><code>paraLevel</code> can be set to the
310 * pseudo-level values <code>UBIDI_DEFAULT_LTR</code>
311 * and <code>UBIDI_DEFAULT_RTL</code>.</li>
317 * <code>UBIDI_DEFAULT_XXX</code> can be used to specify
319 * when the <code>ubidi_setPara()</code> function
323 * Note that the value for <code>UBIDI_DEFAULT_LTR</code> is even
324 * and the one for <code>UBIDI_DEFAULT_RTL</code> is odd,
349 * <code>UBIDI_REORDER_INVERSE_LIKE_DIRECT</code> or
350 * <code>UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
357 * If reordering option <code>UBIDI_OPTION_INSERT_MARKS</code> is set, an RLM may
375 * <code>UBIDI_REORDER_INVERSE_LIKE_DIRECT</code> or
376 * <code>UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
384 * If reordering option <code>UBIDI_OPTION_INSERT_MARKS</code> is set, an RLM may
398 * (The maximum resolved level can be up to <code>UBIDI_MAX_EXPLICIT_LEVEL+1</code>).
413 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> is specified. This can also happen
415 * by option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
425 * <code>UBiDiDirection</code> values indicate the text direction.
431 * <li>As return value for <code>ubidi_getDirection()</code>, it means
434 * <li> As return value for <code>ubidi_getBaseDirection()</code>, it
443 * <li>As return value for <code>ubidi_getDirection()</code>, it means
446 * <li> As return value for <code>ubidi_getBaseDirection()</code>, it
454 * <p>As return value for <code>ubidi_getDirection()</code>, it means
461 * <p>As return value for <code>ubidi_getBaseDirection()</code>, it means
473 * Forward declaration of the <code>UBiDi</code> structure for the declaration of
488 * Allocate a <code>UBiDi</code> structure.
491 * by <code>ubidi_setPara()</code>
493 * <code>ubidi_setLine()</code>.<p>
495 * by calling <code>ubidi_close()</code>.<p>
496 * <code>ubidi_setPara()</code> and <code>ubidi_setLine()</code> will allocate
499 * @return An empty <code>UBiDi</code> object.
508 * Allocate a <code>UBiDi</code> structure with preallocated memory
510 * This function provides a <code>UBiDi</code> object like <code>ubidi_open()</code>
517 * <code>maxRunCount</code> cannot be reasonably predetermined and should not
518 * be set to <code>maxLength</code> (the only failproof value) to avoid
519 * wasting memory, then <code>maxRunCount</code> could be set to 0 here
521 * on demand, just like with <code>ubidi_open()</code>.
534 * 1 and <code>maxLength</code>. It is typically small.
536 * @param pErrorCode must be a valid pointer to an error code value.
538 * @return An empty <code>UBiDi</code> object with preallocated memory.
547 * <code>ubidi_close()</code> must be called to free the memory
551 * A parent <code>UBiDi</code> object must not be destroyed or reused if
553 * If a <code>UBiDi</code> object has become the <i>child</i>
555 * <code>ubidi_setLine()</code>, then the child object must
557 * <code>ubidi_setPara()</code> or <code>ubidi_setLine()</code>)
560 * @param pBiDi is a <code>UBiDi</code> object.
593 * must be called before <code>ubidi_setPara()</code>.
606 * <p>With <code>isInverse</code> set to <code>true</code>,
613 * <p>Output runs should be retrieved using <code>ubidi_getVisualRun()</code>.
615 * <code>ubidi_getVisualRun()</code> gets the reordered runs, these are actually
618 * <p>Calling this function with argument <code>isInverse</code> set to
619 * <code>true</code> is equivalent to calling
620 * <code>ubidi_setReorderingMode</code> with argument
621 * <code>reorderingMode</code>
622 * set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
623 * Calling this function with argument <code>isInverse</code> set to
624 * <code>false</code> is equivalent to calling
625 * <code>ubidi_setReorderingMode</code> with argument
626 * <code>reorderingMode</code>
627 * set to <code>#UBIDI_REORDER_DEFAULT</code>.
629 * @param pBiDi is a <code>UBiDi</code> object.
646 * <code>ubidi_setReorderingMode</code> will return <code>true</code> if the
647 * reordering mode was set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>,
648 * <code>false</code> for all other values.</p>
650 * @param pBiDi is a <code>UBiDi</code> object.
665 * This function must be called before <code>ubidi_setPara()</code>.
674 * @param pBiDi is a <code>UBiDi</code> object.
691 * @param pBiDi is a <code>UBiDi</code> object.
704 * <code>UBiDiReorderingMode</code> values indicate which variant of the Bidi
726 * <code>#UBIDI_OPTION_INSERT_MARKS</code>, some Bidi controls in the source
732 * (same algorithm as selected by <code>ubidi_setInverse(true)</code>.
741 * <code>UBIDI_REORDER_NUMBERS_SPECIAL</code> Bidi algorithm.
757 * This function must be called before <code>ubidi_setPara()</code>, and stays
766 * <code>#UBIDI_REORDER_DEFAULT</code>, this function changes the behavior of
781 * <li>When the reordering mode is set to <code>#UBIDI_REORDER_DEFAULT</code>,
785 * <code>#UBIDI_REORDER_NUMBERS_SPECIAL</code>,
787 * <code>ubidi_setPara</code> should approximate the algorithm used in
802 * <code>#UBIDI_REORDER_GROUP_NUMBERS_WITH_R</code>,
816 * <code>#UBIDI_REORDER_RUNS_ONLY</code>,
819 * <li>If the default text level of the source text (argument <code>paraLevel</code>
820 * in <code>ubidi_setPara</code>) is even, the source text will be handled as
844 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>, an "inverse Bidi" algorithm
848 * reordered sequence (the option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> can
849 * be used with function <code>ubidi_writeReordered</code> to this end. This
850 * mode is equivalent to calling <code>ubidi_setInverse()</code> with
851 * argument <code>isInverse</code> set to <code>true</code>.</li>
854 * <code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to Visual
856 * This mode is similar to mode <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>
862 * with mode <code>UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
864 * <code>#UBIDI_OPTION_INSERT_MARKS</code>, this mode generally
866 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> with option
867 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls to
868 * <code>ubidi_writeReordered</code>.</li>
871 * <code>#UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the Logical to Visual
879 * (i.e. those with a name starting with <code>UBIDI_REORDER_INVERSE</code>),
881 * <code>ubidi_getVisualRun()</code>, and the output text with
882 * <code>ubidi_writeReordered()</code>. The caller should keep in mind that in
884 * reordered output returned by <code>ubidi_getVisualRun()</code> or
885 * <code>ubidi_writeReordered()</code> are actually runs or character string
890 * <p>Note that option <code>#UBIDI_OUTPUT_REVERSE</code> of
891 * <code>ubidi_writeReordered</code> has no useful meaning and should not be
893 * "inverse Bidi" or with value <code>UBIDI_REORDER_RUNS_ONLY</code>.
895 * @param pBiDi is a <code>UBiDi</code> object.
912 * @param pBiDi is a <code>UBiDi</code> object.
923 * <code>UBiDiReorderingOption</code> values indicate which options are
931 * option value for <code>ubidi_setReorderingOptions</code>:
939 * option bit for <code>ubidi_setReorderingOptions</code>:
944 * <code>ubidi_setPara</code>.</p>
949 * <li><code>#UBIDI_REORDER_RUNS_ONLY</code></li>
950 * <li><code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code></li>
951 * <li><code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code></li>
952 * <li><code>#UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code></li>
956 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
957 * <code>ubidi_setInverse(true)</code>, it implies
958 * option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>
959 * in calls to function <code>ubidi_writeReordered()</code>.</p>
965 * (option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> set before calling
966 * <code>ubidi_setPara()</code> or option <code>#UBIDI_REMOVE_BIDI_CONTROLS</code>
967 * in <code>ubidi_writeReordered</code>), the result will be identical to the
971 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>. It inhibits option
972 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code> in calls to function
973 * <code>ubidi_writeReordered()</code> and it implies option
974 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls to function
975 * <code>ubidi_writeReordered()</code> if the reordering mode is
976 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.</p>
985 * option bit for <code>ubidi_setReorderingOptions</code>:
989 * <code>ubidi_setPara</code>.</p>
991 * <p>This option nullifies option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
992 * It inhibits option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls
993 * to function <code>ubidi_writeReordered()</code> and it implies option
994 * <code>#UBIDI_REMOVE_BIDI_CONTROLS</code> in calls to that function.</p>
1003 * option bit for <code>ubidi_setReorderingOptions</code>:
1007 * <code>ubidi_setPara</code>.</p>
1014 * <p>When this option bit is on, <code>ubidi_setPara()</code> may process
1016 * boundary. The caller should call <code>ubidi_getProcessedLength()</code>
1017 * immediately after calling <code>ubidi_setPara()</code> in order to
1020 * <code>ubidi_setPara</code>. The processed length may be less than
1032 * <code>UBIDI_OPTION_STREAMING</code>.</li></ul>
1036 * <p>When the <code>UBIDI_OPTION_STREAMING</code> option is used,
1037 * it is recommended to call <code>ubidi_orderParagraphsLTR()</code> with
1038 * argument <code>orderParagraphsLTR</code> set to <code>true</code> before
1039 * calling <code>ubidi_setPara</code> so that later paragraphs may be
1055 * @param pBiDi is a <code>UBiDi</code> object.
1058 * <code>#UBIDI_OPTION_DEFAULT</code>, <code>#UBIDI_OPTION_INSERT_MARKS</code>,
1059 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>, <code>#UBIDI_OPTION_STREAMING</code>.
1072 * @param pBiDi is a <code>UBiDi</code> object.
1114 * Note 1: if <code>ubidi_setContext</code> is called repeatedly without
1115 * calling <code>ubidi_setPara</code>, the earlier calls have no effect,
1117 * <code>ubidi_setPara</code>.<p>
1119 * Note 2: calling <code>ubidi_setContext(pBiDi, NULL, 0, NULL, 0, &errorCode)</code>
1121 * The next call to <code>ubidi_setPara()</code> will process no
1130 * &nbsp;&nbsp;prologue = "<code>abc DE</code>"<br>
1132 * &nbsp;&nbsp;main text = "<code>FGH xyz</code>"<br>
1134 * &nbsp;&nbsp;display without prologue = "<code>HGF xyz</code>"
1136 * &nbsp;&nbsp;display with prologue = "<code>abc HGFED xyz</code>"
1139 * @param pBiDi is a paragraph <code>UBiDi</code> object.
1143 * If there is no prologue to consider, then <code>proLength</code>
1146 * @param proLength is the length of the prologue; if <code>proLength==-1</code>
1148 * Otherwise proLength must be >= 0. If <code>proLength==0</code>, it means
1153 * If there is no epilogue to consider, then <code>epiLength</code>
1156 * @param epiLength is the length of the epilogue; if <code>epiLength==-1</code>
1158 * Otherwise epiLength must be >= 0. If <code>epiLength==0</code>, it means
1161 * @param pErrorCode must be a valid pointer to an error code value.
1201 * @param pBiDi A <code>UBiDi</code> object allocated with <code>ubidi_open()</code>
1203 * especially the resolved levels for all the characters in <code>text</code>.
1207 * with <code>ubidi_getText()</code>.<br>
1208 * <strong>Note:</strong> the text must be (at least) <code>length</code> long.
1210 * @param length is the length of the text; if <code>length==-1</code> then
1216 * then <code>paraLevel</code> can be set to
1217 * either <code>#UBIDI_DEFAULT_LTR</code>
1218 * or <code>#UBIDI_DEFAULT_RTL</code>; if the text contains multiple
1222 * Any other value between 0 and <code>#UBIDI_MAX_EXPLICIT_LEVEL</code>
1229 * <code>#UBIDI_LEVEL_OVERRIDE</code> bit set.<br><br>
1231 * <code>paraLevel<=embeddingLevels[]<=UBIDI_MAX_EXPLICIT_LEVEL</code>,
1234 * this only works reliably if <code>#UBIDI_LEVEL_OVERRIDE</code>
1239 * will be stored in the <code>UBiDi</code> object;
1240 * the <code>embeddingLevels</code> array must not be
1241 * deallocated before the <code>UBiDi</code> structure is destroyed or reused,
1242 * and the <code>embeddingLevels</code>
1244 * However, the <code>ubidi_setPara()</code> and
1245 * <code>ubidi_setLine()</code> functions may modify some or all of the levels.<br><br>
1246 * After the <code>UBiDi</code> object is reused or destroyed, the caller
1247 * must take care of the deallocation of the <code>embeddingLevels</code> array.<br><br>
1248 * <strong>Note:</strong> the <code>embeddingLevels</code> array must be
1249 * at least <code>length</code> long.
1250 * This pointer can be <code>NULL</code> if this
1253 * @param pErrorCode must be a valid pointer to an error code value.
1264 * <code>ubidi_setLine()</code> sets a <code>UBiDi</code> to
1267 * specified by referring to a <code>UBiDi</code> object representing
1270 * In the new line object, the indexes will range from 0 to <code>limit-start-1</code>.<p>
1272 * This is used after calling <code>ubidi_setPara()</code>
1278 * a <code>UBiDi</code> object that represents a line.<p>
1280 * <strong>Important: </strong><code>pLineBiDi</code> shares data with
1281 * <code>pParaBiDi</code>.
1282 * You must destroy or reuse <code>pLineBiDi</code> before <code>pParaBiDi</code>.
1283 * In other words, you must destroy or reuse the <code>UBiDi</code> object for a line
1286 * The text pointer that was stored in <code>pParaBiDi</code> is also copied,
1287 * and <code>start</code> is added to it so that it points to the beginning of the
1297 * It must be <code>0<=start<limit<=</code>containing paragraph limit.
1299 * will terminate with error code U_ILLEGAL_ARGUMENT_ERROR.
1303 * @param pErrorCode must be a valid pointer to an error code value.
1320 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1322 * @return a value of <code>UBIDI_LTR</code>, <code>UBIDI_RTL</code>
1323 * or <code>UBIDI_MIXED</code>
1327 * Note - The value <code>UBIDI_NEUTRAL</code> is never returned from this method.
1342 * <code>UBIDI_LTR</code> is returned. If the first such character has
1343 * type R or AL, <code>UBIDI_RTL</code> is returned. If the string does
1345 * <code>UBIDI_NEUTRAL</code> is returned.
1355 * if <code>length==-1</code> then the text
1358 * @return <code>UBIDI_LTR</code>, <code>UBIDI_RTL</code>,
1359 * <code>UBIDI_NEUTRAL</code>
1372 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1388 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1401 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1421 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1437 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1440 * range <code>[0..ubidi_getProcessedLength(pBiDi)-1]</code>.
1444 * This pointer can be <code>NULL</code> if this
1450 * <code>charIndex</code>.
1451 * This pointer can be <code>NULL</code> if this
1455 * This pointer can be <code>NULL</code> if this
1458 * @param pErrorCode must be a valid pointer to an error code value.
1477 * @param pBiDi is the paragraph <code>UBiDi</code> object.
1480 * range <code>[0..ubidi_countParagraphs(pBiDi)-1]</code>.
1484 * This pointer can be <code>NULL</code> if this
1488 * This pointer can be <code>NULL</code> if this
1492 * This pointer can be <code>NULL</code> if this
1495 * @param pErrorCode must be a valid pointer to an error code value.
1509 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1530 * circumstances, unlike <code>ubidi_getLevelAt()</code>.
1532 * @param pBiDi is the paragraph or line <code>UBiDi</code> object, whose
1535 * @param pErrorCode must be a valid pointer to an error code value.
1538 * or <code>NULL</code> if an error occurs.
1555 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1562 * <code>logicalPosition</code>.
1563 * This pointer can be <code>NULL</code> if this
1567 * This pointer can be <code>NULL</code> if this
1582 * <code>UBiDi</code> object, after <code>ubidi_setPara()</code>
1584 * <code>ubidi_countRuns()</code> may have to allocate memory,
1587 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1589 * @param pErrorCode must be a valid pointer to an error code value.
1605 * <code>ubidi_countRuns()</code> should be called
1608 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1611 * range <code>[0..ubidi_countRuns(pBiDi)-1]</code>.
1614 * The pointer may be <code>NULL</code> if this index is not needed.
1617 * The pointer may be <code>NULL</code> if this is not needed.
1620 * <code>UBIDI_LTR==0</code> or <code>UBIDI_RTL==1</code>,
1621 * never <code>UBIDI_MIXED</code>,
1622 * never <code>UBIDI_NEUTRAL</code>.
1628 * \code
1646 * Note that in right-to-left runs, code like this places
1650 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1651 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option, can be considered in order
1664 * <code>UBiDi</code> object, then calling
1665 * <code>ubidi_getLogicalMap()</code> is more efficient.<p>
1667 * The value returned may be <code>#UBIDI_MAP_NOWHERE</code> if there is no
1669 * removed from output by the option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>.
1672 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1673 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1674 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the visual position returned may not
1676 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1681 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1682 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option can be considered instead
1685 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1689 * @param pErrorCode must be a valid pointer to an error code value.
1706 * <code>UBiDi</code> object, then calling
1707 * <code>ubidi_getVisualMap()</code> is more efficient.<p>
1709 * The value returned may be <code>#UBIDI_MAP_NOWHERE</code> if there is no
1711 * inserted in the output by option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
1713 * This is the inverse function to <code>ubidi_getVisualIndex()</code>.
1716 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1717 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1718 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the logical position returned may not
1720 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1722 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1726 * @param pErrorCode must be a valid pointer to an error code value.
1744 * Some values in the map may be <code>#UBIDI_MAP_NOWHERE</code> if the
1746 * output by the option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>.
1749 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1750 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1751 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the visual positions returned may not
1753 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1758 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1759 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option can be considered instead
1762 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1764 * @param indexMap is a pointer to an array of <code>ubidi_getProcessedLength()</code>
1766 * If option <code>#UBIDI_OPTION_INSERT_MARKS</code> is set, the number
1767 * of elements allocated in <code>indexMap</code> must be no less than
1768 * <code>ubidi_getResultLength()</code>.
1770 * The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
1772 * @param pErrorCode must be a valid pointer to an error code value.
1789 * Some values in the map may be <code>#UBIDI_MAP_NOWHERE</code> if the
1791 * by the option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
1794 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1795 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1796 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the logical positions returned may not
1798 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1800 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1802 * @param indexMap is a pointer to an array of <code>ubidi_getResultLength()</code>
1804 * If option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> is set, the number
1805 * of elements allocated in <code>indexMap</code> must be no less than
1806 * <code>ubidi_getProcessedLength()</code>.
1808 * The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
1810 * @param pErrorCode must be a valid pointer to an error code value.
1827 * This is equivalent to using <code>ubidi_getLogicalMap()</code> on a
1828 * <code>UBiDi</code> object.
1830 * @param levels is an array with <code>length</code> levels that have been determined by
1835 * It must be <code>length>0</code>.
1837 * @param indexMap is a pointer to an array of <code>length</code>
1840 * The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
1852 * This is equivalent to using <code>ubidi_getVisualMap()</code> on a
1853 * <code>UBiDi</code> object.
1855 * @param levels is an array with <code>length</code> levels that have been determined by
1860 * It must be <code>length>0</code>.
1862 * @param indexMap is a pointer to an array of <code>length</code>
1865 * The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
1878 * @param srcMap is an array with <code>length</code> elements
1880 * <code>length</code> elements to a destination array.
1883 * the special value <code>UBIDI_MAP_NOWHERE</code>.
1884 * All elements must be >=0 or equal to <code>UBIDI_MAP_NOWHERE</code>.
1885 * Some elements may have a value >= <code>length</code>, if the
1888 * same value except <code>UBIDI_MAP_NOWHERE</code>).
1891 * value in <code>srcMap</code>.
1892 * <code>destMap</code> will be filled with the inverse mapping.
1893 * If element with index i in <code>srcMap</code> has a value k different
1894 * from <code>UBIDI_MAP_NOWHERE</code>, this means that element i of
1899 * inverse map will have a value equal to <code>UBIDI_MAP_NOWHERE</code>.
1962 * <p>This has the same effect as calling <code>ubidi_writeReordered()</code>
1964 * <code>ubidi_writeReverse()</code> without mirroring.
1976 * <code>ubidi_setPara()</code>. This length may be different from the length
1977 * of the source text if option <code>#UBIDI_OPTION_STREAMING</code>
1982 * except for <code>ubidi_setPara</code> (which receives unprocessed source
1983 * text) and <code>ubidi_getLength</code> (which returns the original length
1988 * <li>maximum value of the <code>limit</code> argument of
1989 * <code>ubidi_setLine</code></li>
1990 * <li>maximum value of the <code>charIndex</code> argument of
1991 * <code>ubidi_getParagraph</code></li>
1992 * <li>maximum value of the <code>charIndex</code> argument of
1993 * <code>ubidi_getLevelAt</code></li>
1994 * <li>number of elements in the array returned by <code>ubidi_getLevels</code></li>
1995 * <li>maximum value of the <code>logicalStart</code> argument of
1996 * <code>ubidi_getLogicalRun</code></li>
1997 * <li>maximum value of the <code>logicalIndex</code> argument of
1998 * <code>ubidi_getVisualIndex</code></li>
1999 * <li>number of elements filled in the <code>*indexMap</code> argument of
2000 * <code>ubidi_getLogicalMap</code></li>
2001 * <li>length of text processed by <code>ubidi_writeReordered</code></li>
2004 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2007 * the last call to <code>ubidi_setPara</code>.
2019 * <code>ubidi_setPara()</code>. This length may be different from the length
2020 * of the source text if option <code>#UBIDI_OPTION_INSERT_MARKS</code>
2021 * or option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> has been set.
2025 * <li>maximum value of the <code>visualIndex</code> argument of
2026 * <code>ubidi_getLogicalIndex</code></li>
2027 * <li>number of elements of the <code>*indexMap</code> argument of
2028 * <code>ubidi_getVisualMap</code></li>
2032 * <code>ubidi_writeReordered</code>, or if option
2033 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> has been set.
2035 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2038 * the last call to <code>ubidi_setPara</code>.
2053 * Value returned by <code>UBiDiClassCallback</code> callbacks when
2054 * there is no need to override the standard Bidi class for a given code point.
2067 * <p>Usually, the function pointer will be propagated to a <code>UBiDi</code>
2068 * object by calling the <code>ubidi_setClassCallback()</code> function;
2074 * @param c is the code point to get a Bidi class for.
2076 * @return The directional property / Bidi class for the given code point
2077 * <code>c</code> if the default class has been overridden, or
2078 * <code>u_getIntPropertyMaxValue(UCHAR_BIDI_CLASS)+1</code>
2079 * if the standard Bidi class value for <code>c</code> is to be used.
2090 * Retrieve the Bidi class for a given code point.
2091 * <p>If a <code>#UBiDiClassCallback</code> callback is defined and returns a
2092 * value other than <code>u_getIntPropertyMaxValue(UCHAR_BIDI_CLASS)+1</code>,
2095 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2097 * @param c is the code point whose Bidi class must be retrieved.
2099 * @return The Bidi class for character <code>c</code> based
2100 * on the given <code>pBiDi</code> instance.
2119 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2131 * @param pErrorCode must be a valid pointer to an error code value.
2146 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2161 * Take a <code>UBiDi</code> object containing the reordering
2163 * <code>ubidi_setPara()</code> or for a line of text set by
2164 * <code>ubidi_setLine()</code> and write a reordered string to the
2168 * code units and (optionally) combining characters.
2175 * characters; see the description of the <code>destSize</code>
2176 * and <code>options</code> parameters and of the option bit flags.
2178 * @param pBiDi A pointer to a <code>UBiDi</code> object that
2179 * is set by <code>ubidi_setPara()</code> or
2180 * <code>ubidi_setLine()</code> and contains the reordering
2185 * since the <code>ubidi_setPara()</code> call.
2188 * The source text and <code>dest[destSize]</code>
2191 * @param destSize The size of the <code>dest</code> buffer,
2193 * If the <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>
2196 * <code>ubidi_getLength(pBiDi)+2*ubidi_countRuns(pBiDi)</code>.
2197 * If the <code>UBIDI_REMOVE_BIDI_CONTROLS</code> option
2199 * <code>ubidi_getLength(pBiDi)</code>.
2201 * will be exactly <code>ubidi_getProcessedLength(pBiDi)</code>.
2205 * The options include mirroring the characters on a code
2212 * <code>#UBIDI_DO_MIRRORING</code>,
2213 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
2214 * <code>#UBIDI_KEEP_BASE_COMBINING</code>,
2215 * <code>#UBIDI_OUTPUT_REVERSE</code>,
2216 * <code>#UBIDI_REMOVE_BIDI_CONTROLS</code>
2218 * @param pErrorCode must be a valid pointer to an error code value.
2237 * code units and (optionally) combining characters.
2247 * of <code>ubidi_writeReordered()</code>. For detailed descriptions
2250 * will never exceed <code>srcLength</code>.
2259 * <code>src[srcLength]</code> and <code>dest[destSize]</code>
2262 * @param destSize The size of the <code>dest</code> buffer,
2264 * If the <code>UBIDI_REMOVE_BIDI_CONTROLS</code> option
2266 * <code>srcLength</code>.
2268 * will be exactly <code>srcLength</code>.
2272 * See the <code>options</code> parameter in <code>ubidi_writeReordered()</code>.
2274 * @param pErrorCode must be a valid pointer to an error code value.