source: src/CodeGen/Generate.cc @ 5d41e22

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 5d41e22 was c850687, checked in by Andrew Beach <ajbeach@…>, 8 years ago

Add -L flag to turn of line marks. Updated the keyword list.

  • Property mode set to 100644
File size: 1.7 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// Generate.cc --
8//
9// Author           : Richard C. Bilson
10// Created On       : Mon May 18 07:44:20 2015
11// Last Modified By : Andrew Beach
12// Last Modified On : Wed May 19 13:05:00 2017
13// Update Count     : 6
14//
15
16#include <algorithm>
17#include <iostream>
18#include <cassert>
19#include <list>
20
21#include "Generate.h"
22#include "SynTree/Declaration.h"
23#include "CodeGenerator.h"
24#include "GenType.h"
25#include "SynTree/SynTree.h"
26#include "SynTree/Type.h"
27#include "SynTree/BaseSyntaxNode.h"
28// #include "Tuples/Tuples.h"
29
30using namespace std;
31
32namespace CodeGen {
33        void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics, bool pretty, bool generateC, bool lineMarks ) {
34                CodeGen::CodeGenerator cgv( os, pretty, generateC, lineMarks );
35                for ( auto & dcl : translationUnit ) {
36                        if ( LinkageSpec::isGeneratable( dcl->get_linkage() ) && (doIntrinsics || ! LinkageSpec::isBuiltin( dcl->get_linkage() ) ) ) {
37                                os << cgv.lineDirective(dcl);
38                                dcl->accept(cgv);
39                                if ( doSemicolon( dcl ) ) {
40                                        os << ";";
41                                } // if
42                                os << std::endl;
43                        } // if
44                } // for
45        }
46
47        void generate( BaseSyntaxNode * node, std::ostream & os ) {
48                if ( Type * type = dynamic_cast< Type * >( node ) ) {
49                        os << CodeGen::genPrettyType( type, "" );
50                } else {
51                        CodeGen::CodeGenerator cgv( os, true, false, false );
52                        node->accept( cgv );
53                }
54                os << std::endl;
55        }
56} // namespace CodeGen
57
58// Local Variables: //
59// tab-width: 4 //
60// mode: c++ //
61// compile-command: "make install" //
62// End: //
Note: See TracBrowser for help on using the repository browser.