doc: update documentation.

- add documentation for platform checker.
- finish documentation of encoding helper.
This commit is contained in:
yyc12345 2024-07-05 09:18:31 +08:00
parent 1f04e23092
commit 1c5a85bbb2
3 changed files with 72 additions and 3 deletions

View File

@ -16,9 +16,41 @@ See \ref library_encoding for more infomation.
\section encoding_helper__win_conv Windows Specific Convertion \section encoding_helper__win_conv Windows Specific Convertion
During Windows programming, the convertion between Microsoft specified \c wchar_t and \c char is an essential operation.
Because Windows has 2 different function system, the functions ended with A and the functions ended with W.
(Microsoft specified \c wchar_t is \c 2 bytes long. It's different with Linux defined common 4 bytes long).
Thus YYCC provides these convertion functions in Windows to help programmer have better programming experience.
These functions are Windows specific, so they will be invisible in other platforms.
Please use them carefully (make sure that you are using them only in Windows environment).
YYCC supports following convertions:
\li \c WcharToChar: Convert \c wchar_t string to code page specified string.
\li \c CharToWchar: The reversed convertion of WcharToChar.
\li \c CharToChar: Convert string between 2 different code pages. It's a shortcut of calling CharToWchar and WcharToChar successively.
\li \c WcharToUTF8: Convert \c wchar_t string to UTF8 string.
\li \c UTF8ToWchar: The reversed convertion of WcharToUTF8.
Code Page is a Windows concept.
If you don't understand it, please view corresponding Microsoft documentation.
\section encoding_helper__utf_conv UTF8 UTF16 UTF32 Convertion \section encoding_helper__utf_conv UTF8 UTF16 UTF32 Convertion
The convertion between UTF8, UTF16 and UTF32 is not common but essential.
These convertions can be achieved by standard library functions and classes.
(they are actually done by standard library functions in our implementation)
But we provided functions are easy to use and have clear interface.
These functions are different with the functions introduced above.
They can be used in any platform, not confined in Windows platforms.
YYCC supports following convertions:
\li \c UTF8ToUTF16: Convert UTF8 string to UTF16 string.
\li \c UTF16ToUTF8: The reversed convertion of UTF8ToUTF16.
\li \c UTF8ToUTF32: Convert UTF8 string to UTF32 string.
\li \c UTF32ToUTF8: The reversed convertion of UTF8ToUTF32.
\section encoding_helper__overloads Function Overloads \section encoding_helper__overloads Function Overloads
@ -80,18 +112,18 @@ If you want to process string with \b embedded NUL terminal, please choose first
Otherwise the second type overload is enough. Otherwise the second type overload is enough.
Same as destination string, the type of source is also decided by the convertion function itself. Same as destination string, the type of source is also decided by the convertion function itself.
For exmaple, the type of source in YYCC::EncodingHelper::UTF8ToWchar is \c yycc_u8string and \c yycc_char8_t, For exmaple, the type of source in YYCC::EncodingHelper::UTF8ToWchar is \c yycc_u8string_view and \c yycc_char8_t,
not \c std::wstring and \c wchar_t. not \c std::wstring and \c wchar_t.
\subsection encoding_helper__overloads__extra Extra Argument \subsection encoding_helper__overloads__extra Extra Argument
There is an extra argument called \c code_page for YYCC::EncodingHelper::WcharToChar. There is an extra argument called \c code_page for YYCC::EncodingHelper::WcharToChar.
It indicate the code page of destination string, It indicates the code page of destination string,
because this function will convert \c wchar_t string to the string with specified code page encoding. because this function will convert \c wchar_t string to the string with specified code page encoding.
Some convertion functions have extra argument like this, Some convertion functions have extra argument like this,
because they need more infomations to decide what they need to do. because they need more infomations to decide what they need to do.
Some convertion functions don't have these extra argument. Some convertion functions don't have extra argument.
For exmaple, the convertion between \c wchar_t string and UTF8 string. For exmaple, the convertion between \c wchar_t string and UTF8 string.
Because both source string and destination string are concrete. Because both source string and destination string are concrete.
There is no need to provide any more infomations. There is no need to provide any more infomations.

View File

@ -29,6 +29,8 @@
\li \subpage intro \li \subpage intro
\li \subpage platform_checker
\li \subpage library_encoding \li \subpage library_encoding
\li \subpage encoding_helper \li \subpage encoding_helper

View File

@ -0,0 +1,35 @@
/**
\page platform_checker Platform Checker
In many cross platform applications,
programmer usually write code adapted to different platforms in one source file
and enable them respectively by macros representing the target platform.
As a cross platform library,
YYCC also has this feature and you can utilize it if you don't have other ways to so the same things.
\section platform_checker__values Values
YYCC always define a macro called \c YYCC_OS to indicate the system of target platform.
In implementation, it will check following list from top to bottom to set matched value for it.
\li \c YYCC_OS_WINDOWS: Windows environment. It is done by checking whether environment define \c _WIN32 macro.
\li \c YYCC_OS_LINUX: In current implementation, this means target platform is \b NOT Windows.
\section platform_checker__usage Usage
Now you know any possible value of \c YYCC_OS.
The next step is how to use it to enable specified code in specific target platform.
We take Windows platform for example.
Assume \c blabla() function is Windows specific.
We have following example code:
\code
#if YYCC_OS == YYCC_OS_WINDOWS
blabla();
#endif
\endcode
It's enough and simple that use \c #if to bracket the Windows specified code.
*/