annotate variant_effect_predictor/Bio/Root/Object.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 #-----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 # PACKAGE : Bio::Root::Object.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # AUTHOR : Steve Chervitz (sac@bioperl.org)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # CREATED : 23 July 1996
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # REVISION: $Id: Object.pm,v 1.23 2002/10/22 07:38:37 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # STATUS : Alpha
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # For documentation, run this module through pod2html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # (preferably from Perl v5.004 or better).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # MODIFICATION NOTES: See bottom of file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # Copyright (c) 1996-2000 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 # This module is free software; you can redistribute it and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # modify it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 # Retain this notice and note any modifications made.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 #-----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 package Bio::Root::Object;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 require 5.002;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use Bio::Root::Global qw(:devel $AUTHORITY $CGI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 use Exporter ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 #use AutoLoader;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 #*AUTOLOAD = \&AutoLoader::AUTOLOAD;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 use vars qw(@EXPORT_OK %EXPORT_TAGS);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 @EXPORT_OK = qw($VERSION &find_object &stack_trace &containment &_rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 %EXPORT_TAGS = ( std => [qw(&stack_trace &containment)] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 use vars qw($ID $VERSION %Objects_created $Revision @ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 @ISA = qw(Bio::Root::Root);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 # %Objects_created can be used for tracking all objects created.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 # See _initialize() for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $ID = 'Bio::Root::Object';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $VERSION = 0.041;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $Revision = '$Id: Object.pm,v 1.23 2002/10/22 07:38:37 lapp Exp $'; #'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 ### POD Documentation:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 Bio::Root::Object - A core Perl 5 object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 Use this module as the root of your inheritance tree.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 =head2 Object Creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 require Bio::Root::Object;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 $dad = new Bio::Root::Object();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 $son = new Bio::Root::Object(-name => 'Junior',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 -parent => $dad,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 -make => 'full');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 See the L<new()|new> method for a complete description of parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 See also L<the USAGE section | USAGE>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 B<Bio::Root::Object> attempts to encapsulate the "core" Perl5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 object: What are the key data and behaviors ALL (or at least most) Perl5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 objects should have?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 =head2 Rationale
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 Use of B<Bio::Root::Object.pm> within the Bioperl framework facilitates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 operational consistency across the different modules defined within
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 the B<Bio::> namespace. Not all objects need to derive from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 B<Bio::Root::Object.pm>. However, when generating lots of different types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 of potentially complex objects which should all conform to a set of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 basic expectations, this module may be handy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 At the very least, this module saves you from re-writing the L<new()|new>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 method for each module you develop. It also permits consistent and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 robust handling of C<-tag =E<gt> value> method arguments via the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 L<Bio::Root::RootI::_rearrange()|Bio::Root::RootI> method and provides a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 object-oriented way handle exceptions and warnings via the L<Bio::Root::Root::throw()|Bio::Root::Root> and L<Bio::Root::Root::warn()|Bio::Root::Root> methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 See L<the APPENDIX section | APPENDIX> for some other handy methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 =head2 Fault-Tolerant Objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 A major motivation for this module was to promote the creation of robust,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 fault-tolerant Perl5 objects. The L<Bio::Root::Root::throw()|Bio::Root::Root> method relies on Perl's built-in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 C<eval{}/die> exception mechanism to generate fatal exceptions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 The data comprising an exception is managed by the B<Bio::Root::Err.pm>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 module, which essentially allows the data thrown by a C<die()> event to be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 wrapped into an object that can be easily examined and possibly re-thrown.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 The intent here is three-fold:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =item 1 Detailed error reporting.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Allow objects to report detailed information about the error condition
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 (who, what, where, why, how).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 =item 2 Handle complex errors in objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 The goal is to make it relatively painless to detect and handle the wide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 variety of errors possible with a complex Perl object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 Perl's error handling mechanism is a might clunky when it comes to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 handling complex errors within complex objects, but it is improving.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 =item 3 Efficient & easy exception handling.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 To enable robust exception handling without incurring a significant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 performance penalty in the resulting code. Ideally, exception handling
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 code should be transparent to the cpu until and unless an exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 arises.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 These goals may at times be at odds and we are not claiming
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 to have achieved the perfect balance. Ultimately, we want self-
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 sufficient object-oriented systems able to deal with their own errors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 This area should improve as the module, and Perl, evolve.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 One possible modification might be to utilize Graham Barr's B<Error.pm>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 module or Torsten Ekedahl's B<Experimental::Exception.pm> module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 (see L<Other Exception Modules>).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Technologies such as these may eventually be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 incorporated into future releases of Perl. The exception handling
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 used by B<Bio::Root::Object.pm> can be expected to change as Perl's
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 exception handling mechanism evolves.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 B<TERMINOLOGY NOTE:> In this discussion and elsewhere in this module,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 the terms "Exception" and "Error" are used interchangeably to mean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 "something unexpected occurred" either as a result of incorrect user
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 input or faulty internal processing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 =head1 USAGE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 =head2 Basic Exception handling
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Object construction is a common place for exceptions to occur. By wrapping
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 the construction in an C<eval{ }> block, we can prevent the exception from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 crashing the script and attempt to recover gracefully:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 # Package Foo.pm IS-A Bio::Root::Object.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 $obj = eval { new Foo(@data) }; # ending semicolon required.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 if($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 print STDERR "\nTrouble creating Foo object: $@\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 recover_gracefully($@);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 A common strategy when generating lots of objects is to collect
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 data about which objects failed to build but still permit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 the successfully created ones get processed:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 @errs = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 foreach $thing ( @stuff ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 my $obj = eval { new Foo($thing) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 if($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 push @err, [$thing, $@];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 process_obj($obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Post-mortem reporting, logging, or analysis of the problems ensues:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 if(@errs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 printf "\n%d things failed:\n", scalar(@errs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 foreach(@errs) { print "$err->[0], ";}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 print "\n\nTrapped exceptions:\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 foreach(@errs) { print "$err->[1]\n";}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 New with B<Perl 5.005> is the ability to C<die()> with an object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 reference in C<$@> instead of just a string. This feature is not yet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 exploited in Bio::Root::Object.pm but may be in future versions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Bio::Root::Err.pm objects can be reconstructed from the contents of C<$@>:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 eval{ # exception-prone code here... };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 if($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $err = new Bio::Root::Err($@);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 printf "Trouble: %s\n". $err->msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 printf "Stack trace: %s\n". $err->stack;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 =head2 Demo Scripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Some demo script that illustrate working with Bio::Root::Objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 are included with the distribution in the examples/root_object directory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 =head1 STRICTNESS & VERBOSITY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 There are two global variables that can be used to control sensitivity to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 exceptions/warnings and the amount of reporting for all objects within a process.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 These are accessed via functions B<strictness()> and B<verbosity()> exported by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Bio::Root::Global (see L<Bio::Root::Global>).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $STRICTNESS - Regulates the sensitivity of the object to exceptions and warnings.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 $VERBOSITY - Regulates the amount of reporting by an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 The L<strict()|strict> and L<verbose()|verbose> methods of B<Bio::Root::Object>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 originally operated at the the object level, to permit individual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 strictness and verbosity levels for different objects. This level of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 control is not usually required and can often be inconvenient; one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 typically wants to set these properties globally for a given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 script. While this sacrifices some flexibility, it saves time and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 memory when working with lots of objects. For instance, child objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 don't have to worry about checking their parents to determine their
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 strictness/verbosity levels. Strictness and verbosity are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 globally-defined values, but different classes of objects can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 differentially sensitive to these values depending on design criteria.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Strictness and verbosity can be positive or negative. Negative
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 verbosity equals terseness; negative strictness equals permissiveness.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 In B<Bio::Root::Object> only the Bio::Root::Root::throw() and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 Bio::Root::Root::warn() methods (see L<Bio::Root::Root>) are sensitive to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 these values as indicated in the tables below:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 +---------+
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 | throw() | v e r b o s i t y
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 +---------+ -------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 -1 0 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 s ---------- ----------- ----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 t
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 r -2 -- throw() converted into warn()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 i
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 c -1 | Exception Exception Exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 t 0 |_ printed printed printed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 n 1 | without with with stack
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 e 2 | stack trace stack trace trace and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 s | sysbeep
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 +---------+
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 | warn() | v e r b o s i t y
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 +---------+ --------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 -1 0 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 s ---------- ----------- -----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 t
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 r -2 | Warning Warning Warning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 i -1 |_ not printed printed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 c 0 | printed without with stack
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 t 1 | but stack trace trace and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 n | attached* sysbeep
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 e
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 s 2 -- warn() converted into throw()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 (*) Warnings will be attached to an object if the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 -record_err =>1 flag is set when constructing the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 or if $object->record_err(1) is called subsequent to creation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 See the methods L<verbose()|verbose>, L<strict()|strict>, L<record_err()|record_err>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Bio::Root::Root::throw(), and Bio::Root::Root::warn() in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 L<Bio::Root::Root> for more details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =head1 DEPENDENCIES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 As the B<Bio::Root::Object> does not inherit from any modules
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 but wraps (i.e., provides an interface and delegates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 functionality to) other modules in the Bio::Root:: hierarchy:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Module Purpose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 -------------------- ------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Bio::Root::Err.pm Exception handling
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Bio::Root::IOManager.pm Input/output of object data or error data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Bio::Root::Xref.pm Arbitrary links between objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 All of these modules are loaded only when necessary.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 B<Bio::Root::Err> is an object representing an exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 B<Bio::Root::IOManager> and B<Bio::Root::Xref> are more experimental. They are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 utilized via delegation, which permits them to be developed and utilized
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 independently of B<Bio::Root::Object>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Since this module is at the root of potentially many different objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 in a particular application, efficiency is important. Bio::Root::Object.pm is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 intended to be a lightweight, lean and mean module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 User feedback is an integral part of the evolution of this and other Bioperl modules.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Send your comments and suggestions preferably to one of the Bioperl mailing lists.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Report bugs to the Bioperl bug tracking system to help us keep track the bugs and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 their resolution. Bug reports can be submitted via email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Steve Chervitz E<lt>sac@bioperl.orgE<gt>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 See L<the FEEDBACK section | FEEDBACK> for where to send bug reports and comments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 =head1 VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Bio::Root::Object.pm, 0.041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 =head1 TODO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 =over 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 =item * Experiment with other Exception classes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 Consider incorporating a more widely-used Error/Exception module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 (see L<Other Exception Modules>).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 =item * Think about integration with Data::Dumper.pm for persisting objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 L<Bio::Root::Err> - Error/Exception object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 L<Bio::Root::IOManager> - Input/Output manager object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 L<Bio::Root::Vector> - Manages dynamic lists of objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 L<Bio::Root::Xref> - Cross-reference object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 L<Bio::Root::Global> - Manages global variables/constants
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 http://bio.perl.org/Projects/modules.html - Online module documentation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 http://bio.perl.org/ - Bioperl Project Homepage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 =head2 Other Exception Modules
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 Experimental::Exception.pm - ftp://ftp.matematik.su.se/pub/teke/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 Error.pm - http://www.cpan.org/authors/id/GBARR/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Throwable.pm - mailto:kstevens@globeandmail.ca
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 http://genome-www.stanford.edu/perlOOP/exceptions.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 =head1 ACKNOWLEDGEMENTS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 This module was developed under the auspices of the Saccharomyces Genome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Database:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 http://genome-www.stanford.edu/Saccharomyces
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Other Bioperl developers contributed ideas including Ewan Birney, Ian Korf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Chris Dagdigian, Georg Fuellen, and Steven Brenner.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 Copyright (c) 1996-98 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 This module is free software; you can redistribute it and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 modify it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 ###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 #### END of main POD documentation. '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 ###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Methods beginning with a leading underscore are considered private
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 and are intended for internal use by this module. They are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 B<not> considered part of the public interface and are described here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 for documentation purposes only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 # This object is deprecated as the root of the inheritance tree, but some
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 # modules depend on it as a legacy. We issue a deprecation warning for all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 # other modules.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my @inheriting_modules = ('Bio::Tools::Blast', 'Bio::Root::Object',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 'Bio::Root::IOManager');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 #######################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 # CONSTRUCTOR/DESTRUCTOR #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 #######################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 Purpose : Creates a blessed object reference (hash) for the indicated class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 : and calls _initialize() for the class passing it all parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Usage : new CLASS_NAME [ %named_parameters];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Example : $obj = new Bio::Root::Object 'george';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 : $obj = Bio::Root::Object->new(-name => 'L56163',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 : -parent => $obj2 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 : $obj = Bio::Root::Object->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 Returns : Blessed hash reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Argument : Named parameters: (PARAMETER TAGS CAN BE UPPER OR LOWERCASE).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 : (all are optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 : -NAME => arbitrary string to identify an object;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 : should be unique within its class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 : -PARENT => blessed reference for an object that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 : is responsible for the present object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 : (e.g., a container).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 : -MAKE => string to specify special constructor option.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 : -OBJ => object reference for an object to be cloned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 : -RECORD_ERR => boolean (if true, attach all Err.pm objects generated by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 : warn() or throw() calls to the present object;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 : default = false).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 : The use of STRICT and VERBOSE in constructors is no longer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 : necessary since there is no object-specific strict or verbose setting.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 : Use the strictness() and verbosity() functions exported by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 : Bio::Root::Global.pm. These options are still provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 : in the constructor but the will affect *all* objects within a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 : given process.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 : -STRICT => integer (level of strictness: -2, -1, 0, 1, 2).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 : -VERBOSE => integer (level of verbosity: -1, 0, 1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 : Verbosity can be used to control how much reporting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 : an object should do generally. In this module,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 : verbosity affects the behavior of throw() and warn()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 : only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 Comments : This method creates blessed HASH references.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 : An object is free to define its own strict, and verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 : behavior as well as its own make (constructor) options.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 See Also : L<_initialize()|_initialize>, L<name()|name>, L<parent()|parent>, L<make()|make>, L<strict()|strict>, L<verbose()|verbose>, L<record_err()|record_err>, and Bio::Root::Root::throw() and Bio::Root::Root::warn() in L<Bio::Root::Root>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 my($class, @param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 my $self = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 bless $self, ref($class) || $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $DEBUG==2 && print STDERR "CREATING $self";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $self->_initialize(@param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 =head2 _initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 Purpose : Initializes key Bio::Root::Object.pm data (name, parent, make, strict).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 : Called by new().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 Usage : n/a; automatically called by Bio::Root::Object::new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 Returns : String containing the -MAKE constructor option or 'default'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 : if none defined (if a -MAKE parameter is defined, the value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 : returned will be that obtained from the make() method.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 : This return value saves any subclass from having to call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 : $self->make() during construction. For example, within a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 : subclass _initialize() method, invoke the Bio::Root::Object::
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 : initialize() method as follows:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 : my $make = $self->SUPER::_initialize(@param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 Argument : Named parameters passed from new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 : (PARAMETER TAGS CAN BE ALL UPPER OR ALL LOWER CASE).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 Comments : This method calls name(), make(), parent(), strict(), index()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 : and thus enables polymorphism on these methods. To save on method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 : call overhead, these methods are called only if the data need
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 : to be set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 : The _set_clone() method is called if the -MAKE option includes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 : the string 'clone' (e.g., -MAKE => 'clone').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 : The index() method is called if the -MAKE option includes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 : the string 'index'. (This is an experimental feature)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 : (Example: -MAKE => 'full_index').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 : NOTE ON USING _rearrange():
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 : _rearrange() is a handy method for working with tagged (named)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 : parameters and it permits case-insensitive in tag names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 : as well as handling tagged or un-tagged parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 : _initialize() does not currently call _rearrange() since
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 : there is a concern about performance when setting many objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 : One issue is that _rearrange() could be called with many elements
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 : yet the caller is interested in only a few. Also, derived objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 : typically invoke _rearrange() in their constructors as well.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 : This could particularly degrade performance when creating lots
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 : of objects with extended inheritance hierarchies and lots of tagged
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 : parameters which are passes along the inheritance hierarchy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 : One thing that may help is if _rearrange() deleted all parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 : it extracted. This would require passing a reference to the param list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 : and may add excessive dereferencing overhead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 : It also would cause problems if the same parameters are used by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 : different methods or objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 See Also : L<new()|new>, L<make()|make>, L<name()|name>, L<parent()|parent>, L<strict()|strict>, L<index()|index>, L<verbose()|verbose>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 local($^W) = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 my($self, %param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 if(! grep { ref($self) =~ /$_/; } @inheriting_modules) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 $self->warn("Class " . ref($self) .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 " inherits from Bio::Root::Object, which is deprecated. ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 "Try changing your inheritance to Bio::Root::Root.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 my($name, $parent, $make, $strict, $verbose, $obj, $record_err) = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 ($param{-NAME}||$param{'-name'}), ($param{-PARENT}||$param{'-parent'}),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 ($param{-MAKE}||$param{'-make'}), ($param{-STRICT}||$param{'-strict'}),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 ($param{-VERBOSE}||$param{'-verbose'}),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 ($param{-OBJ}||$param{'-obj'}, $param{-RECORD_ERR}||$param{'-record_err'})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 ## See "Comments" above regarding use of _rearrange().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 # $self->_rearrange([qw(NAME PARENT MAKE STRICT VERBOSE OBJ)], %param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 $DEBUG and do{ print STDERR ">>>> Initializing $ID (${\ref($self)}) ",$name||'anon';<STDIN>};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 if(defined($make) and $make =~ /clone/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 $self->_set_clone($obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 $name ||= ($#_ == 1 ? $_[1] : ''); # If a single arg is given, use as name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 ## Another performance issue: calling name(), parent(), strict(), make()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 ## Any speed diff with conditionals to avoid method calls?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 $self->name($name) if $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 $self->parent($parent) if $parent;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 $self->{'_strict'} = $strict || undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 $self->{'_verbose'} = $verbose || undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 $self->{'_record_err'} = $record_err || undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 if($make) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 $make = $self->make($make);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 # Index the Object in the global object hash only if requested.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 # This feature is not used much. If desired, an object can always
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 # call Bio::Root::Object::index() any time after construction.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 $self->index() if $make =~ /index/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 $DEBUG and print STDERR "---> Initialized $ID (${\ref($self)}) ",$name,"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 ## Return data of potential use to subclass constructors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 # return (($make || 'default'), $strict); # maybe (?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 return $make || 'default';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 =head2 DESTROY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 Purpose : Provides indication that the object is being reclaimed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 : by the GC for debugging purposes only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 Usage : n/a; automatically called by Perl when the ref count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 : on the object drops to zero.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 Comments : Setting the global $DEBUG to 2 will print messages upon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 : object destruction.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 : Subclasses should override this method to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 : clean up any resources (open file handles, etc.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 : The overridden method should end with a call to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 : SUPER::DESTROY;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 See Also : L<destroy()|destroy>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 sub DESTROY {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 $DEBUG==2 && print STDERR "DESTROY called in $ID for ${\$self->to_string} ($self)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 =head2 destroy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 Purpose : Clean up any resources allocated by the object and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 : remove links to all objects connected to the present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 : object with the ultimate aim of signaling the GC to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 : reclaim all memory allocated for the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 : This method breaks links to any Err, IOManager, and Xref objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 : and drops the present object as a child from any parent objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 Usage : $object->destroy(); undef $object;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 : undef-ing the object reference signals the GC to reclaim
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 : the object's memory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 Returns : undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Comments : Circular reference structures are problematic for garbage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 : collection schemes such as Perl's which are based on reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 : counting. If you create such structures outside of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 : the parent-child relationship, be sure to properly break
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 : the circularity when destroying the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 : Subclasses should override this method to call destroy()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 : on any contained child objects. The overridden method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 : should end with a call to SUPER::destroy().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 Bugs : Bio::Root::Xref.pm objects have not been tested and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 : may not be handled properly here.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 : Bio::Root::Vector.pm objects are also not yet handled
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 : properly so beware of crunching lots of Vector objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 #-------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 sub destroy {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 ## Note: Cannot delete parent and xref object refs since they are not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 ## owned by this object, merely associated with it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 if(ref($self->{'_parent'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 $self->{'_parent'}->_drop_child($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 undef $self->{'_parent'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 if(ref($self->{'_io'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 $self->{'_io'}->destroy;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 undef $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 if(ref($self->{'_err'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 $self->{'_err'}->remove_all;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 undef $self->{'_err'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 if(ref($self->{'_xref'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 $self->{'_xref'}->remove_all;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 undef $self->{'_xref'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 $self->_remove_from_index if scalar %Objects_created;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 =head2 _drop_child
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 Usage : $object->_drop_child(object_ref)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 : Used internally by destroy().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 Purpose : To remove a parent-to-child inter-object relationship.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 : The aim here is to break cyclical object refs to permit Perl's
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 : GC to reclaim the object's memory. The expectation is that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 : a child object requests of its parent that the parent drop the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 : child object making the request. Parents do not drop children
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 : unless requested by the child in question.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 Example : $self->parent->_drop_child($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 Returns : undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 Argument : Object reference for the child object to be dropped
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 Throws : Exception if an object ref is not provided as an argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 Comments : This is a simplistic version that systematically checks every
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 : data member, searching all top-level array, hash, and scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 : data members.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 : It does not recurse through all levels of complex data members.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 : Subclasses could override this method to handle complex child
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 : data members for more optimal child searching. However, the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 : version here is probably sufficient for most situations.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 : _drop_child() is called by Bio::Root::Object::destroy() for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 : all objects with parents.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 See Also : L<destroy()|destroy>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 #---------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 sub _drop_child {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 my ($self, $child) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 my ($member, $found);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 $self->throw("Child not defined or not an object ($child).") unless ref $child;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 local($^W = 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 foreach $member (keys %{$self}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 next unless ref($self->{$member});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 # compare references.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 if (ref($self->{$member}) eq 'ARRAY') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 my ($i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 for($i=0; $i < @{$self->{$member}}; $i++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 if ($self->{$member}->[$i] eq $child) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 $DEBUG==2 && print STDERR "Removing array child $child\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 undef $self->{$member}->[$i];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 $found = 1; last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 } elsif(ref($self->{$member}) eq 'HASH') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 foreach(keys %{$self->{$member}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 if ($self->{$member}->{$_} eq $child) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 $DEBUG==2 && print STDERR "Removing hash child $child\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 undef $self->{$member}->{$_};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 $found = 1; last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 if ($self->{$member} eq $child) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 $DEBUG==2 && print STDERR "Removing child $child\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 undef $self->{$member};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 $found = 1; last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 # Child not found:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 # It is possible that a child object has a parent but has not yet been added to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 # the parent due to a failure during construction of the child. Not warning.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 #$self->warn(sprintf "Child %s not found in Parent %s.", $child->to_string, $self->to_string) unless $found;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 # ACCESSORS & INSTANCE METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 =head2 name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 Usage : $object->name([string]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 Purpose : Set/Get an object's common name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 Example : $myName = $myObj->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 : $myObj->name('fred');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 Returns : String consisting of the object's name or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 : "anonymous <CLASSNAME>" if name is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 : Thus, this method ALWAYS returns some string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 Argument : String to be used as the common name of the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 : Should be unique within its class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 See also : L<has_name()|has_name>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 sub name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 # $DEBUG and do{ print STDERR "\n$ID: name(@_) called.";<STDIN>; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 if (@_) { $self->{'_name'} = shift }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 return defined $self->{'_name'} ? $self->{'_name'} : 'anonymous '.ref($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 =head2 to_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 Usage : $object->to_string();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 Purpose : Get an object as a simple string useful for debugging purposes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 Example : print $myObj->to_string; # prints: Object <PACKAGE NAME> "<OBJECT NAME>"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 Returns : String consisting of the package name + object's name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 : Object's name is obtained by calling the name() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 See also : L<name()|name>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 sub to_string {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 return sprintf "Object %s \"%s\"", ref($self), $self->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 =head2 parent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 Usage : $object->parent([object | 'null']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 Purpose : Set/Get the current object's source object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 : An object's source object (parent) is defined as the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 : that is responsible for creating the current object (child).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 : The parent object may also have a special mechanism for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 : destroying the child object. This should be included
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 : in the parent object's DESTROY method which should end with a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 : call to $self->SUPER::DESTROY.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 Example : $myObj->parent($otherObject);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 Returns : Object reference for the parent object or undef if none is set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 Argument : Blessed object reference (optional) or the string 'null'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 : 'null' = sets the object's _parent field to undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 : breaking the child object's link to its parent.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 Throws : Exception if argument is not an object reference or 'null'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 Comments : This method may be renamed 'parent' in the near future.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 : When and if this happens, parent() will still be supported but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 : will be deprecated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 See also : L<destroy()|destroy>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 #------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 sub parent {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 my $arg = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 if(ref $arg) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 $self->{'_parent'} = $arg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 } elsif($arg =~ /null/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 $self->{'_parent'} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 $self->throw("Can't set parent using $arg: Not an object");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 $self->{'_parent'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 =head2 src_obj
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 Usage : $object->src_obj([object | 'null']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 : THIS METHOD IS NOW DEPRECATED. USE parent() INSTEAD.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 Purpose : Set/Get the current object's source object (parent).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 See also : L<parent()|parent>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 #------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 sub src_obj {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 $self->warn("DEPRECATED METHOD src_obj() CALLED. USE parent() INSTEAD.\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 $self->parent(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 =head2 has_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 Usage : $object->has_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 Purpose : To determine if an object has a name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 Returns : True (1) if the object's {'Name'} data member is defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 : False otherwise.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 Comments : One may argue, why not just use the name() method as a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 : combination setter/getter? has_name() is necessary for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 : the following reasons:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 : (1) If an object's name is not defined, name() returns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 : "anonymous <CLASSNAME>".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 : (2) If an object's name is 0 (zero) or '' (empty string),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 : conditionals that simply check name() would fail incorrectly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 See also : L<name()|name>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 #--------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 sub has_name { my $self = shift; return defined $self->{'_name'}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 =head2 make
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 Usage : $object->make([string]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 Purpose : Set/Get an object's constructor option.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 : make() is intended for use during object construction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 : to essentially permit alternate constructors since
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 : Perl doesn't have a built-in mechanism for this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 Example : $make = $object->make();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 : $object->make('optionA');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 Returns : String consisting of the object's make option
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 : or 'default' if make is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 : Thus, this method ALWAYS returns some string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 Argument : String to be used as an option during object construction.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 Comments : A typical use of a make option is when cloning an object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 : from an existing object. In this case, the new() method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 : is called with -MAKE => 'clone'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 See also : L<_initialize()|_initialize>, L<clone()|clone>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 #----------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 sub make {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 if(@_) { $self->{'_make'} = shift; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 $self->{'_make'} || 'default';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 =head2 err
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 Usage : $self->err([$data], [$delimit])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 Purpose : Check for exceptions/warnings and get data about them.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 : (object validation and error data retrieval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 Example : $self->err && print "has err";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 : $errCount = $self->err('count');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 : $errMsgs = $self->err('msg',"\t");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 : @errNotes = $self->err('note');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 Returns : One of the following:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 : 1. If no arguments are given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 : a. If the object has an error, the err data member is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 : returned (this is an Bio::Root::Err.pm object),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 : b. otherwise, undef is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 : 2. The number of Errs in the object's err data member (if $data eq 'count').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 : 3. A string containing data from a specific field from an object's err member.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 : -- If the object contains multiple errors, data for all errors will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 : strung together in reverse chronological order with each error's data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 : preceeded by "Error #n\n" and followed by two delimiters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 : 4. A list containing data from a specific field from an object's err member.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 : -- If the object contains multiple errors, data for all errors will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 : added in reverse chronological order as separate elements in the list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 : with NO "Error #n\n" identifier. Individual err list data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 : (note,tech,stack) will be tab-delimited.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 Arguments : $data = The name of a specific Err data member (see %Bio::Root::Err::ERR_FIELDS)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 : OR 'count'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 : $delimit = The delimiter separating a single Err's list data member's elements.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 : Default is "\n". For multi-error objects, two of these
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 : delimiters separate data from different errors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 : If wantarray is true or delimiter is 'list', data from multiple
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 : errors will be returned as a list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 Comments : Since Err objects are now fatal and are not attached to the object by default,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 : this method is largely moot. It is a relic from the former
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 : error "polling" days.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 : It is handy for accessing non-fatal warnings thrown by the object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 : or in situations where fatal errors are converted to warnings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 : as when $self->strict is -1 or $WARN_ON_FATAL is true.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 : (Note: an object now only attaches Err objects to itself when
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 : constructed with -RECORD_ERR =>1 or if the global $RECORD_ERR is true).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 : This method is intended mainly to test whether or not an object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 : has any Err objects associated with it and if so, obtaining the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 : Err object or specific data about it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 : For obtaining ALL data about an error, use err_string().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 : For more detailed manipulations with the Err data, retrieve the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 : Err object and process its data as necessary.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 See also : L<err_string()|err_string>, L<print_err()|print_err>, L<Bio::Root::Err::get_all|Bio::Root::Err>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 sub err {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 my( $self, $data, $delimit) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 return undef unless defined $self->{'_err'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 $data ||= 'member';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 # $delimit ||= (wantarray ? 'list' : "\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 $delimit ||= "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 $data eq 'member' and return $self->{'_err'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 $data eq 'count' and return $self->{'_err'}->size();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 return $self->{'_err'}->get_all($data, $delimit );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 =head2 record_err
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 Usage : $object->record_err([0|1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 Purpose : Set/Get indicator for whether an object should save
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 : the Bio::Root::Err.pm objects it generates via calls
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 : to throw() or warn().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 Example : $myObj->record_err(1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 Returns : Boolean (0|1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987 Argument : Boolean (0|1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 Comments : Record_err is generally useful only for examining
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 : warnings produced by an object, since calls to throw()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 : are normally fatal (unless strictness is set to -2).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 : To turn on recording of errors for all objects in a process,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 : use Bio::Root::Global::record_err().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 See also : L<err()|err>, and record_err() in L<Bio::Root::Err>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 sub record_err {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 if (@_) { $self->{'_record_err'} = shift }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 return $self->{'_record_err'} || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 =head2 err_state
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 Usage : $object->err_state();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 Purpose : To assess the status of the object's Err object (if any).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 Returns : A string: 'EXCEPTION' | 'WARNING' | 'FATAL' | 'OKAY'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 : (OKAY is returned if there are no Errors)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 #-------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 sub err_state {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 return 'OKAY' if not defined $self->{'_err'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 $self->{'_errState'} || 'OKAY';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 =head2 clear_err
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 Purpose : To remove any error associated with the given object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 Usage : $myObj->clear_err;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 See also : L<err()|err>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 sub clear_err {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 undef $self->{'_err'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 =head2 containment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 Usage : $aref = $object->containment();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 : Since this method can be exported, the following can be used:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 : $aref = containment($object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 Purpose : To determine the containment hierarchy of a object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 Returns : An array reference in which each element is a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 : containing the class and name of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 : the object in which this object is contained.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 : Indentation increases progressively as the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 : hierarchy is traversed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 : E.g., Object MyClass "Foo"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 : Contained in object YourClass "Bar"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 : Contained in object HisClass "Moo"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 Comments : This method will report only one object at each level
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 : since an object can currently have only one source object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 Status : Exported
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 See also : L<err()|err>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 #------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071 sub containment {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 #------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 my( $self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 my(@hierarchy);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 # print "$ID: getting err hierarchy.\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 push @hierarchy, $self->to_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 my $obj = $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 while( ref $obj->parent) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 $obj = $obj->parent;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 push @hierarchy, sprintf "%sContained in %s", ' ' x ++$count, $obj->to_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 return \@hierarchy;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 =head2 set_stats
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 Usage : $object->set_stats(KEY => DATA [,KEY2 => DATA2])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 Purpose : To declare and initialize a set of statistics germain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 : to an object. Each statistic name becomes a data member
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 : prefixed with an underscore (if not already) and first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 : character after the underscore is lowercased.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 Example : $object->set_stats('num_A' =>1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 : 'Num_B' =>10 ):
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 : This sets :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 : $object->{'_num_A'} = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 : $object->{'_num_B'} = 10;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 Returns : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 Comments : This method implements a convention for naming Perl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103 : object data members with a leading underscore,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 : consistent with the naming convention of private methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 : Data members should not be part of an object's public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 : interface. The leading underscore helps flag the members
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 : as private and also prevents inadvertant clobbering.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111 #--------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 sub set_stats {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 my( $self, %param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 my ($val);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 foreach (keys %param) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 $val = $param{$_};;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 s/^(\w)/_\l$1/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 $self->{$_} = $val;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125 =head2 strict
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127 Usage : $object->strict( [-2|-1|0|1|2] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 : warn $message if $object->strict > 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 Purpose : To make the object hyper- or hyposensitive to exceptions & warnings.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130 : Strict = 2 : extremely hyper-sensitive, converts warn() into throw().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131 : Strict = 1 : hyper-sensitive, but calls to warn are not converted.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 : Strict = 0 : no change (throw() = fatal, warn() = non-fatal).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 : Strict = -1 : hypo-sensitive, but calls to throw are not converted.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 : Strict = -2 : extremely hypo-sensitive, converts throw() into warn()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136 : Two degrees of positive and negative values for strict permit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 : the following functionality:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 : 1. Setting strict to 2 or -2 leads to more dramatic strictness
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 : or permissiveness, respectively. With 2, all calls to warn()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140 : become calls to throw() and are therefore fatal. With -2,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 : the opposite is true and calls to throw become non-fatal.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 : A strict value of 2 is thus an object-level version of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 : Perl's "use strict" pragma.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145 : 2. Setting strict to 1 or -1 does not affect the behavior of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 : throw() and warn(). This allows an object to implement its
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147 : its own strictness policy. A strict value of 1 is thus an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 : an object-level version of Perl's -w flag.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150 Returns : Integer between -2 to 2.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151 Comments : This method no longer accesses an object-specific strictness
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 : level but rather the global $STRICTNESS variable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 : defined in Bio::Root::Global.pm and accessed via the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154 : strictness() method exported by that package.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 : Thus, all objects share the same strictness which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156 : is generally more convenient.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159 See also : warn() and throw() in L<Bio::Root::Root>, L<STRICTNESS & VERBOSITY>, strictness() in L<Bio::Root::Global>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 sub strict {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168 # Use global strictness?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 if( $self->{'_use_global_strictness'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170 return &strictness(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 # Object-specific strictness
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 if (@_) { $self->{'_strict'} = shift; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175 defined($self->{'_strict'})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176 ? return $self->{'_strict'}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177 : (ref $self->{'_parent'} ? $self->{'_parent'}->strict : 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181 =head2 use_global_strictness
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 Usage : $object->use_global_strictnness( [1|0] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184 Purpose : Set/Get accessor for a flag indicating whether or not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 : to use the global strictness setting or to instead use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186 : object-specific strictness.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 Returns : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188 Comments :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191 See also : L<strict()|strict>, L<STRICTNESS & VERBOSITY>, strictness() in L<Bio::Root::Global>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195 sub use_global_strictness {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198 if( defined $value ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199 $self->{'_use_global_strictness'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202 return $self->{'_use_global_strictness'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206 =head2 clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208 Purpose : To deeply copy an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209 : Creates a new object reference containing an exact
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210 : copy of an existing object and all its data members.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211 Usage : $myClone = $myObj->clone;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212 Comments : This method only clones the Bio::Root::Object data members.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213 : To fully clone an object that has data members beyond
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214 : those inherited from Bio::Root::Object, you must provide a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215 : constructor in your class to copy all data of an object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216 : data into the clone. For an example, see how _set_clone()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 : is called by _initialize() in this class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 : clone() will pass the named parameters {-MAKE=>'clone'}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220 : and {-OBJ=>$self} to the object's constructor. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221 : constructor should then either check the -MAKE parameter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 : directly or should check the return value from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223 : a call to the superclass constructor (see _initialize()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 : for an example) and then copy the required data members from OBJ
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225 : into the new object, bypassing the normal construction process.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226 : Cloning of objects has not been extensively tested.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227 : USE WITH CAUTION.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230 See Also : L<_set_clone()|_set_clone>, L<_initialize()|_initialize>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234 #-------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 sub clone {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237 my($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239 # warn sprintf "\nCloning %s \"%s\"\n\n", ref($self),$self->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241 my $clone = $self->new(-MAKE =>'clone',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242 -OBJ =>$self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243 if($self->err()) { $clone->err($self->err); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244 $clone;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249 =head2 _set_clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251 Usage : n/a; internal method used by _initialize()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252 : $self->_set_clone($object_to_be_cloned)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253 Purpose : Deep copy all Bio::Root::Object.pm data members
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254 : into a new object reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255 : (This is basically a copy constructor).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256 Argument : object ref for object to be cloned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257 Throws : Exception if argument is not an object reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258 Comments : Data members which are objects are cloned (parent, io, err).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 : Cloning of objects has not been extensively tested.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260 : USE WITH CAUTION.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262 See Also : L<_initialize()|_initialize>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 sub _set_clone {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269 my($self, $obj) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271 ref($obj) || throw($self, "Can't clone $ID object: Not an object ref ($obj)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 local($^W) = 0; # suppress 'uninitialized' warnings.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275 $self->{'_name'} = $obj->{'_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 $self->{'_strict'} = $obj->{'_strict'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277 $self->{'_make'} = $obj->{'_make'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 $self->{'_verbose'} = $obj->{'_verbose'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279 $self->{'_errState'} = $obj->{'_errState'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 ## Better to use can() with Perl 5.004.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 $self->{'_parent'} = ref($obj->{'_parent'}) and $obj->{'_parent'}->clone;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282 $self->{'_io'} = ref($obj->{'_io'}) and $obj->{'_io'}->clone;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283 $self->{'_err'} = ref($obj->{'_err'}) and $obj->{'_err'}->clone;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288 =head2 verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290 Usage : $object->verbose([-1|0|1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291 Purpose : Set/Get an indicator for how much ruporting an object should do.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292 Argument : integer (-1, 0, or 1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293 Returns : integer (-1, 0, or 1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 : Returns 0 if verbosity has not been defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295 : Verbosity > 0 indicates extra reporting.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296 : Verbosity < 0 indicates minimal reporting.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297 : Verbosity = 0 or undefined indicates default reporting.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298 Comments : This method no longer accesses an object-specific verbosity
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 : level but rather the global $VERBOSITY variable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 : defined in Bio::Root::Global.pm and accessed via the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301 : verbosity() method exported by that package.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 : Thus, all objects share the same verbosity which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303 : is generally more convenient.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306 See Also : L<strict()|strict>, L<STRICTNESS & VERBOSITY>, verbosity() in L<Bio::Root::Global>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311 sub verbose {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315 # Using global verbosity
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316 return &verbosity(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318 # Object-specific verbosity (not used unless above code is commented out)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 if(@_) { $self->{'_verbose'} = shift; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320 defined($self->{'_verbose'})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 ? return $self->{'_verbose'}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322 : (ref $self->{'_parent'} ? $self->{'_parent'}->verbose : 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327 =head1 I/O-RELATED METHODS (Delegated to B<Bio::Root::IOManager>)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1329 =head2 _io
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1331 Usage : $object->_io()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1332 Purpose : Get the Bio::Root::IOManager.pm object for the current object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 See also : L<display()|display>, L<read()|read>, L<file()|file>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 #-------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 sub _io { my $self = shift; return $self->{'_io'}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340 #-------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344 =head2 _set_io
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346 Usage : n/a; internal use only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 Purpose : Sets a new Bio::Root::IOManager.pm object for the current object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349 See also : L<display()|display>, L<read()|read>, L<file()|file>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354 sub _set_io {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358 require Bio::Root::IOManager;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360 # See PR#192.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361 # $self->{'_io'} = new Bio::Root::IOManager(-PARENT=>$self, @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362 $self->{'_io'} = new Bio::Root::IOManager(-PARENT=>$self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367 =head2 set_display
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369 Usage : $object->set_display( %named_parameters).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370 : See Bio::Root::IOManager::set_display() for a description of parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 Purpose : Sets the output stream for displaying data associated with an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 : Delegates to Bio::Root::IOManager::set_display().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373 Argument : Named parameters (optional).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374 : See Bio::Root::IOManager::set_display() for a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375 : description of arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378 : I'm not satisfied with the current display()/set_display() strategy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380 See also : set_display() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 #----------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385 sub set_display {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387 my($self, @param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389 $self->_set_io(@param) if !ref($self->{'_io'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391 eval { $self->{'_io'}->set_display(@param); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393 if($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394 my $er = $@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 $self->throw(-MSG=>$er, -NOTE=>"Can't set_display for ${\$self->name}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398 return $self->{'_io'}->fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402 =head2 display
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404 Usage : $object->display( named parameters)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 : See Bio::Root::IOManager::display() for a description of parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406 Purpose : Output information about an object's data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407 : Delegates this task to Bio::Root::IOManager::display()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408 Argument : Named parameters for IOManager::set_display()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 : IOManager::set_display()is then called on the new IOManager object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413 : The motivation behind the display() method and IOManager.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414 : is to allow for flexible control over output of an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415 : object's data to/from filehandles, pipes, or STDIN/STDOUT,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416 : and for passing file handles between objects. Currently,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417 : it is used mainly for output to STDOUT.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 : There is some concern whether this much functionality is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420 : actually necessary, hence the "Experimental" status of this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 : method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423 : -------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 : It might be worthwhile to also have a string() method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425 : that will put an object's data into a string that can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426 : further processed as desired. Stringification for persistence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 : issues might be best handled by Data::Dumper.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 : When overriding this method, use the following syntax:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431 : sub display {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432 : my ($self, %param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 : $self->SUPER::display(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434 : my $OUT = $self->fh();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435 : print $OUT "\nSome data...\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 : ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437 : }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438 : Now $OUT holds a filhandle reference (or the string 'STDOUT')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439 : which can be passed to other methods to display different
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 : data for the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441 : _set_display() is automatically called with $OUT as the sole
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 : argument (after $self) by IOManager.pm::display()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1443 : if the -SHOW parameter is set to 'stats' or 'default'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1444 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1445 Bugs : Because the $OUT variable can be a FileHandle or a string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1446 : it is necessary to include the line before using $OUT in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1447 : print statements:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1448 : I am considering a cleaner way of dealing with this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1449 : Setting $OUT to a glob (*main::STDOUT) was unsuccessful.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1450 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1451 : I'm not satisfied with the current display()/set_display() strategy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1453 See also : display() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1455 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1456
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1457 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1458 sub display {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1459 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1460 my( $self, @param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1461 $self->{'_io'} || $self->set_display(@param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1462 $self->{'_io'}->display(@param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1463 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1464
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1467
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1468 =head2 _display_stats
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1470 Usage : n/a; called automatically by Bio::Root::Object::display(-SHOW=>'stats');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1471 Purpose : Display stereotypical data for an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1472 : Automatically called via display().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1473 Argument : Filehandle reference or string 'STDOUT' 'STDIN' 'STDERR'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1474 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1476 See also : L<display()|display>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1478 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1480 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1481 sub _display_stats {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1482 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1483 my($self, $OUT) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1486 printf ( $OUT "%-15s: %s\n","NAME", $self->name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1487 printf ( $OUT "%-15s: %s\n","MAKE", $self->make());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1488 if($self->parent) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1489 printf ( $OUT "%-15s: %s\n","PARENT", $self->parent->to_string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1490 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1491 printf ( $OUT "%-15s: %d\n",'ERRORS', (defined $self->err('count') ? $self->err('count') : 0)); ###JES###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1492 printf ( $OUT "%-15s: %s\n","ERR STATE", $self->err_state());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1493 if($self->err()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1494 print $OUT "ERROR:\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1495 $self->print_err();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1496 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1497 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1501 =head2 read
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1503 Usage : $object->read( named parameters)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1504 : See Bio::Root::IOManager::read() for a description of parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1505 Purpose : Inputs data from an arbitrary source (file or STDIN).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1506 : Delegates this task to Bio::Root::IOManager::read().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1507 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1508 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1509 : See the comments for the display() method for some comments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1510 : about IO issues for objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1511 : Note that the read() method uses a different strategy than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1512 : the display() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1513 : IO issues are considered experimental.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1515 See also : L<display()|display>, read() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1517 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1519 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1520 sub read {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1521 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1522 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1524 $self->_set_io(@_) if not defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1526 $self->{'_io'}->read(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1527 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1531 =head2 fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1533 Usage : $object->fh(['name'])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1534 : See Bio::Root::IOManager::fh() for a complete usage description.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1535 Purpose : Get an object's current FileHandle object or IO stream indicator.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1536 : Delegates to Bio::Root::IOManager.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1537 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1538 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1540 See also : fh() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1542 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1544 #--------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1545 sub fh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1546 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1547 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1548 $self->_set_io(@_) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1549 $self->{'_io'}->fh(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1550 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1553 =head2 show
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1555 Usage : $object->show()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1556 : See Bio::Root::IOManager::show() for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1557 Purpose : Get the string used to specify what to display
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1558 : using the display() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1559 : Delegates to Bio::Root::IOManager.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1560 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1561 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1562
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1563 See also : show() in L<Bio::Root::IOManager>, set_display() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1565 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1567 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1568 sub show {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1569 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1570 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1571 $self->_set_io(@_) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1572 $self->{'_io'}->show;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1573 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1577 =head2 file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1579 Usage : $object->file()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1580 : See Bio::Root::IOManager::file() for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1581 Purpose : Set/Get name of a file associated with an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1582 : Delegates to Bio::Root::IOManager.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1583 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1584 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1586 See also : file() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1588 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1590 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1591 sub file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1592 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1593 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1594 $self->_set_io(@_) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1595 $self->{'_io'}->file(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1596 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1599 =head2 compress_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1601 Usage : $object->compress_file([filename])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1602 : See Bio::Root::IOManager::compress_file() for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1603 Purpose : Compress a file associated with the current object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1604 : Delegates to Bio::Root::IOManager.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1605 Throws : Propagates exceptions thrown by Bio::Root::IOManager.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1606 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1607 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1609 See also : L<file()|file>, compress_file() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1610
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1611 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1613 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1614 sub compress_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1615 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1616 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1617 $self->_set_io(@_) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1618 $self->{'_io'}->compress_file(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1619 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1620
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1621
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1622
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1623 =head2 uncompress_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1625 Usage : $object->uncompress_file([filename])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1626 : Delegates to Bio::Root::IOManager.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1627 Purpose : Uncompress a file associated with the current object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1628 Throws : Propagates exceptions thrown by Bio::Root::IOManager.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1629 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1630 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1631
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1632 See also : L<file()|file>, uncompress_file() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1634 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1636 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1637 sub uncompress_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1638 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1639 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1640 $self->_set_io(@_) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1641 $self->{'_io'}->uncompress_file(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1642 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1645 =head2 delete_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1647 Usage : $object->delete_file([filename])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1648 : See Bio::Root::IOManager::delete_file() for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1649 Purpose : Delete a file associated with the current object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1650 : Delegates to Bio::Root::IOManager.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1651 Throws : Propagates exceptions thrown by Bio::Root::IOManager.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1652 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1653 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1655 See also : L<file()|file>, delete_file() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1656
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1657 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1658
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1659 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1660 sub delete_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1661 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1662 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1663 $self->_set_io(@_) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1664 $self->{'_io'}->delete_file(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1665 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1667
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1668 =head2 file_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1670 Usage : $object->file_date( %named_parameters )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1671 : See Bio::Root::IOManager::file_date() for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1672 Purpose : Obtain the last modified data of a file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1673 : Delegates to Bio::Root::IOManager.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1674 Example : $object->file_date('/usr/home/me/data.txt');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1675 Throws : Propagates exceptions thrown by Bio::Root::IOManager.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1676 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1677 Comments : Sets the IOManager.pm object if it is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1678
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1679 See also : L<file()|file>, file_date() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1680
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1681 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1683 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1684 sub file_date {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1685 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1686 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1687 $self->_set_io(@_) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1688 $self->{'_io'}->file_date(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1689 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1693 =head1 EXPERIMENTAL METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1696 =head2 xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1698 Usage : $object->xref([object | 'null']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1699 Purpose : Sets/Gets an object(s) cross-referenced
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1700 : to the current object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1701 Example : $myObj->xref('null'); #remove all xrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1702 : $myObj->xref($otherObject); #add a cross referenced object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1703 Argument : Object reference or 'null' ('undef' also accepted).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1704 Returns : Object reference or undef if the object has no xref set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1705 Throws : fatal error if argument is not an object reference or 'null'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1706 Comments : An Xref.pm object is a vectorized wrapper for an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1707 : Thus, the number of objects cross-referenced can grow
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1708 : and shrink at will.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1709 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1710 WARNING : NOT FULLY TESTED.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1712 See Also : L<Bio::Root::Xref>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1713
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1714 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1716 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1717 sub xref {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1718 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1719 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1720 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1721 my $arg = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1722 if(ref $arg) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1723 require Bio::Root::Xref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1724
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1725 if( !defined $self->{'_xref'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1726 $self->{'_xref'} = new Bio::Root::Xref(-PARENT =>$self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1727 -OBJ =>$arg);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1728 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1729 $self->{'_xref'}->add($arg);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1730 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1731 } elsif($arg =~ /null|undef/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1732 undef $self->{'_xref'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1733 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1734 $self->throw("Can't set Xref using $arg: Not an object");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1735 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1736 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1738 $self->{'_xref'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1739 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1740
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1743 =head2 index
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1744
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1745 Purpose : To add an object to a package global hash of objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1746 : for tracking or rapid retrieval.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1747 Usage : $self->index();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1748 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1749 Comments : The object's name is used to index it into a hash. Objects in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1750 : different classes (packages) will be indexed in different hashes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1751 : An object's name should thus be unique within its class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1752 : To find an object, use find_object().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1753 : Uses the package global %Objects_created.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1754
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1755 See also : L<find_object()|find_object>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1757 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1759 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1760 sub index {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1761 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1762 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1763 my $class = ref $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1764 my $objName = $self->{'_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1765
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1766 if( not defined $objName ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1767 $self->throw("Can't index $class object \"$objName\".");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1768 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1770 $DEBUG and do{ print STDERR "$ID: Indexing $class object \"$objName\"."; <STDIN>; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1772 $Objects_created{ $class }->{ $objName } = $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1773 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1775 #----------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1776 sub _remove_from_index {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1777 #----------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1778 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1779 my $class = ref $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1780 my $objName = $self->{'_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1782 undef $Objects_created{$class}->{$objName} if exists $Objects_created{$class}->{$objName};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1783 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1784
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1787 =head2 find_object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1789 Purpose : To obtain any object reference based on its unique name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1790 : within its class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1791 Usage : $myObj = &find_object('fred');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1792 : No need to specify the class (package) name of the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1793 Comments : To use this method, the object must be previously
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1794 : indexed by Bio::Root::Object.pm. This can be accomplished
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1795 : by including 'index' in the -MAKE parameter during object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1796 : construction OR by calling the index() method on the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1797 : the object at any point after construction.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1798 : This is not an instance method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1799 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1801 See also : L<index()|index>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1802
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1803 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1804
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1805 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1806 sub find_object {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1807 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1808 my $name = shift; # Assumes name has been validated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1809 my $class = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1810 my $object = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1811
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1812 foreach $class ( keys %Objects_created ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1813 if( exists $Objects_created{ $class }->{ $name } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1814 $object = $Objects_created{ $class }->{ $name };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1815 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1816 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1817 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1818 $object;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1819 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1820
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1823 =head2 has_warning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1824
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1825 Purpose : Test whether or not an object has a non-fatal error (warning).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1826 Usage : $self->has_warning;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1827 Comments : This method is not usually needed. Checking err() is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1828 : sufficient since throw()ing an exception is a fatal event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1829 : and must be handled when it occurs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1830 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1832 See also : L<err()|err>, warn() in L<Bio::Root::Root>, throw() in L<Bio::Root::Root>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1833
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1834 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1836 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1837 sub has_warning {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1838 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1839 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1840 my $errData = $self->err('type');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1841 return 1 if $errData =~ /WARNING/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1842 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1843 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1847 =head2 print_err
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1848
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1849 Usage : print_err([-WHERE=>FileHandle_object [,-SHOW=>msg|note|tech|stack] or any combo])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1850 Purpose : Reports error data for any errors an object may have
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1851 : as a string. This will only print warnings since exceptions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1852 : are fatal (unless a strictness of -2 is used).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1853 Example : $myObj->print_err;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1854 : $myObj->print_err(-WHERE=>$myObj->fh('err'), -SHOW=>'msgtechstack');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1855 Argument : SHOW parameter : specify a sub-set of the err data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1856 : WHERE parameter : specify a filehandle for printing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1857 Returns : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1858 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1859
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1860 See also : L<err_string()|err_string>, L<strict()|strict>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1861
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1862 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1864 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1865 sub print_err {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1866 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1867 my( $self, %param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1868
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1869 # print "$ID: print_err()\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1871 my $OUT = $self->set_display(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1873 # print "$ID: OUT = $OUT\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1875 print $OUT $self->err_string( %param );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1877 # print "$ID: done print_err()\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1881
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1882 =head2 err_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1883
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1884 Usage : err_string([-SHOW =>msg|note|tech|stack])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1885 : err_string([-SHOW =>'msgnote'] or other combos)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1886 Purpose : Reports all warnings generated by the object as a string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1887 Example : $errData = $myObj->err_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1888 : print MYHANDLE $myObj->err_string();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1889 Argument : SHOW parameter : return a specific sub-set of the err data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1890 Returns : A string containing the error data of the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1891 Comments : This method is provided as a safer and slightly easier to type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1892 : alternative to $self->err->string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1893 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1895 See also : L<print_err()|print_err>, string() in L<Bio::Root::Err>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1896
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1897 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1898
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1899 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1900 sub err_string {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1901 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1902 my( $self, %param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1903 my($out);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1904 my $errCount = $self->err('count');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1906 # print "$ID: err_string(): count = $errCount\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1907
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1908 if( $errCount) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1909 $out = sprintf("\n%d error%s in %s \"%s\"\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1910 $errCount, $errCount>1?'s':'', ref($self), $self->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1911 $out .= $self->err->string( %param );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1912 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1913 $out = sprintf("\nNo errors in %s \"%s\"\n", ref($self), $self->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1914 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1915 $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1916 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1917
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1918
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1919
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1920
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1921 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1922 # DEPRECATED or HIGHLY EXPERIMENTAL METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1923 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1924
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1925 =head1 HIGHLY EXPERIMENTAL/DEPRECATED METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1926
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1927 =head2 terse
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1928
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1929 Usage : $object->terse([0|1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1930 Purpose : Set/Get an indicator to report less than the normal amount.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1931 Argument : Boolean (0|1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1932 Returns : Boolean (0|1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1933 Comments : This method is for reducing the amount of reporting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1934 : an object will do.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1935 : terse can be set during object construction with the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1936 : -TERSE => 1 flag.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1937 : Not putting this method in IOManager.pm since that class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1938 : is concerned with "where" to report, not "what" or "how much".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1939 Status : Deprecated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1940 : Use verbose() with a negative value instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1941
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1942 See also : L<verbose()|verbose>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1943
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1944 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1945
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1946 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1947 sub terse {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1948 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1949 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1950 if(@_) { $self->{'_verbose'} = -1 * shift; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1951
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1952 $self->warn("Deprecated method 'terse()'. Use verbose(-1) instead.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1953
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1954 my $verbosity = $self->{'_verbose'} or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1955 (ref $self->{'_parent'} and $self->{'_parent'}->verbose) or 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1957 return $verbosity * -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1958 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1959
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1961 #----------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1962 =head2 set_err_data()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1963 #----------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1964
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1965 Usage : $object->set_err_data( field, data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1966 Purpose : Alters data within the last error set by the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1967 : Interface to Bio::Root::Err::set().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1968 Returns : Calls Bio::Root::Err::set()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1969 Argument : field = string, name of Bio::Root::Err.pm data field to set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1970 : data = string, data to set it to.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1971 Throws : Exception if object has no errors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1972 Status : Deprecated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1973
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1974 See Also : set() in L<Bio::Root::Err>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1975
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1976 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1977
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1978 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1979 sub set_err_data {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1980 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1981 my( $self, $field, $data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1982
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1983 $self->throw("Object has no errors.") if !$self->{'_err'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1984
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1985 # print "$ID: set_err_data($field) with data = $data\n in object ${\$self->name}:\n", $self->err->last->string(-CURRENT=>1); <STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1986
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1987 $self->{'_err'}->last->set( $field, $data );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1988 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1989
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1990 =head2 set_read
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1991
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1992 Usage : see Bio::Root::IOManager::set_read()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1993 Purpose : Sets an input stream for importing data associated with an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1994 : Delegates to Bio::Root::IOManager::set_read().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1995 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1996 WARNING! : This method has not been tested.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1997
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1998 See also : set_read() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1999
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2000 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2001
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2002 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2003 sub set_read {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2004 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2005 my($self,%param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2006
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2007 $self->_set_io(%param) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2008
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2009 $self->{'_io'}->set_read(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2010 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2011
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2012
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2013
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2014 =head2 set_log_err
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2015
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2016 Usage : see Bio::Root::IOManager::set_log_err()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2017 Purpose : Sets the output stream for logging information about
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2018 : an object's errors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2019 : Delegates to Bio::Root::IOManager::set_log_err().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2020 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2021 WARNING! : This method has not been tested.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2022
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2023 See also : set_log_err() in L<Bio::Root::IOManager>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2024
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2025 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2027 #---------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2028 sub set_log_err {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2029 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2030 my($self,%param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2031
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2032 $self->_set_io(%param) if !defined $self->{'_io'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2033
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2034 $self->{'_io'}->set_log_err(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2035 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2036
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2037
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2038 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2039 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2040
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2042 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2043 # END OF CLASS #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2044 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2045
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2046 =head1 FOR DEVELOPERS ONLY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2047
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2048 =head2 Data Members
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2049
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2050 Information about the various data members of this module is provided for those
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2051 wishing to modify or understand the code. Two things to bear in mind:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2052
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2053 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2054
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2055 =item 1 Do NOT rely on these in any code outside of this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2056
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2057 All data members are prefixed with an underscore to signify that they are private.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2058 Always use accessor methods. If the accessor doesn't exist or is inadequate,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2059 create or modify an accessor (and let me know, too!).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2060
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2061 =item 2 This documentation may be incomplete and out of date.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2062
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2063 It is easy for this documentation to become obsolete as this module is still evolving.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2064 Always double check this info and search for members not described here.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2065
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2066 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2067
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2068 An instance of Bio::Root::Object.pm is a blessed reference to a hash containing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2069 all or some of the following fields:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2070
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2071 FIELD VALUE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2072 ------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2073 _name Common name for an object useful for indexing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2074 Should be unique within its class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2075
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2076 _parent The object which created and is responsible for this object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2077 When a parent is destroyed, it takes all of its children with it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2078
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2079 _err Bio::Root::Err.pm object reference. Undefined if the object has no error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2080 or if the _record_err member is false (which is the default).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2081 If object has multiple errors, err becomes a linked
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2082 list of Err objects and the err member always points to latest err.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2083 In theory, an object should care only about whether or not it HAS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2084 an Err not how many it has. I've tried to make the management of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2085 multiple errors as opaque as possible to Bio::Root::Object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2086
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2087 _errState One of @Bio::Root::Err::ERR_TYPES. Allows an object to quickly determine the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2088 the type of error it has (if any) without having to examine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2089 potentially multiple Err object(s).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2090
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2091 _xref Bio::Root::Xref object (Vector) for tracking other object(s) related to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2092 present object not by inheritance or composition but by some arbitrary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2093 criteria. This is a new, experimental feature and is not fully implemented.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2094
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2095 _make Used as a switch for custom object initialization. Provides a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2096 mechanism for alternate constructors. This is somewhat experimental.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2097 It may be useful for contruction of complex objects and may be of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2098 use for determining how an object was constructed post facto.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2099
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2100 _io Bio::Root::IOManager.pm object reference. Used primarily for handling the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2101 display of an object's data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2103 _strict Integer flag to set the sensitivity to exceptions/warnings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2104 for a given object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2106 _verbose Boolean indicator for reporting more or less than the normal amount.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2108 _record_err Boolean indicator for attaching all thrown exception objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2109 to the current object. Default = false (don't attach exceptions).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2111 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2114 MODIFICATION NOTES:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2115 -----------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2116 0.041, sac --- Thu Feb 4 03:50:58 1999
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2117 * warn() utilizes the Global $CGI indicator to supress output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2118 when script is running as a CGI.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2120 0.04, sac --- Tue Dec 1 04:32:01 1998
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2121 * Incorporated the new globals $STRICTNESS and $VERBOSITY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2122 and eliminated WARN_ON_FATAL, FATAL_ON_WARN and DONT_WARN.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2123 * Deprecated terse() since it is better to think of terseness
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2124 as negative verbosity.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2125 * Removed autoloading-related code and comments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2127 0.035, 28 Sep 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2128 * Added _drop_child() method to attempt to break cyclical refs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2129 between parent and child objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2130 * Added to_string() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2131 * Err objects no longer know their parents (no need).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2133 0.031, 2 Sep 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2134 * Documentation changes only. Wrapped the data member docs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2135 at the bottom in POD comments which fixes compilation bug
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2136 caused by commenting out __END__.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2138 0.03, 16 Aug 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2139 * Calls to warn() or throw() now no longer result in Err.pm objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2140 being attached to the current object. For discussion about this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2141 descision, see comments under err().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2142 * Added the -RECORD_ERR constructor option and Global::record_err()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2143 method to enable the attachment of Err.pm object to the current
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2144 object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2145 * Minor bug fixes with parameter handling (%param -> @param).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2146 * Added note about AUTOLOADing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2148 0.023, 20 Jul 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2149 * Changes in Bio::Root::IOManager::read().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2150 * Improved memory management (destroy(), DESTROY(), and changes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2151 in Bio::Root::Vector.pm).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2153 0.022, 16 Jun 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2154 * Changes in Bio::Root::IOManager::read().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2156 0.021, May 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2157 * Touched up _set_clone().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2158 * Refined documentation in this and other Bio::Root modules
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2159 (converted to use pod2html in Perl 5.004)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2161