Steffen Mueller [Fri, 18 Feb 2011 20:36:32 +0000 (21:36 +0100)]
Make get_(in|out)putmap more flexible
They now also accept ctypes which are resolved to xstypes via the
typemap section.
Steffen Mueller [Sun, 13 Feb 2011 22:30:56 +0000 (23:30 +0100)]
Add targetable method
This does the same thing for a simple output map as the make_targetable
function in ExtUtils::ParseXS::Utilities does for all output maps. The
latter function is intended to be superseded by this new method.
Steffen Mueller [Sun, 13 Feb 2011 10:22:15 +0000 (11:22 +0100)]
Add comment explaining where terrible code comes from
... and it is not brought by the stork.
Steffen Mueller [Fri, 11 Feb 2011 18:01:18 +0000 (19:01 +0100)]
Document inception of EU::Typemaps
Steffen Mueller [Fri, 11 Feb 2011 17:42:53 +0000 (18:42 +0100)]
Bless singleton
Steffen Mueller [Fri, 11 Feb 2011 17:37:41 +0000 (18:37 +0100)]
Nah, implicit is bad
Steffen Mueller [Fri, 11 Feb 2011 17:35:31 +0000 (18:35 +0100)]
Lose now obsolete process_single_typemap()
This was the actual typemap parser. It is now parsed by
ExtUtils::Typemaps, so we don't need it any more!
Steffen Mueller [Fri, 11 Feb 2011 17:31:44 +0000 (18:31 +0100)]
Make ExtUtils::ParseXS use ExtUtils::Typemaps
This is just the quick'n'dirty conversion to make it use
EU::Typemaps. Eventually, we want to use it in its full object-oriented
goodness!
Steffen Mueller [Sun, 13 Feb 2011 20:00:53 +0000 (21:00 +0100)]
Do not use Carp, fix propagation of replace/skip
Using Carp in a module this early in the toolchain can cause ugly
failure. Carp can trigger loading overload. overload::StrVal can trigger
loading Scalar::Util. Scalar::Util::PP requires B. miniperl doesn't like
loading shared libraries.
This problem with Carp just shadowed the underlying problem that the
replace/skip options weren't propagated correctly.
Steffen Mueller [Sun, 13 Feb 2011 19:22:03 +0000 (20:22 +0100)]
Defer loading main module
Steffen Mueller [Sun, 13 Feb 2011 19:13:45 +0000 (20:13 +0100)]
More whitespace bug-compatibility
Steffen Mueller [Sun, 13 Feb 2011 10:20:03 +0000 (11:20 +0100)]
More compatibility testing
Steffen Mueller [Sat, 12 Feb 2011 17:54:38 +0000 (18:54 +0100)]
Add test of EU::Typemap output against old ParseXS code
This is testing for string equivalency, not code equivalency. But it's
better than nothing.
Steffen Mueller [Sat, 12 Feb 2011 17:52:00 +0000 (18:52 +0100)]
More bug-compatibility with old ExtUtils::ParseXS
Steffen Mueller [Fri, 11 Feb 2011 21:52:30 +0000 (22:52 +0100)]
Reinstate prototype default and warning about invalid prototypes
Steffen Mueller [Fri, 11 Feb 2011 18:24:21 +0000 (19:24 +0100)]
Add method to get ANSIfied code
This is done to all of the code in EU::PXS anyway, so why not
have a nice method for it?
Steffen Mueller [Fri, 11 Feb 2011 17:21:10 +0000 (18:21 +0100)]
Implement 'skip' option for merging typemaps
This implements the 'first come first serve' style merging that
ExtUtils::ParseXS currently does: It prefers the typemap entries that
exist already over new ones. This is because the order of processed
typemaps is such that the default typemaps come last.
Steffen Mueller [Fri, 11 Feb 2011 16:20:17 +0000 (17:20 +0100)]
Implement 'replace' option when merging typemaps
And by proxy, this had to be implemented in the three add_* methods.
Also adds more tests for merging with conflicts.
Steffen Mueller [Fri, 11 Feb 2011 16:09:10 +0000 (17:09 +0100)]
Allow merging typemaps from file
Steffen Mueller [Fri, 11 Feb 2011 15:50:12 +0000 (16:50 +0100)]
Add method to generate the prototype lookup hash
Akin to the methods in the parent commit that generate the lookup hash
for TYPEMAP/INPUT/OUTPUT, this method will generate the lookup has for
typemap's prototypes as required by ExtUtils::ParseXS at this time.
Steffen Mueller [Fri, 11 Feb 2011 15:42:46 +0000 (16:42 +0100)]
Methods to get typemaps in ParseXS compatible format
Essentially, these extra methods export the typemap information in the
format expected by ExtUtils::ParseXS at this time. Down the road, we may
want EU::PXS to simply pass around an ExtUtils::Typemaps object.
Steffen Mueller [Fri, 11 Feb 2011 13:37:33 +0000 (14:37 +0100)]
Reduce code duplication by using the same prototype regexp
Steffen Mueller [Thu, 10 Feb 2011 16:12:23 +0000 (17:12 +0100)]
Teach EU::Typemaps about the _ prototype
I am in a hurry and this makes things correct, but really, this should
maybe use EU::ParseXS' regular expression.
Steffen Mueller [Thu, 10 Feb 2011 15:51:53 +0000 (16:51 +0100)]
Bump ExtUtils::Typemaps version
Just to make sure there really will never be a confusion or
collision with the similarly named module that has been living
on CPAN.
Steffen Mueller [Thu, 10 Feb 2011 15:51:18 +0000 (16:51 +0100)]
Simplify "remove" logic after previous refactoring
Steffen Mueller [Thu, 10 Feb 2011 15:45:29 +0000 (16:45 +0100)]
Hash lookup for output sections
More O(1) for everyone.
Also fixes a tiny issue with an error message from the inputmap
conversion.
Steffen Mueller [Thu, 10 Feb 2011 15:41:09 +0000 (16:41 +0100)]
Convert input sections to hash lookup
Die, O(n), die!
Steffen Mueller [Thu, 10 Feb 2011 15:26:10 +0000 (16:26 +0100)]
Start refactoring EU::Typemaps
Use a hash lookup for avoiding collisions.
Steffen Mueller [Thu, 10 Feb 2011 13:19:54 +0000 (14:19 +0100)]
Remove note about being untested
This code is actually in production use.
Steffen Mueller [Thu, 10 Feb 2011 13:18:57 +0000 (14:18 +0100)]
update copyright
Steffen Mueller [Thu, 10 Feb 2011 13:17:17 +0000 (14:17 +0100)]
Add a trailing 's' to the name of EU::Typemap
This is to prevent collisions on case-insensitive file systems with
lib/typemap.
Steffen Mueller [Thu, 10 Feb 2011 12:51:54 +0000 (13:51 +0100)]
Extract typemap-related code from ExtUtils::ParseXS
This was available from CPAN a while ago. The plan is to use it to make
the typemap parsing and manipulation saner and rip the parser from
ExtUtils::ParseXS' dead claws.
Steffen Mueller [Sun, 13 Feb 2011 22:34:58 +0000 (23:34 +0100)]
Cleanup of make_targetable
Steffen Mueller [Fri, 11 Feb 2011 18:01:39 +0000 (19:01 +0100)]
Fix function name in documentation
Steffen Mueller [Fri, 11 Feb 2011 21:47:59 +0000 (22:47 +0100)]
Remove unnecessary Data::Dumper loading
Steffen Mueller [Fri, 11 Feb 2011 17:55:12 +0000 (18:55 +0100)]
Revert "Revert "Moved prototype check to XS code, allowing the .pm file change from yesterday""
This reverts commit
cf8fc7eed929846d31d02d565b4d5f4480a18d69,
reinstating the move of the prototype check to XS code.
Steffen Mueller [Fri, 11 Feb 2011 17:55:04 +0000 (18:55 +0100)]
Start documenting the EU::ParseXS changes
Steffen Mueller [Fri, 11 Feb 2011 17:43:12 +0000 (18:43 +0100)]
Documentation: maintainers & copyright
Adding Jim Keenan and myself to the list of maintainers. Sorry, Jim!
Update copyright and prettify a note.
Steffen Mueller [Fri, 11 Feb 2011 15:26:41 +0000 (16:26 +0100)]
Documentation fix
Be more precise about the return values of process_typemaps().
Steffen Mueller [Fri, 11 Feb 2011 12:36:06 +0000 (13:36 +0100)]
Rename some ExtUtils::ParseXS 'constants'
Make them have properly descriptive, camel case names.
Steffen Mueller [Thu, 10 Feb 2011 16:09:26 +0000 (17:09 +0100)]
Reapply the patch that tought EU::ParseXS about _ protos
Even including a test!
Steffen Mueller [Thu, 10 Feb 2011 10:14:28 +0000 (11:14 +0100)]
Ignore new ExtUtils::ParseXS files in lib
Steffen Mueller [Thu, 10 Feb 2011 09:24:24 +0000 (10:24 +0100)]
Re-apply ExtUtils::ParseXS portion of
1e8125c62127
Which had to be reverted as
634b52b92f42a6bb93c549
for a big rebase.
Steffen Mueller [Thu, 10 Feb 2011 09:22:56 +0000 (10:22 +0100)]
Re-apply typo fixes from
c4a6f826b3676d1fdbd99
These had to be reverted for the ExtUtils::ParseXS rebase of Jim
Keenan's strictification work.
Originally reverted as
8e19e0c1f155990dc120199.
Steffen Mueller [Thu, 10 Feb 2011 09:20:11 +0000 (10:20 +0100)]
Re-apply EU::ParseXS portion of
c33e8be1506a75e
This is the unused-arg stuff in tests.
Originally reverted as
836ae07757f3a1a32212.
James E. Keenan [Thu, 15 Apr 2010 12:15:24 +0000 (08:15 -0400)]
A bit more documentation of make_targetable().
James E. Keenan [Thu, 15 Apr 2010 02:21:27 +0000 (22:21 -0400)]
Add documentation on the hashrefs produced by process_typemaps().
James E. Keenan [Thu, 15 Apr 2010 02:17:26 +0000 (22:17 -0400)]
Add documentation and additional tests
... exploring relationship between typemaps and \%targetable.
James E. Keenan [Sun, 11 Apr 2010 20:48:23 +0000 (16:48 -0400)]
Mostly adding tests and documentation.
Rename sub print_preprocessor_statements() to
analyze_preprocessor_statements(). Modify interface to map_type() and
re-work tests as needed. Wrote documentation in Utilities.pm for
process_single_typemap(), map_type(), standard_XS_defs(),
assign_func_args(), analyze_preprocessor_statements(). Write tests
in t/109-standard_XS_defs.t, t/110-assign_func_args.t.
James E. Keenan [Sun, 11 Apr 2010 17:52:39 +0000 (13:52 -0400)]
Move several functions to Utilities.pm
Namely: check_conditional_preprocessor_statements(), Warn(),
blurt() and death() to Utilities.pm.
Add file to test blurt, death and Warn. (death() is not
really testable yet due to hard-coded 'exit'.) ovid++, rjbs++,
xdg+++ for assistance in developing tests."
James E. Keenan [Sun, 11 Apr 2010 14:35:40 +0000 (10:35 -0400)]
Change check_cpp() to check_conditional_preprocessor_statements()
... to be more self-documenting.
Also: Explicitly pass $self to Warn(), blurt() and death().
Add skeletons of files to test functions moved (or planned to be
moved) to Utilities.pm.
James E. Keenan [Sat, 10 Apr 2010 14:24:00 +0000 (10:24 -0400)]
Was able to move $Packid into $self.
Note that I got build failures when I attempted to pull $Package into $self.
The distributions below because during various 'eval EXPR'
statements, I got a 'Global variable $Package ...' error.
cut -d '/' -f 7,8,9,10,11 research/problematic.builds.
20100410.txt
D/DB/DBURDICK/BoostGraph/Boost-Graph-1.4.tar.gz
D/DE/DEEMON/Crypt-OpenSSL-SMIME-0.02.tar.gz
D/DL/DLOWE/Text-Tmpl-0.33.tar.gz
D/DM/DMAKI/Data-Valve-0.00010.tar.gz
D/DO/DORMANDO/Perlbal-XS-HTTPHeaders-0.20.tar.gz
E/ED/EDPRATOMO/Algorithm-Permute-0.12.tar.gz
J/JH/JHI/String-Approx-3.26.tar.gz
K/KA/KARMAN/Search-Tools-0.45.tar.gz
K/KI/KILINRAX/HTML-Strip-1.06.tar.gz
L/LA/LAIRDM/Algorithm-SVM-0.13.tar.gz
M/MA/MARKSMITH/HTTP-HeaderParser-XS-0.20.tar.gz
M/MC/MCEGLOWS/Search-ContextGraph-0.15.tar.gz
M/MH/MHX/Convert-Binary-C-0.74.tar.gz
M/MH/MHX/Tie-Hash-Indexed-0.05.tar.gz
M/MI/MIKEWONG/Table-ParentChild-0.05.tar.gz
M/MS/MSERGEANT/CDB_File-0.96.tar.gz
M/MS/MSERGEANT/IO-KQueue-0.34.tar.gz
P/PA/PAJAS/XML-LibXML-1.70.tar.gz
P/PM/PMQS/Filter-1.37.tar.gz
S/SA/SALVA/Compress-PPMd-0.11.tar.gz
S/SA/SAPER/Net-Pcap-0.16.tar.gz
S/SA/SAPER/Net-RawIP-0.25.tar.gz
S/SG/SGOELDNER/MonetDB-CLI-MapiXS-0.03.tar.gz
S/SM/SMUELLER/Math-SymbolicX-FastEvaluator-0.01.tar.gz
S/SM/SMUELLER/Parse-ExuberantCTags-1.01.tar.gz
S/SP/SPIDB/Net-ext-1.011.tar.gz
T/TJ/TJMATHER/Crypt-OpenSSL-DSA-0.13.tar.gz
James E. Keenan [Sat, 10 Apr 2010 13:24:33 +0000 (09:24 -0400)]
Refactor some code into sub set_cond()
Eliminate instances of calling subs with '&'.
James E. Keenan [Sat, 10 Apr 2010 12:56:06 +0000 (08:56 -0400)]
Add vim modeline entries.
James E. Keenan [Sat, 10 Apr 2010 01:42:30 +0000 (21:42 -0400)]
Move sub print_preprocessor_statements() into Utilities.pm.
James E. Keenan [Sat, 10 Apr 2010 01:38:57 +0000 (21:38 -0400)]
Refactor some code into sub assign_func_args().
James E. Keenan [Fri, 9 Apr 2010 03:02:50 +0000 (23:02 -0400)]
Don't have to undef if it's never been assigned to.
James E. Keenan [Fri, 9 Apr 2010 02:16:04 +0000 (22:16 -0400)]
Move several variables found inside the PARAGRAPH loop
... closer to the point where each is first used.
James E. Keenan [Fri, 9 Apr 2010 01:04:51 +0000 (21:04 -0400)]
Move $orig_args closer to where it's used
James E. Keenan [Fri, 9 Apr 2010 00:39:05 +0000 (20:39 -0400)]
Move $prepush_done closer to where it's used
James E. Keenan [Thu, 8 Apr 2010 12:18:14 +0000 (08:18 -0400)]
Move $func_header inside while loop closer to where it's used
James E. Keenan [Tue, 6 Apr 2010 23:46:54 +0000 (19:46 -0400)]
Move two heredocs into Utilities::standard_XS_defs().
James E. Keenan [Sun, 4 Apr 2010 13:37:17 +0000 (09:37 -0400)]
Change @outlist and %only_C_inlist into corresponding references
... in anticipation of upcoming refactorings,
James E. Keenan [Sun, 4 Apr 2010 13:10:06 +0000 (09:10 -0400)]
Add messages to 3 tests which lacked them.
James E. Keenan [Sat, 3 Apr 2010 22:23:45 +0000 (18:23 -0400)]
Move 4 elements in %args into $self
It was not yet possible to move $args{'s'} into $self because
of a quotemeta problem.
James E. Keenan [Sat, 3 Apr 2010 21:05:07 +0000 (17:05 -0400)]
No evident need for 'for' loop in assignment from $args{filename}.
James E. Keenan [Sat, 3 Apr 2010 21:00:31 +0000 (17:00 -0400)]
Explicitly pass $self to check_cpp()
Also explicitly return $self from print_preprocessor_statements().
James E. Keenan [Sat, 3 Apr 2010 19:00:02 +0000 (15:00 -0400)]
Refactor code inside process_file() into print_preprocessor_statements()
James E. Keenan [Sat, 3 Apr 2010 14:00:52 +0000 (10:00 -0400)]
Change \@BootCode to $BootCode_ref
to facilitate more refactoring of code into (somewhat) encapsulated
subs.
James E. Keenan [Sat, 3 Apr 2010 13:25:55 +0000 (09:25 -0400)]
Eliminate some synthetic variables
and move declarations of some lexicals closer to the point where
they are actually used.
James E. Keenan [Sat, 3 Apr 2010 13:05:13 +0000 (09:05 -0400)]
Typographical cleanup
Mostly elimination of trailing whitespace.
James E. Keenan [Sat, 3 Apr 2010 02:39:15 +0000 (22:39 -0400)]
Add $newXS to $self
Keeping fingers crossed!
James E. Keenan [Thu, 1 Apr 2010 12:20:02 +0000 (08:20 -0400)]
Move $proto into $self;
James E. Keenan [Thu, 1 Apr 2010 11:08:35 +0000 (07:08 -0400)]
Add $Module_cname to $self.
James E. Keenan [Thu, 1 Apr 2010 02:48:28 +0000 (22:48 -0400)]
Move %defaults to $self.
James E. Keenan [Thu, 1 Apr 2010 01:55:17 +0000 (21:55 -0400)]
Move @line to $self.
James E. Keenan [Wed, 31 Mar 2010 23:37:04 +0000 (19:37 -0400)]
Move @line_no, @Attributes, %outargs, @XSStack to $self.
James E. Keenan [Wed, 31 Mar 2010 03:10:30 +0000 (23:10 -0400)]
Move %lengthof, %XsubAliases, %XsubAliasValues, %Interfaces.
To do: Eliminate confusion between these attributes: interface
(scalar) interfaces (scalar) Interfaces (hash)
James E. Keenan [Wed, 31 Mar 2010 02:23:02 +0000 (22:23 -0400)]
Add \%in_out and \%argtype_seen to $self.
James E. Keenan [Wed, 31 Mar 2010 00:47:51 +0000 (20:47 -0400)]
Move 9 'our' hashes and arrays into $self
For now, bypassing \@line, \%defaults.
James E. Keenan [Tue, 30 Mar 2010 22:45:21 +0000 (18:45 -0400)]
Move $var_num into $self.
Write inline comment explaining current status of 'our' variables.
James E. Keenan [Tue, 30 Mar 2010 12:34:02 +0000 (08:34 -0400)]
Move $Interfaces into $self, but as $self->{interfaces}
... to avoid confusion with %Interfaces. (But note we already have
$self->{interface}. This will have to be fixed.)
James E. Keenan [Tue, 30 Mar 2010 12:07:29 +0000 (08:07 -0400)]
Move $DoSetMagic, $XsubAliases, into $self.
The latter is called 'xsubaliases', the change of casing
anticipating confusion with %XsubAliases.
James E. Keenan [Mon, 29 Mar 2010 02:11:33 +0000 (22:11 -0400)]
Tidy up lists of 'our' variables.
James E. Keenan [Mon, 29 Mar 2010 02:07:45 +0000 (22:07 -0400)]
Move $condnum, $cond, into $self. $ALIAS ran into eval EXPR problems.
James E. Keenan [Mon, 29 Mar 2010 01:39:49 +0000 (21:39 -0400)]
Move $func_args into $self.
James E. Keenan [Mon, 29 Mar 2010 01:22:23 +0000 (21:22 -0400)]
Move $RETVAL_code into $self.
James E. Keenan [Mon, 29 Mar 2010 00:35:36 +0000 (20:35 -0400)]
Move $gotRETVAL into $self.
James E. Keenan [Mon, 29 Mar 2010 00:23:56 +0000 (20:23 -0400)]
Move $deferred into $self.
James E. Keenan [Sun, 28 Mar 2010 17:31:29 +0000 (13:31 -0400)]
Eliminate 'our' $printed_name
Replace it with a 'my' variable declared inside INPUT_handler().
Permissible, because $printed_name is explicitly passed to subs
called from within INPUT_handler() and only there.
James E. Keenan [Sun, 28 Mar 2010 17:21:47 +0000 (13:21 -0400)]
Move $thisdone and $retvaldone to $self.
James E. Keenan [Sun, 28 Mar 2010 17:02:34 +0000 (13:02 -0400)]
Add $Packprefix to $self.
James E. Keenan [Sun, 28 Mar 2010 02:40:53 +0000 (22:40 -0400)]
Move $ret_type into $self.
$pname posed interpolation problems.
James E. Keenan [Sun, 28 Mar 2010 02:28:11 +0000 (22:28 -0400)]
More globals in $self
Move $Prefix, $processing_arg_with_types, $proto_in_this_xsub,
$scope_in_this_xsub, $interface, $interface_macro,
$interface_macro_set, $ProtoThisXSUB, $ScopeThisXSUB into $self.
James E. Keenan [Sat, 27 Mar 2010 22:22:13 +0000 (18:22 -0400)]
Move more globals into the global $self
Move $proto_re, $Overload, $errors, $Fallback, $hiertype,
$WantPrototypes, $WantVersionChk, $WantLineNumbers,
$filepathname, $dir, $filename, $BLOCK_re, $lastline, $lastline_no
into $self. $proto_re not used within ParseXS.pm, so remove it.
$FH did not play well with $self inside angle-bracket operator
(while loop). $Package could not be transformed either, probably
due to problems in its usage as ${Package} inside HEREdocs.
James E. Keenan [Sat, 27 Mar 2010 16:47:16 +0000 (12:47 -0400)]
Declare global instance as a stepping stone to an OO ExtUtils::ParseXS
Declare 'our' variable $self and move the first package global ($ProtoUsed) into it.
James E. Keenan [Sun, 6 Feb 2011 14:39:06 +0000 (15:39 +0100)]
More and better tests
Provide messages for some tests in 001-basic.t. Add file
t/004-nolinenumbers.t to test case where line numbers are not
requested.
James E. Keenan [Sat, 27 Mar 2010 02:44:35 +0000 (22:44 -0400)]
Eliminate sub ProtoString(), which was used in only one location.
James E. Keenan [Sat, 27 Mar 2010 02:24:15 +0000 (22:24 -0400)]
Move list of XS keywords to Constants.pm.
James E. Keenan [Sat, 27 Mar 2010 02:07:21 +0000 (22:07 -0400)]
Remove the wistful comment about "use strict -- one of these days ..."
That day has come!