string_internal.hpp
cstdint
string
vector
src/ftxui/component/input.cpp
src/ftxui/screen/string.cpp
src/ftxui/screen/string_internal.hpp
cstdint
string
vector
src/ftxui/component/input.cpp
src/ftxui/screen/string.cpp
src/ftxui/screen/string_internal.hpp
ftxui

    //Copyright2023ArthurSonzogni.Allrightsreserved.
    //UseofthissourcecodeisgovernedbytheMITlicensethatcanbefoundin
    //theLICENSEfile.
    #ifndefFTXUI_SCREEN_STRING_INTERNAL_HPP
    #defineFTXUI_SCREEN_STRING_INTERNAL_HPP

    #include<cstdint>
    #include<string>
    #include<vector>

    namespaceftxui{

    boolEatCodePoint(conststd::string&input,
    size_tstart,
    size_t*end,
    uint32_t*ucs);
    boolEatCodePoint(conststd::wstring&input,
    size_tstart,
    size_t*end,
    uint32_t*ucs);

    boolIsCombining(uint32_tucs);
    boolIsFullWidth(uint32_tucs);
    boolIsControl(uint32_tucs);

    size_tGlyphPrevious(conststd::string&input,size_tstart);
    size_tGlyphNext(conststd::string&input,size_tstart);

    //Returntheindexinthe|input|stringoftheglyphat|glyph_offset|,
    //startingat|start|
    size_tGlyphIterate(conststd::string&input,
    intglyph_offset,
    size_tstart=0);

    //Returnsthenumberofglyphsin|input|.
    intGlyphCount(conststd::string&input);

    //Propertiesfrom:
    //https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/WordBreakProperty.txt
    enumclassWordBreakProperty:int8_t{
    ALetter,
    CR,
    Double_Quote,
    Extend,
    ExtendNumLet,
    Format,
    Hebrew_Letter,
    Katakana,
    LF,
    MidLetter,
    MidNum,
    MidNumLet,
    Newline,
    Numeric,
    Regional_Indicator,
    Single_Quote,
    WSegSpace,
    ZWJ,
    };
    WordBreakPropertyCodepointToWordBreakProperty(uint32_tcodepoint);
    std::vector<WordBreakProperty>Utf8ToWordBreakProperty(
    conststd::string&input);

    boolIsWordBreakingCharacter(conststd::string&input,size_tglyph_index);
    }//namespaceftxui

    #endif/*endofincludeguard:FTXUI_SCREEN_STRING_INTERNAL_HPP*/