QuISP
Loading...
Searching...
No Matches
Clause.h
Go to the documentation of this file.
1#pragma once
2#include <nlohmann/json.hpp>
3
4#include "modules/QNIC.h"
5
7using json = nlohmann::json;
8
9namespace quisp::rules {
10
11class Clause {
12 public:
13 Clause() {}
14 Clause(int partner_addr) : partner_address(partner_addr){};
15 virtual ~Clause(){};
16 std::string name = "";
18 virtual json serialize_json() = 0;
19 virtual void deserialize_json(json serialized) = 0;
20};
21
23 public:
24 EnoughResourceConditionClause(json serialized) { deserialize_json(serialized); }
25 EnoughResourceConditionClause(int num_resources, int partner_addr);
26 const std::string name = "enough_resource";
28 json serialize_json() override;
29 void deserialize_json(json serialized) override;
30};
31
33 public:
34 MeasureCountConditionClause(json serialized) { deserialize_json(serialized); }
35 MeasureCountConditionClause(int num_measure, int partner_addr);
36 const std::string name = "measure_count";
38 json serialize_json() override;
39 void deserialize_json(json serialized) override;
40};
41
43 public:
44 FidelityConditionClause(json serialized) { deserialize_json(serialized); }
45 FidelityConditionClause(double required_fidelity, int partner_addr);
46 const std::string name = "fidelity";
48 json serialize_json() override;
49 void deserialize_json(json serialized) override;
50};
51
53 public:
54 PurificationCorrelationClause(json serialized) { deserialize_json(serialized); }
56 const std::string name = "purification_correlation";
58 json serialize_json() override;
59 void deserialize_json(json serialized) override;
60};
61
63 public:
64 SwappingCorrectionClause(json serialized) { deserialize_json(serialized); }
65 SwappingCorrectionClause(int swapper_address, int shared_rule_tag);
66 const std::string name = "swapping_correction";
68 json serialize_json() override;
69 void deserialize_json(json serialized) override;
70};
71
72} // namespace quisp::rules
QNIC.
Definition Clause.h:11
virtual void deserialize_json(json serialized)=0
std::string name
Definition Clause.h:16
int partner_address
Definition Clause.h:17
virtual json serialize_json()=0
Clause(int partner_addr)
Definition Clause.h:14
Clause()
Definition Clause.h:13
virtual ~Clause()
Definition Clause.h:15
const std::string name
Definition Clause.h:26
json serialize_json() override
Definition Clause.cc:7
EnoughResourceConditionClause(json serialized)
Definition Clause.h:24
int num_resource
Definition Clause.h:27
void deserialize_json(json serialized) override
Definition Clause.cc:15
double required_fidelity
Definition Clause.h:47
const std::string name
Definition Clause.h:46
json serialize_json() override
Definition Clause.cc:45
void deserialize_json(json serialized) override
Definition Clause.cc:53
FidelityConditionClause(json serialized)
Definition Clause.h:44
json serialize_json() override
Definition Clause.cc:26
void deserialize_json(json serialized) override
Definition Clause.cc:34
MeasureCountConditionClause(json serialized)
Definition Clause.h:34
int num_measure
Definition Clause.h:37
const std::string name
Definition Clause.h:36
const std::string name
Definition Clause.h:56
PurificationCorrelationClause(json serialized)
Definition Clause.h:54
void deserialize_json(json serialized) override
Definition Clause.cc:72
json serialize_json() override
Definition Clause.cc:64
int shared_rule_tag
Definition Clause.h:57
const std::string name
Definition Clause.h:66
json serialize_json() override
Definition Clause.cc:82
void deserialize_json(json serialized) override
Definition Clause.cc:90
SwappingCorrectionClause(json serialized)
Definition Clause.h:64
int shared_rule_tag
Definition Clause.h:67
QNIC_type
Definition QNIC.h:18
Definition Action.cc:3