pragma Ada_2012;
pragma Style_Checks (Off);

with Interfaces.C; use Interfaces.C;

package rcl_rcl_h is

  -- Copyright 2014 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.
  --* \mainpage rcl: Common functionality for other ROS Client Libraries
  -- *
  -- * `rcl` consists of functions and structs (pure C) organized into ROS concepts:
  -- *
  -- * - Nodes
  -- *   - rcl/node.h
  -- * - Publisher
  -- *   - rcl/publisher.h
  -- * - Subscription
  -- *   - rcl/subscription.h
  -- * - Service Client
  -- *   - rcl/client.h
  -- * - Service Server
  -- *   - rcl/service.h
  -- * - Timer
  -- *   - rcl/timer.h
  -- *
  -- * There are some functions for working with "Topics" and "Services":
  -- *
  -- * - A function to validate a topic or service name (not necessarily fully qualified):
  -- *   - rcl_validate_topic_name()
  -- *   - rcl/validate_topic_name.h
  -- * - A function to expand a topic or service name to a fully qualified name:
  -- *   - rcl_expand_topic_name()
  -- *   - rcl/expand_topic_name.h
  -- *
  -- * It also has some machinery that is necessary to wait on and act on these concepts:
  -- *
  -- * - Initialization and shutdown management
  -- *   - rcl/init.h
  -- * - Wait sets for waiting on messages/service requests and responses/timers to be ready
  -- *   - rcl/wait.h
  -- * - Guard conditions for waking up wait sets asynchronously
  -- *   - rcl/guard_condition.h
  -- * - Functions for introspecting and getting notified of changes of the ROS graph
  -- *   - rcl/graph.h
  -- *
  -- * Further still there are some useful abstractions and utilities:
  -- *
  -- * - Allocator concept, which can be used to control allocation in `rcl_*` functions
  -- *   - rcl/allocator.h
  -- * - Concept of ROS Time and access to steady and system wall time
  -- *   - rcl/time.h
  -- * - Error handling functionality (C style)
  -- *   - rcl/error_handling.h
  -- * - Macros
  -- *   - rcl/macros.h
  -- * - Return code types
  -- *   - rcl/types.h
  -- * - Macros for controlling symbol visibility on the library
  -- *   - rcl/visibility_control.h
  --  

end rcl_rcl_h;
