Releases: abin-z/inifile
Releases · abin-z/inifile
v1.0.0
Release Notes for v1.0.0
🛠️ Improvements
- Fixed a bug where
delimiter.empty()could cause an infinite loop. - Added the
as_tofeature. - Optimized CMakeLists.txt so that when inifile is used as a third-party library, tests and examples are not built, and
find_packageworks after installation. - Fixed conflicts with
min/maxmacros in Windows headers. - Fixed known issues and improved code structure.
🔍 Testing
- Expanded unit tests using the Catch2 framework to cover new features and edge cases.
- Verified memory safety with Valgrind, ensuring no leaks or invalid accesses.
📄 Documentation
- Updated API documentation to include new features and improvements.
Full Changelog: v0.9.9...v1.0.0
🛠️ 改进
- 修复
delimiter.empty()会死循环的bug. - 添加
as_to功能. - 优化CMakeLists, 当inifile作为三方库时不编译test和example, 并支持安装后使用
find_package. - 修复与Windows头文件中
min/max宏冲突问题. - 修复已知问题, 优化代码结构.
🔍 测试
- 扩展了Catch2 框架单元测试,覆盖新增功能和边界情况。
- 使用 Valgrind 验证内存安全性,确保无内存泄漏或非法访问。
📄 文档
- 更新了 API 文档,涵盖新增功能和改进。
修改提交日志: v0.9.9...v1.0.0
v0.9.9
Release Notes for v0.9.9
🛠️ Improvements
- Optimize the writing of user-defined types, INIFILE_TYPE_CONVERTER uses static
encodeanddecodefunctions - Add inline keywords to global functions to avoid ODR (One Definition Rule) problems
- Optimize inifile functions to improve efficiency and correctness
- Introduce catch2-v2 test framework into the project as a git submodule
- Write shell scripts to facilitate memory leak testing
🔍 Testing
- Expanded Catch2 framework unit testing to cover new features and edge cases.
- Use Valgrind to verify memory safety to ensure no memory leaks or illegal access.
📄 Documentation
- Updated API documentation to cover new features and improvements.
Modified commit log: v0.9.8...v0.9.9
🛠️ 改进
- 优化用户自定义类型写法, INIFILE_TYPE_CONVERTER 使用static的
encode和decode函数 - 全局函数添加inline关键字, 避免ODR(One Definition Rule)问题
- 优化inifile的函数, 提升效率和正确性
- 将catch2-v2测试框架作为git submodule引入项目
- 编写shell脚本, 方便测试内存泄漏
🔍 测试
- 扩展了Catch2 框架单元测试,覆盖新增功能和边界情况。
- 使用 Valgrind 验证内存安全性,确保无内存泄漏或非法访问。
📄 文档
- 更新了 API 文档,涵盖新增功能和改进。
修改提交日志: v0.9.8...v0.9.9
v0.9.8
v0.9.7
Release Notes for v0.9.7
🛠️ Improvements
- Improved floating point precision to ensure that precision is not truncated when working with floating point numbers.
- Hand-write move and copy semantic functions to ensure cross-platform consistency
- Ensure that the content of any class object is cleared after moving it
🐞 Fixes
- Resolve bug where self-moving assignments would result in double free.
🔍 Testing
- Extend unit tests with the Catch2 framework to cover new features and edge cases.
- Verify memory safety using Valgrind to ensure no memory leaks or illegal accesses.
📄 Documentation
- Updated API documentation to cover new features and improvements.
Full Changelog: v0.9.5...v0.9.7
🛠️ 改进
- 提升浮点精度, 保证处理浮点数时不截断精度
- 手写move和copy语义函数, 保证跨平台一致性
- 确保任何类对象被move后, 类中内容将被清空
🐞 修复
- 解决自移动赋值会导致double free的缺陷。
🔍 测试
- 使用 Catch2 框架扩展了单元测试,覆盖新增功能和边界情况。
- 使用 Valgrind 验证内存安全性,确保无内存泄漏或非法访问。
📄 文档
- 更新了 API 文档,涵盖新增功能和改进。
修改提交日志: v0.9.5...v0.9.7
v0.9.5
Release version 0.9.5
changes:
- Fix: Resolved issues caused by missing header files.
- Feature Enhancement: The
ini::splitfunction now supports using a string as a delimiter, making it easier to write customdecodefunctions. - New Feature: Introduced the
ini::joinutility function to simplify the implementation of customencodefunctions. - Code Formatting: Reformatted the code for improved readability.
变化:
- 修复:解决了头文件缺失导致的编译错误。
- 功能扩展:
ini::split函数新增支持使用字符串作为切割符,方便自定义类型的decode函数编写。 - 新功能:新增
ini::join工具函数,简化自定义类型encode函数的编写。 - 代码格式化:对代码进行格式化,提升可读性。
v0.9.4
v0.9.4
changes: Add case insensitive feature
- Support case insensitivity: Provides optional case insensitivity (for
sectionandkey) - use
ini::case_insensitive_inifile, please Click to view details
Full Changelog: v0.9.3...v0.9.4
v0.9.3
Release version v0.9.3
Support custom type conversion function(支持自定义类型转换功能)
Custom type conversion: You can customize type conversion, inifile will automatically convert according to the definition you wrote (reduce duplication)
The following are custom rules:
- Use the
INIFILE_TYPE_CONVERTERmacro to specialize the custom type (Must have a default constructor); - Define
encodefunction, which is used to define how to convert custom types into ini storage strings (the storage string cannot contain newlines); - Define
decodefunction, which is used to define how to convert the ini storage string into a custom type;
v0.9.2
Release version v0.9.2
Biggest changes: Support ini comment function(支持ini注释功能)
Support Comment: Supports [section] and key=value line comments (; or #) (end-of-line comments are not supported), and can retain the comment information in the data source.
- add
set_comment()function, Set section or key-value pairs comment, overwrite mode. - add
add_comment()function, Add section or key-value pairs comment, append mode. - add
clear_comment()function, clear section or key-value pairs comment.
v0.9.1
Release version v0.9.1
Better support for iterator functions(更好的支持迭代器功能)
Added the following features:
- add
empty()function: Determines whether there is no element, returns true if there is no element - add
count()function: Returns how many elements have the specified key - add
find()function: Find the iterator of the specified element, if it does not exist, return the end iterator - add
erase()fucction: Deletes the section or key-value of the specified iterator (including all its elements)
v0.9.0 - Initial release
Initial release of inifile library
Features
- Lightweight & Dependency-Free: Only relies on the C++11 standard library, no additional dependencies required.
- Easy Integration: Header-only design, ready to use out of the box.
- Intuitive API: Provides a clear and user-friendly interface to simplify INI file operations.
- Comprehensive Support: Allows reading, modifying, and writing INI data to files.
- Multiple Data Sources: Supports parsing INI data from std::string or std::istream and writing back to them.
- Automatic Type Conversion: Supports multiple data types with seamless type conversion.