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 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.
506 * Allocate a <code>UBiDi</code> structure with preallocated memory
508 * This function provides a <code>UBiDi</code> object like <code>ubidi_open()</code>
515 * <code>maxRunCount</code> cannot be reasonably predetermined and should not
516 * be set to <code>maxLength</code> (the only failproof value) to avoid
517 * wasting memory, then <code>maxRunCount</code> could be set to 0 here
519 * on demand, just like with <code>ubidi_open()</code>.
532 * 1 and <code>maxLength</code>. It is typically small.
534 * @param pErrorCode must be a valid pointer to an error code value.
536 * @return An empty <code>UBiDi</code> object with preallocated memory.
543 * <code>ubidi_close()</code> must be called to free the memory
547 * A parent <code>UBiDi</code> object must not be destroyed or reused if
549 * If a <code>UBiDi</code> object has become the <i>child</i>
551 * <code>ubidi_setLine()</code>, then the child object must
553 * <code>ubidi_setPara()</code> or <code>ubidi_setLine()</code>)
556 * @param pBiDi is a <code>UBiDi</code> object.
587 * must be called before <code>ubidi_setPara()</code>.
600 * <p>With <code>isInverse</code> set to <code>true</code>,
607 * <p>Output runs should be retrieved using <code>ubidi_getVisualRun()</code>.
609 * <code>ubidi_getVisualRun()</code> gets the reordered runs, these are actually
612 * <p>Calling this function with argument <code>isInverse</code> set to
613 * <code>true</code> is equivalent to calling
614 * <code>ubidi_setReorderingMode</code> with argument
615 * <code>reorderingMode</code>
616 * set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
617 * Calling this function with argument <code>isInverse</code> set to
618 * <code>false</code> is equivalent to calling
619 * <code>ubidi_setReorderingMode</code> with argument
620 * <code>reorderingMode</code>
621 * set to <code>#UBIDI_REORDER_DEFAULT</code>.
623 * @param pBiDi is a <code>UBiDi</code> object.
638 * <code>ubidi_setReorderingMode</code> will return <code>true</code> if the
639 * reordering mode was set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>,
640 * <code>false</code> for all other values.</p>
642 * @param pBiDi is a <code>UBiDi</code> object.
657 * This function must be called before <code>ubidi_setPara()</code>.
666 * @param pBiDi is a <code>UBiDi</code> object.
681 * @param pBiDi is a <code>UBiDi</code> object.
692 * <code>UBiDiReorderingMode</code> values indicate which variant of the Bidi
714 * <code>#UBIDI_OPTION_INSERT_MARKS</code>, some Bidi controls in the source
720 * (same algorithm as selected by <code>ubidi_setInverse(true)</code>.
729 * <code>UBIDI_REORDER_NUMBERS_SPECIAL</code> Bidi algorithm.
745 * This function must be called before <code>ubidi_setPara()</code>, and stays
754 * <code>#UBIDI_REORDER_DEFAULT</code>, this function changes the behavior of
769 * <li>When the reordering mode is set to <code>#UBIDI_REORDER_DEFAULT</code>,
773 * <code>#UBIDI_REORDER_NUMBERS_SPECIAL</code>,
775 * <code>ubidi_setPara</code> should approximate the algorithm used in
790 * <code>#UBIDI_REORDER_GROUP_NUMBERS_WITH_R</code>,
804 * <code>#UBIDI_REORDER_RUNS_ONLY</code>,
807 * <li>If the default text level of the source text (argument <code>paraLevel</code>
808 * in <code>ubidi_setPara</code>) is even, the source text will be handled as
832 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>, an "inverse Bidi" algorithm
836 * reordered sequence (the option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> can
837 * be used with function <code>ubidi_writeReordered</code> to this end. This
838 * mode is equivalent to calling <code>ubidi_setInverse()</code> with
839 * argument <code>isInverse</code> set to <code>true</code>.</li>
842 * <code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to Visual
844 * This mode is similar to mode <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>
850 * with mode <code>UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
852 * <code>#UBIDI_OPTION_INSERT_MARKS</code>, this mode generally
854 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> with option
855 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls to
856 * <code>ubidi_writeReordered</code>.</li>
859 * <code>#UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the Logical to Visual
867 * (i.e. those with a name starting with <code>UBIDI_REORDER_INVERSE</code>),
869 * <code>ubidi_getVisualRun()</code>, and the output text with
870 * <code>ubidi_writeReordered()</code>. The caller should keep in mind that in
872 * reordered output returned by <code>ubidi_getVisualRun()</code> or
873 * <code>ubidi_writeReordered()</code> are actually runs or character string
878 * <p>Note that option <code>#UBIDI_OUTPUT_REVERSE</code> of
879 * <code>ubidi_writeReordered</code> has no useful meaning and should not be
881 * "inverse Bidi" or with value <code>UBIDI_REORDER_RUNS_ONLY</code>.
883 * @param pBiDi is a <code>UBiDi</code> object.
898 * @param pBiDi is a <code>UBiDi</code> object.
907 * <code>UBiDiReorderingOption</code> values indicate which options are
915 * option value for <code>ubidi_setReorderingOptions</code>:
923 * option bit for <code>ubidi_setReorderingOptions</code>:
928 * <code>ubidi_setPara</code>.</p>
933 * <li><code>#UBIDI_REORDER_RUNS_ONLY</code></li>
934 * <li><code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code></li>
935 * <li><code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code></li>
936 * <li><code>#UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code></li>
940 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
941 * <code>ubidi_setInverse(true)</code>, it implies
942 * option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>
943 * in calls to function <code>ubidi_writeReordered()</code>.</p>
949 * (option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> set before calling
950 * <code>ubidi_setPara()</code> or option <code>#UBIDI_REMOVE_BIDI_CONTROLS</code>
951 * in <code>ubidi_writeReordered</code>), the result will be identical to the
955 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>. It inhibits option
956 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code> in calls to function
957 * <code>ubidi_writeReordered()</code> and it implies option
958 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls to function
959 * <code>ubidi_writeReordered()</code> if the reordering mode is
960 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.</p>
969 * option bit for <code>ubidi_setReorderingOptions</code>:
973 * <code>ubidi_setPara</code>.</p>
975 * <p>This option nullifies option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
976 * It inhibits option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> in calls
977 * to function <code>ubidi_writeReordered()</code> and it implies option
978 * <code>#UBIDI_REMOVE_BIDI_CONTROLS</code> in calls to that function.</p>
987 * option bit for <code>ubidi_setReorderingOptions</code>:
991 * <code>ubidi_setPara</code>.</p>
998 * <p>When this option bit is on, <code>ubidi_setPara()</code> may process
1000 * boundary. The caller should call <code>ubidi_getProcessedLength()</code>
1001 * immediately after calling <code>ubidi_setPara()</code> in order to
1004 * <code>ubidi_setPara</code>. The processed length may be less than
1016 * <code>UBIDI_OPTION_STREAMING</code>.</li></ul>
1020 * <p>When the <code>UBIDI_OPTION_STREAMING</code> option is used,
1021 * it is recommended to call <code>ubidi_orderParagraphsLTR()</code> with
1022 * argument <code>orderParagraphsLTR</code> set to <code>true</code> before
1023 * calling <code>ubidi_setPara</code> so that later paragraphs may be
1039 * @param pBiDi is a <code>UBiDi</code> object.
1042 * <code>#UBIDI_OPTION_DEFAULT</code>, <code>#UBIDI_OPTION_INSERT_MARKS</code>,
1043 * <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>, <code>#UBIDI_OPTION_STREAMING</code>.
1054 * @param pBiDi is a <code>UBiDi</code> object.
1094 * Note 1: if <code>ubidi_setContext</code> is called repeatedly without
1095 * calling <code>ubidi_setPara</code>, the earlier calls have no effect,
1097 * <code>ubidi_setPara</code>.<p>
1099 * Note 2: calling <code>ubidi_setContext(pBiDi, NULL, 0, NULL, 0, &errorCode)</code>
1101 * The next call to <code>ubidi_setPara()</code> will process no
1110 * prologue = "<code>abc DE</code>"<br>
1112 * main text = "<code>FGH xyz</code>"<br>
1114 * display without prologue = "<code>HGF xyz</code>"
1116 * display with prologue = "<code>abc HGFED xyz</code>"
1119 * @param pBiDi is a paragraph <code>UBiDi</code> object.
1123 * If there is no prologue to consider, then <code>proLength</code>
1126 * @param proLength is the length of the prologue; if <code>proLength==-1</code>
1128 * Otherwise proLength must be >= 0. If <code>proLength==0</code>, it means
1133 * If there is no epilogue to consider, then <code>epiLength</code>
1136 * @param epiLength is the length of the epilogue; if <code>epiLength==-1</code>
1138 * Otherwise epiLength must be >= 0. If <code>epiLength==0</code>, it means
1141 * @param pErrorCode must be a valid pointer to an error code value.
1179 * @param pBiDi A <code>UBiDi</code> object allocated with <code>ubidi_open()</code>
1181 * especially the resolved levels for all the characters in <code>text</code>.
1185 * with <code>ubidi_getText()</code>.<br>
1186 * <strong>Note:</strong> the text must be (at least) <code>length</code> long.
1188 * @param length is the length of the text; if <code>length==-1</code> then
1194 * then <code>paraLevel</code> can be set to
1195 * either <code>#UBIDI_DEFAULT_LTR</code>
1196 * or <code>#UBIDI_DEFAULT_RTL</code>; if the text contains multiple
1200 * Any other value between 0 and <code>#UBIDI_MAX_EXPLICIT_LEVEL</code>
1207 * <code>#UBIDI_LEVEL_OVERRIDE</code> bit set.<br><br>
1209 * <code>paraLevel<=embeddingLevels[]<=UBIDI_MAX_EXPLICIT_LEVEL</code>,
1212 * this only works reliably if <code>#UBIDI_LEVEL_OVERRIDE</code>
1217 * will be stored in the <code>UBiDi</code> object;
1218 * the <code>embeddingLevels</code> array must not be
1219 * deallocated before the <code>UBiDi</code> structure is destroyed or reused,
1220 * and the <code>embeddingLevels</code>
1222 * However, the <code>ubidi_setPara()</code> and
1223 * <code>ubidi_setLine()</code> functions may modify some or all of the levels.<br><br>
1224 * After the <code>UBiDi</code> object is reused or destroyed, the caller
1225 * must take care of the deallocation of the <code>embeddingLevels</code> array.<br><br>
1226 * <strong>Note:</strong> the <code>embeddingLevels</code> array must be
1227 * at least <code>length</code> long.
1228 * This pointer can be <code>NULL</code> if this
1231 * @param pErrorCode must be a valid pointer to an error code value.
1240 * <code>ubidi_setLine()</code> sets a <code>UBiDi</code> to
1243 * specified by referring to a <code>UBiDi</code> object representing
1246 * In the new line object, the indexes will range from 0 to <code>limit-start-1</code>.<p>
1248 * This is used after calling <code>ubidi_setPara()</code>
1254 * a <code>UBiDi</code> object that represents a line.<p>
1256 * <strong>Important: </strong><code>pLineBiDi</code> shares data with
1257 * <code>pParaBiDi</code>.
1258 * You must destroy or reuse <code>pLineBiDi</code> before <code>pParaBiDi</code>.
1259 * In other words, you must destroy or reuse the <code>UBiDi</code> object for a line
1262 * The text pointer that was stored in <code>pParaBiDi</code> is also copied,
1263 * and <code>start</code> is added to it so that it points to the beginning of the
1273 * It must be <code>0<=start<limit<=</code>containing paragraph limit.
1275 * will terminate with error code U_ILLEGAL_ARGUMENT_ERROR.
1279 * @param pErrorCode must be a valid pointer to an error code value.
1294 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1296 * @return a value of <code>UBIDI_LTR</code>, <code>UBIDI_RTL</code>
1297 * or <code>UBIDI_MIXED</code>
1301 * Note - The value <code>UBIDI_NEUTRAL</code> is never returned from this method.
1314 * <code>UBIDI_LTR</code> is returned. If the first such character has
1315 * type R or AL, <code>UBIDI_RTL</code> is returned. If the string does
1317 * <code>UBIDI_NEUTRAL</code> is returned.
1327 * if <code>length==-1</code> then the text
1330 * @return <code>UBIDI_LTR</code>, <code>UBIDI_RTL</code>,
1331 * <code>UBIDI_NEUTRAL</code>
1342 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1356 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1367 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1385 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1399 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1402 * range <code>[0..ubidi_getProcessedLength(pBiDi)-1]</code>.
1406 * This pointer can be <code>NULL</code> if this
1412 * <code>charIndex</code>.
1413 * This pointer can be <code>NULL</code> if this
1417 * This pointer can be <code>NULL</code> if this
1420 * @param pErrorCode must be a valid pointer to an error code value.
1437 * @param pBiDi is the paragraph <code>UBiDi</code> object.
1440 * range <code>[0..ubidi_countParagraphs(pBiDi)-1]</code>.
1444 * This pointer can be <code>NULL</code> if this
1448 * This pointer can be <code>NULL</code> if this
1452 * This pointer can be <code>NULL</code> if this
1455 * @param pErrorCode must be a valid pointer to an error code value.
1467 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1486 * circumstances, unlike <code>ubidi_getLevelAt()</code>.
1488 * @param pBiDi is the paragraph or line <code>UBiDi</code> object, whose
1491 * @param pErrorCode must be a valid pointer to an error code value.
1494 * or <code>NULL</code> if an error occurs.
1509 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1516 * <code>logicalPosition</code>.
1517 * This pointer can be <code>NULL</code> if this
1521 * This pointer can be <code>NULL</code> if this
1534 * <code>UBiDi</code> object, after <code>ubidi_setPara()</code>
1536 * <code>ubidi_countRuns()</code> may have to allocate memory,
1539 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1541 * @param pErrorCode must be a valid pointer to an error code value.
1555 * <code>ubidi_countRuns()</code> should be called
1558 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1561 * range <code>[0..ubidi_countRuns(pBiDi)-1]</code>.
1564 * The pointer may be <code>NULL</code> if this index is not needed.
1567 * The pointer may be <code>NULL</code> if this is not needed.
1570 * <code>UBIDI_LTR==0</code> or <code>UBIDI_RTL==1</code>,
1571 * never <code>UBIDI_MIXED</code>,
1572 * never <code>UBIDI_NEUTRAL</code>.
1578 * \code
1596 * Note that in right-to-left runs, code like this places
1600 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1601 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option, can be considered in order
1612 * <code>UBiDi</code> object, then calling
1613 * <code>ubidi_getLogicalMap()</code> is more efficient.<p>
1615 * The value returned may be <code>#UBIDI_MAP_NOWHERE</code> if there is no
1617 * removed from output by the option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>.
1620 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1621 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1622 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the visual position returned may not
1624 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1629 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1630 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option can be considered instead
1633 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1637 * @param pErrorCode must be a valid pointer to an error code value.
1652 * <code>UBiDi</code> object, then calling
1653 * <code>ubidi_getVisualMap()</code> is more efficient.<p>
1655 * The value returned may be <code>#UBIDI_MAP_NOWHERE</code> if there is no
1657 * inserted in the output by option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
1659 * This is the inverse function to <code>ubidi_getVisualIndex()</code>.
1662 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1663 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1664 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the logical position returned may not
1666 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1668 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1672 * @param pErrorCode must be a valid pointer to an error code value.
1688 * Some values in the map may be <code>#UBIDI_MAP_NOWHERE</code> if the
1690 * output by the option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code>.
1693 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1694 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1695 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the visual positions returned may not
1697 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1702 * Use of <code>ubidi_writeReordered()</code>, optionally with the
1703 * <code>#UBIDI_KEEP_BASE_COMBINING</code> option can be considered instead
1706 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1708 * @param indexMap is a pointer to an array of <code>ubidi_getProcessedLength()</code>
1710 * If option <code>#UBIDI_OPTION_INSERT_MARKS</code> is set, the number
1711 * of elements allocated in <code>indexMap</code> must be no less than
1712 * <code>ubidi_getResultLength()</code>.
1714 * The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
1716 * @param pErrorCode must be a valid pointer to an error code value.
1731 * Some values in the map may be <code>#UBIDI_MAP_NOWHERE</code> if the
1733 * by the option <code>#UBIDI_OPTION_INSERT_MARKS</code>.
1736 * <code>ubidi_writeReordered()</code> such as <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
1737 * <code>UBIDI_KEEP_BASE_COMBINING</code>, <code>UBIDI_OUTPUT_REVERSE</code>,
1738 * <code>UBIDI_REMOVE_BIDI_CONTROLS</code>, the logical positions returned may not
1740 * such as <code>UBIDI_OPTION_INSERT_MARKS</code> and <code>UBIDI_OPTION_REMOVE_CONTROLS</code>.
1742 * @param pBiDi is the paragraph or line <code>UBiDi</code> object.
1744 * @param indexMap is a pointer to an array of <code>ubidi_getResultLength()</code>
1746 * If option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> is set, the number
1747 * of elements allocated in <code>indexMap</code> must be no less than
1748 * <code>ubidi_getProcessedLength()</code>.
1750 * The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
1752 * @param pErrorCode must be a valid pointer to an error code value.
1767 * This is equivalent to using <code>ubidi_getLogicalMap()</code> on a
1768 * <code>UBiDi</code> object.
1770 * @param levels is an array with <code>length</code> levels that have been determined by
1775 * It must be <code>length>0</code>.
1777 * @param indexMap is a pointer to an array of <code>length</code>
1780 * The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
1790 * This is equivalent to using <code>ubidi_getVisualMap()</code> on a
1791 * <code>UBiDi</code> object.
1793 * @param levels is an array with <code>length</code> levels that have been determined by
1798 * It must be <code>length>0</code>.
1800 * @param indexMap is a pointer to an array of <code>length</code>
1803 * The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
1814 * @param srcMap is an array with <code>length</code> elements
1816 * <code>length</code> elements to a destination array.
1819 * the special value <code>UBIDI_MAP_NOWHERE</code>.
1820 * All elements must be >=0 or equal to <code>UBIDI_MAP_NOWHERE</code>.
1821 * Some elements may have a value >= <code>length</code>, if the
1824 * same value except <code>UBIDI_MAP_NOWHERE</code>).
1827 * value in <code>srcMap</code>.
1828 * <code>destMap</code> will be filled with the inverse mapping.
1829 * If element with index i in <code>srcMap</code> has a value k different
1830 * from <code>UBIDI_MAP_NOWHERE</code>, this means that element i of
1835 * inverse map will have a value equal to <code>UBIDI_MAP_NOWHERE</code>.
1896 * <p>This has the same effect as calling <code>ubidi_writeReordered()</code>
1898 * <code>ubidi_writeReverse()</code> without mirroring.
1910 * <code>ubidi_setPara()</code>. This length may be different from the length
1911 * of the source text if option <code>#UBIDI_OPTION_STREAMING</code>
1916 * except for <code>ubidi_setPara</code> (which receives unprocessed source
1917 * text) and <code>ubidi_getLength</code> (which returns the original length
1922 * <li>maximum value of the <code>limit</code> argument of
1923 * <code>ubidi_setLine</code></li>
1924 * <li>maximum value of the <code>charIndex</code> argument of
1925 * <code>ubidi_getParagraph</code></li>
1926 * <li>maximum value of the <code>charIndex</code> argument of
1927 * <code>ubidi_getLevelAt</code></li>
1928 * <li>number of elements in the array returned by <code>ubidi_getLevels</code></li>
1929 * <li>maximum value of the <code>logicalStart</code> argument of
1930 * <code>ubidi_getLogicalRun</code></li>
1931 * <li>maximum value of the <code>logicalIndex</code> argument of
1932 * <code>ubidi_getVisualIndex</code></li>
1933 * <li>number of elements filled in the <code>*indexMap</code> argument of
1934 * <code>ubidi_getLogicalMap</code></li>
1935 * <li>length of text processed by <code>ubidi_writeReordered</code></li>
1938 * @param pBiDi is the paragraph <code>UBiDi</code> object.
1941 * the last call to <code>ubidi_setPara</code>.
1951 * <code>ubidi_setPara()</code>. This length may be different from the length
1952 * of the source text if option <code>#UBIDI_OPTION_INSERT_MARKS</code>
1953 * or option <code>#UBIDI_OPTION_REMOVE_CONTROLS</code> has been set.
1957 * <li>maximum value of the <code>visualIndex</code> argument of
1958 * <code>ubidi_getLogicalIndex</code></li>
1959 * <li>number of elements of the <code>*indexMap</code> argument of
1960 * <code>ubidi_getVisualMap</code></li>
1964 * <code>ubidi_writeReordered</code>, or if option
1965 * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> has been set.
1967 * @param pBiDi is the paragraph <code>UBiDi</code> object.
1970 * the last call to <code>ubidi_setPara</code>.
1983 * Value returned by <code>UBiDiClassCallback</code> callbacks when
1984 * there is no need to override the standard Bidi class for a given code point.
1997 * <p>Usually, the function pointer will be propagated to a <code>UBiDi</code>
1998 * object by calling the <code>ubidi_setClassCallback()</code> function;
2004 * @param c is the code point to get a Bidi class for.
2006 * @return The directional property / Bidi class for the given code point
2007 * <code>c</code> if the default class has been overridden, or
2008 * <code>u_getIntPropertyMaxValue(UCHAR_BIDI_CLASS)+1</code>
2009 * if the standard Bidi class value for <code>c</code> is to be used.
2020 * Retrieve the Bidi class for a given code point.
2021 * <p>If a <code>#UBiDiClassCallback</code> callback is defined and returns a
2022 * value other than <code>u_getIntPropertyMaxValue(UCHAR_BIDI_CLASS)+1</code>,
2025 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2027 * @param c is the code point whose Bidi class must be retrieved.
2029 * @return The Bidi class for character <code>c</code> based
2030 * on the given <code>pBiDi</code> instance.
2047 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2059 * @param pErrorCode must be a valid pointer to an error code value.
2072 * @param pBiDi is the paragraph <code>UBiDi</code> object.
2085 * Take a <code>UBiDi</code> object containing the reordering
2087 * <code>ubidi_setPara()</code> or for a line of text set by
2088 * <code>ubidi_setLine()</code> and write a reordered string to the
2092 * code units and (optionally) combining characters.
2099 * characters; see the description of the <code>destSize</code>
2100 * and <code>options</code> parameters and of the option bit flags.
2102 * @param pBiDi A pointer to a <code>UBiDi</code> object that
2103 * is set by <code>ubidi_setPara()</code> or
2104 * <code>ubidi_setLine()</code> and contains the reordering
2109 * since the <code>ubidi_setPara()</code> call.
2112 * The source text and <code>dest[destSize]</code>
2115 * @param destSize The size of the <code>dest</code> buffer,
2117 * If the <code>UBIDI_INSERT_LRM_FOR_NUMERIC</code>
2120 * <code>ubidi_getLength(pBiDi)+2*ubidi_countRuns(pBiDi)</code>.
2121 * If the <code>UBIDI_REMOVE_BIDI_CONTROLS</code> option
2123 * <code>ubidi_getLength(pBiDi)</code>.
2125 * will be exactly <code>ubidi_getProcessedLength(pBiDi)</code>.
2129 * The options include mirroring the characters on a code
2136 * <code>#UBIDI_DO_MIRRORING</code>,
2137 * <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>,
2138 * <code>#UBIDI_KEEP_BASE_COMBINING</code>,
2139 * <code>#UBIDI_OUTPUT_REVERSE</code>,
2140 * <code>#UBIDI_REMOVE_BIDI_CONTROLS</code>
2142 * @param pErrorCode must be a valid pointer to an error code value.
2159 * code units and (optionally) combining characters.
2169 * of <code>ubidi_writeReordered()</code>. For detailed descriptions
2172 * will never exceed <code>srcLength</code>.
2181 * <code>src[srcLength]</code> and <code>dest[destSize]</code>
2184 * @param destSize The size of the <code>dest</code> buffer,
2186 * If the <code>UBIDI_REMOVE_BIDI_CONTROLS</code> option
2188 * <code>srcLength</code>.
2190 * will be exactly <code>srcLength</code>.
2194 * See the <code>options</code> parameter in <code>ubidi_writeReordered()</code>.
2196 * @param pErrorCode must be a valid pointer to an error code value.