source: src/ResolvExpr/Alternative.cc@ a465caff

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since a465caff was d3b7937, checked in by Peter A. Buhr <pabuhr@…>, 10 years ago

building runtime library (first attempt)

  • Property mode set to 100644
File size: 2.0 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// Alternative.cc --
8//
9// Author : Richard C. Bilson
10// Created On : Sat May 16 23:44:23 2015
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Sat May 16 23:54:23 2015
13// Update Count : 2
14//
15
16#include "Alternative.h"
17#include "SynTree/Type.h"
18#include "SynTree/Expression.h"
19#include "Common/utility.h"
20
21namespace ResolvExpr {
22 Alternative::Alternative() : expr( 0 ) {}
23
24 Alternative::Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost )
25 : cost( cost ), cvtCost( Cost::zero ), expr( expr ), env( env ) {}
26
27 Alternative::Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost, const Cost &cvtCost )
28 : cost( cost ), cvtCost( cvtCost ), expr( expr ), env( env ) {}
29
30 Alternative::Alternative( const Alternative &other ) {
31 initialize( other, *this );
32 }
33
34 Alternative &Alternative::operator=( const Alternative &other ) {
35 if ( &other == this ) return *this;
36 initialize( other, *this );
37 return *this;
38 }
39
40 void Alternative::initialize( const Alternative &src, Alternative &dest ) {
41 dest.cost = src.cost;
42 dest.cvtCost = src.cvtCost;
43 dest.expr = maybeClone( src.expr );
44 dest.env = src.env;
45 }
46
47 Alternative::~Alternative() {
48 delete expr;
49 }
50
51 void Alternative::print( std::ostream &os, int indent ) const {
52 os << std::string( indent, ' ' ) << "Cost " << cost << ": ";
53 if ( expr ) {
54 expr->print( os, indent );
55 os << "(types:" << std::endl;
56 printAll( expr->get_results(), os, indent + 4 );
57 os << ")" << std::endl;
58 } else {
59 os << "Null expression!" << std::endl;
60 } // if
61 os << std::string( indent, ' ' ) << "Environment: ";
62 env.print( os, indent+2 );
63 os << std::endl;
64 }
65} // namespace ResolvExpr
66
67// Local Variables: //
68// tab-width: 4 //
69// mode: c++ //
70// compile-command: "make install" //
71// End: //
Note: See TracBrowser for help on using the repository browser.