| C-TCC documentation | Contained in the C-TCC distribution. |
C::TCC - An interface to the TCC(Tiny C Compiler)
use C::TCC;
my $tcc = C::TCC->new();
$tcc->compile_string('int main(){printf("Hello World.\n"); return 0;}');
$tcc->run();
The perl module TCC provides an interface to the TCC(Tiny C Compiler) See http://fabrice.bellard.free.fr/tcc/ for more information on TCC.
TCC_OUTPUT_MEMORY
TCC_OUTPUT_EXE
TCC_OUTPUT_DLL
TCC_OUTPUT_OBJ
TCC_OUTPUT_PREPROCESS
TCC(Tiny C Compiler) is created by Fabrice Bellard.
http://fabrice.bellard.free.fr/tcc/
Tsukasa Hamano <hamano@cpan.org>
Copyright (C) 2008 Tsukasa Hamano <hamano@cpan.org>
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
| C-TCC documentation | Contained in the C-TCC distribution. |
# Copyright (C) 2008 Tsukasa Hamano <hamano@cpan.org> # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # $Id: TCC.pm,v 1.8 2008-03-18 06:32:41 hamano Exp $ package C::TCC; use 5.008008; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. # This allows declaration use C::TCC ':all'; # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK # will save memory. our %EXPORT_TAGS = ( 'all' => [ qw( TCC_OUTPUT_MEMORY TCC_OUTPUT_EXE TCC_OUTPUT_DLL TCC_OUTPUT_OBJ TCC_OUTPUT_PREPROCESS TCC_OUTPUT_FORMAT_ELF TCC_OUTPUT_FORMAT_BINARY TCC_OUTPUT_FORMAT_COFF ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = ( @{ $EXPORT_TAGS{'all'} }); our $VERSION = '0.05'; use constant { TCC_OUTPUT_MEMORY => 0, TCC_OUTPUT_EXE => 1, TCC_OUTPUT_DLL => 2, TCC_OUTPUT_OBJ => 3, TCC_OUTPUT_PREPROCESS => 4, TCC_OUTPUT_FORMAT_ELF => 0, TCC_OUTPUT_FORMAT_BINARY => 1, TCC_OUTPUT_FORMAT_COFF => 2, }; require XSLoader; XSLoader::load('C::TCC', $VERSION); # Preloaded methods go here. sub new { my $this = shift; my $class = ref($this) || $this; my $self = {}; bless $self, $class; $self->{state} = tcc_new(); return $self; } sub DESTROY { my $self = shift; tcc_delete($self->{state}); } #sub enable_debug #{ # my $self = shift; # tcc_enable_debug($self->{state}); #} sub add_include_path { my $self = shift; my $pathname = shift; tcc_add_include_path($self->{state}, $pathname); } sub add_sysinclude_path { my $self = shift; my $pathname = shift; tcc_add_include_path($self->{state}, $pathname); } sub define_symbol { my $self = shift; my $sym = shift; my $value = shift; tcc_define_symbol($self->{state}, $sym, $value); } sub undefine_symbol { my $self = shift; my $sym = shift; tcc_undefine_symbol($self->{state}, $sym); } sub add_file { my $self = shift; my $filename = shift; tcc_add_file($self->{state}, $filename); } sub compile_string { my $self = shift; my $buf = shift; tcc_compile_string($self->{state}, $buf); } sub set_output_type { my $self = shift; my $output_type = shift; tcc_set_output_type($self->{state}, $output_type); } # sub output_file { my $self = shift; my $filename = shift; tcc_output_file($self->{state}, $filename); } sub run { my $self = shift; my @args = @_; tcc_run($self->{state}, \@args); } 1; __END__ # Below is stub documentation for your module. You'd better edit it!