OSDN Git Service

Initial Commit
[qcad/qcad.git] / circuits / QCircuit.cpp
1 //---------------------------------------------------------------------------\r
2 // Class for Circuits\r
3 //---------------------------------------------------------------------------\r
4 #include "QCircuit.h"\r
5 #include "QCircuitAll.h"\r
6 \r
7 //---------------------------------------------------------------------------\r
8 QCircuit::QCircuit(int x,int y) {\r
9   X = x;\r
10   Y = y;\r
11 }\r
12 //---------------------------------------------------------------------------\r
13 int\r
14 QCircuit::GetType(string Type) {\r
15 \r
16   if (Type =="QBitBox") {\r
17     return QC_BITBOX;\r
18   } else if (Type =="QWalsh") {\r
19     return QC_WALSH;\r
20   } else if (Type == "QCNot") {\r
21     return QC_CNOT;\r
22   } else if (Type == "QCCNot") {\r
23     return QC_CCNOT;\r
24   } else if (Type == "QMeasure") {\r
25     return QC_MEASURE;\r
26   } else if (Type == "QTextBox") {\r
27     return QC_TEXTBOX;\r
28   } else if (Type == "QPauliX") {\r
29     return QC_PAULIX;\r
30   } else if (Type == "QPauliY") {\r
31     return QC_PAULIY;\r
32   } else if (Type == "QPauliZ") {\r
33     return QC_PAULIZ;\r
34   } else if (Type == "QSwap") {\r
35     return QC_SWAP;\r
36   } else if (Type == "QCRot") {\r
37     return QC_CROT;\r
38   } else if (Type == "QNOT") {\r
39     return QC_NOT;\r
40   } else if (Type == "QRot") {\r
41     return QC_ROT;\r
42   }\r
43   return -1;\r
44 }\r
45 //---------------------------------------------------------------------------\r
46 const char*\r
47 QCircuit::GetTypeStr(int Type) {\r
48   switch (Type) {\r
49   case QC_BITBOX:\r
50     return "QBitbox";\r
51 \r
52   case QC_WALSH:\r
53     return "QWalsh";\r
54 \r
55   case QC_CNOT:\r
56     return "QCNot";\r
57 \r
58   case QC_CCNOT:\r
59     return "QCCNot";\r
60 \r
61   case QC_MEASURE:\r
62     return "QMesure";\r
63 \r
64   case QC_TEXTBOX:\r
65     return "QTextBox";\r
66 \r
67   case QC_PAULIX:\r
68     return "QPauliX";\r
69 \r
70   case QC_PAULIY:\r
71     return "QPauliY";\r
72 \r
73   case QC_PAULIZ:\r
74     return "QPauliZ";\r
75 \r
76   case QC_SWAP:\r
77     return "QSwap";\r
78 \r
79   case QC_CROT:\r
80     return "QCRot";\r
81   }\r
82   return "";\r
83 }\r
84 //---------------------------------------------------------------------------\r
85 QCircuit*\r
86 QCircuit::Create(string TypeStr, int x, int y, string Param) {\r
87 \r
88   QCircuit *qc;\r
89   int Type = GetType(TypeStr);\r
90   switch (Type) {\r
91 \r
92   case QC_BITBOX:\r
93     return new QBitbox(x,y,Param);\r
94 \r
95   case QC_WALSH:\r
96     return new QWalsh(x,y);\r
97 \r
98   case QC_MEASURE:\r
99     return new QMeasure(x,y);\r
100 \r
101   case QC_PAULIX:\r
102     return new QPauliX(x,y);\r
103 \r
104   case QC_PAULIY:\r
105     return new QPauliY(x,y);\r
106 \r
107   case QC_PAULIZ:\r
108     return new QPauliZ(x,y);\r
109 \r
110   case QC_ROT:\r
111     return new QRot(x,y,Param);\r
112 \r
113   case QC_NOT:\r
114     return new QNot(x, y);\r
115 \r
116   case QC_CNOT:\r
117     return new QCNot(x,y,Param);\r
118 \r
119   case QC_CCNOT:\r
120     return new QCCNot(x,y,Param);\r
121 \r
122   case QC_SWAP:\r
123     return new QSwap(x,y, Param);\r
124 \r
125   case QC_CROT:\r
126     return new QCRot(x,y, Param);\r
127   }\r
128   return NULL;\r
129 }\r
130 //---------------------------------------------------------------------------\r
131 string\r
132 QCircuit::GetSaveText(void) {\r
133   ostringstream os;\r
134   os << X << "," << Y << "," << Name << ",\""<< GetParam() << "\"";\r
135   return os.str();\r
136 }\r
137 //---------------------------------------------------------------------------\r
138 \r