Stlgen
Stlgen is based off the Standard Template Library (STL) for C++ here:
http://www.cplusplus.com/reference/stl/
The difference is that Stlgen will generate instances of STL templates
in a different language. By default, the language is c.
This example uses Stlgen to generate list_uint.(c/h) files which will implement
a linked list container coded in the c language.
#!/usr/bin/perl -w
use Stlgen;
my $inst = Stlgen->New(
Template=>'list',
Instancename => 'uint',
payload => [
{name=>'uint', type=>'unsigned int', dumper=>'printf("\t\tuint = %u\n", currelement->uint);'},
],
);
$inst->Instantiate();
You could use these files in a main.c program like this:
#include <stdio.h>
#include "list_uint.h"
int main (void) {
struct list_uint_list *mylist;
mylist = list_uint_constructor();
list_uint_push_back(mylist, 21);
list_uint_push_back(mylist, 99);
list_uint_push_back(mylist, 33);
list_uint_push_back(mylist, 34);
list_uint_push_back(mylist, 67);
list_uint_push_back(mylist, 12);
list_uint_push_back(mylist, 28);
list_uint_push_back(mylist, 55);
list_uint_push_back(mylist, 76);
list_uint_sort(mylist);
printf("\n\n\nThis is the sorted list\n");
list_uint_list_dumper(mylist);
return 0;
}
Note: this is a pre-alpha version. Currently the only STL container
implemented is the linked list. And that hasn't been tested very well yet.
The "push", "pop", "sort", and "dumper" functions are known to work.
INSTALLATION
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
SUPPORT AND DOCUMENTATION
After installing, you can find documentation for this module with the
perldoc command.
perldoc Stlgen
You can also look for information at:
RT, CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Stlgen
AnnoCPAN, Annotated CPAN documentation
http://annocpan.org/dist/Stlgen
CPAN Ratings
http://cpanratings.perl.org/d/Stlgen
Search CPAN
http://search.cpan.org/dist/Stlgen/
LICENSE AND COPYRIGHT
Copyright (C) 2010 Greg London
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.