Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 379 lines (260 sloc) 9.732 kB
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
1 /*
48311a5 @petdance teeny consting
petdance authored
2 Copyright (C) 2007-2009, Parrot Foundation.
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
3 $Id$
4
5 =head1 NAME
6
7 src/pmc/exporter.pmc - Export globals from one namespace to another
8
abc4db2 @particle [pmc]: exporter api changes
particle authored
9 =head1 SYNOPSIS
10
11 You can use Exporter in PIR to import subs from a library. At its simplest:
12
13 .sub main :main
14 load_bytecode 'Test/More.pir'
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
15
bdc07b9 @chromatic [PMC] Add Exporter documentation into POD (Pabellon, RT #44487).
chromatic authored
16 .local pmc exporter, src_ns, dest_ns
17 src_ns = get_namespace [ 'Test'; 'More' ]
abc4db2 @particle [pmc]: exporter api changes
particle authored
18 exporter = new 'Exporter'
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
19
bdc07b9 @chromatic [PMC] Add Exporter documentation into POD (Pabellon, RT #44487).
chromatic authored
20 exporter.'import'( src_ns :named('source') 'plan ok' :named('globals') )
abc4db2 @particle [pmc]: exporter api changes
particle authored
21 plan(1)
22 ok(1, 'exporter has imported the requested functions')
23 .end
24
bdc07b9 @chromatic [PMC] Add Exporter documentation into POD (Pabellon, RT #44487).
chromatic authored
25 You can also specify the exporter attributes before making the import call,
26 for example to import into the alternate namespace 'Foo' you could use the
27 following code:
28
29 src_ns = get_namespace [ 'Test'; 'More' ]
30 dest_ns = get_namespace [ 'Foo' ]
31 exporter.'source'(src_ns)
32 exporter.'destination'(dest_ns)
33 exporter.'import'('plan ok' :named('globals'))
34
35 You can even import subroutines under different names if globals is a hash:
36
37 globals = new 'Hash'
38 globals['plan'] = 'steps'
39 globals['ok'] = 'passed'
40 exporter.'import'(globals :named('globals'))
41 steps(1)
42 passed(1)
43
abc4db2 @particle [pmc]: exporter api changes
particle authored
44
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
45 =head1 DESCRIPTION
46
b29ad29 @particle [pmc] Exporter updates
particle authored
47 Exports globals from one namespace to another. Exporter always uses
6498378 @particle [pmc]: update Exporter documentation based on draft guidelines
particle authored
48 the typed namespace interface, as outlined in
49 F<docs/pdds/pdd21_namespaces.pod>.
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
50
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
51 Exporter is not derived from any other PMC, and does not provide any
abc4db2 @particle [pmc]: exporter api changes
particle authored
52 vtable interface--its interface consists solely of non-vtable methods.
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
53
54 =head2 Structure
55
56 The Exporter PMC structure (C<Parrot_Exporter>) consists of three items:
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
57
58 =over 4
59
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
60 =item C<ns_src>
61
62 The source namespace -- a NameSpace PMC.
5b556ee @particle [pmc]: Exporter is complete
particle authored
63 A Null PMC is allocated during initialization.
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
64
65 =item C<ns_dest>
66
67 The destination namespace -- a NameSpace PMC.
4b47d4c @particle [pmc]: Exporter
particle authored
68 A PMC representing the current namespace is allocated upon initialization.
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
69
70 =item C<globals>
71
bdc07b9 @chromatic [PMC] Add Exporter documentation into POD (Pabellon, RT #44487).
chromatic authored
72 The globals to export -- a PMC that implements a hash, an array, a String
73 containing a list of space-separated subroutine names or Null.
74
b29ad29 @particle [pmc] Exporter updates
particle authored
75 A Null PMC is allocated during initialization.
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
76
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
77 =cut
78
79 */
80
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
81 /*
82
83 =back
84
85 =head2 Functions
86
87 =over 4
88
89 =cut
90
91 */
92
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
93 pmclass Exporter need_ext {
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
94
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
95 ATTR PMC *ns_src;
96 ATTR PMC *ns_dest;
97 ATTR PMC *globals;
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
98
99 /*
100
101 =item C<void init()>
102
b54e3d5 @particle [pmc]: documentation updates
particle authored
103 Initializes an Exporter PMC.
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
104
105 =cut
106
107 */
108
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
109 VTABLE void init() {
48311a5 @petdance teeny consting
petdance authored
110 Parrot_Exporter_attributes * const exp =
111 mem_allocate_zeroed_typed(Parrot_Exporter_attributes);
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
112
113 /* Set up the object. */
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
114 exp->ns_src = PMCNULL;
637cc2a @chromatic [src] Changed CONTEXT(interp->ctx) to CONTEXT(interp), which seems cl…
chromatic authored
115 exp->ns_dest = CONTEXT(interp)->current_namespace;
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
116 exp->globals = PMCNULL;
117 PMC_data(SELF) = exp;
366638e @particle [pmc]: set pmc flags after anchoring to prevent accidental collection…
particle authored
118
1997c49 @cotto [gc] remove/replace DOD references in core PMCs
cotto authored
119 /* Set flags for custom GC mark and destroy. */
366638e @particle [pmc]: set pmc flags after anchoring to prevent accidental collection…
particle authored
120 PObj_custom_mark_SET(SELF);
121 PObj_active_destroy_SET(SELF);
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
122 }
123
124
125 /*
126
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
127 =item C<void destroy()>
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
128
b54e3d5 @particle [pmc]: documentation updates
particle authored
129 Free the memory associated with the object's underlying struct.
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
130
131 =cut
132
133 */
134
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
135 VTABLE void destroy() {
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
136 mem_sys_free(PMC_data(SELF));
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
137 }
138
139
140 /*
141
142 =item C<void mark()>
143
144 Mark referenced strings and PMCs in the structure as live.
145
146 =cut
147
148 */
149
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
150 VTABLE void mark() {
48311a5 @petdance teeny consting
petdance authored
151 Parrot_Exporter_attributes * const exp = PARROT_EXPORTER(SELF);
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
152
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
153 if (exp->ns_src)
b354cdb @Whiteknight [gc_api] Behold! Parrot is entering an age of slightly less lousy GC!…
Whiteknight authored
154 Parrot_gc_mark_PObj_alive(interp, (PObj *)exp->ns_src);
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
155 if (exp->ns_dest)
b354cdb @Whiteknight [gc_api] Behold! Parrot is entering an age of slightly less lousy GC!…
Whiteknight authored
156 Parrot_gc_mark_PObj_alive(interp, (PObj *)exp->ns_dest);
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
157 if (exp->globals)
b354cdb @Whiteknight [gc_api] Behold! Parrot is entering an age of slightly less lousy GC!…
Whiteknight authored
158 Parrot_gc_mark_PObj_alive(interp, (PObj *)exp->globals);
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
159 }
160
161
162 /*
163
164 =back
165
166 =head2 Methods
167
168 =over 4
169
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
170 =item C<METHOD
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
171 source(PMC *src :optional, int got_src :opt_flag)>
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
172
173 Accessor for the source NameSpace object (C<ns_src>.)
174 Sets the value if C<src> is passed, otherwise returns the value.
175 Throws an exception if a non-NameSpace PMC is passed.
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
176
177 =cut
178
179 */
180
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
181 METHOD source(PMC *src :optional, int got_src :opt_flag) {
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
182 if (got_src) {
2255840 @allisonrandal [pdd17pmc] Merging the pdd25cx branch into trunk for r26555 to r29949.
allisonrandal authored
183 if (src->vtable->base_type != enum_class_NameSpace)
184 Parrot_ex_throw_from_c_args(interp, NULL, 0,
ac3ceb6 @particle [pmc] finish Exporter's 'source' and 'destination' methods
particle authored
185 "source must be a NameSpace PMC");
2255840 @allisonrandal [pdd17pmc] Merging the pdd25cx branch into trunk for r26555 to r29949.
allisonrandal authored
186
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
187 SET_ATTR_ns_src(interp, SELF, src);
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
188 }
189 else {
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
190 PMC *tmp_ns_src;
191 GET_ATTR_ns_src(interp, SELF, tmp_ns_src);
192 RETURN(PMC *tmp_ns_src);
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
193 }
194 }
195
196
197 /*
198
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
199 =item C<METHOD
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
200 destination(PMC *dest :optional, int got_dest :opt_flag)>
9318910 @particle [pmc] Exporter updates
particle authored
201
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
202 Accessor for the destination NameSpace object (C<ns_dest>.)
203 Sets the value if C<dest> is passed, otherwise returns the value.
204 Throws an exception if a non-NameSpace PMC is passed.
9318910 @particle [pmc] Exporter updates
particle authored
205
206 =cut
207
208 */
209
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
210 METHOD destination(PMC *dest :optional, int got_dest :opt_flag) {
9318910 @particle [pmc] Exporter updates
particle authored
211 if (got_dest) {
2255840 @allisonrandal [pdd17pmc] Merging the pdd25cx branch into trunk for r26555 to r29949.
allisonrandal authored
212
213 if (dest->vtable->base_type != enum_class_NameSpace)
214 Parrot_ex_throw_from_c_args(interp, NULL, 0,
215 "destination must be a NameSpace PMC");
216
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
217 SET_ATTR_ns_dest(interp, SELF, dest);
9318910 @particle [pmc] Exporter updates
particle authored
218 }
219 else {
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
220 PMC *tmp_ns_dest;
221 GET_ATTR_ns_dest(interp, SELF, tmp_ns_dest);
222 RETURN(PMC *tmp_ns_dest);
9318910 @particle [pmc] Exporter updates
particle authored
223 }
224 }
225
226
227 /*
228
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
229 =item C<METHOD
b29ad29 @particle [pmc] Exporter updates
particle authored
230 globals(PMC *glb :optional, int got_glb :opt_flag)>
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
231
abc4db2 @particle [pmc]: exporter api changes
particle authored
232 Accessor for the globals to export (C<globals>.)
233 Sets the value if C<glb> is passed, otherwise returns the value.
234 If C<glb> is a String, it is split on ascii whitespace, and each array member
235 is added as a hash key.
236 If C<glb> implements the array interface, each member is added as a hash key.
237 if C<glb> implements the hash interface, it is assigned to Exporter's
238 C<globals> attribute.
239 Throws an exception if an unknown PMC type is passed.
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
240
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
241 =cut
242
243 */
244
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
245 METHOD globals(PMC *glb :optional, int got_glb :opt_flag) {
0006ce7 @chromatic [src] Fixed all CONST_STRING macros so that they don't break across l…
chromatic authored
246 STRING * const s_str = CONST_STRING(interp, "String");
247 STRING * const s_arr = CONST_STRING(interp, "array");
248 STRING * const s_hash = CONST_STRING(interp, "hash");
249 STRING * const s_space = CONST_STRING(interp, " ");
9318910 @particle [pmc] Exporter updates
particle authored
250
b29ad29 @particle [pmc] Exporter updates
particle authored
251 if (got_glb) {
abc4db2 @particle [pmc]: exporter api changes
particle authored
252 STRING * const s_empty = CONST_STRING(interp, "");
253 PMC *temp_globals = pmc_new(interp, enum_class_Hash);
254
255 if (PMC_IS_NULL(glb)) {
256 temp_globals = PMCNULL;
257 }
258 else if (VTABLE_isa(interp, glb, s_str) || (VTABLE_does(interp, glb, s_arr))) {
259 PMC *glb_array;
260 INTVAL n, i;
261
262 if (VTABLE_isa(interp, glb, s_str))
b6bc0c3 @allisonrandal [pdd28str] Merging the pdd27mmd branch into trunk for r36123 to r36318.
allisonrandal authored
263 glb_array = Parrot_str_split(interp, s_space,
0006ce7 @chromatic [src] Fixed all CONST_STRING macros so that they don't break across l…
chromatic authored
264 VTABLE_get_string(interp, glb));
abc4db2 @particle [pmc]: exporter api changes
particle authored
265 else
266 glb_array = glb;
267
268 n = VTABLE_elements(interp, glb_array);
269
270 if (n == 0)
271 temp_globals = PMCNULL;
272
6ab1a64 @paultcochrane [core] Corrected spacing of keywords wrt parentheses as per coding st…
paultcochrane authored
273 for (i = 0; i < n; i++) {
abc4db2 @particle [pmc]: exporter api changes
particle authored
274 STRING * const item = VTABLE_get_string_keyed_int(interp, glb_array, i);
275 VTABLE_set_string_keyed_str(interp, temp_globals, item, s_empty);
276 }
277 }
278 else if (VTABLE_does(interp, glb, s_hash)) {
279 if (VTABLE_elements(interp, glb) == 0)
280 temp_globals = PMCNULL;
281 else
282 temp_globals = glb;
283 }
284 else {
2255840 @allisonrandal [pdd17pmc] Merging the pdd25cx branch into trunk for r26555 to r29949.
allisonrandal authored
285 Parrot_ex_throw_from_c_args(interp, NULL, 0,
abc4db2 @particle [pmc]: exporter api changes
particle authored
286 "Invalid type %d in globals()", glb->vtable->base_type);
287 }
288
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
289 SET_ATTR_globals(interp, SELF, temp_globals);
b29ad29 @particle [pmc] Exporter updates
particle authored
290 }
291 else {
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
292 PMC *tmp_globals;
293 GET_ATTR_globals(interp, SELF, tmp_globals);
294 if (PMC_IS_NULL(tmp_globals)) {
295 RETURN(PMC *PMCNULL);
b29ad29 @particle [pmc] Exporter updates
particle authored
296 }
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
297 else
298 RETURN(PMC *tmp_globals);
9318910 @particle [pmc] Exporter updates
particle authored
299 }
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
300 }
301
302
303 /*
304
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
305 =item C<METHOD
37922cf @chromatic [lib/PMC] Modified :named parameter syntax in METHODs to match PDD03,…
chromatic authored
306 import(PMC *dest :optional :named("destination"), int got_dest :opt_flag,
307 PMC *src :optional :named("source"), int got_src :opt_flag,
308 PMC *globals :optional :named("globals"), int got_globals :opt_flag)>
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
309
310 Import C<globals> from the C<src> namespace to the C<dest> namespace.
abc4db2 @particle [pmc]: exporter api changes
particle authored
311 If C<src>, C<dest>, or C<globals> are passed, they override the current value.
b29ad29 @particle [pmc] Exporter updates
particle authored
312 C<import> follows the semantics of the C<export_to> method
313 of the C<NameSpace> PMC. in particular, if a NULL value is passed
314 for C<globals>, the default set of items will be imported.
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
315 Throws an exception upon error.
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
316
317 =cut
318
319 */
320
37922cf @chromatic [lib/PMC] Modified :named parameter syntax in METHODs to match PDD03,…
chromatic authored
321 METHOD import(PMC *dest :optional :named("destination"),
322 int got_dest :opt_flag,
323 PMC *src :optional :named("source"),
324 int got_src :opt_flag,
325 PMC *globals :optional :named("globals"),
326 int got_globals :opt_flag) {
2f8fa82 @particle [pmc]: Exporter beginning 'import' method
particle authored
327
b29ad29 @particle [pmc] Exporter updates
particle authored
328 PMC *ns_src, *ns_dest, *ns_globals;
2f8fa82 @particle [pmc]: Exporter beginning 'import' method
particle authored
329
330 if (got_src)
331 PCCINVOKE(interp, SELF, "source", PMC *src);
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
332
2f8fa82 @particle [pmc]: Exporter beginning 'import' method
particle authored
333 if (got_dest)
334 PCCINVOKE(interp, SELF, "destination", PMC *dest);
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
335
2f8fa82 @particle [pmc]: Exporter beginning 'import' method
particle authored
336 if (got_globals)
337 PCCINVOKE(interp, SELF, "globals", PMC *globals);
9318910 @particle [pmc] Exporter updates
particle authored
338
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
339 GET_ATTR_ns_src(interp, SELF, ns_src);
340 if (PMC_IS_NULL(ns_src))
2255840 @allisonrandal [pdd17pmc] Merging the pdd25cx branch into trunk for r26555 to r29949.
allisonrandal authored
341 Parrot_ex_throw_from_c_args(interp, NULL, 0, "source namespace not set");
f6d5c3e @chromatic [PMC] More minor cleanups and reformattings.
chromatic authored
342
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
343 GET_ATTR_ns_dest(interp, SELF, ns_dest);
344 if (PMC_IS_NULL(ns_dest))
2255840 @allisonrandal [pdd17pmc] Merging the pdd25cx branch into trunk for r26555 to r29949.
allisonrandal authored
345 Parrot_ex_throw_from_c_args(interp, NULL, 0,
346 "destination namespace not set");
2f8fa82 @particle [pmc]: Exporter beginning 'import' method
particle authored
347
59661f1 @allisonrandal [pdd17pmc] Merging the pdd17pmc branch into trunk (r24435 to r26307).
allisonrandal authored
348 GET_ATTR_globals(interp, SELF, ns_globals);
b29ad29 @particle [pmc] Exporter updates
particle authored
349
350 PCCINVOKE(interp, ns_src, "export_to", PMC *ns_dest, PMC *ns_globals);
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
351 }
352
353
b29ad29 @particle [pmc] Exporter updates
particle authored
354 } /* end pmclass Exporter */
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
355
356 /*
357
358 =back
359
6498378 @particle [pmc]: update Exporter documentation based on draft guidelines
particle authored
360 =head1 STABILITY
361
362 Unstable. This PMC is under active development; major portions of the
363 interface have not yet been completed.
364
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
365 =head1 SEE ALSO
366
eae5b2f @particle [pmc]: documentation overhaul for Exporter
particle authored
367 F<docs/pdds/pdd17_basic_types.pod>, F<docs/pdds/pdd21_namespaces.pod>.
9255c82 @paultcochrane [src] Set svn:keywords and svn:eol-style properties appropriately
paultcochrane authored
368
369 =cut
370
371 */
372
373 /*
374 * Local variables:
375 * c-file-style: "parrot"
376 * End:
377 * vim: expandtab shiftwidth=4:
378 */
Something went wrong with that request. Please try again.