package Iotta::Copp::CodeGen::Objs; use strict; require Iotta::Elem; our @ISA = ("Iotta::Elem"); sub run { my $self = shift; my $meta = shift; my $data = shift; for my $obj (@{$$meta{objs}}) { $$meta{o_meth_attr} .= "/* object $$obj{name} */\n"; for (@{$$obj{attrs}}) { my %meth; my ($t, $n) = split /:/; $$meta{o_meth_attr} .= "CO_METH ($$obj{name}, $n) { CO_METH_INI ($$obj{name}, $n); CO_RETURN (${t}_p, &(td -> $n)); }\n"; $meth{name} = $n; $meth{object} = $$obj{name}; push @{$$meta{meths}}, \%meth; } $$meta{o_obj_construct} .= "co $$obj{name}_new (void) { co o = co_o_$$obj{flav}_new (); $$obj{name}_meth_ar_init (o); CO_M (o, init); return o; }\n"; } $self->next->run ($meta, $data) if ($self->next); } 1;