You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2009/08/18 01:50:36 UTC
svn commit: r805222 - in /lucene/lucy/trunk/boilerplater:
lib/Boilerplater/Parser.pm lib/Boilerplater/Type/VAList.pm
t/106-va_list_type.t
Author: marvin
Date: Mon Aug 17 23:50:36 2009
New Revision: 805222
URL: http://svn.apache.org/viewvc?rev=805222&view=rev
Log:
Commit LUCY-15, adding Boilerplater::Type::VAList.
Added:
lucene/lucy/trunk/boilerplater/lib/Boilerplater/Type/VAList.pm (with props)
lucene/lucy/trunk/boilerplater/t/106-va_list_type.t (with props)
Modified:
lucene/lucy/trunk/boilerplater/lib/Boilerplater/Parser.pm
Modified: lucene/lucy/trunk/boilerplater/lib/Boilerplater/Parser.pm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/boilerplater/lib/Boilerplater/Parser.pm?rev=805222&r1=805221&r2=805222&view=diff
==============================================================================
--- lucene/lucy/trunk/boilerplater/lib/Boilerplater/Parser.pm (original)
+++ lucene/lucy/trunk/boilerplater/lib/Boilerplater/Parser.pm Mon Aug 17 23:50:36 2009
@@ -11,6 +11,7 @@
use Boilerplater::Type::Float;
use Boilerplater::Type::Void;
use Boilerplater::Type::Object;
+use Boilerplater::Type::VAList;
use Carp;
our $grammar = <<'END_GRAMMAR';
@@ -57,6 +58,10 @@
type_qualifier(s?) void_type_specifier
{ Boilerplater::Parser->new_void_type(\%item) }
+va_list_type:
+ va_list_type_specifier
+ { Boilerplater::Type::VAList->new }
+
object_type:
type_qualifier(s?) object_type_specifier '*'
{ Boilerplater::Parser->new_object_type(\%item); }
@@ -84,6 +89,9 @@
void_type_specifier:
/void(?!\w)/
+va_list_type_specifier:
+ /va_list(?!\w)/
+
object_type_specifier:
/[A-Z]+[A-Z0-9]*[a-z]+[A-Za-z0-9]*(?!\w)/
Added: lucene/lucy/trunk/boilerplater/lib/Boilerplater/Type/VAList.pm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/boilerplater/lib/Boilerplater/Type/VAList.pm?rev=805222&view=auto
==============================================================================
--- lucene/lucy/trunk/boilerplater/lib/Boilerplater/Type/VAList.pm (added)
+++ lucene/lucy/trunk/boilerplater/lib/Boilerplater/Type/VAList.pm Mon Aug 17 23:50:36 2009
@@ -0,0 +1,76 @@
+use strict;
+use warnings;
+
+package Boilerplater::Type::VAList;
+use base qw( Boilerplater::Type );
+use Boilerplater::Util qw( verify_args );
+use Scalar::Util qw( blessed );
+use Carp;
+
+our %new_PARAMS = ( specifier => 'va_list' );
+
+sub new {
+ my ( $either, %args ) = @_;
+ verify_args( \%new_PARAMS, %args ) or confess $@;
+ return $either->SUPER::new(
+ specifier => 'va_list',
+ c_string => 'va_list'
+ );
+}
+
+sub equals {
+ my ( $self, $other ) = @_;
+ return 0 unless blessed($other);
+ return 0 unless $other->isa(__PACKAGE__);
+ return 1;
+}
+
+1;
+
+__END__
+
+
+__POD__
+
+=head1 NAME
+
+Boilerplater::Type::VAList - A Type to support C's va_list.
+
+=head1 DESCRIPTION
+
+Boilerplater::Type::VAList represents the C va_list type, from stdarg.h.
+
+=head1 METHODS
+
+=head2 new
+
+ my $type = Boilerplater::Type::VAList->new(
+ specifier => 'va_list', # default: va_list
+ );
+
+=over
+
+=item * B<specifier>. Must be "va_list" if supplied.
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+ /**
+ * Copyright 2009 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+=cut
+
Propchange: lucene/lucy/trunk/boilerplater/lib/Boilerplater/Type/VAList.pm
------------------------------------------------------------------------------
svn:eol-style = native
Added: lucene/lucy/trunk/boilerplater/t/106-va_list_type.t
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/boilerplater/t/106-va_list_type.t?rev=805222&view=auto
==============================================================================
--- lucene/lucy/trunk/boilerplater/t/106-va_list_type.t (added)
+++ lucene/lucy/trunk/boilerplater/t/106-va_list_type.t Mon Aug 17 23:50:36 2009
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+
+use Test::More tests => 5;
+use Boilerplater::Type::VAList;
+use Boilerplater::Parser;
+
+my $va_list_type = Boilerplater::Type::VAList->new;
+is( $va_list_type->get_specifier,
+ "va_list", "specifier defaults to 'va_list'" );
+is( $va_list_type->to_c, "va_list", "to_c" );
+
+my $parser = Boilerplater::Parser->new;
+
+is( $parser->va_list_type_specifier('va_list'),
+ 'va_list', 'va_list_type_specifier' );
+isa_ok( $parser->va_list_type('va_list'), "Boilerplater::Type::VAList" );
+ok( !$parser->va_list_type_specifier('va_listable'),
+ "va_list_type_specifier guards against partial word matches"
+);
+
Propchange: lucene/lucy/trunk/boilerplater/t/106-va_list_type.t
------------------------------------------------------------------------------
svn:eol-style = native