summaryrefslogtreecommitdiff
path: root/include/CommonAPI/Deployment.hpp
diff options
context:
space:
mode:
authorJürgen Gehring <juergen.gehring@bmw.de>2015-06-11 06:57:47 -0700
committerJürgen Gehring <juergen.gehring@bmw.de>2015-06-11 06:57:47 -0700
commit6c463fcc3dcee619925f08ea09e19a86b9e581cc (patch)
tree17e765e0623c58778150605d1cd0340c658ce6ab /include/CommonAPI/Deployment.hpp
parent1d83eb38e546e0165f1ad6821f04445b2b9b19d2 (diff)
downloadgenivi-common-api-runtime-6c463fcc3dcee619925f08ea09e19a86b9e581cc.tar.gz
CommonAPI 3.1.1
Diffstat (limited to 'include/CommonAPI/Deployment.hpp')
-rw-r--r--include/CommonAPI/Deployment.hpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/include/CommonAPI/Deployment.hpp b/include/CommonAPI/Deployment.hpp
new file mode 100644
index 0000000..db2a914
--- /dev/null
+++ b/include/CommonAPI/Deployment.hpp
@@ -0,0 +1,75 @@
+// Copyright (C) 2014-2015 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#if !defined (COMMONAPI_INTERNAL_COMPILATION)
+#error "Only <CommonAPI/CommonAPI.hpp> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef COMMONAPI_DEPLOYMENT_HPP_
+#define COMMONAPI_DEPLOYMENT_HPP_
+
+#include <tuple>
+
+namespace CommonAPI {
+// The binding-specific deployment parameters should be
+// defined like this:
+//
+// struct BindingUInt16Deployment : CommonAPI::Deployment<> {
+// // Binding-specific bool deployment parameters
+// };
+//
+// struct BindingStringDeployment : CommonAPI::Deployment<> {
+// // Binding-specific String deployment parameters
+// };
+//
+// template<typename... _Types>
+// struct BindingStructDeployment
+// : CommonAPI::Deployment<_Types...> {
+// BindingStructDeployment(<SPECIFIC PARAMETERS>, _Types... t)
+// : CommonAPI::Deployment<_Types...>(t),
+// <SPECIFIC INITIALIZERS> {};
+//
+// // Binding-specific struct deployment parameters
+// };
+//
+// The generated code needs to use these definitions to
+// provide the deployment informations for the actual data.
+// E.g., for struct consisting of a boolean and a string
+// value, it needs to generate:
+//
+// CommonAPI::BindingStructDeployment<
+// CommonAPI::BindingBoolDeployment,
+// CommonAPI::BindingStringDeployment
+// > itsDeployment(<PARAMS);
+
+struct EmptyDeployment {};
+
+template<typename _ElementDepl>
+struct ArrayDeployment {
+ ArrayDeployment(_ElementDepl *_elementDepl)
+ : elementDepl_(_elementDepl) {}
+
+ _ElementDepl *elementDepl_;
+};
+
+template<typename _KeyDepl, typename _ValueDepl>
+struct MapDeployment {
+ MapDeployment(_KeyDepl *_key, _ValueDepl *_value)
+ : key_(_key), value_(_value) {}
+
+ const _KeyDepl *key_;
+ const _ValueDepl *value_;
+};
+
+// The following shall be used as a base for structure/variant deployments.
+template<typename... _Types>
+struct Deployment {
+ Deployment(_Types*... _values) : values_(_values...) {}
+ std::tuple<_Types*...> values_;
+};
+
+} // namespace CommonAPI
+
+#endif // COMMONAPI_DEPLOYABLE_HPP_