File indexing completed on 2025-09-18 08:33:42
0001
0002
0003 #ifndef ACTSPODIOEDM_MutableBoundParameters_H
0004 #define ACTSPODIOEDM_MutableBoundParameters_H
0005
0006 #include "ActsPodioEdm/BoundParametersObj.h"
0007
0008
0009 #include "ActsPodioEdm/BoundParameters.h"
0010 #include "ActsPodioEdm/BoundParametersInfo.h"
0011
0012 #include <cstdint>
0013
0014 #include "podio/utilities/MaybeSharedPtr.h"
0015
0016 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0017 #include "nlohmann/json_fwd.hpp"
0018 #endif
0019
0020
0021 namespace ActsPodioEdm {
0022 class BoundParametersCollection;
0023 }
0024
0025 namespace ActsPodioEdm {
0026
0027
0028
0029
0030
0031 class MutableBoundParameters {
0032 friend class BoundParametersCollection;
0033 friend class BoundParametersMutableCollectionIterator;
0034 friend class BoundParameters;
0035
0036 public:
0037 using object_type = BoundParameters;
0038 using collection_type = BoundParametersCollection;
0039
0040
0041 MutableBoundParameters();
0042
0043
0044 MutableBoundParameters(const ActsPodioEdm::BoundParametersInfo& data);
0045
0046
0047 MutableBoundParameters(const MutableBoundParameters& other) = default;
0048
0049
0050 MutableBoundParameters& operator=(
0051 MutableBoundParameters
0052 other) &;
0053 MutableBoundParameters& operator=(MutableBoundParameters other) && =
0054 delete;
0055
0056
0057
0058 MutableBoundParameters clone(bool cloneRelations = true) const;
0059
0060
0061 ~MutableBoundParameters() = default;
0062
0063 public:
0064
0065 const ActsPodioEdm::BoundParametersInfo& getData() const;
0066
0067
0068 void setData(const ActsPodioEdm::BoundParametersInfo& data);
0069
0070 ActsPodioEdm::BoundParametersInfo& getData();
0071
0072 [[deprecated("use getData instead")]]
0073 ActsPodioEdm::BoundParametersInfo& data();
0074
0075
0076 bool isAvailable() const;
0077
0078 void unlink() {
0079 m_obj = podio::utils::MaybeSharedPtr<BoundParametersObj>{nullptr};
0080 }
0081
0082 bool operator==(const MutableBoundParameters& other) const {
0083 return m_obj == other.m_obj;
0084 }
0085 bool operator==(const BoundParameters& other) const;
0086
0087 bool operator!=(const MutableBoundParameters& other) const {
0088 return !(*this == other);
0089 }
0090 bool operator!=(const BoundParameters& other) const {
0091 return !(*this == other);
0092 }
0093
0094
0095 bool operator<(const MutableBoundParameters& other) const {
0096 return podio::detail::getOrderKey(*this) <
0097 podio::detail::getOrderKey(other);
0098 }
0099
0100 podio::ObjectID id() const { return getObjectID(); }
0101
0102 const podio::ObjectID getObjectID() const;
0103
0104 friend std::hash<MutableBoundParameters>;
0105
0106 friend void swap(MutableBoundParameters& a, MutableBoundParameters& b) {
0107 using std::swap;
0108 swap(a.m_obj, b.m_obj);
0109 }
0110
0111 private:
0112
0113 explicit MutableBoundParameters(
0114 podio::utils::MaybeSharedPtr<BoundParametersObj> obj);
0115
0116 podio::utils::MaybeSharedPtr<BoundParametersObj> m_obj{nullptr};
0117 };
0118
0119 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0120 void to_json(nlohmann::json& j, const MutableBoundParameters& value);
0121 #endif
0122
0123 }
0124
0125 template <>
0126 struct std::hash<ActsPodioEdm::MutableBoundParameters> {
0127 std::size_t operator()(
0128 const ActsPodioEdm::MutableBoundParameters& obj) const {
0129 return std::hash<ActsPodioEdm::BoundParametersObj*>{}(obj.m_obj.get());
0130 }
0131 };
0132
0133 #endif