Update copyright to LGPL on all files
[dyninst.git] / dyninstAPI / src / variable.C
1 /*
2  * Copyright (c) 1996-2009 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * By your use of Paradyn, you understand and agree that we (or any
12  * other person or entity with proprietary rights in Paradyn) are
13  * under no obligation to provide either maintenance services,
14  * update services, notices of latent defects, or correction of
15  * defects for Paradyn.
16  * 
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  * 
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  * 
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30  */
31  
32 // $Id: variable.C,v 1.12 2008/11/03 15:19:24 jaw Exp $
33
34 // Variable.C
35
36 #include <string>
37 #include "dynutil/h/Annotatable.h"
38 #include "mapped_object.h"
39
40 image_variable::image_variable(Variable *var, pdmodule *mod) :
41     var_(var),                         
42     pdmod_(mod) 
43 {
44 }                                                                   
45
46 Address image_variable::getOffset() const 
47 {
48    return var_->getOffset();
49 }
50
51 bool image_variable::addSymTabName(const std::string &name, bool isPrimary) 
52 {
53    if (var_->addMangledName(name.c_str(), isPrimary)){
54       return true;
55    }
56    // Bool: true if the name is new; AKA !found
57    return false;
58 }
59
60 bool image_variable::addPrettyName(const std::string &name, bool isPrimary) 
61 {
62     if (var_->addPrettyName(name.c_str(), isPrimary)){
63       return true;
64    }
65    // Bool: true if the name is new; AKA !found
66    return false;
67 }       
68
69 const vector<string>& image_variable::symTabNameVector() const 
70 {
71     return var_->getAllMangledNames();
72 }
73
74 const vector<string>& image_variable::prettyNameVector() const 
75 {
76    return var_->getAllPrettyNames();
77 }
78
79 int_variable::int_variable(image_variable *var, 
80       Address base,
81       mapped_module *mod) :
82    addr_(base + var->getOffset()),
83    size_(0),
84    ivar_(var),
85    mod_(mod)
86 {
87 }
88
89 int_variable::int_variable(int_variable *parVar,
90       mapped_module *childMod) :
91    addr_(parVar->addr_),
92    size_(parVar->size_),
93    ivar_(parVar->ivar_),
94    mod_(childMod)
95 {
96    // Mmm forkage
97 }
98
99 const vector<string>& int_variable::prettyNameVector() const 
100 {
101    return ivar_->prettyNameVector();
102 }
103
104 const vector<string>& int_variable::symTabNameVector() const 
105 {
106    return ivar_->symTabNameVector();
107 }
108
109 const string &int_variable::symTabName() const 
110 {
111    return ivar_->symTabName();
112 }