solinject  1.0.0
C++17 Dependency Injection header-only library
Configuration.hpp
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-or-later
2 
3 /*
4  * solinject - C++ Dependency Injection header-only library
5  * Copyright (C) 2022 SemperSolus0x3d
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19  */
20 
22 
23 #pragma once
24 #include <string>
25 #include <vector>
26 #include "ConfigurationItem.hpp"
27 
28 namespace sol::di
29 {
32  {
33  public:
36 
40  m_ConfigurationItems(std::move(items))
41  {
42  }
43 
45  Configuration(const Configuration& other) :
46  m_ConfigurationItems(other.m_ConfigurationItems)
47  {
48  }
49 
52  {
53  swap(*this, other);
54  }
55 
58  {
59  swap(*this, other);
60  return *this;
61  }
62 
64  friend void swap(Configuration& a, Configuration& b)
65  {
66  using std::swap;
67 
68  swap(a.m_ConfigurationItems, b.m_ConfigurationItems);
69  }
70 
74  {
75  return m_ConfigurationItems;
76  }
77 
81  {
82  m_ConfigurationItems.push_back(std::move(item));
83  }
84 
88  {
89  impl::ConcatenateVectors(m_ConfigurationItems, std::move(items));
90  }
91  private:
93  std::vector<ConfigurationItem> m_ConfigurationItems;
94  };
95 }
sol::di::Configuration::operator=
Configuration & operator=(Configuration other) noexcept
Copy-assignment operator.
Definition: Configuration.hpp:57
std::move
T move(T... args)
std::vector
sol::di::Configuration::Configuration
Configuration()
Parameterless constructor.
Definition: Configuration.hpp:35
sol::di::Configuration::AddConfigurationItem
void AddConfigurationItem(ConfigurationItem item)
Adds a configuration item.
Definition: Configuration.hpp:80
sol::di::Configuration::Configuration
Configuration(Configuration &&other) noexcept
Move constructor.
Definition: Configuration.hpp:51
ConfigurationItem.hpp
sol::di::Configuration
DI configuration.
Definition: Configuration.hpp:31
sol::di::ConfigurationItem
DI configuration item.
Definition: ConfigurationItem.hpp:39
sol::di::Configuration::ConfigurationItems
const std::vector< ConfigurationItem > & ConfigurationItems() const
Configuration items property.
Definition: Configuration.hpp:73
std::swap
T swap(T... args)
std
sol::di::Configuration::swap
friend void swap(Configuration &a, Configuration &b)
Swaps two Configuration instances.
Definition: Configuration.hpp:64
sol::di::Configuration::AddConfigurationItems
void AddConfigurationItems(std::vector< ConfigurationItem > items)
Adds configuration items.
Definition: Configuration.hpp:87
sol::di::Configuration::Configuration
Configuration(std::vector< ConfigurationItem > items)
Constructor.
Definition: Configuration.hpp:39
sol::di::Configuration::Configuration
Configuration(const Configuration &other)
Copy constructor.
Definition: Configuration.hpp:45