[svn:parrot] r44683 - in branches/ops_pct/compilers/opsc: src/Ops t
bacek at svn.parrot.org
bacek at svn.parrot.org
Sat Mar 6 09:42:54 UTC 2010
Author: bacek
Date: Sat Mar 6 09:42:54 2010
New Revision: 44683
URL: https://trac.parrot.org/parrot/changeset/44683
Log:
Store syn_export and init_func fields. Finish generating headers.
Modified:
branches/ops_pct/compilers/opsc/src/Ops/Emitter.pm
branches/ops_pct/compilers/opsc/t/06-emitter.t
Modified: branches/ops_pct/compilers/opsc/src/Ops/Emitter.pm
==============================================================================
--- branches/ops_pct/compilers/opsc/src/Ops/Emitter.pm Sat Mar 6 09:40:11 2010 (r44682)
+++ branches/ops_pct/compilers/opsc/src/Ops/Emitter.pm Sat Mar 6 09:42:54 2010 (r44683)
@@ -26,6 +26,13 @@
self<include> := "parrot/oplib/$base_ops_h";
self<header> := (~%flags<dir>) ~ "include/" ~ self<include>;
+ self<sym_export> := %flags<dynamic>
+ ?? 'PARROT_DYNEXT_EXPORT'
+ !! '';
+
+ self<init_func> := join('_',
+ 'Parrot', 'DynOp', $base ~ $suffix, |$ops_file.version );
+
# Prepare ops
$trans.prepare_ops(self, $ops_file);
@@ -37,7 +44,8 @@
method script() { self<script> };
method file() { self<file> };
method flags() { self<flags> };
-
+method sym_export() { self<sym_export> };
+method init_func() { self<init_func> };
method print_c_header_file() {
my $fh := pir::open__PSs(self<header>, 'w') || die("Can't open filehandle");
@@ -106,6 +114,7 @@
}
method _emit_preamble($fh) {
+
$fh.print(qq|
/* ex: set ro:
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
@@ -117,5 +126,18 @@
*
*/
|);
+
+ if self.flags<dynamic> {
+ $fh.print("#define PARROT_IN_EXTENSION\n");
+ }
+
+ $fh.print(qq|
+#include "parrot/parrot.h"
+#include "parrot/oplib.h"
+
+{self.sym_export} op_lib_t *{self.init_func}(PARROT_INTERP, long init);
+
+|);
}
+
# vim: expandtab shiftwidth=4 ft=perl6:
Modified: branches/ops_pct/compilers/opsc/t/06-emitter.t
==============================================================================
--- branches/ops_pct/compilers/opsc/t/06-emitter.t Sat Mar 6 09:40:11 2010 (r44682)
+++ branches/ops_pct/compilers/opsc/t/06-emitter.t Sat Mar 6 09:42:54 2010 (r44683)
@@ -3,7 +3,7 @@
pir::load_bytecode("compilers/opsc/opsc.pbc");
pir::load_bytecode("nqp-settings.pbc");
-plan(6);
+plan(7);
my $trans := Ops::Trans::C.new();
@@ -38,5 +38,6 @@
ok($header ~~ /define \s PARROT_OPLIB_CORE_OPS_H_GUARD/, 'Guard generated');
ok($header ~~ /endif/, 'Close guard generated');
ok($header ~~ /DO \s NOT \s EDIT \s THIS \s FILE/, 'Preamble generated');
+ok($header ~~ /Parrot_DynOp_core_ \d+ _ \d+ _ \d+/, '... and contains init_func');
# vim: expandtab shiftwidth=4 ft=perl6:
More information about the parrot-commits
mailing list