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