source: src/AST/LinkageSpec.cpp @ ded6c2a6

ast-experimental
Last change on this file since ded6c2a6 was 87701b6, checked in by Thierry Delisle <tdelisle@…>, 6 years ago

Tentative fix for increment/decrement and implented a few more visits

  • Property mode set to 100644
File size: 1.5 KB
RevLine 
[2bb4a01]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// LinkageSpec.hpp --
8//
9// Author           : Aaron B. Moss
10// Created On       : Thu May 9 10:00:00 2019
11// Last Modified By : Aaron B. Moss
12// Last Modified On : Thu May 9 10:00:00 2019
13// Update Count     : 1
14//
15
16#include "LinkageSpec.hpp"
17
18#include <cassert>
19#include <memory>   // for unique_ptr
20#include <string>
21
22#include "Common/CodeLocation.h"
23#include "Common/SemanticError.h"
24
25namespace ast {
26
[a300e4a]27namespace Linkage {
28
29        Spec update( CodeLocation loc, Spec spec, const std::string * cmd ) {
30                assert( cmd );
31                std::unique_ptr<const std::string> guard( cmd ); // allocated by lexer
32                if ( *cmd == "\"Cforall\"" ) {
33                        spec.is_mangled = true;
34                        return spec;
35                } else if ( *cmd == "\"C\"" ) {
36                        spec.is_mangled = false;
37                        return spec;
38                } else {
39                        SemanticError( loc, "Invalid linkage specifier " + *cmd );
[2bb4a01]40                }
[a300e4a]41        }
42
[2bb4a01]43
[a300e4a]44        std::string name( Spec spec ) {
[87701b6]45                switch ( spec.val ) {
46                case Intrinsic.val:  return "intrinsic";
47                case C.val:          return "C";
48                case Cforall.val:    return "Cforall";
49                case AutoGen.val:    return "autogenerated cfa";
50                case Compiler.val:   return "compiler built-in";
51                case BuiltinCFA.val: return "cfa built-in";
52                case BuiltinC.val:   return "c built-in";
[a300e4a]53                default:         return "<unnamed linkage spec>";
54                }
[2bb4a01]55        }
[14cebb7a]56
[a300e4a]57}
58
[2bb4a01]59}
60
61// Local Variables: //
62// tab-width: 4 //
63// mode: c++ //
64// compile-command: "make install" //
65// End: //
Note: See TracBrowser for help on using the repository browser.