Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/FixMain.h

    r61efa42 rbef4f1a  
    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 "AST/LinkageSpec.hpp"
     23#include "SynTree/LinkageSpec.h"
     24
     25class Declaration;
     26class FunctionDecl;
    2027namespace ast {
    2128        class FunctionDecl;
     
    2532namespace CodeGen {
    2633
    27 /// Is this function a program main function?
    28 bool isMain( const ast::FunctionDecl * decl );
     34class FixMain {
     35public :
     36        static inline LinkageSpec::Spec mainLinkage() {
     37                return replace_main ? LinkageSpec::Cforall : LinkageSpec::C;
     38        }
     39        static inline ast::Linkage::Spec getMainLinkage() {
     40                return replace_main ? ast::Linkage::Cforall : ast::Linkage::C;
     41        }
    2942
    30 /// Adjust the linkage of main functions.
    31 void fixMainLinkage( ast::TranslationUnit & transUnit, bool replaceMain );
     43        static inline void setReplaceMain(bool val) {
     44                replace_main = val;
     45        }
    3246
    33 /// Add a wrapper around to run the Cforall main.
    34 void fixMainInvoke( ast::TranslationUnit & transUnit,
    35                 std::ostream & os, const char * bootloaderFilename );
     47        static bool isMain(FunctionDecl* decl);
     48        static bool isMain(const ast::FunctionDecl * decl);
     49
     50        static void fix( std::list< Declaration * > & decls,
     51                        std::ostream &os, const char* bootloader_filename );
     52        static void fix( ast::TranslationUnit & translationUnit,
     53                        std::ostream &os, const char * bootloader_filename );
     54
     55private:
     56        static bool replace_main;
     57};
    3658
    3759} // namespace CodeGen
Note: See TracChangeset for help on using the changeset viewer.