/[suikacvs]/messaging/manakai/lib/Message/DOM/TreeStore.pm
Suika

Contents of /messaging/manakai/lib/Message/DOM/TreeStore.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (hide annotations) (download)
Fri Dec 29 14:45:43 2006 UTC (19 years, 7 months ago) by wakaba
Branch: MAIN
Changes since 1.6: +25 -118 lines
++ manakai/t/ChangeLog	29 Dec 2006 13:56:36 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* .cvsignore: New auto-generated Perl test files
	are added.

++ manakai/lib/Message/Util/ChangeLog	29 Dec 2006 13:53:51 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* PerlCode.dis (createPCFile): Removed.
	(createPCDocument): New method.

++ manakai/lib/Message/Util/DIS/ChangeLog	29 Dec 2006 13:54:30 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* Perl.dis (plGeneratePerlModuleFile): Removed.
	(plGeneratePerlModuleDocument): New method.

++ manakai/lib/Message/DOM/ChangeLog	29 Dec 2006 13:53:21 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* TreeCore.dis, DOMCore.dis, Document.dis,
	Element.dis, CharacterData.dis, XML.dis,
	XDoctype.dis, DOMString.dis, TreeStore.dis,
	XMLParser.dis: Use Perl native
	hashs and |Scalar::Util|'s weak references in favor of |Grove.dis|
	for DOM nodes.  See
	also <http://suika.fam.cx/gate/2005/sw/manakai/%E3%83%A1%E3%83%A2/2006-12-29>.

++ manakai/lib/manakai/ChangeLog	29 Dec 2006 13:56:06 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* daf-perl-pm.pl: Use |pl_generate_perl_module_document|
	instead of |pl_generate_perl_module_file|.

	* daf-perl-t.pl: Use |create_pc_document|
	instead of |create_pc_file|.
	(daf_generate_perl_test_file|: Removed.
	(daf_generate_perl_test_document|: New function.

1 wakaba 1.1 #!/usr/bin/perl
2     ## This file is automatically generated
3 wakaba 1.7 ## at 2006-12-29T07:02:28+00:00,
4 wakaba 1.6 ## from file "TreeStore.dis",
5 wakaba 1.1 ## module <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.TreeStore>,
6     ## for <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOMLatest>.
7     ## Don't edit by hand!
8     use strict;
9     require Message::DOM::DOMCore;
10     package Message::DOM::TreeStore;
11 wakaba 1.7 our $VERSION = 20061229.0702;
12 wakaba 1.1 package Message::DOM::IFLatest::DOMImplementationTreeStore;
13 wakaba 1.7 our $VERSION = 20061229.0702;
14 wakaba 1.1 package Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore;
15 wakaba 1.7 our $VERSION = 20061229.0702;
16 wakaba 1.2 push our @ISA, 'Message::DOM::IFLatest::DOMImplementation',
17 wakaba 1.1 'Message::DOM::IF::DOMImplementation',
18     'Message::DOM::IF::DOMImplementationTreeStore',
19     'Message::DOM::IFLatest::DOMImplementation',
20     'Message::DOM::IFLatest::DOMImplementationTreeStore';
21 wakaba 1.3 push @Message::DOM::DOMCore::ManakaiDOMImplementation::ISA, q<Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore> unless Message::DOM::DOMCore::ManakaiDOMImplementation->isa (q<Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore>);
22 wakaba 1.1 sub create_storable_object_from_node ($$) {
23     my ($self, $in) = @_;
24     my $r;
25    
26     {
27    
28     if
29     ({
30    
31     9
32     =>
33     1
34     ,
35    
36     11
37     =>
38     1
39     ,
40    
41     1
42     =>
43     1
44     ,
45    
46     2
47     =>
48     1
49     ,
50    
51     3
52     =>
53     1
54     ,
55    
56     4
57     =>
58     1
59     ,
60     }->{$in->
61     node_type
62     }) {
63     my @target = ([$in, # node
64    
65     undef
66     ]); # origin
67    
68     while (@target) {
69     my $target = shift @target;
70     my $tnt = $target->[0]->
71     node_type
72     ;
73     if ($tnt ==
74     1
75     ) {
76     my $v = {};
77    
78 wakaba 1.7 my $pv = ${$target->[0]}->{
79     'ns'
80     };
81 wakaba 1.1 $v->{namespace_uri} = $pv if defined $pv;
82    
83 wakaba 1.7 $pv = ${$target->[0]}->{
84     'ln'
85     };
86 wakaba 1.1 $v->{local_name} = $pv;
87    
88 wakaba 1.7 $pv = ${$target->[0]}->{
89     'pfx'
90     };
91 wakaba 1.1 $v->{prefix} = $pv if defined $pv;
92    
93     for (@{$target->[0]->
94     child_nodes
95     }) {
96     push @target, [$_, $v];
97     }
98     for (@{$target->[0]->
99     attributes
100     }) {
101     push @target, [$_, $v];
102     }
103     if (defined $target->[1]) {
104     push @{$target->[1]->{child_nodes} ||= []}, $v;
105     } else {
106     $r = $v unless defined $r;
107     }
108     } elsif ($tnt ==
109     2
110     ) {
111     my $v = {
112     value => \ $target->[0]->
113     value
114     ,
115     };
116    
117 wakaba 1.7 my $pv = ${$target->[0]}->{
118     'ns'
119     };
120 wakaba 1.1 $v->{namespace_uri} = $pv if defined $pv;
121    
122 wakaba 1.7 $pv = ${$target->[0]}->{
123     'ln'
124     };
125 wakaba 1.1 $v->{local_name} = $pv;
126    
127 wakaba 1.7 $pv = ${$target->[0]}->{
128     'pfx'
129     };
130 wakaba 1.1 $v->{prefix} = $pv if defined $pv;
131    
132     if (defined $target->[1]) {
133     push @{$target->[1]->{attributes} ||= []}, $v;
134     } else {
135     $r = $v unless defined $r;
136     }
137     } elsif ($tnt ==
138     3 or
139    
140     $tnt ==
141     4
142     ) {
143     my $v = {};
144 wakaba 1.7 $v->{data} = ${$target->[0]}->{
145     'con'
146     };
147 wakaba 1.1
148     if (defined $target->[1]) {
149     push @{$target->[1]->{child_nodes} ||= []}, $v;
150     } else {
151     $r = $v unless defined $r;
152     }
153     } elsif ($tnt ==
154     9
155     ) {
156     my $v = {
157     xml_version => $target->[0]->
158     xml_version
159     ,
160     };
161    
162     for (@{$target->[0]->
163     child_nodes
164     }) {
165     push @target, [$_, $v];
166     }
167     $r = $v unless defined $r;
168     } elsif ($tnt ==
169     11
170     ) {
171     my $v = {};
172    
173     for (@{$target->[0]->
174     child_nodes
175     }) {
176     push @target, [$_, $v];
177     }
178     $r = $v unless defined $r;
179     } elsif ($tnt ==
180     5
181     ) {
182     for (@{$target->[0]->
183     child_nodes
184     }) {
185     push @target, [$_, $target->[1]];
186     }
187     }
188     }
189     } else {
190    
191     report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'create_storable_object_from_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#CLONE_NODE_TYPE_NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'in', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#node' => $in;
192    
193     ;
194     }
195    
196    
197     }
198     $r}
199     sub create_node_from_storable_object ($$;$) {
200     my ($self, $in, $od) = @_;
201     my $r;
202    
203     {
204    
205    
206     {
207    
208     local $Error::Depth = $Error::Depth + 1;
209    
210     {
211    
212    
213    
214     $od = $self->
215     create_document
216     ;
217     my $orig_strict = $od->
218     strict_error_checking
219     ;
220     $od->
221     strict_error_checking
222     (
223     0
224     );
225    
226     my @target = ([$in,
227    
228     undef
229     , # parent node
230    
231     undef
232     ]); # owner element
233     while (@target) {
234     my $target = shift @target;
235     if (defined $target->[0]->{local_name}) {
236     if (defined $target->[0]->{value}) {
237     # Attribute
238     my $node = $od->
239     create_attribute_ns
240    
241     ($target->[0]->{namespace_uri},
242     [$target->[0]->{prefix},
243     $target->[0]->{local_name}]);
244     $node->
245     manakai_append_text
246     ($target->[0]->{value});
247     if (defined $target->[2]) {
248     $target->[2]->
249     set_attribute_node_ns
250     ($node);
251     } else {
252     $r = $node unless defined $r;
253     }
254     } else {
255     # Element
256     my $node = $od->
257     create_element_ns
258    
259     ($target->[0]->{namespace_uri},
260     [$target->[0]->{prefix},
261     $target->[0]->{local_name}]);
262     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
263     ? $target->[0]->{child_nodes} : []}) {
264     push @target, [$_, $node];
265     }
266     for (@{ref $target->[0]->{attributes} eq 'ARRAY'
267     ? $target->[0]->{attributes} : []}) {
268     push @target, [$_,
269     undef
270     , $node];
271     }
272     if (defined $target->[1]) {
273     $target->[1]->
274     append_child
275     ($node);
276     } else {
277     $r = $node unless defined $r;
278     }
279     }
280     } elsif (defined $target->[0]->{data}) {
281     # Text
282     if (defined $target->[1]) {
283     $target->[1]->
284     manakai_append_text
285    
286     ($target->[0]->{data});
287     } elsif (not defined $r) {
288     $r = $od->
289     create_text_node
290     ('');
291     $r->
292     manakai_append_text
293     ($target->[0]->{data});
294     }
295     } elsif (defined $target->[0]->{xml_version}) {
296     # Document
297     my $node = $self->
298     create_document
299     ;
300     $node->
301     strict_error_checking
302     (
303     0
304     );
305     $node->
306     dom_config
307    
308     ->
309     set_parameter
310    
311     (
312     'http://suika.fam.cx/www/2006/dom-config/strict-document-children'
313     =>
314     0
315     );
316     $node->
317     xml_version
318     ($target->[0]->{xml_version});
319     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
320     ? $target->[0]->{child_nodes} : []}) {
321     push @target, [$_, $node];
322     }
323     unless (defined $r) {
324     $r = $node;
325     $od = $node;
326     $orig_strict =
327     1
328     ;
329     }
330     } else {
331     # Document fragment
332     unless (defined $r) {
333     $r = $od->
334     create_document_fragment
335     ;
336     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
337     ? $target->[0]->{child_nodes} : []}) {
338     push @target, [$_, $r];
339     }
340     }
341     }
342     }
343     $od->
344     strict_error_checking
345     ($orig_strict);
346     if ($r->
347     node_type
348     ==
349     9
350     ) {
351     $r->
352     dom_config
353    
354     ->
355     set_parameter
356    
357     (
358     'http://suika.fam.cx/www/2006/dom-config/strict-document-children'
359     =>
360     undef
361     );
362     }
363    
364    
365    
366     }
367    
368    
369     ;}
370    
371     ;
372    
373    
374     }
375     $r}
376     $Message::DOM::ImplFeature{q<Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore>}->{q<http://suika.fam.cx/www/2006/feature/treestore>}->{q<3.0>} ||= 1;
377     $Message::DOM::ImplFeature{q<Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore>}->{q<http://suika.fam.cx/www/2006/feature/treestore>}->{q<>} = 1;
378     $Message::DOM::DOMFeature::ClassInfo->{q<Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore>}->{has_feature} = {'',
379     {'',
380     '1'},
381 wakaba 1.3 'http://suika.fam.cx/www/2006/feature/min',
382     {'',
383     '1',
384     '3.0',
385     '1'},
386     'http://suika.fam.cx/www/2006/feature/treestore',
387     {'',
388     '1',
389     '3.0',
390     '1'},
391     'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#minimum',
392     {'',
393     '1',
394     '3.0',
395     '1'},
396 wakaba 1.1 'xml',
397     {'',
398     '1',
399     '1.0',
400     '1',
401     '2.0',
402     '1',
403     '3.0',
404     '1'},
405     'xmlversion',
406     {'',
407     '1',
408     '1.0',
409     '1',
410     '1.1',
411     '1'}};
412 wakaba 1.3 $Message::DOM::ClassPoint{q<Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore>} = 14.1;
413     $Message::Util::Grove::ClassProp{q<Message::DOM::TreeStore::ManakaiDOMImplementationTreeStore>} = {'v1h',
414     ['lpmi']};
415 wakaba 1.1 for ($Message::DOM::IF::DOMImplementation::, $Message::DOM::IF::DOMImplementationTreeStore::, $Message::DOM::IFLatest::DOMImplementation::){}
416     ## License: <http://suika.fam.cx/~wakaba/archive/2004/8/18/license#Perl+MPL>
417     1;

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24