File tree 2 files changed +22
-10
lines changed
ext/Tie-Hash-NamedCapture 2 files changed +22
-10
lines changed Original file line number Diff line number Diff line change 1
1
use strict;
2
2
package Tie::Hash::NamedCapture ;
3
3
4
- our $VERSION = " 0.07" ;
4
+ our $VERSION = " 0.08" ;
5
+
6
+ sub TIEHASH ;
5
7
6
8
require XSLoader;
7
9
XSLoader::load();
8
10
9
- my ($one , $all ) = Tie::Hash::NamedCapture::flags();
10
-
11
- sub TIEHASH {
12
- my ($pkg , %arg ) = @_ ;
13
- my $flag = $arg {all } ? $all : $one ;
14
- bless \$flag => $pkg ;
15
- }
16
-
17
11
tie %+, __PACKAGE__ ;
18
12
tie %-, __PACKAGE__ , all => 1;
19
13
Original file line number Diff line number Diff line change 18
18
MODULE = Tie ::Hash ::NamedCapture PACKAGE = Tie ::Hash ::NamedCapture
19
19
PROTOTYPES : DISABLE
20
20
21
+ SV *
22
+ TIEHASH (package , ...)
23
+ const char * package ;
24
+ PREINIT :
25
+ UV flag = RXapif_ONE ;
26
+ CODE :
27
+ mark += 2 ;
28
+ while (mark < sp ) {
29
+ STRLEN len ;
30
+ const char * p = SvPV_const (* mark , len );
31
+ if (memEQs (p , len , "all" ))
32
+ flag = SvTRUE (mark [1 ]) ? RXapif_ALL : RXapif_ONE ;
33
+ mark += 2 ;
34
+ }
35
+ RETVAL = newSV_type (SVt_RV );
36
+ sv_setuv (newSVrv (RETVAL , package ), flag );
37
+ OUTPUT :
38
+ RETVAL
39
+
21
40
void
22
41
FETCH (...)
23
42
ALIAS :
@@ -94,4 +113,3 @@ flags(...)
94
113
EXTEND (SP , 2 );
95
114
mPUSHu (RXapif_ONE );
96
115
mPUSHu (RXapif_ALL );
97
-
You can’t perform that action at this time.
0 commit comments