1 // -*- mode: C++ -*-
2 //
3 // Copyright (c) 2008, 2009, 2010, 2011 The University of Utah
4 // All rights reserved.
5 //
6 // This file is part of `csmith', a random generator of C programs.
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions are met:
10 //
11 //   * Redistributions of source code must retain the above copyright notice,
12 //     this list of conditions and the following disclaimer.
13 //
14 //   * Redistributions in binary form must reproduce the above copyright
15 //     notice, this list of conditions and the following disclaimer in the
16 //     documentation and/or other materials provided with the distribution.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 // POSSIBILITY OF SUCH DAMAGE.
29 
30 #ifndef EXTENSION_VALUE_H
31 #define EXTENSION_VALUE_H
32 
33 #include <string>
34 #include "CVQualifiers.h"
35 
36 class Type;
37 class Constant;
38 
39 class ExtensionValue {
40 public:
41 	ExtensionValue(const Type *type, std::string name);
42 
43 	~ExtensionValue();
44 
get_type(void)45 	const Type *get_type(void) { return type_; }
46 
get_value(void)47 	Constant *get_value(void) { return value_; }
48 
get_name(void)49 	const std::string &get_name(void) { return name_; }
50 
get_qfer()51 	CVQualifiers get_qfer() { return qfer_; }
52 
set_value(Constant * value)53 	void set_value(Constant *value) { value_ = value; }
54 
55 private:
56 	const Type *type_;
57 
58 	Constant *value_;
59 
60 	const std::string name_;
61 
62 	CVQualifiers qfer_;
63 };
64 
65 #endif // EXTENSION_VALUE_H
66