/* * Copyright 2019 by its authors. See AUTHORS. * * 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 EINA_HH_ #define EINA_HH_ /** * @file * @brief Eina C++ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /** * @page eina_cxx_main Eina C++ (BETA) * * @date 2014 (created) * * @section toc Table of Contents * * @li @ref eina_cxx_main_intro * @li @ref eina_cxx_main_compiling * @li @ref eina_cxx_main_next_steps * * @section eina_cxx_main_intro Introduction * * Eina C++ bindings * @section eina_cxx_main_compiling How to compile * * Eina CXX is a library your application links to. The procedure for this is * very simple. You simply have to compile your application with the * appropriate compiler flags that the @c pkg-config script outputs. For * example: * * Compiling C or C++ files into object files: * * @verbatim gcc -c -o main.o main.c `pkg-config --cflags eina-cxx` @endverbatim * * Linking object files into a binary executable: * * @verbatim gcc -o my_application main.o `pkg-config --libs eina-cxx` @endverbatim * * See @ref pkgconfig * * @section eina_cxx_main_next_steps Next Steps * * After you understood what Eina CXX is and installed it in your system * you should proceed understanding the programming interface. * * Recommended reading: * * @li @ref Eina_Cxx * * @addtogroup Eina_Cxx * @{ */ /** * @defgroup Eina_Cxx Eina C++ * * @defgroup Eina_Cxx_Data_Types_Group Data Types * @ingroup Eina_Cxx * * @defgroup Eina_Cxx_Content_Access_Group Content Access * @ingroup Eina_Cxx_Data_Types_Group * * @defgroup Eina_Cxx_Containers_Group Containers * @ingroup Eina_Cxx_Data_Types_Group * * @defgroup Eina_Cxx_Tools_Group Tools * @ingroup Eina_Cxx * */ namespace efl { namespace eina { /** * @addtogroup Eina_Cxx * * @{ */ /** * @brief Initialize the Eina library. * * Initialize all the Eina modules upon construction and finalize them * upon destruction, using the RAII programming idiom. */ struct eina_init { eina_init() { ::eina_init(); } ~eina_init() { ::eina_shutdown(); } }; /** * @brief Initialize the mutexes of the Eina library. * * Set up all the mutexes in all Eina modules upon construction and * shut them down upon destruction, using the RAII programming idiom. */ struct eina_threads_init { eina_threads_init() { ::eina_threads_init(); } ~eina_threads_init() { ::eina_threads_shutdown(); } }; /** * @} */ } } /** * @} */ #endif