factor/basis/pcre/info.factor

34 lines
870 B
Factor

USING:
accessors
alien alien.accessors alien.c-types alien.data alien.strings
arrays
kernel
math
pcre.ffi pcre.utils
sequences ;
IN: pcre.info
! Mostly internal
: fullinfo ( pcre extra what -- obj )
{ int } [ pcre_fullinfo ] with-out-parameters nip ;
: name-count ( pcre extra -- n )
PCRE_INFO_NAMECOUNT fullinfo ;
: name-table ( pcre extra -- addr )
PCRE_INFO_NAMETABLE fullinfo ;
: name-entry-size ( pcre extra -- size )
PCRE_INFO_NAMEENTRYSIZE fullinfo ;
: name-table-entry ( addr -- group-index group-name )
[ <alien> 1 alien-unsigned-1 ] [ 2 + <alien> alien>native-string ] bi ;
: options ( pcre -- opts )
f PCRE_INFO_OPTIONS fullinfo ;
! Exported
: name-table-entries ( pcre extra -- addrs )
[ name-table ] [ name-entry-size ] [ name-count ] 2tri gen-array-addrs
[ name-table-entry 2array ] map ;