YAMI4 Core
parameter_entry.h
1 // Copyright Maciej Sobczak 2008-2019.
2 // This file is part of YAMI4.
3 //
4 // YAMI4 is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // YAMI4 is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with YAMI4. If not, see <http://www.gnu.org/licenses/>.
16 
17 #ifndef YAMICORE_PARAMETER_ENTRY_H_INCLUDED
18 #define YAMICORE_PARAMETER_ENTRY_H_INCLUDED
19 
20 #include "core.h"
21 #include "dll.h"
22 #include "parameter_type.h"
23 #include <cstddef>
24 
25 namespace yami
26 {
27 
28 namespace details
29 {
30 struct entry;
31 } // namespace details
32 
33 namespace core
34 {
35 
36 class parameters;
37 
42 class DLL parameter_entry
43 {
44 public:
50  parameter_type type() const;
51 
58  void get_name(const char * & name, std::size_t & name_length) const;
59 
68  result get_boolean(bool & value) const;
69 
78  result get_integer(int & value) const;
79 
88  result get_long_long(long long & value) const;
89 
98  result get_double_float(double & value) const;
99 
109  result get_string(const char * & value, std::size_t & value_length) const;
110 
120  result get_binary(const void * & value, std::size_t & value_length) const;
121 
130  result get_nested_parameters(parameters * & params) const;
131 
144  result get_boolean_array(
145  bool * & values, std::size_t & array_length) const;
146 
159  result get_integer_array(
160  int * & values, std::size_t & array_length) const;
161 
174  result get_long_long_array(
175  long long * & values, std::size_t & array_length) const;
176 
189  result get_double_float_array(
190  double * & values, std::size_t & array_length) const;
191 
202  result get_string_array_length(std::size_t & length) const;
203 
217  result get_string_in_array(std::size_t index,
218  const char * & value, std::size_t & value_length) const;
219 
230  result get_binary_array_length(std::size_t & length) const;
231 
245  result get_binary_in_array(std::size_t index,
246  const void * & value, std::size_t & value_length) const;
247 
248 private:
249  friend class parameters;
250  friend class parameter_iterator;
251 
252  details::entry * e_;
253 };
254 
255 } // namespace core
256 
257 } // namespace yami
258 
259 #endif // YAMICORE_PARAMETER_ENTRY_H_INCLUDED
Collection of message parameters.
Definition: parameters.h:91
parameter_type
Type of parameter entry.
Definition: parameter_type.h:27
Namespace devoted for everything related to YAMI4.
Definition: agent.h:25
Iterator to parameter entries.
Definition: parameter_iterator.h:46
Read-only view on the parameters entry.
Definition: parameter_entry.h:42
result
General type for reporting success and error states.
Definition: core.h:32