library.h
Go to the documentation of this file.
1/************************************************************************************
2* *
3* Copyright (c) 2014 - 2018 Axel Menzel <info@rttr.org> *
4* *
5* This file is part of RTTR (Run Time Type Reflection) *
6* License: MIT License *
7* *
8* Permission is hereby granted, free of charge, to any person obtaining *
9* a copy of this software and associated documentation files (the "Software"), *
10* to deal in the Software without restriction, including without limitation *
11* the rights to use, copy, modify, merge, publish, distribute, sublicense, *
12* and/or sell copies of the Software, and to permit persons to whom the *
13* Software is furnished to do so, subject to the following conditions: *
14* *
15* The above copyright notice and this permission notice shall be included in *
16* all copies or substantial portions of the Software. *
17* *
18* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
19* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
20* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
21* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
22* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, *
23* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE *
24* SOFTWARE. *
25* *
26*************************************************************************************/
27
28#ifndef RTTR_LIBRARY_H_
29#define RTTR_LIBRARY_H_
30
31#include "rttr/detail/base/core_prerequisites.h"
32
33#include "rttr/type.h"
34
35#include <memory>
36
37namespace rttr
38{
39namespace detail
40{
41class library_private;
42} // end namespace detail
43
100{
101public:
102
112
122
123 library(const library&) = delete;
124 library& operator=(const library&) = delete;
125
134 bool load();
135
148 bool unload();
149
158
175
184 string_view get_error_string() const RTTR_NOEXCEPT;
185
194
202 array_range<property> get_global_properties() const RTTR_NOEXCEPT;
203
211 array_range<method> get_global_methods() const RTTR_NOEXCEPT;
212
213private:
214 std::shared_ptr<detail::library_private> m_pimpl;
215 bool m_is_loaded;
216};
217
218} // end namespace rttr
219
220#endif // RTTR_LIBRARY_H_
The array_range class provides a view into an underlying data structure with lower and upper limits.
Definition array_range.h:64
The library class provides a cross platform way of explicit loading shared objects (....
Definition library.h:100
bool is_loaded() const noexcept
Returns true if the library is loaded; otherwise returns false.
library(const library &)=delete
bool unload()
Unloads the library.
library & operator=(const library &)=delete
bool load()
Loads the library and returns true; otherwise false.
library(string_view file_name, string_view version=string_view())
Constructs a library instance that will load the given library `file_name` and an optional version nu...
~library()
Destroys the library instance.
The method class provides several meta information about a method and can be invoked.
Definition method.h:122
The property class provides several meta information about a property and gives read/write access to ...
Definition property.h:118
The type class holds the type information for any arbitrary object.
Definition type.h:178
Definition access_levels.h:34
basic_string_view< char > string_view
A class to hold a reference to a continuous sequence of char objects.
Definition string_view.h:493