Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ros2/rcutils
Common C functions and data structures used in ROS 2
https://github.com/ros2/rcutils
hacktoberfest
Last synced: 1 day ago
JSON representation
Common C functions and data structures used in ROS 2
- Host: GitHub
- URL: https://github.com/ros2/rcutils
- Owner: ros2
- License: apache-2.0
- Created: 2017-02-09T18:56:35.000Z (almost 8 years ago)
- Default Branch: rolling
- Last Pushed: 2024-04-22T10:45:56.000Z (7 months ago)
- Last Synced: 2024-04-22T11:50:15.922Z (7 months ago)
- Topics: hacktoberfest
- Language: C
- Homepage:
- Size: 1.04 MB
- Stars: 54
- Watchers: 27
- Forks: 97
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# rcutils: ROS 2 C Utilities data structures
`rcutils` is a C API consisting of macros, functions, and data structures used through out the ROS 2 code base.
## Quality Declaration
This package claims to be in the **Quality Level 1** category, see the [Quality Declaration](./QUALITY_DECLARATION.md) for more details.
## API
The API is a combination of parts:
- Allocator concept, used to inject the allocating and deallocating methods into a function or type.
- rcutils_allocator_t
- rcutils/allocator.h
- Command line interface utilities:
- rcutils/cmdline_parser.h
- Utilities for setting error states (error message, file, and line number) like `strerror` for `errno`:
- rcutils/error_handling.h
- Some basic filesystem utilities like checking for path existence, getting the cwd, etc...:
- rcutils/filesystem.h
- A C string find method:
- rcutils_find()
- rcutils_find_last()
- rcutils/find.h
- A convenient string formatting function, which takes a custom allocator:
- rcutils_format_string()
- rcutils/format_string.h
- Functions for interfacing with process environment variables:
- rcutils_get_env()
- rcutils_get_home_dir()
- rcutils_set_env()
- rcutils/env.h
- Extensible logging macros:
- Some examples (not exhaustive):
- RCUTILS_LOG_DEBUG()
- RCUTILS_LOG_INFO_NAMED()
- RCUTILS_LOG_WARN_ONCE()
- RCUTILS_LOG_ERROR_SKIPFIRST_NAMED()
- rcutils/logging_macros.h
- rcutils/logging.h
- Some basic utilities to load, unload and get symbols from shared libraries at run-time.
- rcutils/shared_library.h
- A string replacement function which takes an allocator, based on http://creativeandcritical.net/str-replace-c:
- rcutils_repl_str()
- rcutils/repl_str.h
- String splitting functions which take a custom allocator:
- rcutils_split()
- rcutils_split_last()
- rcutils/split.h
- A version of `strdup` which takes an allocator:
- rcutils_strdup()
- rcutils/strdup.h
- Portable implementations of "get system time" and "get steady time":
- rcutils_system_time_now()
- rcutils_steady_time_now()
- rcutils/time.h
- Some useful data structures:
- A "string array" data structure (analogous to `std::vector`):
- rcutils_string_array_t
- rcutils/types/string_array.h
- A "string-string map" data structure (analogous to `std::map`)
- rcutils_string_map_t
- rcutils/types/string_map.h
- Macros for controlling symbol visibility and linkage for this library:
- rcutils/visibility_control.h