/[cvs]/nfo/perl/libs/OEF/API/Abstract.pm
ViewVC logotype

Annotation of /nfo/perl/libs/OEF/API/Abstract.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations)
Wed Jun 25 23:36:27 2003 UTC (20 years, 11 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +5 -1 lines
minor update: comment

1 joko 1.1 ## -------------------------------------------------------------------------
2 joko 1.4 ## $Id: Abstract.pm,v 1.3 2003/06/06 03:22:34 joko Exp $
3 joko 1.1 ## -------------------------------------------------------------------------
4 joko 1.2 ## $Log: Abstract.pm,v $
5 joko 1.4 ## Revision 1.3 2003/06/06 03:22:34 joko
6     ## new: now capable of registering symbols along with api methods
7     ##
8 joko 1.3 ## Revision 1.2 2003/04/04 17:25:51 joko
9     ## minor update regarding debugging output
10     ##
11 joko 1.2 ## Revision 1.1 2003/03/27 15:39:10 joko
12     ## initial commit, api metadata registration helper
13     ##
14 joko 1.1 ## -------------------------------------------------------------------------
15    
16    
17     package OEF::API::Abstract;
18    
19     use strict;
20     use warnings;
21    
22     use Data::Dumper;
23    
24     sub new {
25     my $self = shift;
26     #$self->_api_init();
27     }
28    
29     sub register {
30     my $self = shift;
31     my $payload = shift;
32     #print ref($self), " [$self] registers its API", "\n";
33 joko 1.2 print __PACKAGE__, ": ", ref($self), " registers its API", "\n";
34 joko 1.1 #$logger->info( ref($self), " [$self]", " registers its API" );
35     #print Dumper($payload);
36     $self->_push_api($payload);
37     }
38    
39 joko 1.3 sub register_symbols {
40     my $self = shift;
41     my $payload = shift;
42     print __PACKAGE__, ": ", ref($self), " registers its Symbols", "\n";
43     #print Dumper($payload);
44     $self->_push_symbols($payload);
45     }
46    
47 joko 1.1 sub _push_api {
48     my $self = shift;
49     my $payload = shift;
50     push @{$self->{api}}, @$payload;
51     }
52    
53 joko 1.3 sub _push_symbols {
54     my $self = shift;
55     my $payload = shift;
56     foreach (@$payload) {
57     push @{$self->{symbols}}, $_;
58     }
59     }
60    
61 joko 1.4 # create hierarchical API declaration tree recursively
62 joko 1.1 sub build {
63     my $self = shift;
64     my $plugins = shift;
65 joko 1.3
66     # 1. base api & symbols
67 joko 1.1 $self->_api_init();
68 joko 1.3 $self->_sym_init() if $self->can("_sym_init");
69    
70     # 2. api extensions (plugins)
71 joko 1.1 #my @api_ext;
72     foreach (@$plugins) {
73     my $subapi = DesignPattern::Object->fromPackage($_);
74     #next;
75     if ($subapi->build()) {
76     #push @api_ext, @$subapi_metadata;
77     #$self->register($subapi->getApiMetadata());
78     $self->_push_api($subapi->getApiMetadata());
79 joko 1.3 $self->_push_symbols($subapi->getSymbolMetadata()) if $subapi->can("getSymbolMetadata");
80 joko 1.1 }
81     }
82     #my @api_merged = (@$api_base, @api_ext);
83     #print Dumper(@api_merged);
84     #return \@api_merged;
85 joko 1.3
86 joko 1.1 return 1;
87     }
88    
89     sub getApiMetadata {
90     my $self = shift;
91     return $self->{api};
92 joko 1.3 }
93    
94     sub getSymbolMetadata {
95     my $self = shift;
96     return $self->{symbols};
97 joko 1.1 }
98    
99     1;
100     __END__

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed