Commit Graph
100 Commits
Author SHA1 Message Date
yyc12345 df3b602110 refactor: start to refactor project 2025-06-20 23:38:34 +08:00
yyc12345 bec36b4b3c fix: fix install path in CMake script.
- replace some CMake variables to our custom variables in install path, however it does nothing because they are equal in default.
2024-12-23 09:30:39 +08:00
yyc12345 0b7e58c8e8 feat: use CMake to generate library version info.
- use CMake to produce YYCC version header when configuring.
2024-11-03 18:52:02 +08:00
yyc12345 831fa130bc feat: improve EnumHelper
- allow multiple enum flags in EnumHelper::Has to check whether given flags contains specified flags.
- update version in CMake script.
2024-11-03 18:06:36 +08:00
yyc12345 7adac00035 doc: fix document about recent changes
- fix build commandline introduction in documentation.
- update build script template.
- only install document in any Release-like build type.
- now testbench will be installed in any Release-like build type, not only Release.
2024-11-03 17:29:34 +08:00
yyc12345 0cd9582757 refactor: refactor project layout
- move header files into an individual directory to prevent the possibility that file name is conflict in Linux include directory.
- update build script generator. use jinja2 template engine to get better view, rather than python code written by hand.
- add version number and version comparation macros in core library.
2024-11-03 14:51:18 +08:00
yyc12345 2206825223 doc: add document for the change of loading function of ConfigManager. 2024-11-02 17:31:19 +08:00
yyc12345 21f7e7f786 feat: add new helper for scoped enum type.
- Add EnumHelper for bitwise operation of scoped enum type (copied from libcmo21)
- Enrich the return value of ConfigManager load function to present more infomation of loading.
- update testbench for new added feature and modification.
- add document for new added feature.
2024-11-02 17:10:55 +08:00
yyc12345 50dd086b53 fix: fix linux build issue 2024-08-27 17:35:57 +08:00
yyc12345 c91df3a74f fix: fix issues.
- add chars format argument for floating point overload of ParserHelper::TryParse.
- add overload for ParserHelper::Parse to match with ParserHelper::TryParse.
- fix the issue that we can not specify c++ standard in command line when configuring project.
- update documentation for changes.
- change following function's argument from const yycc_char8_t* to const yycc_u8string_view&.
	- StringHelper::Split, StringHelper::SplitView
	- StringHelper::Lower, StringHelper::Upper
	- StringHelper::Join
	- StringHelper::Replace
- use iterator type, not std::vector<yycc_u8string> for specialized StringHelper::Join to have more wide usage.
2024-08-26 11:58:20 +08:00
yyc12345 3858b4f3ec fix: use new way to detect c++ version in MSVC.
- use new macro to check C++ version in MSVC, instead of use compiler switch and __cplusplus macro.
2024-08-15 16:50:15 +08:00
yyc12345 f3a88e951c fix: add testbench for new added code. fix issues.
- add testbench for new added code in StdPatch.
- add documentation for new added code.
- fix the old usage of StdPatch::ToStdPath in ExceptionHelper.
2024-08-15 10:38:58 +08:00
yyc12345 59c185a424 doc: update build script and documentation.
- update build script.
- update documentation about build script changes.
2024-08-14 17:26:38 +08:00
yyc12345 dc98486fff chore: add new script for building
- add a python script for generating windows build script but not tested now.
2024-08-14 11:05:36 +08:00
yyc12345 72a48b703f feat: add various functions
- Add Win32 CopyFile, MoveFile, DeleteFile functions in WinFctHelper.
- rename FsPathPatch to StdPatch because this namespace will hold all standard library patches in future.
- add polyfill for std:basic_string::starts_with, std::basic_string::ends_with std::basic_string_view::starts_with, std::basic_string_view::ends_with in StdPatch.
- add polyfill for unordered and ordered associative standard library container's contains function in StdPatch.
- documentation and testbench will be fixed in later commits.
2024-08-13 09:38:12 +08:00
yyc12345 33cb284eb7 feat: add switch for build script to disable documentation build.
- add a new switch to disable documentation build which cost much time and disk space during building.
- add corresponding codumentation for this feature.
2024-08-05 14:46:59 +08:00
yyc12345 e6c24b8b61 feat: add helper macro and new Win32 function.
- add IsValidCodePage in WinFctHelper to check whether code page number is valid.
- add 6 macros to batchly (add / set default) (move / copy) (constructor / assign operator).
- add default or delete (copy / move) (constructor / assign operator) for some classes.
2024-08-04 11:57:56 +08:00
yyc12345 6da990876e feat: add smart FILE pointer.
- use std::unique_ptr and custom deleter to implement smart FILE pointer for convenient auto free.
2024-08-02 09:50:15 +08:00
yyc12345 0ac6b477f9 fix: fix fatal error of ExceptionHelper in x86 environemnt.
- fix a wrong placeholder of printf in ExceptionHelper which cause crash in unhandled exception handler.
- improve format function in ExceptionHelper.
- add a new debugging option and macro in CMake script and code for the convenience of debugging unhandled exception handler.
- add docuementation about previous term.
2024-07-31 20:32:11 +08:00
yyc12345 1cfbcb3b18 doc: update documentation
- use namespace bracket all content in documentation to reduce useless namespace prefix.
- change the argument type of AbstractSetting and CoreManager to yycc_u8string_view instead of const yycc_char8_t*.
- throw exception if given setting name is invalid in ConfigManager, instead of slient fallback.
2024-07-31 14:14:38 +08:00
yyc12345 598aae69ae doc: update documentation 2024-07-31 12:08:30 +08:00
yyc12345 656495f22e doc: update documentation 2024-07-30 22:13:59 +08:00
yyc12345 e167479de3 doc: add documentation for new added features 2024-07-30 17:31:38 +08:00
yyc12345 19023cb949 doc: add callback documentation in ExceptionHelper.
- add callback documentation in ExceptionHelper.
- fix other misc documentation issue.
2024-07-30 10:35:41 +08:00
yyc12345 650fcd12ec feat: add callback for unhandled exception handler.
- add callback for unhandled exception handler to give programmer a chance to fetch log and coredump path, especially for GUI application because its stderr is invisible.
- fix fatal anto-recursive calling bug in unhandled exception handler.
2024-07-29 21:42:27 +08:00
yyc12345 e8a0299fbc feat: finish ArgParser help text output 2024-07-29 19:31:17 +08:00
yyc12345 d1c1743dc9 feat: basically finish ArgParser
- finish ArgParser and test it.
- Help output function will be added in next commit.
2024-07-29 16:58:52 +08:00
yyc12345 35318505e4 feat: add arg parser feature but not finished 2024-07-28 22:42:16 +08:00
yyc12345 f997990af6 doc: finish all documentations 2024-07-26 15:08:12 +08:00
yyc12345 7f373ed354 doc: update documentation in code 2024-07-25 18:15:39 +08:00
yyc12345 31a7cb5675 doc: update documentation in code 2024-07-25 11:22:50 +08:00
yyc12345 87fa30fe82 doc: update documentation in code 2024-07-24 15:03:31 +08:00
yyc12345 ecb06504bc doc: add documentation about how to build YYCC 2024-07-23 10:39:12 +08:00
yyc12345 805ffe70d6 fix: fix linux build issue
- fix linux build bug
- add linux build script
- order linux shell file eol be LF.
2024-07-22 22:41:10 +08:00
yyc12345 052fa7f4d1 chore: update build script.
- update CMake build script to make install statement is more legal.
- add Windows-only build script for creating CMake used package and MSVC used package on Windows.
- documentation will be added in the next commit.
2024-07-22 13:56:00 +08:00
yyc12345 9e5bd370c4 doc: add documentation for ConfigManager 2024-07-18 09:28:10 +08:00
yyc12345 94386c93aa doc: finish documentation of StringHelper 2024-07-17 14:18:54 +08:00
yyc12345 b13bb445e4 doc: add documentation for ConsoleHelper 2024-07-16 10:41:09 +08:00
yyc12345 81fe72c425 chore: add Natvis in MSVC CMake build.
- add Natvis in MSVC CMake build to let me can see the data encoded with YYCC::yycc_char8_t.
2024-07-15 22:47:49 +08:00
yyc12345 b912be082c doc: add documentation for COMHelper 2024-07-15 13:47:14 +08:00
yyc12345 9f47d0fe24 doc: update documentation for ParserHelper 2024-07-14 11:19:37 +08:00
yyc12345 cc689ce8bb doc: update README
- add MIT license
- update README. remove WIP mark.
- move some content from README to documentation.
2024-07-13 22:50:37 +08:00
yyc12345 1ccea1290e doc: add documentation for win fct helper
- add documentation for win fct helper
- add new macro YYCC_U8_CHAR for casting ordinary char to yycc utf8 char.
- add documentation for new added YYCC_U8_CHAR.
2024-07-13 12:58:49 +08:00
yyc12345 ed549592dd doc: update documentation for FsPathPatch 2024-07-12 09:44:56 +08:00
yyc12345 1c2007928d doc: update documentation for IO helper.
- update IO helper ducumentation.
- fix a latent Linux compile error in IO helper.
2024-07-11 09:59:50 +08:00
yyc12345 a6c543c1b5 doc: finish dialog helper documentation 2024-07-10 09:24:39 +08:00
yyc12345 942e4ff8eb feat: add convertion functions between utf8 and code page string 2024-07-09 21:02:26 +08:00
yyc12345 9a18233723 doc: update document for exception helper 2024-07-08 10:44:09 +08:00
yyc12345 11b2185bb4 chore: update documentation build script 2024-07-08 08:54:49 +08:00
yyc12345 d27a66e770 fix: fix ConfigManager::StringSetting issues
- use yycc_u8string_view in default value and Set function instead of const yycc_char8_t*
- fix value check error in Set function.
2024-07-07 21:33:42 +08:00
yyc12345 4f1e2447d0 fix: make exception handler be singleton in same process.
- use CreateMutexW to make sure exception handler is singleton in the same process.
	- Because one process may load multiple DLLs using YYCC.
	- According to this, it will produce N times error log. N is the count of DLLs using YYCC exception handler.
- refactor exception handler. use a class instance to manage all global variables and add a std::mutex to let module be thread safe.
- change the way of check in console input testbench.
2024-07-07 17:29:26 +08:00
yyc12345 3075ec583d fix: in config manager throw exception when facing duplicated setting name instead of slient skip 2024-07-07 16:08:42 +08:00
yyc12345 2e28dd4c48 chore: update build script.
- update build script to split documentation generation.
- bump up version from 1.0.0 to 1.1.0
2024-07-06 15:28:30 +08:00
yyc12345 a1699f13db doc: update documentation
- rename Constrain to Constraint in code and documentation.
- remove massive annotation of encoding helper because the documentation is enough.
- fix doxygen character shift warnings.
2024-07-05 22:25:14 +08:00
yyc12345 65b81f5cfa refactor: rename Native String to Ordinary String.
- rename Native to Ordinary in code and documentation.
- fulfill some documentations.
2024-07-05 10:36:24 +08:00
yyc12345 1c5a85bbb2 doc: update documentation.
- add documentation for platform checker.
- finish documentation of encoding helper.
2024-07-05 09:18:31 +08:00
yyc12345 1f04e23092 doc: update documentation for encoding helper 2024-07-04 20:26:59 +08:00
yyc12345 06e75924f1 doc: update documentation for dialog helper 2024-07-03 21:26:27 +08:00
yyc12345 e374575852 fix: fix issue in config manager.
- fix fwrite fread issue in config manager.
- add testbench for config manager.
- change testbench order to get better experience.
2024-07-03 10:14:17 +08:00
yyc12345 e2a582e7d2 dox: add WinImport pair documentation 2024-07-02 16:31:28 +08:00
yyc12345 588946583c feat: add universal config manager implementation. 2024-07-02 10:52:24 +08:00
yyc12345 e1823d4b8e feat: add new split function reducing memory cost.
- add a new split function, SplitView which can reduce cost memory by using string view.
- add a new testbench for split function for testing empty source string.
- add documentation for some string helper function.
- improve library encoding documentation.
2024-06-29 17:39:13 +08:00
yyc12345 23b4da95ce fix: fix bug caused by refactor 2024-06-28 16:30:21 +08:00
yyc12345 e5b6e8c6c3 refactor: refactor testbench for UTF8 string. fix refactor bug 2024-06-28 16:24:27 +08:00
yyc12345 ccb729c718 refactor: update all modules for UTF8 string. waiting for debugging 2024-06-28 15:46:58 +08:00
yyc12345 44dbbb1c99 refactor: refactor string helper for UTF8 string 2024-06-28 14:44:39 +08:00
yyc12345 91ba0c22d6 doc: update documentation 2024-06-28 11:38:19 +08:00
yyc12345 73ef8af56c doc: add documentation about library encoding. 2024-06-27 23:20:56 +08:00
yyc12345 61ad1ff3ce refactor: refactor encoding helper again.
- add the convertion between yycc_char8_t and system char type because we decide use our char8_t in the whole library.
- make a clear boundary between yycc char8_t declarations and related assist functions. the declarations present in internal header and assist functions are written in encoding helper.
- use std::basic_string_view instead of std::basic_string to provide more abilities to encoding convertion functions and reduce the redundant memory occupation at the same time.
2024-06-27 20:49:02 +08:00
yyc12345 c15b57d055 refactor: bring char8_t to this library.
- add yycc_char8_t and yycc_u8string in code to indicate explicit utf8 char type and string. it also has a polyfill if compiler and library do not support utf8 char type.
- refactor the whole encoding helper. allow converting string with embedded NUL. but not tested.
2024-06-26 21:04:56 +08:00
yyc12345 bb17bb6a1f chore: update build system
- use configuration-arch-based path in MSVC to make sure generated package can be used by native MSVC project.
- add github action and corresponding build script. but not tested.
- fix some testbench code.
2024-06-20 15:51:40 +08:00
yyc12345 3fa05b43d9 fix: use new method to do the convertion among UTF8, UTF16 and UTF32.
- use std::codevct as the convertion method among UTF8, UTF16 and UTF32.
- fix the issue that COM Guard was accidently dropped by compiler because no reference to it.
2024-06-20 10:16:13 +08:00
yyc12345 1fd132f0c9 fix: fix build error in Linux environment.
- fix various build error in Linux environment.
- the convertion between UTF8, UTF16 and UTF32 have error in Linux and will be fixed in future.
2024-06-19 13:28:51 +08:00
yyc12345 b61f718084 fix: add if macro for Windows only testbench code.
- add if macro for Windows only testbench code to make sure testbench can be run on other platforms.
2024-06-19 09:17:04 +08:00
yyc12345 f153f9bc22 doc: update comments of code.
- add lost testbench for wchar encoding convertion.
- update code documentation.
2024-06-18 16:03:41 +08:00
yyc12345 77b6f439f7 feat: add encoding convertion functions between utf8 and utf16, utf32.
- add bidirectional convertion between utf8 and utf16, utf32 in every platforms.
- add testbench for new added functions.
2024-06-18 11:03:48 +08:00
yyc12345 0319be7e19 feat: finish exception helper.
- finish exception helper.
	- switch to LOCALAPPDATA/CrashDumps as output directory.
- add testbench for exception helper.
- add lost testbench for GetLocalAppData in WinFctHelper.
- link with DbgHelp.lib on Windows in CMake.
2024-06-17 15:10:45 +08:00
yyc12345 e20c03a5f1 refactor: move COM type and guard into independent file
- move COM types and guard into independent file and namespace COMHelper because not only dialog, but also other parts also need to use COM related fucntion.
- remove ParserHelper.cpp because it is empty (ParserHelper is header only namespace).
- Add a function fetching LOCALAPPDATA in WinFctHelper.
2024-06-17 12:46:32 +08:00
yyc12345 8465d80a54 chore: update CMakeLists
- update the use of target_sources() to remove duplicated header file declarations.
	- thx Gary Wang
2024-06-15 22:03:17 +08:00
yyc12345 5481898ad9 feat: move std::filesystem::path related function to independent namespace.
- create FsPathPatch namespace to hold std::filesystem::path related functions.
- add corresponding testbench code for it.
2024-06-15 17:57:33 +08:00
yyc12345 e7b13768ec fix: rename function. update console function
- Update implementation of EnsureColorfulConsole.
	- previous implementation will exit if one of the process to stdout and stderr failed. so if it exit at the process of stdout, the process of stderr will not be run.
	- current implementation will always do process for both of stdout and stderr. the return value will be false if any process of them are failed.
- rename GetModuleName to GetModuleFileName and disable annoy Windows macro GetModuleFileName in WinImportSuffix.hpp.
2024-06-15 16:59:54 +08:00
yyc12345 d0a8733379 refactor: change 2 functions declarations in WinFctHelper
- update GetTempPath and GetModuleName function to let them more reliable.
2024-06-15 16:44:11 +08:00
yyc12345 c32806ea03 feat: add more output functions in console helper.
- add more output functions in console helper.
	* split output functions by format string and plain string as Format and Write.
	* add functions which output to stderr.
- improve document.
2024-06-14 11:59:08 +08:00
yyc12345 0ef1939e6e feat: update IO helper.
- add utf8 path to std::filesystem::path convertion function.
- add left-padding zero format string for printing pointer.
- update exception handler, but not finished because console helper need update.
2024-06-13 15:24:12 +08:00
yyc12345 015ff874f8 feat: add windows function helper
- add windows function helper namespace for some commonly used windows functions.
- add corresponding testbench for added code.
2024-06-13 11:18:25 +08:00
yyc12345 ab12268395 doc: add Doxygen build system
- add Doxygen build configuration file template and CMake list file.
- add option for building documentation.
- the content of documentation should be filled in future.
2024-06-12 15:48:20 +08:00
yyc12345 b6c53ac707 fix: fix console helper
- add annotations for console helper for better user experience.
- change build macro to allow using console helper in non-Windows platform. because console color macros is universal and should not be limited in Windows platform.
2024-06-11 11:40:09 +08:00
yyc12345 629a608133 feat: finish console input.
- finish console input function. add test for it.
- add Replace function in string helper.
2024-06-10 17:55:23 +08:00
yyc12345 1e990b74ae feat: update console output method
- remove the macros disable the warning and error of std functions in MSVC because YYCC has disable them in header.
- update console input output functions. provide CSharp-like interface for UTF8 console input output.
	- console output function is done by WriteConsoleW and WriteFile.
	- console input function still work in progress.
- rename console ASCII color macros
- add console ASCII color test.
- remove EnableUTF8Console because no longer needed.
- add a bunch of annotation to describe YYCC UTF8 console strategy.
- add UNICODE macro in CMakeLists.txt to order CMake generate Visual Studio solution with UNICODE charset enabled, not MBCS.
2024-06-09 21:34:28 +08:00
yyc12345 019034a9c2 chore: update CMakeLists.txt
- update CMakeLists.txt. Add an option to disable the generation of testbench.
- rename testbench name to YYCCTestbench.
- allow emoji test in code.
2024-06-06 13:16:55 +08:00
yyc12345 642db411f5 chore: update cmake build scripts
- update cmake build scripts
- the install part of build scripts may still have issues.
2024-06-03 14:24:05 +08:00
yyc12345 67bd445885 refactor: update ParserHelper
- update the implementation of ParserHelper from locale-based std::to_string, std::stod, std::stoull, to locale-independent function std::from_chars and std::to_chars.
- rename TerminalHelper to ConsoleHelper.
2024-05-31 12:12:48 +08:00
yyc12345 7044a0cff2 fix: fix utf8 output again.
- I write a wrong CMakeLists.txt so the generated utf8 string is wrong.
- Fixed in CMakeLists.txt. But still remove all utf8 string literal heading becasue it is not compatible with my code under C++ 20 standard.
2024-05-30 16:22:03 +08:00
yyc12345 e1e8a33c50 fix: fix utf-8 output error.
- I figure out how UTF-8 output bug happend, but I don't have any clues proving why this happend.
	- it seems that we can simply remove utf8 string literal heading to solve this issue (u8"" -> "")
	- the compiled string char array in executable application already is wrong.
	- compiler generated string bytes is `'original string'.encode('utf-8').decode(your pc encoding).encode('utf-8')`.
	- idk why, as the compromise, I remove all utf8 string literal heading to solve this issue.
	- I highly think this is a bug of MSVC. because everything is okey if I use MSVC native project file to build.
	- I have compared the build flags between native project and cmake generated project but I can't find any difference.
- add full testbench code for ParserHelper.
2024-05-30 14:53:46 +08:00
yyc12345 5726c81fdb chore: switch to CMake build system.
- switch to CMake build system and delete original project files because Visual Studio supports CMake project debugging.
- there is a UTF-8 bug for library after switching, but I don't know why it happends. maybe fixed in future.
2024-05-29 23:11:52 +08:00
yyc12345 72eb79ce1a feat: basically finish parser helper.
- basically finish parser helper, including TryParse, Parse and ToString.
- only Parse has been tested. other test should be filled in future.
2024-05-28 19:59:41 +08:00
yyc12345 d437ecc140 doc: add document for dialog helper 2024-05-27 21:21:39 +08:00
yyc12345 efcc371e31 fix: improve dialog helper
- remove template for CoTaskMemDeleter due to previous confusion.
- use std::remove_pointer_t instead of directly writting underlying type.
2024-05-27 19:48:25 +08:00
yyc12345 cebe2f004d feat: finish dialog helper.
- finish dialof helper.
- dialog helper still nned some annotation.
2024-05-27 14:27:11 +08:00
yyc12345 a9059013f0 feat: add some dialog code which can not work now.
- add common file dialog showcase code but all of them are not work now.
2024-05-26 20:20:59 +08:00