package Iotta::Copp::CodeGen::InitFunc; use strict; require Iotta::Elem; our @ISA = ("Iotta::Elem"); my $ws = "[ \t\n]"; sub run { my $self = shift; my $meta = shift; my $data = shift; my $suff = $self -> suff; #if ($$meta{input} eq $self -> module) { # $self->meta ($meta); #} my $fn = $$meta{input}; $fn =~ s/.*\///; $fn =~ s/\.|-/_/; if ($data =~ /^#include$ws*[<"]$b$suff[">]/sm) { push @{$self->flist}, "\t__co_file_init_${fn}_" . $$meta{checksum} . " (super);\n"; } } sub finish { my $self = shift; my $meta; my $data; $data .= "#include \n"; $data .= "void __co_mod_autoinit (co super) {\n"; $data .= join "", @{$self->flist}; $data .= "}\n"; $self->next->run ($meta, $data) if ($self->next); } sub setup { my $self = shift; my $o = shift; $self -> suff ($$o{suffix}); } sub initialize { my $self = shift; $self -> SUPER::initialize (@_); $self -> {flist} = []; $self -> {suff} = ""; #$self -> {meta} = ""; #$self -> {module} = ""; } 1;