OSDN Git Service

Initial Commit
[qcad/qcad.git] / compiler / QCompilerCode.h
1 //----------------------------------------------------------------------------\r
2 //  CompilerCode.h\r
3 //  Compile intermediate code into native C++ code\r
4 //  $Date: 2003/02/20 00:24:16 $\r
5 //  $Revision: 1.3 $\r
6 //----------------------------------------------------------------------------\r
7 #ifndef QCOMPILERCODE_H\r
8 #define QCOMPILERCODE_H\r
9 \r
10 #include <iostream>\r
11 #include <string>\r
12 #include <vector>\r
13 #include "QCompiler.h"\r
14 #include "QParseInfo.h"\r
15 \r
16 class QCompilerCode : public QCompiler {\r
17 public:\r
18   QCompilerCode(const char * const = "qcpp_result.qdt");\r
19   QCompilerCode(std::istream &is, const char * const = "qcpp_result.qdt");\r
20   virtual ~QCompilerCode();\r
21   void SaveToStream(std::ostream &os);\r
22   void SaveToFile(const char * const filename);\r
23 \r
24 protected:\r
25   virtual bool CompileOneLine(const QParseInfo &pinfo);\r
26   virtual void CatchError(const QParseInfo &pinfo, const int at);\r
27 \r
28   // Utility functions\r
29   void WriteHeader(std::ostream &os);\r
30   void WriteQBits(std::ostream &os, const int &t1);\r
31   void WriteFooter(std::ostream &os);\r
32   void WriteCNot  (std::ostream &os, const int &t1, const int &c1);\r
33   void WriteCCNot (std::ostream &os, const int &t1, const int &c1, const int &c2);\r
34   void WriteCRot  (std::ostream &os, const int &t1, const int &c1, const double rad);\r
35   void WriteHadam (std::ostream &os, const int &t1);\r
36   //TODO: additional controls\r
37 \r
38   // Member valuables\r
39   std::string mTargetName;\r
40   std::vector<QParseInfo> mQParseInfo;\r
41 };\r
42 \r
43 #endif //QCOMPILERCODE_H\r