Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2007-2024 German Aerospace Center (DLR) and others.
4 : // This program and the accompanying materials are made available under the
5 : // terms of the Eclipse Public License 2.0 which is available at
6 : // https://www.eclipse.org/legal/epl-2.0/
7 : // This Source Code may also be made available under the following Secondary
8 : // Licenses when the conditions for such availability set forth in the Eclipse
9 : // Public License 2.0 are satisfied: GNU General Public License, version 2
10 : // or later which is available at
11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 : /****************************************************************************/
14 : /// @file MSTransportableDevice.h
15 : /// @author Michael Behrisch
16 : /// @author Daniel Krajzewicz
17 : /// @author Jakob Erdmann
18 : /// @date Tue, 04 Dec 2007
19 : ///
20 : // Abstract in-person device
21 : /****************************************************************************/
22 : #pragma once
23 : #include <config.h>
24 :
25 : #include <string>
26 : #include <vector>
27 : #include <map>
28 : #include <set>
29 : #include <random>
30 : #include "MSDevice.h"
31 :
32 :
33 : // ===========================================================================
34 : // class declarations
35 : // ===========================================================================
36 : class MSTransportable;
37 :
38 :
39 : // ===========================================================================
40 : // class definitions
41 : // ===========================================================================
42 : /**
43 : * @class MSTransportableDevice
44 : * @brief Abstract in-person device
45 : *
46 : * The MSTransportableDevice-interface brings the following interfaces to a vehicle that
47 : * may be overwritten by real devices:
48 : * @arg Retrieval of the person that holds the device
49 : */
50 : class MSTransportableDevice : public MSDevice, public MSMoveReminder {
51 : public:
52 : /** @brief Constructor
53 : *
54 : * @param[in] holder The person that holds this device
55 : * @param[in] id The ID of the device
56 : */
57 2260 : MSTransportableDevice(MSTransportable& holder, const std::string& id) :
58 2260 : MSDevice(id), MSMoveReminder(id), myHolder(holder) {
59 2260 : }
60 :
61 :
62 : /// @brief Destructor
63 1993 : virtual ~MSTransportableDevice() { }
64 :
65 :
66 : /** @brief Returns the person that holds this device
67 : *
68 : * @return The person that holds this device
69 : */
70 : MSTransportable& getHolder() const {
71 40 : return myHolder;
72 : }
73 :
74 : protected:
75 : /// @brief The person that stores the device
76 : MSTransportable& myHolder;
77 :
78 : private:
79 : /// @brief Invalidated copy constructor.
80 : MSTransportableDevice(const MSTransportableDevice&);
81 :
82 : /// @brief Invalidated assignment operator.
83 : MSTransportableDevice& operator=(const MSTransportableDevice&);
84 :
85 : };
|