|
||
stmtnode.ccGo to the documentation of this file.00001 // $Id: stmtnode.cc,v 1.4 2003/08/07 23:13:12 pnav Exp $ 00002 // ---------------------------------------------------------------------- 00003 // 00004 // C-Breeze 00005 // C Compiler Framework 00006 // 00007 // Copyright (c) 2000 University of Texas at Austin 00008 // 00009 // Samuel Z. Guyer 00010 // Daniel A. Jimenez 00011 // Calvin Lin 00012 // 00013 // Permission is hereby granted, free of charge, to any person 00014 // obtaining a copy of this software and associated documentation 00015 // files (the "Software"), to deal in the Software without 00016 // restriction, including without limitation the rights to use, copy, 00017 // modify, merge, publish, distribute, sublicense, and/or sell copies 00018 // of the Software, and to permit persons to whom the Software is 00019 // furnished to do so, subject to the following conditions: 00020 // 00021 // The above copyright notice and this permission notice shall be 00022 // included in all copies or substantial portions of the Software. 00023 // 00024 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00025 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00026 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 00027 // NONINFRINGEMENT. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT 00028 // AUSTIN BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 00029 // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 00030 // OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00031 // THE SOFTWARE. 00032 // 00033 // We acknowledge the C-to-C Translator from MIT Laboratory for 00034 // Computer Science for inspiring parts of the C-Breeze design. 00035 // 00036 // ---------------------------------------------------------------------- 00037 00038 #include "c_breeze.h" 00039 00040 // -------------------------------------------------------------------- 00041 // Constructors 00042 // -------------------------------------------------------------------- 00043 00044 stmtNode::stmtNode(NodeType typ, const Coord coord) 00045 : Node(typ, coord) 00046 { 00047 if (! CBZ::pragmas.empty()) 00048 _pragmas.splice(_pragmas.begin(), CBZ::pragmas); 00049 } 00050 00051 // ------------------------------------------------------------ 00052 // Output 00053 // ------------------------------------------------------------ 00054 00055 void stmtNode::output(output_context & ct, Node * parent) 00056 { 00057 if (typ() != Block) { 00058 output_comment(ct); 00059 ct.new_line(); 00060 } 00061 00062 output_stmt(ct, parent); 00063 } 00064 00065 void stmtNode::output_comment(output_context & ct) 00066 { 00067 if (! comment().empty()) { 00068 00069 ct.new_line(); 00070 00071 ct << "/* "; 00072 00073 ct.indent_in(); 00074 00075 string front; 00076 string back = comment(); 00077 bool first = false; 00078 int nl; 00079 00080 do { 00081 nl = back.find('\n'); 00082 if (nl != string::npos) { 00083 front = back.substr(0, nl); 00084 back = back.substr(nl+1, string::npos); 00085 ct << front; 00086 if (first) { 00087 ct.indent_in(); 00088 first = false; 00089 } 00090 ct.new_line(); 00091 } 00092 else 00093 ct << back; 00094 } while (nl != string::npos); 00095 00096 ct << " */"; 00097 00098 ct.indent_out(); 00099 } 00100 } 00101 00102 // ------------------------------------------------------------ 00103 // Destructor 00104 // ------------------------------------------------------------ 00105 00106 stmtNode::~stmtNode() 00107 { 00108 } |
Generated on August 27, 2003
Back to the C-Breeze home page