Update copyright to LGPL on all files
[dyninst.git] / dyninstAPI / src / templates0.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: templates0.C,v 1.66 2008/06/19 19:53:47 legendre Exp $
33 // Generate all the templates in one file.
34
35 /*
36  * This file (and the other templatesXXX.C files) exist for a single purpose:
37  * to explicitly instantiate code for all of the template classes we use.
38  * Although the C++ standard dictates that compilers should automatically
39  * instantiate all templates (and leaves the details to the implementation),
40  * g++ 2.7.2, which we currently use, doesn't do that correctly.  So instead,
41  * we use a special compiler switch (-fno-implicit-templates or 
42  * -fexternal-templates) which tells g++ not to try and automatically
43  * instantiate any templates.  We manually instantiate the templates in this
44  * and the other templatesXXX.C files.  If you are porting Paradyn, and are
45  * using a compiler that correctly and automatically instantiates its 
46  * templates, then you don't need to use any of the templatesXXX.C files (so
47  * remove their entries from the appropriate make.module.tmpl file).
48  *
49  */
50
51 #if defined(__XLC__) || defined(__xlC__)
52 #pragma implementation("Vector.h")
53 #else
54 #pragma implementation "Vector.h"
55 #endif
56 #include "common/h/Vector.h"
57
58 #if 0
59 #if defined(__XLC__) || defined(__xlC__)
60 #pragma implementation("Symbol.h")
61 #else
62 #pragma implementation "Symbol.h"
63 #endif
64 #include "symtabAPI/h/Symbol.h"
65 // Included above
66 template class  pdvector<Symbol>;
67 template class  pdvector<Symbol*>;
68
69 #endif
70
71 #include <string>
72 #include "dyninstAPI/src/inst.h"
73
74 using namespace Dyninst;
75 using namespace Dyninst::SymtabAPI;
76 template class pdvector<callWhen>;
77
78 #include <set>
79
80 template class  pdvector<int>;
81 template class  pdvector<bool>;
82 template class  pdvector<std::string>;
83 template class  pdvector<pdvector<std::string> >;
84 template class  pdvector<unsigned>;
85 template class  pdvector<long>;
86
87 class dyn_thread;
88 template class  pdvector<dyn_thread *>;
89
90 #include "ast.h"
91 template class  pdvector<AstNodePtr>;
92
93 #include "frame.h"
94 template class  pdvector<Frame>;
95 template class  pdvector<pdvector<Frame> >;
96
97 class heapItem;
98 template class  pdvector<heapItem*>;
99
100 class image;
101 template class  pdvector<image*>;
102
103 class image_instPoint;
104 template class  pdvector<image_instPoint *>;
105
106 class instPoint;
107 template class  pdvector<instPoint *>;
108 template class  pdvector<const instPoint *>;
109
110 class instPointInstance;
111 template class  pdvector<instPointInstance *>;
112
113 class instruction;
114 template class  pdvector<instruction *>;
115
116 class baseTrampInstance;
117 template class  pdvector<baseTrampInstance *>;
118
119 #include "arch.h"
120 template class  pdvector<instruction>;
121
122 #include "symtab.h"
123 template class  pdvector< ExceptionBlock >;
124
125 class codeRange;
126 template class  pdvector<codeRange *>;
127
128 class pdmodule;
129 template class  pdvector<pdmodule *>;
130
131 class int_function;
132 template class  pdvector<int_function*>;
133 class int_variable;
134 template class  pdvector<int_variable*>;
135 class int_basicBlock;
136 template class  pdvector<int_basicBlock *>;
137 class bblInstance;
138 template class  pdvector<bblInstance *>;
139
140
141 class process;
142 template class  pdvector<process*>;
143
144 #include "infHeap.h"
145 template class  pdvector<disabledItem>;
146 template class  pdvector<addrVecType>;
147 template class pdvector<heapDescriptor>;
148
149 class miniTramp;
150 class miniTrampInstance;
151 template class  pdvector<miniTramp *>;
152 template class  pdvector<miniTrampInstance *>;
153
154 class generatedCodeObject;
155 template class  pdvector<generatedCodeObject *>;
156
157 class image_func;
158 class image_basicBlock;
159 class image_variable;
160 template class  pdvector<image_func *>;
161 template class  pdvector<pdvector<image_func *> *>;
162 template class  pdvector<image_basicBlock *>;
163 template class  pdvector<image_variable *>;
164
165 #include "symtabAPI/h/Symtab.h"
166 template class  pdvector<relocationEntry>;
167
168 class sharedLibHook;
169 template class  pdvector<sharedLibHook *>;
170
171 #include "imageUpdate.h"
172 template class pdvector<imageUpdate*>;//ccw 28 oct 2001
173 template class pdvector<dataUpdate*> ;//ccw 26 nov 2001
174
175 class instMapping;
176 template class pdvector<instMapping *>;
177
178 class mapped_module;
179 template class pdvector<mapped_module *>;
180
181
182 template class std::vector<Address>;
183
184 template class pdvector<fileDescriptor>;
185
186 template class std::set<instPoint *>;
187
188 #if defined(arch_power)
189 class fileOpener;
190 template class pdvector<fileOpener *>;
191 #endif
192
193 class funcMod;
194 template class pdvector<funcMod *>;
195
196 // Clean this up...
197 #if defined(cap_relocation)
198 template class pdvector<bblInstance::reloc_info_t::relocInsn *>;
199 #endif
200