Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/FixMain.h

    r61efa42 r8e48fca4  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FixMain.h -- Tools to change a Cforall main into a C main.
     7// FixMain.h --
    88//
    99// Author           : Thierry Delisle
     
    1717
    1818#include <iosfwd>
     19#include <memory>
     20#include <list>
    1921
     22#include "SynTree/LinkageSpec.h"
     23
     24class Declaration;
     25class FunctionDecl;
    2026namespace ast {
    2127        class FunctionDecl;
    22         class TranslationUnit;
    2328}
    2429
    2530namespace CodeGen {
    2631
    27 /// Is this function a program main function?
    28 bool isMain( const ast::FunctionDecl * decl );
     32class FixMain {
     33public :
     34        static inline LinkageSpec::Spec mainLinkage() {
     35                return replace_main ? LinkageSpec::Cforall : LinkageSpec::C;
     36        }
    2937
    30 /// Adjust the linkage of main functions.
    31 void fixMainLinkage( ast::TranslationUnit & transUnit, bool replaceMain );
     38        static inline void setReplaceMain(bool val) {
     39                replace_main = val;
     40        }
    3241
    33 /// Add a wrapper around to run the Cforall main.
    34 void fixMainInvoke( ast::TranslationUnit & transUnit,
    35                 std::ostream & os, const char * bootloaderFilename );
     42        static bool isMain(FunctionDecl* decl);
     43        static bool isMain(const ast::FunctionDecl * decl);
     44
     45        static void fix( std::list< Declaration * > & decls,
     46                        std::ostream &os, const char* bootloader_filename );
     47
     48private:
     49        static bool replace_main;
     50};
    3651
    3752} // namespace CodeGen
Note: See TracChangeset for help on using the changeset viewer.