NAME FFI::TinyCC::Inline - Embed Tiny C code in your Perl program VERSION version 0.28 SYNOPSIS use FFI::TinyCC::Inline qw( tcc_inline ); tcc_inline q{ int square(int num) { return num*num; } }; print square(4), "\n"; # prints 16 use FFI::TinyCC::Inline qw( tcc_eval ); # sets value to 6: my $value = tcc_eval q{ int main(int a, int b, int c) { return a + b + c; } }, 1, 2, 3; DESCRIPTION This module provides a simplified interface to FFI::TinyCC, that allows you to write Perl subs in C. It is inspired by XS::TCC, but it uses FFI::Platypus to create bindings instead of XS. OPTIONS You can specify Tiny C options using the scoped pragmata, like so: use FFI::TinyCC::Inline options => "-I/foo/include -L/foo/lib -DFOO=1"; # prints 1 print tcc_eval q{ #include <foo.h> /* will search /foo/include int main() { return FOO; /* defined and set to 1 */ } }; FUNCTIONS tcc_inline tcc_inline $c_code; Compile the given C code using Tiny C and inject any functions found into the current package. An exception will be thrown if the code fails to compile, or if FFI::TinyCC::Inline does not recognize one of the argument or return types. tcc_inline q{ int foo(int a, int b, int c) { return a + b + c; } }; print foo(1,2,3), "\n"; # prints 6 The special argument type of (int argc, char **argv) is recognized and will be translated from the list of arguments passed in. Example: tcc_inline q{ void foo(int argc, const char **argv) { int i; for(i=0; i<argc; i++) { puts(argv[i]); } } }; foo("one", "two", "three"); # prints "one\ntwo\nthree\n" tcc_eval tcc_eval $c_code, @arguments; This compiles the C code and executes the main function, passing in the given arguments. Returns the result. SEE ALSO FFI::TinyCC C::Blocks BUNDLED SOFTWARE This package also comes with a parser that was shamelessly stolen from XS::TCC, which I strongly suspect was itself shamelessly "borrowed" from Inline::C::Parser::RegExp The license details for the parser are: Copyright 2002 Brian Ingerson Copyright 2008, 2010-2012 Sisyphus Copyright 2013 Steffen Muellero This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. AUTHOR Author: Graham Ollis <plicease@cpan.org> Contributors: aero Dylan Cali (calid) pipcet COPYRIGHT AND LICENSE This software is copyright (c) 2015-2018 by Graham Ollis. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.