diff options
author | jistone <jistone> | 2007-08-17 01:54:28 +0000 |
---|---|---|
committer | jistone <jistone> | 2007-08-17 01:54:28 +0000 |
commit | 3cb170588c9b180fb4d28af04e44ac87481560a7 (patch) | |
tree | 8cf0c1f2f065c640052d6f8b90ee6f0300f12a85 /staptree.h | |
parent | bf49da0383481795d0a8d608beee27f6b1a251dc (diff) | |
download | systemtap-steved-3cb170588c9b180fb4d28af04e44ac87481560a7.tar.gz systemtap-steved-3cb170588c9b180fb4d28af04e44ac87481560a7.tar.xz systemtap-steved-3cb170588c9b180fb4d28af04e44ac87481560a7.zip |
2007-08-16 Josh Stone <joshua.i.stone@intel.com>
PR 4591
* parse.cxx (parser::parse_symbol): Tweak 'print' matching to allow
all the new variants with printd and println.
* staptree.h (struct print_format): Add fields for the new print
variants, and parse_print() to help matching.
* staptree.cxx (print_format::parse_print): New static method to
match the print variants and determine their properties.
(print_format::print): Handle the new print types.
(deep_copy_visitor::visit_print_format): Copy the new fields.
* translate.cxx (c_unparser::visit_print_format): Insert delims and
newlines where appropriate for new print functions.
* stap1.in: Document the new print functions.
testsuite/
* lib/stap_run.exp: Make sure to match the entire output, in case
there are multiple pass/fail messages.
* buildok/printf.stp: Add lines for new print variants.
* parseko/printd01.stp: Make sure that bad printd calls are handled.
* parseko/printd02.stp: Ditto.
* parseko/printd03.stp: Ditto.
* parseko/printd04.stp: Ditto.
* systemtap.base/print.stp: Try a bunch of different print calls.
* systemtap.base/print.exp: Driver for above.
Diffstat (limited to 'staptree.h')
-rw-r--r-- | staptree.h | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -262,8 +262,10 @@ struct functioncall: public expression struct print_format: public expression { - bool print_with_format; bool print_to_stream; + bool print_with_format; + bool print_with_delim; + bool print_with_newline; enum format_flag { @@ -320,11 +322,14 @@ struct print_format: public expression std::string raw_components; std::vector<format_component> components; + format_component delimiter; std::vector<expression*> args; hist_op *hist; static std::string components_to_string(std::vector<format_component> const & components); static std::vector<format_component> string_to_components(std::string const & str); + static bool parse_print(const std::string &name, + bool &stream, bool &format, bool &delim, bool &newline); void print (std::ostream& o) const; void visit (visitor* u); |