lib/Test/Valgrind/Command/Aggregate.pm
lib/Test/Valgrind/Command/Perl.pm
lib/Test/Valgrind/Command/PerlScript.pm
+lib/Test/Valgrind/Parser.pm
lib/Test/Valgrind/Parser/Suppressions/Text.pm
+lib/Test/Valgrind/Parser/Text.pm
lib/Test/Valgrind/Parser/XML/Twig.pm
lib/Test/Valgrind/Report.pm
lib/Test/Valgrind/Session.pm
--- /dev/null
+package Test::Valgrind::Parser;
+
+use strict;
+use warnings;
+
+=head1 NAME
+
+Test::Valgrind::Parser - Base class for Test::Valgrind parsers.
+
+=head1 VERSION
+
+Version 1.02
+
+=cut
+
+our $VERSION = '1.02';
+
+=head1 DESCRIPTION
+
+This class is the base for L<Test::Valgrind> parsers.
+
+=cut
+
+use base qw/Test::Valgrind::Carp/;
+
+=head1 METHODS
+
+=head2 C<new>
+
+=cut
+
+sub new {
+ my $class = shift;
+ $class = ref($class) || $class;
+
+ bless { }, $class;
+}
+
+=head2 C<args $session, $fh>
+
+Returns the list of parser-specific arguments that are to be passed to C<valgrind>.
+
+Defaults to the empty list.
+
+=cut
+
+sub args { }
+
+=head2 C<parse $session, $fh>
+
+This method must be implemented when subclassing.
+
+=cut
+
+sub parse;
+
+=head1 SEE ALSO
+
+L<Test::Valgrind>, L<Test::Valgrind::Session>.
+
+=head1 AUTHOR
+
+Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
+
+You can contact me by mail or on C<irc.perl.org> (vincent).
+
+=head1 BUGS
+
+Please report any bugs or feature requests to C<bug-test-valgrind at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Valgrind>.
+I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+ perldoc Test::Valgrind::Parser
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009 Vincent Pit, all rights reserved.
+
+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
+
+=cut
+
+1; # End of Test::Valgrind::Parser
=head1 DESCRIPTION
-This class provides a default C<parse_suppressions> method, so that real tools for which suppressions are meaningful can exploit it by inheriting.
-
-It's not meant to be used directly as a tool.
+This is a L<Test::Valgrind::Parser> object that can extract suppressions from C<valgrind>'s text output.
=cut
-use base qw/Test::Valgrind::Carp/;
+use base qw/Test::Valgrind::Parser::Text Test::Valgrind::Carp/;
=head1 METHODS
-=head2 C<new>
-
-Just a croaking stub to remind you not to use this class as a real tool.
-
-If your tool both inherit from this class and from C<Test::Valgrind::Tool>, and that you want to dispatch the call to your C<new> to its ancestors', be careful with C<SUPER> which may end up calling this dieing version of C<new>.
-The solution is to either put C<Test::Valgrind::Tool> first in the C<@ISA> list or to explicitely call C<Test::Valgrind::Tool::new> instead of C<SUPER::new>.
-
-=cut
-
-sub new { shift->_croak('This mock tool isn\'t meant to be used directly') }
-
=head2 C<report_class>
Generated reports are C<Test::Valgrind::Report::Suppressions> objects.
=head1 SEE ALSO
-L<Test::Valgrind>, L<Test::Valgrind::Tool>.
+L<Test::Valgrind>, L<Test::Valgrind::Parser::Text>.
=head1 AUTHOR
--- /dev/null
+package Test::Valgrind::Parser::Text;
+
+use strict;
+use warnings;
+
+=head1 NAME
+
+Test::Valgrind::Parser::Text - Parse valgrind output as a text stream.
+
+=head1 VERSION
+
+Version 1.02
+
+=cut
+
+our $VERSION = '1.02';
+
+=head1 DESCRIPTION
+
+This is a L<Test::Valgrind::Parser> object that can extract suppressions from C<valgrind>'s text output.
+
+=cut
+
+use base qw/Test::Valgrind::Parser/;
+
+=head1 METHODS
+
+=head2 C<args $session, $fh>
+
+Returns the arguments needed to tell C<valgrind> to print to the filehandle C<$fh>.
+
+=cut
+
+sub args {
+ my $self = shift;
+ my ($session, $fh) = @_;
+
+ return (
+ $self->SUPER::args(@_),
+ '--log-fd=' . fileno($fh),
+ );
+}
+
+=head1 SEE ALSO
+
+L<Test::Valgrind>, L<Test::Valgrind::Parser>.
+
+=head1 AUTHOR
+
+Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
+
+You can contact me by mail or on C<irc.perl.org> (vincent).
+
+=head1 BUGS
+
+Please report any bugs or feature requests to C<bug-test-valgrind at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Valgrind>.
+I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+ perldoc Test::Valgrind::Parser::Text
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009 Vincent Pit, all rights reserved.
+
+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
+
+=cut
+
+1; # End of Test::Valgrind::Parser::Text