Home | History | Annotate | Download | only in unicode

Lines Matching full:code

41  * In functions with an error code parameter,
42 * the <code>pErrorCode</code> pointer must be valid
59 * <h4> Sample code for the ICU Bidi API </h4>
63 * This is (hypothetical) sample code that illustrates
65 * Rendering code depends highly on the graphics system,
66 * therefore this sample code must make a lot of assumptions,
74 * characters (code units) in logical order.</li>
77 * and therefore its implementation omitted from this sample code.</li>
81 * \code
297 * <code>paraLevel</code> and <code>embeddingLevels</code>
298 * arguments of <code>ubidi_setPara()</code>; there:
300 * <li>bit&nbsp;7 of an <code>embeddingLevels[]</code>
304 * <li><code>paraLevel</code> can be set to the
305 * pseudo-level values <code>UBIDI_DEFAULT_LTR</code>
306 * and <code>UBIDI_DEFAULT_RTL</code>.</li>
312 * <code>UBIDI_DEFAULT_XXX</code> can be used to specify
314 * when the <code>ubidi_setPara()</code> function
318 * Note that the value for <code>UBIDI_DEFAULT_LTR</code> is even
319 * and the one for <code>UBIDI_DEFAULT_RTL</code> is odd,
340 * <code>UBIDI_REORDER_INVERSE_LIKE_DIRECT</code> or
341 * <code>UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
348 * If reordering option <code>UBIDI_OPTION_INSERT_MARKS</code> is set, an RLM may
366 * <code>UBIDI_REORDER_INVERSE_LIKE_DIRECT</code> or
367 * <code>UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
375 * If reordering option <code>UBIDI_OPTION_INSERT_MARKS</code> is set, an RLM may
387 * (The maximum resolved level can be up to <code>UBIDI_MAX_EXPLICIT_LEVEL+1</code>).
402 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> is specified. This can also happen
404 * by option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
414 * <code>UBiDiDirection</code> values indicate the text direction.
420 * <li>As return value for <code>ubidi_getDirection()</code>, it means
423 * <li> As return value for <code>ubidi_getBaseDirection()</code>, it
432 * <li>As return value for <code>ubidi_getDirection()</code>, it means
435 * <li> As return value for <code>ubidi_getBaseDirection()</code>, it
443 * <p>As return value for <code>ubidi_getDirection()</code>, it means
450 * <p>As return value for <code>ubidi_getBaseDirection()</code>, it means
462 * Forward declaration of the <code>UBiDi</code> structure for the declaration of
477 * Allocate a <code>UBiDi</code> structure.
480 * by <code>ubidi_setPara()</code>
482 * <code>ubidi_setLine()</code>.<p>
484 * by calling <code>ubidi_close()</code>.<p>
485 * <code>ubidi_setPara()</code> and <code>ubidi_setLine()</code> will allocate
488 * @return An empty <code>UBiDi</code> object.
495 * Allocate a <code>UBiDi</code> structure with preallocated memory
497 * This function provides a <code>UBiDi</code> object like <code>ubidi_open()</code>
504 * <code>maxRunCount</code> cannot be reasonably predetermined and should not
505 * be set to <code>maxLength</code> (the only failproof value) to avoid
506 * wasting memory, then <code>maxRunCount</code> could be set to 0 here
508 * on demand, just like with <code>ubidi_open()</code>.
521 * 1 and <code>maxLength</code>. It is typically small.
523 * @param pErrorCode must be a valid pointer to an error code value.
525 * @return An empty <code>UBiDi</code> object with preallocated memory.
532 * <code>ubidi_close()</code> must be called to free the memory
536 * A parent <code>UBiDi</code> object must not be destroyed or reused if
538 * If a <code>UBiDi</code> object has become the <i>child</i>
540 * <code>ubidi_setLine()</code>, then the child object must
542 * <code>ubidi_setPara()</code> or <code>ubidi_setLine()</code>)
545 * @param pBiDi is a <code>UBiDi</code> object.
576 * must be called before <code>ubidi_setPara()</code>.
589 * <p>With <code>isInverse</code> set to <code>TRUE</code>,
596 * <p>Output runs should be retrieved using <code>ubidi_getVisualRun()</code>.
598 * <code>ubidi_getVisualRun()</code> gets the reordered runs, these are actually
601 * <p>Calling this function with argument <code>isInverse</code> set to
602 * <code>TRUE</code> is equivalent to calling
603 * <code>ubidi_setReorderingMode</code> with argument
604 * <code>reorderingMode</code>
605 * set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
606 * Calling this function with argument <code>isInverse</code> set to
607 * <code>FALSE</code> is equivalent to calling
608 * <code>ubidi_setReorderingMode</code> with argument
609 * <code>reorderingMode</code>
610 * set to <code>#UBIDI_REORDER_DEFAULT</code>.
612 * @param pBiDi is a <code>UBiDi</code> object.
627 * <code>ubidi_setReorderingMode</code> will return <code>TRUE</code> if the
628 * reordering mode was set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>,
629 * <code>FALSE</code> for all other values.</p>
631 * @param pBiDi is a <code>UBiDi</code> object.
646 * This function must be called before <code>ubidi_setPara()</code>.
655 * @param pBiDi is a <code>UBiDi</code> object.
670 * @param pBiDi is a <code>UBiDi</code> object.
681 * <code>UBiDiReorderingMode</code> values indicate which variant of the Bidi
703 * <code>#UBIDI_OPTION_INSERT_MARKS</code>, some Bidi controls in the source
709 * (same algorithm as selected by <code>ubidi_setInverse(TRUE)</code>.
718 * <code>UBIDI_REORDER_NUMBERS_SPECIAL</code> Bidi algorithm.
730 * This function must be called before <code>ubidi_setPara()</code>, and stays
739 * <code>#UBIDI_REORDER_DEFAULT</code>, this function changes the behavior of
754 * <li>When the reordering mode is set to <code>#UBIDI_REORDER_DEFAULT</code>,
758 * <code>#UBIDI_REORDER_NUMBERS_SPECIAL</code>,
760 * <code>ubidi_setPara</code> should approximate the algorithm used in
775 * <code>#UBIDI_REORDER_GROUP_NUMBERS_WITH_R</code>,
789 * <code>#UBIDI_REORDER_RUNS_ONLY</code>,
792 * <li>If the default text level of the source text (argument <code>paraLevel</code>
793 * in <code>ubidi_setPara</code>) is even, the source text will be handled as
817 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>, an "inverse Bidi" algorithm
821 * reordered sequence (the option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> can
822 * be used with function <code>ubidi_writeReordered</code> to this end. This
823 * mode is equivalent to calling <code>ubidi_setInverse()</code> with
824 * argument <code>isInverse</code> set to <code>TRUE</code>.</li>
827 * <code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to Visual
829 * This mode is similar to mode <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>
835 * with mode <code>UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
837 * <code>#UBIDI_OPTION_INSERT_MARKS</code>, this mode generally
839 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> with option
840 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls to
841 * <code>ubidi_writeReordered</code>.</li>
844 * <code>#UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the Logical to Visual
852 * (i.e. those with a name starting with <code>UBIDI_REORDER_INVERSE</code>),
854 * <code>ubidi_getVisualRun()</code>, and the output text with
855 * <code>ubidi_writeReordered()</code>. The caller should keep in mind that in
857 * reordered output returned by <code>ubidi_getVisualRun()</code> or
858 * <code>ubidi_writeReordered()</code> are actually runs or character string
863 * <p>Note that option <code>#UBIDI_OUTPUT_REVERSE</code> of
864 * <code>ubidi_writeReordered</code> has no useful meaning and should not be
866 * "inverse Bidi" or with value <code>UBIDI_REORDER_RUNS_ONLY</code>.
868 * @param pBiDi is a <code>UBiDi</code> object.
883 * @param pBiDi is a <code>UBiDi</code> object.
892 * <code>UBiDiReorderingOption</code> values indicate which options are
900 * option value for <code>ubidi_setReorderingOptions</code>:
908 * option bit for <code>ubidi_setReorderingOptions</code>:
913 * <code>ubidi_setPara</code>.</p>
918 * <li><code>#UBIDI_REORDER_RUNS_ONLY</code></li>
919 * <li><code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code></li>
920 * <li><code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code></li>
921 * <li><code>#UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code></li>
925 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
926 * <code>ubidi_setInverse(TRUE)</code>, it implies
927 * option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>
928 * in calls to function <code>ubidi_writeReordered()</code>.</p>
934 * (option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> set before calling
935 * <code>ubidi_setPara()</code> or option <code>#UBIDI_REMOVE_BIDI_CONTROLS</code>
936 * in <code>ubidi_writeReordered</code>), the result will be identical to the
940 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>. It inhibits option
941 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code> in calls to function
942 * <code>ubidi_writeReordered()</code> and it implies option
943 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls to function
944 * <code>ubidi_writeReordered()</code> if the reordering mode is
945 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.</p>
954 * option bit for <code>ubidi_setReorderingOptions</code>:
958 * <code>ubidi_setPara</code>.</p>
960 * <p>This option nullifies option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
961 * It inhibits option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls
962 * to function <code>ubidi_writeReordered()</code> and it implies option
963 * <code>#UBIDI_REMOVE_BIDI_CONTROLS</code> in calls to that function.</p>
972 * option bit for <code>ubidi_setReorderingOptions</code>:
976 * <code>ubidi_setPara</code>.</p>
983 * <p>When this option bit is on, <code>ubidi_setPara()</code> may process
985 * boundary. The caller should call <code>ubidi_getProcessedLength()</code>
986 * immediately after calling <code>ubidi_setPara()</code> in order to
989 * <code>ubidi_setPara</code>. The processed length may be less than
1001 * <code>UBIDI_OPTION_STREAMING</code>.</li></ul>
1005 * <p>When the <code>UBIDI_OPTION_STREAMING</code> option is used,
1006 * it is recommended to call <code>ubidi_orderParagraphsLTR()</code> with
1007 * argument <code>orderParagraphsLTR</code> set to <code>TRUE</code> before
1008 * calling <code>ubidi_setPara</code> so that later paragraphs may be
1024 * @param pBiDi is a <code>UBiDi</code> object.
1027 * <code>#UBIDI_OPTION_DEFAULT</code>, <code>#UBIDI_OPTION_INSERT_MARKS</code>,
1028 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>, <code>#UBIDI_OPTION_STREAMING</code>.
1039 * @param pBiDi is a <code>UBiDi</code> object.
1079 * Note 1: if <code>ubidi_setContext</code> is called repeatedly without
1080 * calling <code>ubidi_setPara</code>, the earlier calls have no effect,
1082 * <code>ubidi_setPara</code>.<p>
1084 * Note 2: calling <code>ubidi_setContext(pBiDi, NULL, 0, NULL, 0, &errorCode)</code>
1086 * The next call to <code>ubidi_setPara()</code> will process no
1095 * &nbsp;&nbsp;prologue = "<code>abc DE</code>"<br>
1097 * &nbsp;&nbsp;main text = "<code>FGH xyz</code>"<br>
1099 * &nbsp;&nbsp;display without prologue = "<code>HGF xyz</code>"
1101 * &nbsp;&nbsp;display with prologue = "<code>abc HGFED xyz</code>"
1104 * @param pBiDi is a paragraph <code>UBiDi</code> object.
1108 * If there is no prologue to consider, then <code>proLength</code>
1111 * @param proLength is the length of the prologue; if <code>proLength==-1</code>
1113 * Otherwise proLength must be >= 0. If <code>proLength==0</code>, it means
1118 * If there is no epilogue to consider, then <code>epiLength</code>
1121 * @param epiLength is the length of the epilogue; if <code>epiLength==-1</code>
1123 * Otherwise epiLength must be >= 0. If <code>epiLength==0</code>, it means
1126 * @param pErrorCode must be a valid pointer to an error code value.
1164 * @param pBiDi A <code>UBiDi</code> object allocated with <codecode>
1166 * especially the resolved levels for all the characters in <code>text</code>.
1170 * with <code>ubidi_getText()</code>.<br>
1171 * <strong>Note:</strong> the text must be (at least) <code>length</code> long.
1173 * @param length is the length of the text; if <code>length==-1</code> then
1179 * then <code>paraLevel</code> can be set to
1180 * either <code>#UBIDI_DEFAULT_LTR</code>
1181 * or <code>#UBIDI_DEFAULT_RTL</code>; if the text contains multiple
1185 * Any other value between 0 and <code>#UBIDI_MAX_EXPLICIT_LEVEL</code>
1192 * <code>#UBIDI_LEVEL_OVERRIDE</code> bit set.<br><br>
1194 * <code>paraLevel<=embeddingLevels[]<=UBIDI_MAX_EXPLICIT_LEVEL</code>,
1196 * separator even if <code>paraLevel>0</code> when multiple paragraphs
1197 * are submitted in the same call to <code>ubidi_setPara()</code>.<br><br>
1199 * will be stored in the <code>UBiDi</code> object;
1200 * the <code>embeddingLevels</code> array must not be
1201 * deallocated before the <code>UBiDi</code> structure is destroyed or reused,
1202 * and the <code>embeddingLevels</code>
1204 * However, the <code>ubidi_setPara()</code> and
1205 * <code>ubidi_setLine()</code> functions may modify some or all of the levels.<br><br>
1206 * After the <code>UBiDi</code> object is reused or destroyed, the caller
1207 * must take care of the deallocation of the <code>embeddingLevels</code> array.<br><br>
1208 * <strong>Note:</strong> the <code>embeddingLevels</code> array must be
1209 * at least <code>length</code> long.
1210 * This pointer can be <code>NULL</code> if this
1213 * @param pErrorCode must be a valid pointer to an error code value.
1222 * <code>ubidi_setLine()</code> sets a <code>UBiDi</code> to
1225 * specified by referring to a <code>UBiDi</code> object representing
1228 * In the new line object, the indexes will range from 0 to <code>limit-start-1</code>.<p>
1230 * This is used after calling <code>ubidi_setPara()</code>
1236 * a <code>UBiDi</code> object that represents a line.<p>
1238 * <strong>Important: </strong><code>pLineBiDi</code> shares data with
1239 * <code>pParaBiDi</code>.
1240 * You must destroy or reuse <code>pLineBiDi</code> before <code>pParaBiDi</code>.
1241 * In other words, you must destroy or reuse the <code>UBiDi</code> object for a line
1244 * The text pointer that was stored in <code>pParaBiDi</code> is also copied,
1245 * and <code>start</code> is added to it so that it points to the beginning of the
1255 * It must be <code>0<=start<limit<=</code>containing paragraph limit.
1257 * will terminate with error code U_ILLEGAL_ARGUMENT_ERROR.
1261 * @param pErrorCode must be a valid pointer to an error code value.
1276 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1278 * @return a value of <code>UBIDI_LTR</code>, <code>UBIDI_RTL</code>
1279 * or <code>UBIDI_MIXED</code>
1283 * Note - The value <code>UBIDI_NEUTRAL</code> is never returned from this method.
1296 * <code>UBIDI_LTR</code> is returned. If the first such character has
1297 * type R or AL, <code>UBIDI_RTL</code> is returned. If the string does
1299 * <code>UBIDI_NEUTRAL</code> is returned.
1309 * if <code>length==-1</code> then the text
1312 * @return <code>UBIDI_LTR</code>, <code>UBIDI_RTL</code>,
1313 * <code>UBIDI_NEUTRAL</code>
1324 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1338 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1349 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1367 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1381 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1384 * range <code>[0..ubidi_getProcessedLength(pBiDi)-1]</code>.
1388 * This pointer can be <code>NULL</code> if this
1394 * <code>charIndex</code>.
1395 * This pointer can be <code>NULL</code> if this
1399 * This pointer can be <code>NULL</code> if this
1402 * @param pErrorCode must be a valid pointer to an error code value.
1419 * @param pBiDi is the paragraph <code>UBiDi</code> object.
1422 * range <code>[0..ubidi_countParagraphs(pBiDi)-1]</code>.
1426 * This pointer can be <code>NULL</code> if this
1430 * This pointer can be <code>NULL</code> if this
1434 * This pointer can be <code>NULL</code> if this
1437 * @param pErrorCode must be a valid pointer to an error code value.
1449 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1468 * circumstances, unlike <code>ubidi_getLevelAt()</code>.
1470 * @param pBiDi is the paragraph or line <code>UBiDi</code> object, whose
1473 * @param pErrorCode must be a valid pointer to an error code value.
1476 * or <code>NULL</code> if an error occurs.
1491 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1498 * <code>logicalPosition</code>.
1499 * This pointer can be <code>NULL</code> if this
1503 * This pointer can be <code>NULL</code> if this
1516 * <code>UBiDi</code> object, after <code>ubidi_setPara()</code>
1518 * <code>ubidi_countRuns()</code> may have to allocate memory,
1521 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1523 * @param pErrorCode must be a valid pointer to an error code value.
1537 * <code>ubidi_countRuns()</code> should be called
1540 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1543 * range <code>[0..ubidi_countRuns(pBiDi)-1]</code>.
1546 * The pointer may be <code>NULL</code> if this index is not needed.
1549 * The pointer may be <code>NULL</code> if this is not needed.
1552 * <code>UBIDI_LTR==0</code> or <code>UBIDI_RTL==1</code>,
1553 * never <code>UBIDI_MIXED</code>,
1554 * never <code>UBIDI_NEUTRAL</code>.
1560 * \code
1578 * Note that in right-to-left runs, code like this places
1582 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1583 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option, can be considered in order
1594 * <code>UBiDi</code> object, then calling
1595 * <code>ubidi_getLogicalMap()</code> is more efficient.<p>
1597 * The value returned may be <code>#UBIDI_MAP_NOWHERE</code> if there is no
1599 * removed from output by the option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>.
1602 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1603 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1604 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the visual position returned may not
1606 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1611 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1612 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option can be considered instead
1615 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1619 * @param pErrorCode must be a valid pointer to an error code value.
1634 * <code>UBiDi</code> object, then calling
1635 * <code>ubidi_getVisualMap()</code> is more efficient.<p>
1637 * The value returned may be <code>#UBIDI_MAP_NOWHERE</code> if there is no
1639 * inserted in the output by option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
1641 * This is the inverse function to <code>ubidi_getVisualIndex()</code>.
1644 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1645 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1646 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the logical position returned may not
1648 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1650 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1654 * @param pErrorCode must be a valid pointer to an error code value.
1670 * Some values in the map may be <code>#UBIDI_MAP_NOWHERE</code> if the
1672 * output by the option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>.
1675 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1676 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1677 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the visual positions returned may not
1679 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1684 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1685 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option can be considered instead
1688 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1690 * @param indexMap is a pointer to an array of <code>ubidi_getProcessedLength()</code>
1692 * If option <code>#UBIDI_OPTION_INSERT_MARKS</code> is set, the number
1693 * of elements allocated in <code>indexMap</code> must be no less than
1694 * <code>ubidi_getResultLength()</code>.
1696 * The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
1698 * @param pErrorCode must be a valid pointer to an error code value.
1713 * Some values in the map may be <code>#UBIDI_MAP_NOWHERE</code> if the
1715 * by the option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
1718 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1719 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1720 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the logical positions returned may not
1722 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1724 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1726 * @param indexMap is a pointer to an array of <code>ubidi_getResultLength()</code>
1728 * If option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> is set, the number
1729 * of elements allocated in <code>indexMap</code> must be no less than
1730 * <code>ubidi_getProcessedLength()</code>.
1732 * The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
1734 * @param pErrorCode must be a valid pointer to an error code value.
1749 * This is equivalent to using <code>ubidi_getLogicalMap()</code> on a
1750 * <code>UBiDi</code> object.
1752 * @param levels is an array with <code>length</code> levels that have been determined by
1757 * It must be <code>length>0</code>.
1759 * @param indexMap is a pointer to an array of <code>length</code>
1762 * The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
1772 * This is equivalent to using <code>ubidi_getVisualMap()</code> on a
1773 * <code>UBiDi</code> object.
1775 * @param levels is an array with <code>length</code> levels that have been determined by
1780 * It must be <code>length>0</code>.
1782 * @param indexMap is a pointer to an array of <code>length</code>
1785 * The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
1796 * @param srcMap is an array with <code>length</code> elements
1798 * <code>length</code> elements to a destination array.
1801 * the special value <code>UBIDI_MAP_NOWHERE</code>.
1802 * All elements must be >=0 or equal to <code>UBIDI_MAP_NOWHERE</code>.
1803 * Some elements may have a value >= <code>length</code>, if the
1806 * same value except <code>UBIDI_MAP_NOWHERE</code>).
1809 * value in <code>srcMap</code>.
1810 * <code>destMap</code> will be filled with the inverse mapping.
1811 * If element with index i in <code>srcMap</code> has a value k different
1812 * from <code>UBIDI_MAP_NOWHERE</code>, this means that element i of
1817 * inverse map will have a value equal to <code>UBIDI_MAP_NOWHERE</code>.
1878 * <p>This has the same effect as calling <code>ubidi_writeReordered()</code>
1880 * <code>ubidi_writeReverse()</code> without mirroring.
1892 * <code>ubidi_setPara()</code>. This length may be different from the length
1893 * of the source text if option <code>#UBIDI_OPTION_STREAMING</code>
1898 * except for <code>ubidi_setPara</code> (which receives unprocessed source
1899 * text) and <code>ubidi_getLength</code> (which returns the original length
1904 * <li>maximum value of the <code>limit</code> argument of
1905 * <code>ubidi_setLine</code></li>
1906 * <li>maximum value of the <code>charIndex</code> argument of
1907 * <code>ubidi_getParagraph</code></li>
1908 * <li>maximum value of the <code>charIndex</code> argument of
1909 * <code>ubidi_getLevelAt</code></li>
1910 * <li>number of elements in the array returned by <code>ubidi_getLevels</code></li>
1911 * <li>maximum value of the <code>logicalStart</code> argument of
1912 * <code>ubidi_getLogicalRun</code></li>
1913 * <li>maximum value of the <code>logicalIndex</code> argument of
1914 * <code>ubidi_getVisualIndex</code></li>
1915 * <li>number of elements filled in the <code>*indexMap</code> argument of
1916 * <code>ubidi_getLogicalMap</code></li>
1917 * <li>length of text processed by <code>ubidi_writeReordered</code></li>
1920 * @param pBiDi is the paragraph <code>UBiDi</code> object.
1923 * the last call to <code>ubidi_setPara</code>.
1933 * <code>ubidi_setPara()</code>. This length may be different from the length
1934 * of the source text if option <code>#UBIDI_OPTION_INSERT_MARKS</code>
1935 * or option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> has been set.
1939 * <li>maximum value of the <code>visualIndex</code> argument of
1940 * <code>ubidi_getLogicalIndex</code></li>
1941 * <li>number of elements of the <code>*indexMap</code> argument of
1942 * <code>ubidi_getVisualMap</code></li>
1946 * <code>ubidi_writeReordered</code>, or if option
1947 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> has been set.
1949 * @param pBiDi is the paragraph <code>UBiDi</code> object.
1952 * the last call to <code>ubidi_setPara</code>.
1963 * value returned by <code>UBiDiClassCallback</code> callbacks when
1964 * there is no need to override the standard Bidi class for a given code point.
1973 * <p>Usually, the function pointer will be propagated to a <code>UBiDi</code>
1974 * object by calling the <code>ubidi_setClassCallback()</code> function;
1980 * @param c is the code point to get a Bidi class for.
1982 * @return The directional property / Bidi class for the given code point
1983 * <code>c</code> if the default class has been overridden, or
1984 * <code>#U_BIDI_CLASS_DEFAULT</code> if the standard Bidi class value
1985 * for <code>c</code> is to be used.
1996 * Retrieve the Bidi class for a given code point.
1997 * <p>If a <code>#UBiDiClassCallback</code> callback is defined and returns a
1998 * value other than <code>#U_BIDI_CLASS_DEFAULT</code>, that value is used;
2001 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2003 * @param c is the code point whose Bidi class must be retrieved.
2005 * @return The Bidi class for character <code>c</code> based
2006 * on the given <code>pBiDi</code> instance.
2023 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2035 * @param pErrorCode must be a valid pointer to an error code value.
2048 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2061 * Take a <code>UBiDi</code> object containing the reordering
2063 * <code>ubidi_setPara()</code> or for a line of text set by
2064 * <code>ubidi_setLine()</code> and write a reordered string to the
2068 * code units and (optionally) combining characters.
2075 * characters; see the description of the <code>destSize</code>
2076 * and <code>options</code> parameters and of the option bit flags.
2078 * @param pBiDi A pointer to a <code>UBiDi</code> object that
2079 * is set by <code>ubidi_setPara()</code> or
2080 * <code>ubidi_setLine()</code> and contains the reordering
2085 * since the <code>ubidi_setPara()</code> call.
2088 * The source text and <code>dest[destSize]</code>
2091 * @param destSize The size of the <code>dest</code> buffer,
2093 * If the <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>
2096 * <code>ubidi_getLength(pBiDi)+2*ubidi_countRuns(pBiDi)</code>.
2097 * If the <code>UBIDI_REMOVE_BIDI_CONTROLS</code> option
2099 * <code>ubidi_getLength(pBiDi)</code>.
2101 * will be exactly <code>ubidi_getProcessedLength(pBiDi)</code>.
2105 * The options include mirroring the characters on a code
2112 * <code>#UBIDI_DO_MIRRORING</code>,
2113 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
2114 * <code>#UBIDI_KEEP_BASE_COMBINING</code>,
2115 * <code>#UBIDI_OUTPUT_REVERSE</code>,
2116 * <code>#UBIDI_REMOVE_BIDI_CONTROLS</code>
2118 * @param pErrorCode must be a valid pointer to an error code value.
2135 * code units and (optionally) combining characters.
2145 * of <code>ubidi_writeReordered()</code>. For detailed descriptions
2148 * will never exceed <code>srcLength</code>.
2157 * <code>src[srcLength]</code> and <code>dest[destSize]</code>
2160 * @param destSize The size of the <code>dest</code> buffer,
2162 * If the <code>UBIDI_REMOVE_BIDI_CONTROLS</code> option
2164 * <code>srcLength</code>.
2166 * will be exactly <code>srcLength</code>.
2170 * See the <code>options</code> parameter in <code>ubidi_writeReordered()</code>.
2172 * @param pErrorCode must be a valid pointer to an error code value.