stage4/stage4.hh
changeset 267 0a1204bcc9af
parent 210 8387cac2aba6
child 279 c0453b7f99df
--- a/stage4/stage4.hh	Fri Apr 01 12:19:32 2011 +0100
+++ b/stage4/stage4.hh	Mon Apr 04 10:42:03 2011 +0100
@@ -1,21 +1,28 @@
 /*
- * (c) 2003 Mario de Sousa
+ *  matiec - a compiler for the programming languages defined in IEC 61131-3
  *
- * Offered to the public under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
+ *  Copyright (C) 2003-2011  Mario de Sousa (msousa@fe.up.pt)
  *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
- * Public License for more details.
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
  *
  * This code is made available on the understanding that it will not be
  * used in safety-critical situations without a full and competent review.
  */
 
 /*
- * An IEC 61131-3 IL and ST compiler.
+ * An IEC 61131-3 compiler.
  *
  * Based on the
  * FINAL DRAFT - IEC 61131-3, 2nd Ed. (2001-12-10)
@@ -41,6 +48,9 @@
     stage4out_c(const char *dir, const char *radix, const char *extension, std::string indent_level = "  ");
     ~stage4out_c(void);
 
+    void enable_output(void);
+    void disable_output(void);
+
     void indent_right(void);
     void indent_left(void);
 
@@ -62,6 +72,13 @@
   protected:
     std::ostream *out;
     std::fstream *m_file;
+    
+    /* A flag to tell whether to really print to the file, or to ignore any request to print to the file */
+    /* This is used to implement the no_code_generation pragmas, that lets the user tell the compiler
+     * when to switch on and off the code generation, without stoping the lexical, syntatical, and
+     * semantic analysers from analysing the code.
+     */
+    bool allow_output;
 
 };