![]() |
Q2NS dev
ns-3 module
|
QMap wrapper that conditionally applies another QMap. More...
#include <q2ns-qmap.h>
Public Types | |
| using | Condition = std::function< bool(const std::shared_ptr< Qubit > &, const QMapContext &)> |
| Predicate type controlling whether the wrapped map is applied. | |
Public Member Functions | |
| void | SetQMap (ns3::Ptr< QMap > qmap) |
| Set the wrapped QMap. | |
| void | SetCondition (Condition pred) |
| Set the condition predicate. | |
| QMapInstance | Sample (ns3::Ptr< ns3::UniformRandomVariable > u, const QMapContext &ctx=QMapContext{}) const override |
| Sample a per-transmission QMapInstance. | |
Public Member Functions inherited from q2ns::QMap | |
| ~QMap () override=default | |
| Virtual destructor. | |
Static Public Member Functions | |
| static ns3::TypeId | GetTypeId () |
| Get the ns-3 TypeId. | |
Static Public Member Functions inherited from q2ns::QMap | |
| static ns3::TypeId | GetTypeId () |
| Get the ns-3 TypeId. | |
| static ns3::Ptr< QMap > | Compose (const ns3::Ptr< QMap > &a, const ns3::Ptr< QMap > &b) |
| Compose two QMaps into one sequential composite QMap. | |
| static ns3::Ptr< QMap > | Compose (const std::vector< ns3::Ptr< QMap > > &maps) |
| Compose a sequence of QMaps into one sequential composite QMap. | |
| static ns3::Ptr< QMap > | FromLambda (std::function< void(QNode &, std::shared_ptr< Qubit > &)> f) |
| Build a QMap from a simple lambda. | |
| static ns3::Ptr< QMap > | FromLambda (std::function< void(QNode &, std::shared_ptr< Qubit > &, ns3::Ptr< ns3::UniformRandomVariable >, const QMapContext &)> f) |
| Build a QMap from an advanced lambda. | |
| static double | RateToProb (double rate_per_s, const ns3::Time &t) |
| Convert a Poisson rate and elapsed time into an event probability. | |
Private Attributes | |
| ns3::Ptr< QMap > | qmap_ |
| Wrapped QMap. | |
| Condition | cond_ |
| Application predicate. | |
Additional Inherited Members | |
Protected Member Functions inherited from q2ns::QMap | |
| double | GetProb_ (const QMapContext &ctx) const |
| Return the effective application probability for this transmission. | |
| bool | Bernoulli_ (ns3::Ptr< ns3::UniformRandomVariable > u, const QMapContext &ctx) const |
| Perform one Bernoulli trial using the effective probability. | |
Static Protected Member Functions inherited from q2ns::QMap | |
| static void | SetLost_ (Qubit &q) |
| Mark a qubit lost through the standard registry-backed location path. | |
Protected Attributes inherited from q2ns::QMap | |
| double | p_ = 0.0 |
| Direct per-transmission probability. | |
| double | rate_ = 0.0 |
| Poisson event rate in 1/s. Overrides p_ when positive. | |
QMap wrapper that conditionally applies another QMap.
The wrapped QMap is sampled normally, but its sampled instance is only executed if the configured predicate returns true.
Definition at line 287 of file q2ns-qmap.h.
| using q2ns::ConditionalQMap::Condition = std::function<bool(const std::shared_ptr<Qubit>&, const QMapContext&)> |
Predicate type controlling whether the wrapped map is applied.
Definition at line 292 of file q2ns-qmap.h.
|
static |
Get the ns-3 TypeId.
Definition at line 210 of file q2ns-qmap.cc.
|
overridevirtual |
Sample a per-transmission QMapInstance.
| u | Uniform random source. |
| ctx | Per-transmission context. |
Implements q2ns::QMap.
Definition at line 232 of file q2ns-qmap.cc.
| void q2ns::ConditionalQMap::SetCondition | ( | Condition | pred | ) |
Set the condition predicate.
| pred | Predicate controlling application. |
Definition at line 226 of file q2ns-qmap.cc.
References cond_.
| void q2ns::ConditionalQMap::SetQMap | ( | ns3::Ptr< QMap > | qmap | ) |
Set the wrapped QMap.
| qmap | Wrapped QMap. |
Definition at line 220 of file q2ns-qmap.cc.
References qmap_.
|
private |
Application predicate.
Definition at line 323 of file q2ns-qmap.h.
Referenced by Sample(), and SetCondition().
|
private |