pcre, bifs, drivers and ports
Mats Cronqvist
mats.cronqvist@REDACTED
Mon Jul 31 17:24:46 CEST 2006
Ernie Makris wrote:
> Hi Mats,
>
> I'd definitely be interested in seeing the code,
i'll ask istvan (the author, i just came up with the idea and the API :>) if
he'll post the code.
forgot to post an example in the previous post;
> re:grep("foofoo",["fo","of([a-z])"]).
[{0,2,[]},{2,5,["o"]}]
> or even an overview of
> the process to properly add a bif.
the (probably non-proper) process to add a bif is like this;
0) run configure
1) add your bifs to erts/emulator/beam/bif.tab
e.g.
bif re:grep/2
bif re:compile/1
2) create a C file
e.g.
erts/emulator/beam/erl_bif_re.c
3) implement your bifs by stealing bits from existing erl_bif_*.c files
e.g.
BIF_RETTYPE re_grep_2(BIF_ALIST_2){
Eterm result;
result = magic_function();
BIF_RET(result);
}
4) add your C file to erts/emulator/<arch>/Makefile
e.g.
RUN_OBJS = $(OBJDIR)/erl_bif_re.o \
5) run make; make install
note that if you add
bif ernie:makris/1
to bif.tab
there should be a erl_bif_ernie.c
that implements
BIF_RETTYPE ernie_makris_1(BIF_ALIST_1);
note that i'm not really an expert on this. consider it an educated guess :>
mats
More information about the erlang-questions
mailing list