# commonlibrary/c_utils
## Introduction
The **commonlibrary/c_utils** repository provides the following commonly used C++ utility classes for standard system:
- Enhanced APIs for operations related to files, paths, and strings
- APIs related to the read-write lock, semaphore, timer, thread, and thread pool
- APIs related to the security data container and data serialization
- Error codes for each subsystem
## Directory Structure
```
commonlibrary/c_utils
├─ base
│ ├── include # Header files of APIs open to other subsystems
│ ├── src # Source files
│ └── test # Test code
├─ Docs
├── en # Documents in English
└── zh-cn # Documents in Chinese
```
## Condition
Suitable for standard system.
## Build
### Build Component
```
./build.sh --product-name rk3568 --build-target c_utils
```
### Build Shared Library
```
./build.sh --product-name rk3568 --build-target commonlibrary/c_utils/base:utils
```
### Build Static Library
```
./build.sh --product-name rk3568 --build-target commonlibrary/c_utils/base:utilsbase
```
### How to Add Dependency of c_utils
1. Open the corresponding BUILD.gn file of the related module.
2. Add dependency to the corresponding block as follows:
```gn
ohos_shared_library("xxxxx") {
...
external_deps = [
...
# Dependency of shared library(Optional)
"c_utils:utils",
# Dependency of static library(Optional)
"c_utils:utilsbase",
]
...
}
```
## Coding Directions
### [Timer](https://gitee.com/openharmony/commonlibrary_c_utils/blob/master/docs/en/c_utils_timer.md)
### [Thread Pool](https://gitee.com/openharmony/commonlibrary_c_utils/blob/master/docs/en/c_utils_thread_pool.md)
## Changelog
**2023/01/31**
1. Add docs directory,provide development guidelines for main functionalities in c_utils.
2. Add comments in header files.
3. Modify README in which the guidelines can be accessed by links in section "Coding Directions".
**2022/10/10**
1. Move this repository from utils/native to commonlibrary/c_utils.
2. Switch component name from utils_base to c_utils.
3. Securec is not in this repository any more. Please use [third_party_bounds_checking_function](https://gitee.com/openharmony/third_party_bounds_checking_function).
## Repositories Involved
**[commonlibrary\_c\_utils](https://gitee.com/openharmony/commonlibrary_c_utils)**
[commonlibrary\_utils\_lite](https://gitee.com/openharmony/commonlibrary_utils_lite)