diff options
author | brolley <brolley> | 2008-01-24 16:43:13 +0000 |
---|---|---|
committer | brolley <brolley> | 2008-01-24 16:43:13 +0000 |
commit | edc22ba9b105fd944f39cf536346ff68c2c8d0aa (patch) | |
tree | b2c77ae5be2e2bad26be325cc6a7b33ce3ebcb14 /staptree.cxx | |
parent | 37d728f025d436dac4081ff47b2d3125ac27ea82 (diff) | |
download | systemtap-steved-edc22ba9b105fd944f39cf536346ff68c2c8d0aa.tar.gz systemtap-steved-edc22ba9b105fd944f39cf536346ff68c2c8d0aa.tar.xz systemtap-steved-edc22ba9b105fd944f39cf536346ff68c2c8d0aa.zip |
2008-01-24 Dave Brolley <brolley@redhat.com>
PR 5017.
* staptree.cxx (<cstring>): #include it.
(required <indexable *>): Remove 'static' from instantiation and
move instantiation to here from...
* staptree.h: ...here.
Diffstat (limited to 'staptree.cxx')
-rw-r--r-- | staptree.cxx | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/staptree.cxx b/staptree.cxx index ed2bc00e..173314ee 100644 --- a/staptree.cxx +++ b/staptree.cxx @@ -18,6 +18,7 @@ #include <cstring> #include <vector> #include <algorithm> +#include <cstring> using namespace std; @@ -2370,3 +2371,30 @@ deep_copy_visitor::deep_copy (expression* s) require <expression*> (&v, &n, s); return n; } + +template <> void +require <indexable *> (deep_copy_visitor* v, indexable** dst, indexable* src) +{ + if (src != NULL) + { + symbol *array_src=NULL, *array_dst=NULL; + hist_op *hist_src=NULL, *hist_dst=NULL; + + classify_indexable(src, array_src, hist_src); + + *dst = NULL; + + if (array_src) + { + require <symbol*> (v, &array_dst, array_src); + *dst = array_dst; + } + else + { + require <hist_op*> (v, &hist_dst, hist_src); + *dst = hist_dst; + } + assert (*dst); + } +} + |