.. _program_listing_file_include_rcutils_allocator.h: Program Listing for File allocator.h ==================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/rcutils/allocator.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2015 Open Source Robotics Foundation, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef RCUTILS__ALLOCATOR_H_ #define RCUTILS__ALLOCATOR_H_ #ifdef __cplusplus extern "C" { #endif #include #include #include "rcutils/macros.h" #include "rcutils/types/rcutils_ret.h" #include "rcutils/visibility_control.h" typedef struct rcutils_allocator_s { void * (*allocate)(size_t size, void * state); void (* deallocate)(void * pointer, void * state); void * (*reallocate)(void * pointer, size_t size, void * state); void * (*zero_allocate)(size_t number_of_elements, size_t size_of_element, void * state); void * state; } rcutils_allocator_t; RCUTILS_PUBLIC RCUTILS_WARN_UNUSED rcutils_allocator_t rcutils_get_zero_initialized_allocator(void); RCUTILS_PUBLIC RCUTILS_WARN_UNUSED rcutils_allocator_t rcutils_get_default_allocator(void); RCUTILS_PUBLIC RCUTILS_WARN_UNUSED bool rcutils_allocator_is_valid(const rcutils_allocator_t * allocator); #define RCUTILS_CHECK_ALLOCATOR(allocator, fail_statement) \ if (!rcutils_allocator_is_valid(allocator)) { \ fail_statement; \ } #define RCUTILS_CHECK_ALLOCATOR_WITH_MSG(allocator, msg, fail_statement) \ if (!rcutils_allocator_is_valid(allocator)) { \ RCUTILS_SET_ERROR_MSG(msg); \ fail_statement; \ } RCUTILS_PUBLIC RCUTILS_WARN_UNUSED void * rcutils_reallocf(void * pointer, size_t size, rcutils_allocator_t * allocator); #ifdef __cplusplus } #endif #endif // RCUTILS__ALLOCATOR_H_