OSDN Git Service

Initial Commit
[qcad/qcad.git] / circuits / QCircuit.h
1 //---------------------------------------------------------------------------\r
2 // Class for Circuits\r
3 //---------------------------------------------------------------------------\r
4 #ifndef QCircuitH\r
5 #define QCircuitH\r
6 \r
7 //---------------------------------------------------------------------------\r
8 #include <vector>\r
9 #include <map>\r
10 #include <string>\r
11 #include "QBits.h"\r
12 #include "QDraw.h"\r
13 #include "QPSDraw.h"\r
14 //---------------------------------------------------------------------------\r
15 \r
16 enum QC_TYPES{\r
17   QC_NULL = -1, // No circuit\r
18   QC_BITBOX  = 0,\r
19   QC_WALSH   = 1,\r
20   QC_CNOT    = 2,\r
21   QC_CCNOT   = 3,\r
22   QC_TEXTBOX = 4,\r
23   QC_MEASURE = 5,\r
24   QC_PAULIX  = 6,\r
25   QC_PAULIY  = 7,\r
26   QC_PAULIZ  = 8,\r
27   QC_SWAP    = 9,\r
28   QC_CROT    = 10,\r
29   QC_NOT     = 11,\r
30   QC_ROT     = 12\r
31 };\r
32 \r
33 \r
34 class QCircuit {\r
35 \r
36 \r
37 private:\r
38 \r
39 protected:\r
40   int X,Y;\r
41   string Name;\r
42 \r
43 public:\r
44 \r
45   QCircuit(int x, int y);\r
46   static QCircuit* Create(string TypeStr, int x, int y, string Param);\r
47 \r
48   int  GetX(void)  { return X; }\r
49   int  GetY(void)  { return Y; }\r
50   void SetX(int x) { X = x;    }\r
51   void SetY(int y) { Y = y;    }\r
52 \r
53   static int        GetType(string Type);\r
54   static const char* GetTypeStr(int Type);\r
55 \r
56   virtual int        GetType(void) { return QC_NULL; }\r
57   virtual string GetTypeStr(void) { return ""; }\r
58 \r
59   virtual void Draw(QDraw *qDraw) {}\r
60   virtual string GetCalcText(void) {return "";}\r
61   virtual void DrawPS(QPSDraw *psDraw) {}\r
62   virtual string GetSaveText(void);\r
63   virtual string GetParam(void) {return "";}\r
64   virtual void ShowParamForm(void) {}\r
65   virtual void Reverse(int y) {}\r
66   virtual TRect GetOccupiedRect() {TRect rc; return rc;}\r
67   virtual QCircuit *Clone() {QCircuit *qc = new QCircuit(X,Y); return qc;}\r
68 };\r
69 \r
70 typedef vector<QCircuit *> QList;\r
71 \r
72 //---------------------------------------------------------------------------\r
73 #endif //QCircuitH\r