/[suikacvs]/messaging/manakai/lib/Message/Util/DIS.pm
Suika

Contents of /messaging/manakai/lib/Message/Util/DIS.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.81 - (show annotations) (download)
Fri Sep 21 08:09:47 2007 UTC (17 years, 9 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.80: +0 -0 lines
FILE REMOVED
++ manakai/bin/ChangeLog	21 Sep 2007 07:55:21 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* daf.pl, mkdisdump.pl, grep-dis.pl, mkdommemlist.pl: Removed.

++ manakai/lib/Message/IMT/ChangeLog	21 Sep 2007 08:02:20 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* InternetMediaType.pm: Don't raise CoreException even if
	a read-only attribute is attempted to be modified.

++ manakai/lib/Message/Markup/ChangeLog	21 Sep 2007 07:46:59 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* SuikaWikiConfig21.dis, SuikaWikiConfig21.pm, common.dis,
	H2H.dis: Removed.

++ manakai/lib/Message/Util/ChangeLog	21 Sep 2007 07:44:10 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* Makefile (clean): Don't remove generated files.

	* ManakaiNode.dis, ManakaiNodeTest.dis, PerlCode.dis,
	PerlCode.pm, ManakaiNode.pm, common.dis, DIS.dis, DIS.pm: Removed.

	* DIS/, AutoLoad/: Removed.

++ manakai/lib/Message/Util/Error/ChangeLog	21 Sep 2007 07:44:55 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* Core.dis, DOMException.pm, DOMException.dis: Removed.

++ manakai/lib/Message/Util/Formatter/ChangeLog	21 Sep 2007 08:09:07 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* Base.pm (___error_def): Error description key names
	are updated.

	* Muf2003.dis: Removed.

++ manakai/lib/manakai/ChangeLog	21 Sep 2007 07:52:20 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* DISLang.dis, Document.dis, NaturalLanguage.dis, DISMarkup.dis,
	ECMAScript.dis, Test.dis, Charset.dis, DISPerl.dis, Java.dis,
	XML.dis, DISCore.dis, DISRDF.dis, DISIDL.dis, DISSource.dis,
	Message.dis, daf-perl-t.pl, daf-dtd-modules.pl, daf-perl-pm.pl,
	dis-catalog, mndebug.pl: Removed.

++ manakai/t/ChangeLog	21 Sep 2007 08:00:31 -0000
2007-09-21  Wakaba  <wakaba@suika.fam.cx>

	* util-mnode.t: Removed.

1 #!/usr/bin/perl
2 ## This file is automatically generated
3 ## at 2006-12-31T09:21:46+00:00,
4 ## from file "DIS.dis",
5 ## module <http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS>.
6 ## Don't edit by hand!
7 use strict;
8 require Message::DOM::DOMCore;
9 require Message::Markup::SuikaWikiConfig21;
10 require Message::Util::DIS::Perl;
11 require Message::Util::DIS::Value;
12 require Message::Util::Error;
13 require Message::Util::Error::DOMException;
14 require Message::Util::ManakaiNode;
15 package Message::Util::DIS;
16 our $VERSION = 20061231.0921;
17 $Message::DOM::DOMCore::ManakaiDOMConfiguration{'Message::Util::IF::DISDatabase'}->{'error-handler'} = {'checker',
18 sub ($$$) {
19 my ($self, $name, $value) = @_;
20
21 {
22
23
24 $name = lc $name;
25
26
27 }
28
29 {
30
31
32 $value = bless $value,
33 'Message::DOM::DOMCore::ManakaiDOMErrorHandler'
34 if
35 ref $value eq 'CODE';
36
37
38 }
39 my $r = 0;
40
41 {
42
43
44 $r = UNIVERSAL::isa ($value,
45 'Message::DOM::IF::DOMErrorHandler'
46 );
47
48
49 }
50 $r}
51 ,
52 'get_default',
53 sub ($$) {
54 my ($self, $name) = @_;
55
56 {
57
58
59 $name = lc $name;
60
61
62 }
63 my $r;
64
65 {
66
67
68 $r = sub {
69 my (undef, $err) = @_;
70 CORE::warn $err;
71 return ($err->
72 severity
73 !=
74
75 3
76 );
77 };
78
79
80 }
81
82 {
83
84
85 $r = bless $r,
86 'Message::DOM::DOMCore::ManakaiDOMErrorHandler'
87 if
88 ref $r eq 'CODE';
89
90
91 }
92 $r}
93 ,
94 'iname',
95 'onerr',
96 'otype',
97 'Message::DOM::IF::DOMErrorHandler',
98 'setter',
99 sub ($$$) {
100 my ($self, $name, $value) = @_;
101
102 {
103
104
105 $name = lc $name;
106
107
108 }
109
110 {
111
112
113 $value = bless $value,
114 'Message::DOM::DOMCore::ManakaiDOMErrorHandler'
115 if
116 ref $value eq 'CODE';
117
118
119 }
120
121 {
122
123
124 $self->[1]->{
125 'onerr'
126 } = $value;
127
128
129 }
130 }
131 ,
132 'type',
133 'object'};
134 $Message::DOM::DOMCore::ManakaiDOMError::Def{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type'} = {'description',
135 'Method |%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name});| for resource <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> has multiple definitions',
136 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/textFormatter',
137 'Message::Util::Error::formatter',
138 'sev',
139 '1',
140 't',
141 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type'};
142 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#Interface'}->{'get_error_interface_resource'} = sub ($) {
143 my ($self) = @_;
144 my $r;
145
146 {
147
148
149 {
150
151 local $Error::Depth = $Error::Depth + 1;
152
153 {
154
155
156
157 $r = $self;
158
159
160
161 }
162
163
164 ;}
165
166 ;
167
168
169 }
170 $r}
171 ;
172 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#ConstGroup'}->{'get_error_interface_resource'} = sub ($) {
173 my ($self) = @_;
174 my $r;
175
176 {
177
178
179 {
180
181 local $Error::Depth = $Error::Depth + 1;
182
183 {
184
185
186 my
187 $parent = $self->
188 parent_resource
189 ;
190 if ($parent and
191 $parent->
192 is_type_uri
193 (
194 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/ErrorAny'
195 )) {
196 $r = $parent;
197 }
198
199
200
201 }
202
203
204 ;}
205
206 ;
207
208
209 }
210 $r}
211 ;
212 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#DOMConfigurationParameter'}->{'get_dom_configuration_parameter_name'} = sub ($) {
213 my ($self) = @_;
214 my $r = '';
215
216 {
217
218
219 {
220
221 local $Error::Depth = $Error::Depth + 1;
222
223 {
224
225
226
227 $r = $self->
228 get_property_text
229
230 (
231 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#domConfigurationParameterName'
232 );
233 unless (defined $r) {
234 $r = $self->
235 name_uri
236 ;
237 }
238 $r = lc $r if defined $r;
239
240
241
242 }
243
244
245 ;}
246
247 ;
248
249
250 }
251 $r}
252 ;
253 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#DOMConfigurationParameterApplication'}->{'get_dom_configuration_parameter_name'} = sub ($) {
254 my ($self) = @_;
255 my $r = '';
256
257 {
258
259
260 {
261
262 local $Error::Depth = $Error::Depth + 1;
263
264 {
265
266
267 my
268 $cp = $self->
269 get_property_resource
270
271 (
272 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#domConfigurationParameter'
273 );
274 if (defined $cp) {
275 $r = $cp->
276 get_property_text
277
278 (
279 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#domConfigurationParameterName'
280 );
281 unless (defined $r) {
282 $r = $cp->
283 name_uri
284 ;
285 }
286 $r = lc $r if defined $r;
287 } else {
288 $r =
289 undef
290 ; # error
291 }
292
293
294
295 }
296
297
298 ;}
299
300 ;
301
302
303 }
304 $r}
305 ;
306 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorCode'}->{'get_error_interface_resource'} = sub ($) {
307 my ($self) = @_;
308 my $r;
309
310 {
311
312
313 {
314
315 local $Error::Depth = $Error::Depth + 1;
316
317 {
318
319
320 my
321 $parent = $self->
322 parent_resource
323 ;
324 if ($parent) {
325 $r = $parent->
326 get_error_interface_resource
327 ;
328 }
329
330
331
332 }
333
334
335 ;}
336
337 ;
338
339
340 }
341 $r}
342 ;
343 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode'}->{'get_error_interface_resource'} = sub ($) {
344 my ($self) = @_;
345 my $r;
346
347 {
348
349
350 {
351
352 local $Error::Depth = $Error::Depth + 1;
353
354 {
355
356
357 my
358 $parent = $self->
359 get_error_code_resource
360 ;
361 if ($parent) {
362 $r = $parent->
363 get_error_interface_resource
364 ;
365 }
366
367
368
369 }
370
371
372 ;}
373
374 ;
375
376
377 }
378 $r}
379 ;
380 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode'}->{'get_error_code_resource'} = sub ($) {
381 my ($self) = @_;
382 my $r;
383
384 {
385
386
387 {
388
389 local $Error::Depth = $Error::Depth + 1;
390
391 {
392
393
394 my
395 $parent = $self->
396 parent_resource
397 ;
398 if ($parent and $parent->
399 is_type_uri
400
401 (
402 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorCode'
403 )) {
404 $r = $parent;
405 }
406
407
408
409 }
410
411
412 ;}
413
414 ;
415
416
417 }
418 $r}
419 ;
420 $Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel'}->{'parse_string'} = sub ($$$$) {
421 my ($self, $s, $ns, $factory) = @_;
422 my $r;
423
424 {
425
426
427 {
428
429 local $Error::Depth = $Error::Depth + 1;
430
431 {
432
433
434
435 $s =~ s/^\s+//;
436 if ($s =~ s/^([^\s(][^\s+*?]*)\s*//) {
437 $r = $factory->
438 create_element_ns
439
440 (
441 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:'
442 , 'terminal');
443 my $uri = $ns->
444 qname_to_uri
445
446 ($1);
447 $r->
448 text_content
449 ($uri);
450 if ($s =~ s/^([+*?])\s*//) {
451 $r->
452 set_attribute_ns
453 (
454 undef
455 , 'occurence', $1);
456 }
457 } else {
458 $s =~ s/^\(\s*//;
459 $r = $factory->
460 create_element_ns
461
462 (
463 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:'
464 , 'group');
465 my $current = $r;
466 my $last;
467 while (length $s) {
468 if ($s =~ s/^([^\s()+*?|,&][^\s)+*?,&]*|[+*?|,&][^\s)+*?,&]+)\s*//) {
469 my $el = $factory->
470 create_element_ns
471
472 (
473 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:'
474 , 'terminal');
475 my $uri = $ns->
476 qname_to_uri
477
478 ($1, node => $ns);
479 $el->
480 text_content
481 ($uri);
482 $current->
483 append_child
484 ($el);
485 $last = $el;
486 } elsif ($s =~ s/^([+*?])\s*//) {
487 if (defined $last) {
488 $last->
489 set_attribute_ns
490 (
491 undef
492 , 'occurence', $1);
493 $last =
494 undef
495 ;
496 }
497 } elsif ($s =~ s/^([|,&])\s*//) {
498 $current->
499 set_attribute_ns
500 (
501 undef
502 , 'connector', $1);
503 $last =
504 undef
505 ;
506 } elsif ($s =~ s/^\(\s*//) {
507 my $el = $factory->
508 create_element_ns
509
510 (
511 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:'
512 , 'group');
513 $current = $current->
514 append_child
515 ($el);
516 $last =
517 undef
518 ;
519 } elsif ($s =~ s/^\)\s*//) {
520 $last = $current;
521 $current = $current->
522 parent_node
523 ;
524 $current = $last unless defined $current; # error
525 } else {
526 last; # error
527 }
528 }
529 }
530
531
532
533 }
534
535
536 ;}
537
538 ;
539
540
541 }
542 $r}
543 ;
544 sub HIERARCHY_REQUEST_ERR ();
545 sub INVALID_SOURCE_ERR ();
546 sub INVALID_STATE_ERR ();
547 sub NOT_SUPPORTED_ERR ();
548 sub AUTOLOAD {
549
550
551 my $al = our $AUTOLOAD;
552 $al =~ s/.+:://;
553 if ({'HIERARCHY_REQUEST_ERR',
554 'Message::Util::IF::DISException::HIERARCHY_REQUEST_ERR',
555 'INVALID_SOURCE_ERR',
556 'Message::Util::IF::DISException::INVALID_SOURCE_ERR',
557 'INVALID_STATE_ERR',
558 'Message::Util::IF::DISException::INVALID_STATE_ERR',
559 'NOT_SUPPORTED_ERR',
560 'Message::Util::IF::DISException::NOT_SUPPORTED_ERR'}->{$al}) {
561 no strict 'refs';
562 *{$AUTOLOAD} = \&{{'HIERARCHY_REQUEST_ERR',
563 'Message::Util::IF::DISException::HIERARCHY_REQUEST_ERR',
564 'INVALID_SOURCE_ERR',
565 'Message::Util::IF::DISException::INVALID_SOURCE_ERR',
566 'INVALID_STATE_ERR',
567 'Message::Util::IF::DISException::INVALID_STATE_ERR',
568 'NOT_SUPPORTED_ERR',
569 'Message::Util::IF::DISException::NOT_SUPPORTED_ERR'}->{$al}};
570 goto &{$AUTOLOAD};
571 } else {
572 require Carp;
573 Carp::croak (qq<Can't locate method "$AUTOLOAD">);
574 }
575
576 }
577 sub import {
578
579
580 my $self = shift;
581 if (@_) {
582 local $Exporter::ExportLevel = $Exporter::ExportLevel + 1;
583 $self->SUPER::import (@_);
584 for (grep {not /\W/} @_) {
585 eval qq{$_};
586 }
587 }
588
589 }
590 our %EXPORT_TAG = ('DISExceptionCode',
591 ['HIERARCHY_REQUEST_ERR',
592 'INVALID_SOURCE_ERR',
593 'INVALID_STATE_ERR',
594 'NOT_SUPPORTED_ERR']);
595 our @EXPORT_OK = ('HIERARCHY_REQUEST_ERR',
596 'INVALID_SOURCE_ERR',
597 'INVALID_STATE_ERR',
598 'NOT_SUPPORTED_ERR');
599 use Exporter; push our @ISA, 'Exporter';
600 package Message::Util::IF::DISImplementation;
601 our $VERSION = 20061231.0921;
602 package Message::Util::DIS::ManakaiDISImplementation;
603 our $VERSION = 20061231.0921;
604 push our @ISA, 'Message::DOM::IF::DOMImplementation',
605 'Message::DOM::IF::DOMImplementation',
606 'Message::Util::IF::DISImplementation';
607 push @Message::DOM::DOMCore::ManakaiDOMImplementation::ISA, q<Message::Util::DIS::ManakaiDISImplementation> unless Message::DOM::DOMCore::ManakaiDOMImplementation->isa (q<Message::Util::DIS::ManakaiDISImplementation>);
608 sub create_dis_parser ($) {
609 my ($self) = @_;
610 my $r;
611
612 {
613
614
615 $r = bless $self->
616 create_swcfg_parser
617 ,
618
619 'Message::Util::DIS::ManakaiDISParser'
620 ;
621
622
623 }
624 $r}
625 sub create_dis_database ($) {
626 my ($self) = @_;
627 my $r;
628
629 {
630
631
632 $r = bless {
633 forDef => {
634
635 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
636 => bless ({
637 uri =>
638 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
639 ,
640 isa => {
641 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
642 => 1},
643 revISA => {},
644
645 'r'
646 => 0,
647 },
648 'Message::Util::DIS::ManakaiDISForDefinition'
649 ),
650 },
651 resDef => {},
652 modDef => {},
653 seq => 0,
654 },
655 'Message::Util::DIS::ManakaiDISDatabase'
656 ;
657 $r->{forDef}->{
658 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
659 }->{db} = $r;
660
661
662 }
663 $r}
664 sub _camel_case_to_underscore_name ($$) {
665 my ($self, $camelName) = @_;
666 my $r = '';
667
668 {
669
670
671 $r = $camelName;
672 $r =~ s/^([A-Z0-9]+)$/lc $1/ge;
673 $r =~ s/([A-Z][A-Z0-9]*)$/"_".lc $1/ge;
674 $r =~ s/([A-Z0-9])([A-Z0-9]*)([A-Z0-9])/$1.lc ($2)."_".lc $3/ge;
675 $r =~ s/([A-Z])/"_".lc $1/ge;
676 $r =~ s/(?=[0-9](?!$))/_/g;
677 $r =~ tr/-/_/;
678
679
680 }
681 $r}
682 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISImplementation>}->{has_feature} = {'',
683 {'',
684 '1'},
685 'http://suika.fam.cx/www/2006/feature/min',
686 {'',
687 '1',
688 '3.0',
689 '1'},
690 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#minimum',
691 {'',
692 '1',
693 '3.0',
694 '1'},
695 'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
696 {'',
697 '1',
698 '1.0',
699 '1'},
700 'xml',
701 {'',
702 '1',
703 '1.0',
704 '1',
705 '2.0',
706 '1',
707 '3.0',
708 '1'},
709 'xmlversion',
710 {'',
711 '1',
712 '1.0',
713 '1',
714 '1.1',
715 '1'}};
716 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISImplementation>} = 12.1;
717 package Message::Util::IF::DISParser;
718 our $VERSION = 20061231.0921;
719 package Message::Util::DIS::ManakaiDISParser;
720 our $VERSION = 20061231.0921;
721 push our @ISA, 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser',
722 'Message::Markup::IF::SWCFGParser',
723 'Message::Util::IF::DISParser';
724 sub parse ($$) {
725 my ($self, $input) = @_;
726 my $r;
727
728 {
729
730
731 {
732
733 local $Error::Depth = $Error::Depth + 1;
734
735 {
736
737
738
739 $r = $self->SUPER::parse ($input)
740
741
742
743 }
744
745
746 ;}
747
748 ;
749 if (defined $r) {
750 $r = bless $r,
751 'Message::Util::DIS::ManakaiDISDocument'
752 ;
753 $r->
754 default_element_type_namespace_uri
755
756 (
757 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
758 );
759 }
760
761
762 }
763 $r}
764 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISParser>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
765 {'',
766 '1',
767 '1.0',
768 '1'},
769 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
770 {'',
771 '1',
772 '2.1',
773 '1'}};
774 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISParser>} = 3.1;
775 $Message::DOM::DOMLS::ParserClass{q<Message::Util::DIS::ManakaiDISParser>} = 1;
776 package Message::Util::IF::DISNode;
777 our $VERSION = 20061231.0921;
778 package Message::Util::DIS::ManakaiDISNode;
779 our $VERSION = 20061231.0921;
780 push our @ISA, 'Message::Util::IF::DISNode';
781 use Message::Util::Error;
782 sub lookup_namespace_prefix ($;$%) {
783 my ($self, $namespaceURI, %opt) = @_;
784 my $r;
785
786 {
787
788
789 $r =
790 undef
791 ;
792 my $od = $self->
793 owner_document
794 || $self;
795 my $binds = $od->{
796 'node'
797 }->{
798 'swnsb'
799 };
800 if (defined $namespaceURI) {
801 FIND: {
802 for my $prefix (keys %$binds) {
803 if (defined $binds->{$prefix} and
804 $binds->{$prefix} eq $namespaceURI) {
805 $r = $prefix;
806 last FIND;
807 }
808 }
809
810 ## From module list
811
812
813 try {local $Error::Depth = $Error::Depth + 3;
814
815 my
816 $db = $self->
817 owner_dis_document
818
819 ->
820 dis_database
821 ;
822 for my $mod_uri (keys %{$db->{modDef}}) {
823 my $mod = $db->
824 get_module
825 ($mod_uri);
826 my $mod_ln = $mod->
827 local_name
828 ;
829 next if exists $binds->{$mod_ln};
830 my $ns_uri = $mod->
831 target_namespace_uri
832 ;
833 $ns_uri = '' unless defined $ns_uri;
834 if ($ns_uri eq $namespaceURI) {
835 $r = $mod_ln;
836 last FIND;
837 }
838 }
839 } catch
840 Message::Util::IF::DISException with
841 {
842 my $err = shift;
843 $err->throw
844 unless $err->{
845 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'
846 } eq
847 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ASSOCIATED_DB_ERR'
848 ;
849 };
850
851 last FIND unless $opt{make_new_binding};
852 ## Not found
853 if ($namespaceURI =~ /(\w+)$/) {
854 my $prefix = $1;
855 unless (exists $binds->{$prefix}) {
856 $binds->{$prefix} = $namespaceURI;
857 $r = $prefix;
858 last FIND;
859 }
860 }
861 my $i = 1;
862 {
863 unless (exists $binds->{'ns'.$i}) {
864 $binds->{$r = 'ns'.$i} = $namespaceURI;
865 last FIND;
866 }
867 $i++;
868 redo;
869 }
870 } # FIND
871 } else { ## Null namespace
872 FIND: {
873 if (exists $binds->{'nu'.'ll'} and not defined $binds->{'nu'.'ll'}) {
874 $r = 'nu'.'ll';
875 last FIND;
876 }
877 for my $prefix (keys %$binds) {
878 if (not defined $prefix) {
879 $r = $prefix;
880 last FIND;
881 }
882 }
883 last FIND unless $opt{make_new_binding};
884 ## Not found
885 my $i = '';
886 {
887 unless (exists $binds->{'nu'.'ll'.$i}) {
888 $binds->{$r = 'nu'.'ll'.$i} =
889 undef
890 ;
891 last FIND;
892 }
893 $i++;
894 redo;
895 }
896 }
897 }
898
899
900 }
901 $r}
902 sub lookup_namespace_uri ($$%) {
903 my ($self, $prefix, %opt) = @_;
904 my $r;
905
906 {
907
908 my
909 $od = $self->
910 owner_dis_document
911 || $self;
912 my $binds = $od->{
913 'node'
914 }->{
915 'swnsb'
916 };
917 if (exists $binds->{$prefix}) {
918 $r = $binds->{$prefix};
919 } else {
920 ## From module list
921 FIND: {
922 if ($od->{
923 'node'
924 }->{
925 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver'
926 }) {
927 $r = $od->{
928 'node'
929 }->{
930 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver'
931 }
932 ->($prefix);
933 last FIND if defined $r;
934 }
935
936
937 try {local $Error::Depth = $Error::Depth + 3;
938
939 my
940 $db = $od->
941 dis_database
942 ;
943 for my $mod_uri (keys %{$db->{modDef}}) {
944 my $mod = $db->
945 get_module
946 ($mod_uri);
947 if ($mod->
948 local_name
949 eq
950 $prefix) {
951 $r = $mod->
952 target_namespace_uri
953 ;
954 last FIND;
955 }
956 }
957 } catch
958 Message::Util::IF::DISException with
959 {
960 my $err = shift;
961 $err->throw
962 unless $err->{
963 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'
964 } eq
965 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ASSOCIATED_DB_ERR'
966 ;
967 };
968 if ($opt{make_new_binding}) {
969 $r = $binds->{$prefix} = $prefix;
970 } elsif ($opt{raise_prefix_exception}) {
971
972 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'lookup_namespace_uri', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNDECLARED_NS_PREFIX_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'prefix';
973
974 ;
975 } else {
976 $r =
977 undef
978 ;
979 }
980 } # FIND
981 }
982
983
984 }
985 $r}
986 sub _get_node_reference ($$) {
987 my ($self, $object) = @_;
988 my $r;
989
990 {
991
992 my
993 $class;
994 if ($object->{
995 'swnt'
996 } eq '#element') {
997 $class =
998 'Message::Util::DIS::ManakaiDISElement'
999 ;
1000 } elsif ($object->{
1001 'swnt'
1002 } eq '#comment') {
1003 $class =
1004 'Message::Util::DIS::ManakaiDISComment'
1005 ;
1006 } elsif ($object->{
1007 'swnt'
1008 } eq '#document') {
1009 $class =
1010 'Message::Util::DIS::ManakaiDISDocument'
1011 ;
1012 } elsif ($object->{
1013 'swnt'
1014 } eq '#fragment') {
1015 $class =
1016 'Message::Util::DIS::ManakaiDISDocumentFragment'
1017 ;
1018 } else {
1019
1020
1021 ;
1022 }
1023
1024
1025 {
1026
1027
1028 $object->{
1029 'rc'
1030 }++;
1031 ${$object->{
1032 'grc'
1033 }}++;
1034 $r = bless {
1035
1036 'node'
1037 => $object,
1038 }, $class;
1039
1040
1041 }
1042
1043 ;
1044
1045
1046 }
1047 $r}
1048 sub owner_dis_document ($;$) {
1049 if (@_ == 1) {my ($self) = @_;
1050 my $r;
1051
1052 {
1053
1054
1055 $r =
1056 Message::Util::DIS::ManakaiDISNode->_get_node_reference
1057
1058 ($self->{
1059 'node'
1060 }->{
1061 'swod'
1062 })
1063 if $self->{
1064 'node'
1065 }->{
1066 'swod'
1067 };
1068
1069
1070 }
1071 $r;
1072 } else {my ($self) = @_;
1073 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_dis_document';
1074 }
1075 }
1076 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISNode>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
1077 {'',
1078 '1',
1079 '1.0',
1080 '1'}};
1081 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISNode>} = 1;
1082 package Message::Util::IF::NSResolverDIS;
1083 our $VERSION = 20061231.0921;
1084 package Message::Util::DIS::ManakaiNSResolverDIS;
1085 our $VERSION = 20061231.0921;
1086 push our @ISA, 'Message::Util::IF::NSResolverDIS';
1087 sub prefix_to_uri ($;$%) {
1088 my ($self, $prefix, %opt) = @_;
1089 my $r;
1090
1091 {
1092
1093 if
1094 (defined $prefix) {
1095
1096
1097 {
1098
1099 local $Error::Depth = $Error::Depth + 1;
1100
1101 {
1102
1103
1104
1105 $r = $self->
1106 lookup_namespace_uri
1107 ($prefix);
1108
1109
1110
1111 }
1112
1113
1114 ;}
1115
1116 ;
1117 unless (defined $r) {
1118
1119 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'prefix_to_uri', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNDECLARED_NS_PREFIX_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiNSResolverDIS', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'prefix';
1120
1121 ;
1122 }
1123 } elsif (defined $self->{
1124 'node'
1125 }
1126 ->{
1127 'dns'
1128 }) {
1129 $r = $self->{
1130 'node'
1131 }->{
1132 'dns'
1133 };
1134 } else { ## Default namespace
1135
1136
1137 {
1138
1139 local $Error::Depth = $Error::Depth + 1;
1140
1141 {
1142
1143
1144
1145 $r = ($self->
1146 owner_dis_document
1147 || $self)
1148 ->
1149 module_element
1150
1151 ->
1152 defining_namespace_uri
1153 ;
1154
1155
1156
1157 }
1158
1159
1160 ;}
1161
1162 ;
1163 }
1164
1165
1166 }
1167 $r}
1168 sub qname_to_uri ($$%) {
1169 my ($self, $qname, %opt) = @_;
1170 my $r;
1171
1172 {
1173
1174
1175 $qname =~ s/^\s+//; $qname =~ s/\s+$//;
1176 my ($prefix, $lname) = split /\s*[:|]\s*/, $qname, 2;
1177
1178
1179 {
1180
1181 local $Error::Depth = $Error::Depth + 1;
1182
1183 {
1184
1185
1186 if
1187 (defined $lname) {
1188 $r = $self->
1189 prefix_to_uri
1190 ($prefix) . $lname;
1191 } else { ## In default namespace
1192 if (defined $opt{default_namespace_uri}) {
1193 $r = $opt{default_namespace_uri} . $prefix;
1194 } else {
1195 $r = $self->
1196 prefix_to_uri
1197 (
1198 undef
1199 ) . $prefix;
1200 }
1201 }
1202
1203
1204
1205 }
1206
1207
1208 ;}
1209
1210 ;
1211
1212
1213 }
1214 $r}
1215 sub qname_to_pair ($$%) {
1216 my ($self, $qname, %opt) = @_;
1217 my $r = [];
1218
1219 {
1220
1221
1222 $qname =~ s/^\s+//; $qname =~ s/\s+$//;
1223 my ($prefix, $lname) = split /\s*[:|]\s*/, $qname, 2;
1224
1225
1226 {
1227
1228 local $Error::Depth = $Error::Depth + 1;
1229
1230 {
1231
1232
1233 if
1234 (defined $lname) {
1235 $r = [$self->
1236 prefix_to_uri
1237 ($prefix), $lname];
1238 } else { ## In default namespace
1239 $r = [$self->
1240 prefix_to_uri
1241 (
1242 undef
1243 ), $prefix];
1244 }
1245
1246
1247
1248 }
1249
1250
1251 ;}
1252
1253 ;
1254
1255
1256 }
1257 $r}
1258 sub tfpqnames_to_uri ($$;$%) {
1259 my ($self, $tfpqnames, $defaultTypeURI, %opt) = @_;
1260 my $r = '';
1261
1262 {
1263
1264 my
1265 ($typeq, undef, @forpq) = split /\s*[:|][:|]\s*/, $tfpqnames;
1266 my ($typeURI);
1267 my $forpURI = [];
1268
1269
1270 {
1271
1272 local $Error::Depth = $Error::Depth + 1;
1273
1274 {
1275
1276
1277
1278 $typeURI = $typeq eq ''
1279 ? defined $defaultTypeURI ? $defaultTypeURI
1280 :
1281 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#any'
1282 :
1283 $self->
1284 qname_to_uri
1285 ($typeq, %opt);
1286 for my $forpq (@forpq) {
1287 push @$forpURI, $self->
1288 qname_to_uri
1289
1290 ($forpq, %opt);
1291 }
1292
1293
1294
1295 }
1296
1297
1298 ;}
1299
1300 ;
1301
1302
1303 {
1304
1305 if
1306 (@{$forpURI} == 0) {
1307 $r = $typeURI;
1308 } else {
1309 my $__turi = $typeURI;
1310 my $__furi =
1311 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
1312 ;
1313 for my $__uri ($__turi, $__furi) {
1314 $__uri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])}{sprintf '%%%02X', ord $1}ge;
1315 }
1316 my @__fp;
1317 for my $__uri (@{$forpURI}) {
1318 my $__fpuri = $__uri;
1319 $__fpuri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])}
1320 {sprintf '%%%02X', ord $1}ge;
1321 push @__fp, $__fpuri;
1322 }
1323 $r = qq<tag:suika.fam.cx,2005-09:$__turi+$__furi+>.join ('+', @__fp);
1324 }
1325
1326
1327 }
1328
1329 ;
1330
1331
1332 }
1333 $r}
1334 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiNSResolverDIS>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
1335 {'',
1336 '1',
1337 '1.0',
1338 '1'}};
1339 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiNSResolverDIS>} = 1;
1340 package Message::Util::IF::DISElement;
1341 our $VERSION = 20061231.0921;
1342 package Message::Util::DIS::ManakaiDISElement;
1343 our $VERSION = 20061231.0921;
1344 push our @ISA, 'Message::Util::DIS::ManakaiNSResolverDIS',
1345 'Message::Util::DIS::ManakaiDISNode',
1346 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement',
1347 'Message::Util::DIS::Perl::ManakaiDISElementPerl',
1348 'Message::Util::IF::DISElement';
1349 sub for_match ($$;$%) {
1350 my ($self, $forArg, $forpArg, %opt) = @_;
1351 my $r = 0;
1352
1353 {
1354
1355
1356 $forpArg ||= [];
1357
1358 FORMATCH: {
1359
1360
1361 {
1362
1363 local $Error::Depth = $Error::Depth + 1;
1364
1365 {
1366
1367
1368 my
1369 $for_res = ($opt{database_arg} ||=
1370 $self->
1371 owner_dis_document
1372
1373 ->
1374 dis_database
1375 )
1376 ->get_for (
1377 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
1378 );
1379 my $forp_res = [map {
1380 $opt{database_arg}->
1381 get_for
1382 ($_)
1383 } @{$forpArg}];
1384
1385 my @ce = @{$self->
1386 dis_all_child_elements
1387 };
1388 for my $ce (@ce) {
1389 my $et = $ce->
1390 expanded_uri
1391 ;
1392 if ($et eq
1393 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForCheck'
1394 ) {
1395 my $fors = [split /\s+/, $ce->
1396 value
1397 ];
1398 FCs: for my $f (@$fors) {
1399 if ($f =~ /^!=(.+)$/) { ## -- NOT EQUAL TO
1400 my $uri = $self->
1401 qname_to_uri
1402 ($1);
1403 my $for = $opt{database_arg}->
1404 get_for
1405 ($uri);
1406 $for->
1407 is_referred
1408 ($ce);
1409 for my $arg_res ($for_res, @{$forp_res}) {
1410 if ($arg_res eq $for) {
1411 $r =
1412 0
1413 ;
1414 last FORMATCH;
1415 }
1416 }
1417 } elsif ($f =~ /^!(.+)$/) { ## -- NOT ISA
1418 my $uri = $self->
1419 qname_to_uri
1420 ($1);
1421 my $for = $opt{database_arg}->
1422 get_for
1423 ($uri);
1424 $for->
1425 is_referred
1426 ($ce);
1427 for my $arg_res ($for_res, @{$forp_res}) {
1428 if ($arg_res->
1429 isa_uri
1430 ($uri)) {
1431 $r =
1432 0
1433 ;
1434 last FORMATCH;
1435 }
1436 }
1437 } elsif ($f =~ /^=(.+)$/) { ## -- EQUAL TO
1438 my $uri = $self->
1439 qname_to_uri
1440 ($1);
1441 my $for = $opt{database_arg}->
1442 get_for
1443 ($uri);
1444 $for->
1445 is_referred
1446 ($ce);
1447 for my $arg_res ($for_res, @{$forp_res}) {
1448 if ($arg_res eq $for) {
1449 next FCs;
1450 }
1451 }
1452 $r =
1453 0
1454 ;
1455 last FORMATCH;
1456 } else { ## -- ISA
1457 my $uri = $self->
1458 qname_to_uri
1459 ($f);
1460 my $for = $opt{database_arg}->
1461 get_for
1462 ($uri);
1463 $for->
1464 is_referred
1465 ($ce);
1466 for my $arg_res ($for_res, @{$forp_res}) {
1467 if ($arg_res->
1468 isa_uri
1469 ($uri)) {
1470 next FCs;
1471 }
1472 }
1473 $r =
1474 0
1475 ;
1476 last FORMATCH;
1477 }
1478 } # FCs
1479 } # dis:ForCheck
1480 } # children
1481
1482 $r = 1;
1483
1484
1485
1486 }
1487
1488
1489 ;}
1490
1491 ;
1492 } # FORMATCH
1493
1494
1495 }
1496 $r}
1497 sub media_type_match ($$;$%) {
1498 my ($self, $mediaType, $defaultMediaType, %opt) = @_;
1499 my $r = 0;
1500
1501 {
1502
1503 if
1504 (defined $mediaType) {
1505
1506
1507 {
1508
1509 local $Error::Depth = $Error::Depth + 1;
1510
1511 {
1512
1513
1514 my
1515 $ctn = $self->
1516 get_attribute_ns
1517
1518 (
1519 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
1520 , 'ContentType');
1521 my $ct;
1522 $ct = $ctn->
1523 qname_value_uri if
1524 $ctn;
1525 $ct = $defaultMediaType unless defined $ct;
1526 my $res = $self->
1527 owner_dis_document
1528
1529 ->
1530 dis_database
1531
1532 ->
1533 get_resource
1534 ($ct);
1535 $res->
1536 is_referred
1537 ($ctn or $self);
1538 unless ($res->
1539 is_subset_of_uri
1540 ($mediaType)) {
1541 $r =
1542 0
1543 ;
1544 } else {
1545 $r =
1546 1
1547 ;
1548 }
1549
1550
1551
1552 }
1553
1554
1555 ;}
1556
1557 ;
1558 } else {
1559 $r =
1560 1
1561 ;
1562 }
1563
1564
1565 }
1566 $r}
1567 sub media_type_uri ($%) {
1568 my ($self, %opt) = @_;
1569 my $r;
1570
1571 {
1572
1573
1574 {
1575
1576 local $Error::Depth = $Error::Depth + 1;
1577
1578 {
1579
1580
1581
1582 $r = $opt{default_media_type};
1583 my $ctn = $self->
1584 get_attribute_ns
1585
1586 (
1587 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
1588 , 'ContentType');
1589 $r = $ctn->
1590 qname_value_uri if
1591 $ctn;
1592
1593
1594
1595 }
1596
1597
1598 ;}
1599
1600 ;
1601
1602
1603 }
1604 $r}
1605 sub dis_get_attribute ($$%) {
1606 my ($self, $attrName, %opt) = @_;
1607 my $r;
1608
1609 {
1610
1611 C:
1612 for my $c (@{$self->
1613 dis_child_elements
1614
1615 (forp_arg => $opt{forp_arg},
1616 database_arg => $opt{database_arg})}) {
1617 if ($c->
1618 expanded_uri eq
1619 $attrName and
1620 $c->
1621 media_type_match
1622
1623 ($opt{media_type}, $opt{default_media_type},
1624 database_arg => $opt{database_arg})) {
1625 $r = $c;
1626 last C;
1627 }
1628 }
1629
1630
1631 }
1632 $r}
1633 sub dis_get_attribute_list ($$%) {
1634 my ($self, $attrName, %opt) = @_;
1635 my $r;
1636
1637 {
1638
1639
1640 $r = bless [],
1641 'Message::Util::DIS::ManakaiDISElementList'
1642 ;
1643 for my $c (@{$self->
1644 dis_child_elements
1645
1646 (forp_arg => $opt{forp_arg},
1647 database_arg => $opt{database_arg})}) {
1648 if ($c->
1649 expanded_uri eq
1650 $attrName and
1651 $c->
1652 media_type_match
1653
1654 ($opt{media_type}, $opt{default_media_type},
1655 database_arg => $opt{database_arg})) {
1656 push @$r, $c;
1657 }
1658 }
1659
1660
1661 }
1662 $r}
1663 sub dis_child_elements ($%) {
1664 my ($self, %opt) = @_;
1665 my $r;
1666
1667 {
1668
1669
1670 $r = bless [],
1671 'Message::Util::DIS::ManakaiDISElementList'
1672 ;
1673
1674
1675 {
1676
1677 local $Error::Depth = $Error::Depth + 1;
1678
1679 {
1680
1681
1682 C:
1683 for my $cn (@{$self->
1684 child_nodes
1685 }) {
1686 ## $cn is an #element.
1687 my $dn;
1688
1689
1690 {
1691
1692
1693 $cn->{'node'}->{
1694 'rc'
1695 }++;
1696 ${$cn->{'node'}->{
1697 'grc'
1698 }}++;
1699 $dn = bless {
1700
1701 'node'
1702 => $cn->{'node'},
1703 }, 'Message::Util::DIS::ManakaiDISElement';
1704
1705
1706 }
1707
1708 ;
1709 next C unless $dn->
1710 for_match
1711
1712 (undef, $opt{forp_arg},
1713 database_arg => $opt{database_arg});
1714 push @$r, $dn;
1715 }
1716
1717
1718
1719 }
1720
1721
1722 ;}
1723
1724 ;
1725
1726
1727 }
1728 $r}
1729 sub dis_all_child_elements ($) {
1730 my ($self) = @_;
1731 my $r;
1732
1733 {
1734
1735
1736 $r = bless [],
1737 'Message::Util::DIS::ManakaiDISElementList'
1738 ;
1739
1740
1741 {
1742
1743 local $Error::Depth = $Error::Depth + 1;
1744
1745 {
1746
1747
1748 for
1749 my $cn (@{$self->
1750 child_nodes
1751 }) {
1752 ## $cn is an #element.
1753 my $dn;
1754
1755
1756 {
1757
1758
1759 $cn->{'node'}->{
1760 'rc'
1761 }++;
1762 ${$cn->{'node'}->{
1763 'grc'
1764 }}++;
1765 $dn = bless {
1766
1767 'node'
1768 => $cn->{'node'},
1769 }, 'Message::Util::DIS::ManakaiDISElement';
1770
1771
1772 }
1773
1774 ;
1775 push @$r, $dn;
1776 }
1777
1778
1779
1780 }
1781
1782
1783 ;}
1784
1785 ;
1786
1787
1788 }
1789 $r}
1790 sub qname_value_uri ($;$) {
1791 if (@_ == 1) {my ($self) = @_;
1792 my $r;
1793
1794 {
1795
1796
1797 {
1798
1799 local $Error::Depth = $Error::Depth + 1;
1800
1801 {
1802
1803
1804 my
1805 $v = $self->
1806 value
1807 ;
1808 if (defined $v and not ref $v eq 'ARRAY') {
1809 $r = $self->
1810 qname_to_uri
1811 ($v, node => $self);
1812 } else {
1813 $r =
1814 undef
1815 ;
1816 }
1817
1818
1819
1820 }
1821
1822
1823 ;}
1824
1825 ;
1826
1827
1828 }
1829 $r;
1830 } else {my ($self) = @_;
1831 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_uri';
1832 }
1833 }
1834 sub qname_value_local_name ($;$) {
1835 if (@_ == 1) {my ($self) = @_;
1836 my $r;
1837
1838 {
1839
1840
1841 {
1842
1843 local $Error::Depth = $Error::Depth + 1;
1844
1845 {
1846
1847
1848 my
1849 $v = $self->
1850 value
1851 ;
1852 if (defined $v and not ref $v eq 'ARRAY') {
1853 my ($n, $v) = split /\s*[:|]\s*/, $v, 2;
1854 $r = defined $v ? $v : $n;
1855 } else {
1856 $r =
1857 undef
1858 ;
1859 }
1860
1861
1862
1863 }
1864
1865
1866 ;}
1867
1868 ;
1869
1870
1871 }
1872 $r;
1873 } else {my ($self) = @_;
1874 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_local_name';
1875 }
1876 }
1877 sub qname_value_prefix ($;$) {
1878 if (@_ == 1) {my ($self) = @_;
1879 my $r;
1880
1881 {
1882
1883
1884 {
1885
1886 local $Error::Depth = $Error::Depth + 1;
1887
1888 {
1889
1890
1891 my
1892 $v = $self->
1893 value
1894 ;
1895 if (defined $v and not ref $v eq 'ARRAY') {
1896 my ($p, $l) = split /\s*[:|]\s*/, $v, 2;
1897 $r = defined $l ? $p :
1898 undef
1899 ;
1900 } else {
1901 $r =
1902 undef
1903 ;
1904 }
1905
1906
1907
1908 }
1909
1910
1911 ;}
1912
1913 ;
1914
1915
1916 }
1917 $r;
1918 } else {my ($self) = @_;
1919 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_prefix';
1920 }
1921 }
1922 sub qname_value_namespace_uri ($;$) {
1923 if (@_ == 1) {my ($self) = @_;
1924 my $r;
1925
1926 {
1927
1928
1929 {
1930
1931 local $Error::Depth = $Error::Depth + 1;
1932
1933 {
1934
1935
1936 my
1937 $v = $self->
1938 value
1939 ;
1940 if (defined $v and not ref $v eq 'ARRAY') {
1941 my ($p, $v) = split /\s*[:|]\s*/, $v, 2;
1942 $r = $self->
1943 prefix_to_uri
1944
1945 (defined $v ? $p :
1946 undef
1947 );
1948 } else {
1949 $r =
1950 undef
1951 ;
1952 }
1953
1954
1955
1956 }
1957
1958
1959 ;}
1960
1961 ;
1962
1963
1964 }
1965 $r;
1966 } else {my ($self) = @_;
1967 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_namespace_uri';
1968 }
1969 }
1970 sub tfqnames_value_uri ($;$) {
1971 my ($self, $defaultTypeURI) = @_;
1972 my $r;
1973
1974 {
1975
1976 my
1977 $v = $self->
1978 value
1979 ;
1980 if (defined $v and not ref $v eq 'ARRAY') {
1981
1982
1983 {
1984
1985 local $Error::Depth = $Error::Depth + 1;
1986
1987 {
1988
1989
1990
1991 $r = $self->
1992 tfpqnames_to_uri
1993
1994 ($v, $defaultTypeURI,
1995 node => $self);
1996
1997
1998
1999 }
2000
2001
2002 ;}
2003
2004 ;
2005 } else {
2006 $r =
2007 undef
2008 ;
2009 }
2010
2011
2012 }
2013 $r}
2014 sub element_type_match ($$%) {
2015 my ($self, $etype, %opt) = @_;
2016 my $r = 0;
2017
2018 {
2019
2020
2021 {
2022
2023 local $Error::Depth = $Error::Depth + 1;
2024
2025 {
2026
2027
2028 my
2029 $et = $self->expanded_uri;
2030 my $rdef = $self->
2031 owner_dis_document
2032
2033 ->
2034 dis_database
2035
2036 ->
2037 get_resource
2038 ($et);
2039 $r = $rdef->
2040 is_subset_of_uri
2041
2042 ($etype, srinfo => $opt{srinfo});
2043
2044
2045
2046 }
2047
2048
2049 ;}
2050
2051 ;
2052
2053
2054 }
2055 $r}
2056 sub is_resource_element ($;$) {
2057 if (@_ == 1) {my ($self) = @_;
2058 my $r = 0;
2059
2060 {
2061
2062
2063 {
2064
2065 local $Error::Depth = $Error::Depth + 1;
2066
2067 {
2068
2069
2070
2071 $r = ($self->
2072 expanded_uri eq
2073
2074 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ResourceDef'
2075 );
2076
2077
2078
2079 }
2080
2081
2082 ;}
2083
2084 ;
2085
2086
2087 }
2088 $r;
2089 } else {my ($self) = @_;
2090 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'is_resource_element';
2091 }
2092 }
2093 sub is_property_element ($%) {
2094 my ($self, %opt) = @_;
2095 my $r = 0;
2096
2097 {
2098
2099
2100 {
2101
2102 local $Error::Depth = $Error::Depth + 1;
2103
2104 {
2105
2106
2107 my
2108 $xn = $self->
2109 expanded_uri
2110 ;
2111 if ($xn eq
2112 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#resourceType' or
2113 $xn eq
2114 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'
2115 ) {
2116 $r =
2117 1
2118 ;
2119 } else {
2120 my $rdef = ($opt{database_arg} or
2121 $self->
2122 owner_dis_document
2123
2124 ->
2125 dis_database
2126 )
2127 ->
2128 get_resource
2129 ($xn);
2130 $r = $rdef->
2131 is_type_uri
2132
2133 (
2134 'http://suika.fam.cx/~wakaba/archive/2004/dis/Source#Property'
2135 ) ||
2136 $rdef->
2137 is_type_uri
2138 (
2139 'http://www.w3.org/1999/02/22-rdf-syntax-ns#Property'
2140 );
2141 ## TODO: Remove this.
2142 }
2143
2144
2145
2146 }
2147
2148
2149 ;}
2150
2151 ;
2152
2153
2154 }
2155 $r}
2156 sub unlink_from_document ($$) {
2157 my ($self, $databaseArg) = @_;
2158
2159 {
2160
2161
2162 {
2163
2164 local $Error::Depth = $Error::Depth + 1;
2165
2166 {
2167
2168
2169 my
2170 $ods = $self->{
2171 'node'
2172 }->{
2173 'swod'
2174 };
2175 $self->{
2176 'node'
2177 }->{
2178 'swnsb'
2179 }
2180 = $self->
2181 get_namespace_binding_list
2182 ($databaseArg);
2183 $self->{
2184 'node'
2185 }->{
2186 'dns'
2187 }
2188 = ${$self->
2189 get_default_namespace_uri_ref
2190 };
2191 my @nodes = ($self->{
2192 'node'
2193 });
2194 while (defined (my $node = shift @nodes)) {
2195 CORE::delete $node->{
2196 'swod'
2197 };
2198 push @nodes, grep {$_} @{$node->{
2199 'swcn'
2200 }},
2201 $node->{
2202 'shadow'
2203 },
2204 $node->{
2205 'shadowsib'
2206 };
2207 }
2208 $self->{
2209 'node'
2210 }
2211 ->
2212 _orphanate
2213 ;
2214
2215
2216
2217 }
2218
2219
2220 ;}
2221
2222 ;
2223
2224
2225 }
2226 }
2227 sub get_namespace_binding_list ($$) {
2228 my ($self, $databaseArg) = @_;
2229 my $r = {};
2230
2231 {
2232
2233 my
2234 $ods = $self->{
2235 'node'
2236 }->{
2237 'swod'
2238 };
2239 if ($ods->{
2240 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings'
2241 }) {
2242 $r = $ods->{
2243 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings'
2244 };
2245 } else {
2246 if ($databaseArg) {
2247 for my $mod_uri (keys %{$databaseArg->{modDef}}) {
2248 my $mod = $databaseArg->
2249 get_module
2250 ($mod_uri);
2251 $ods->{
2252 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings'
2253 }
2254 ->{$mod->
2255 local_name
2256 }
2257 = $mod->
2258 target_namespace_uri
2259 ;
2260 }
2261 }
2262 for my $prefix (keys %{$ods->{
2263 'swnsb'
2264 }}) {
2265 $ods->{
2266 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings'
2267 }->{$prefix}
2268 = $ods->{
2269 'swnsb'
2270 }->{$prefix};
2271 }
2272 $r = $ods->{
2273 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings'
2274 };
2275 }
2276
2277
2278 }
2279 $r}
2280 sub get_default_namespace_uri_ref ($) {
2281 my ($self) = @_;
2282 my $r;
2283
2284 {
2285
2286 my
2287 $ods = $self->{
2288 'node'
2289 }->{
2290 'swod'
2291 };
2292 if ($ods->{
2293 'dns'
2294 }) {
2295 $r = \ ($ods->{
2296 'dns'
2297 });
2298 } else {
2299
2300
2301 {
2302
2303 local $Error::Depth = $Error::Depth + 1;
2304
2305 {
2306
2307
2308
2309 $r = \($ods->{
2310 'dns'
2311 }
2312 = $self->
2313 owner_dis_document
2314
2315 ->
2316 module_element
2317
2318 ->
2319 defining_namespace_uri
2320 );
2321
2322
2323
2324 }
2325
2326
2327 ;}
2328
2329 ;
2330 }
2331
2332
2333 }
2334 $r}
2335 sub preserve_node_path ($) {
2336 my ($self) = @_;
2337
2338 {
2339
2340
2341 {
2342
2343 local $Error::Depth = $Error::Depth + 1;
2344
2345 {
2346
2347
2348
2349 $self->
2350 flag
2351 (nodePath => $self->
2352 node_path
2353
2354 (key => [qw/QName Name Type type/]));
2355
2356
2357
2358 }
2359
2360
2361 ;}
2362
2363 ;
2364
2365
2366 }
2367 }
2368 sub clone ($) {
2369 my ($self) = @_;
2370 my $r;
2371
2372 {
2373
2374
2375 $r = bless $self->SUPER::clone,
2376 'Message::Util::DIS::ManakaiDISElement'
2377 ;
2378
2379
2380 }
2381 $r}
2382 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISElement>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
2383 {'',
2384 '1',
2385 '1.0',
2386 '1'},
2387 'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl',
2388 {'',
2389 '1',
2390 '1.0',
2391 '1'},
2392 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
2393 {'',
2394 '1',
2395 '2.1',
2396 '1'}};
2397 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISElement>} = 4.1;
2398 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISElement>} = {'o',
2399 ['p'],
2400 's',
2401 ['swcn'],
2402 's0',
2403 ['shadow',
2404 'shadowsib']};
2405 package Message::Util::IF::DISModuleElement;
2406 our $VERSION = 20061231.0921;
2407 package Message::Util::DIS::ManakaiDISModuleElement;
2408 our $VERSION = 20061231.0921;
2409 push our @ISA, 'Message::Util::DIS::ManakaiDISElement',
2410 'Message::Util::IF::DISElement',
2411 'Message::Util::IF::DISModuleElement';
2412 sub require_element ($;$) {
2413 if (@_ == 1) {my ($self) = @_;
2414 my $r;
2415
2416 {
2417
2418
2419 {
2420
2421 local $Error::Depth = $Error::Depth + 1;
2422
2423 {
2424
2425
2426
2427 $r = bless $self->
2428 get_attribute_ns
2429
2430 (
2431 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
2432 , 'Require', make_new_node =>
2433 1
2434 ),
2435
2436 'Message::Util::DIS::ManakaiDISElement'
2437 ;
2438
2439
2440
2441 }
2442
2443
2444 ;}
2445
2446 ;
2447
2448
2449 }
2450 $r;
2451 } else {my ($self) = @_;
2452 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'require_element';
2453 }
2454 }
2455 sub defining_namespace_uri ($;$) {
2456 if (@_ == 1) {my ($self) = @_;
2457 my $r;
2458
2459 {
2460
2461
2462 {
2463
2464 local $Error::Depth = $Error::Depth + 1;
2465
2466 {
2467
2468
2469 my
2470 $df = $self->
2471 get_attribute_ns
2472
2473 (
2474 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
2475 , 'Namespace');
2476 if ($df) {
2477 $r = $df->value;
2478 } else {
2479
2480
2481 ;
2482 }
2483
2484
2485
2486 }
2487
2488
2489 ;}
2490
2491 ;
2492
2493
2494 }
2495 $r;
2496 } else {my ($self, $given) = @_;
2497
2498 {
2499
2500
2501 {
2502
2503 local $Error::Depth = $Error::Depth + 1;
2504
2505 {
2506
2507
2508
2509 $self->
2510 set_attribute_ns
2511
2512 (
2513 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
2514 , 'Namespace' => $given);
2515
2516
2517
2518 }
2519
2520
2521 ;}
2522
2523 ;
2524
2525
2526 }
2527 }
2528 }
2529 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleElement>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
2530 {'',
2531 '1',
2532 '1.0',
2533 '1'},
2534 'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl',
2535 {'',
2536 '1',
2537 '1.0',
2538 '1'},
2539 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
2540 {'',
2541 '1',
2542 '2.1',
2543 '1'}};
2544 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleElement>} = 4.1;
2545 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISModuleElement>} = {'o',
2546 ['p'],
2547 's',
2548 ['swcn'],
2549 's0',
2550 ['shadow',
2551 'shadowsib']};
2552 package Message::Util::IF::DISElementList;
2553 our $VERSION = 20061231.0921;
2554 package Message::Util::DIS::ManakaiDISElementList;
2555 our $VERSION = 20061231.0921;
2556 push our @ISA, 'Message::Util::IF::DISElementList';
2557 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISElementList>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
2558 {'',
2559 '1',
2560 '1.0',
2561 '1'}};
2562 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISElementList>} = 1;
2563 package Message::Util::IF::DISComment;
2564 our $VERSION = 20061231.0921;
2565 package Message::Util::DIS::ManakaiDISComment;
2566 our $VERSION = 20061231.0921;
2567 push our @ISA, 'Message::Util::DIS::ManakaiDISNode',
2568 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment',
2569 'Message::Util::IF::DISComment';
2570 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISComment>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
2571 {'',
2572 '1',
2573 '1.0',
2574 '1'},
2575 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
2576 {'',
2577 '1',
2578 '2.1',
2579 '1'}};
2580 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISComment>} = 3.1;
2581 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISComment>} = {'o',
2582 ['p'],
2583 's',
2584 ['swcn']};
2585 package Message::Util::IF::DISDocumentFragment;
2586 our $VERSION = 20061231.0921;
2587 package Message::Util::DIS::ManakaiDISDocumentFragment;
2588 our $VERSION = 20061231.0921;
2589 push our @ISA, 'Message::Util::DIS::ManakaiDISNode',
2590 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment',
2591 'Message::Util::IF::DISDocumentFragment';
2592 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISDocumentFragment>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
2593 {'',
2594 '1',
2595 '1.0',
2596 '1'},
2597 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
2598 {'',
2599 '1',
2600 '2.1',
2601 '1'}};
2602 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISDocumentFragment>} = 3.1;
2603 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISDocumentFragment>} = {'o',
2604 ['p',
2605 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent',
2606 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf',
2607 'shadowo'],
2608 's',
2609 ['swcn']};
2610 package Message::Util::IF::DISDocument;
2611 our $VERSION = 20061231.0921;
2612 package Message::Util::DIS::ManakaiDISDocument;
2613 our $VERSION = 20061231.0921;
2614 push our @ISA, 'Message::Util::DIS::ManakaiDISNode',
2615 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument',
2616 'Message::Util::IF::DISDocument';
2617 sub module_element ($;$) {
2618 if (@_ == 1) {my ($self) = @_;
2619 my $r;
2620
2621 {
2622
2623
2624 {
2625
2626 local $Error::Depth = $Error::Depth + 1;
2627
2628 {
2629
2630
2631
2632 $r = $self->
2633 get_attribute_ns
2634
2635 (
2636 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
2637 , 'Module', make_new_node =>
2638 1
2639 );
2640
2641
2642
2643 }
2644
2645
2646 ;}
2647
2648 ;
2649 $r = bless $r,
2650 'Message::Util::DIS::ManakaiDISModuleElement'
2651 ;
2652
2653
2654 }
2655 $r;
2656 } else {my ($self) = @_;
2657 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'module_element';
2658 }
2659 }
2660 sub dis_database ($;$) {
2661 if (@_ == 1) {my ($self) = @_;
2662 my $r;
2663
2664 {
2665
2666 if
2667 ($self->{
2668 'node'
2669 }->{
2670 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db'
2671 }) {
2672 $r = $self->{
2673 'node'
2674 }->{
2675 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db'
2676 };
2677 } else {
2678
2679 report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_STATE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ASSOCIATED_DB_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_database';
2680
2681 ;
2682 }
2683
2684
2685 }
2686 $r;
2687 } else {my ($self, $given) = @_;
2688
2689 {
2690
2691
2692 $self->{
2693 'node'
2694 }->{
2695 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db'
2696 } = $given;
2697 require Scalar::Util;
2698 Scalar::Util::weaken ($self->{
2699 'node'
2700 }->{
2701 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db'
2702 });
2703
2704
2705 }
2706 }
2707 }
2708 sub dis_child_elements ($%) {
2709 my ($self, %opt) = @_;
2710 my $r;
2711
2712 {
2713
2714
2715 $r = bless [],
2716 'Message::Util::DIS::ManakaiDISElementList'
2717 ;
2718
2719
2720 {
2721
2722 local $Error::Depth = $Error::Depth + 1;
2723
2724 {
2725
2726
2727 C:
2728 for my $cn (@{$self->
2729 child_nodes
2730 }) {
2731 next C unless $cn->
2732 node_type eq
2733 '#element';
2734 my $dn;
2735
2736
2737 {
2738
2739
2740 $cn->{'node'}->{
2741 'rc'
2742 }++;
2743 ${$cn->{'node'}->{
2744 'grc'
2745 }}++;
2746 $dn = bless {
2747
2748 'node'
2749 => $cn->{'node'},
2750 }, 'Message::Util::DIS::ManakaiDISElement';
2751
2752
2753 }
2754
2755 ;
2756 next C unless $dn->
2757 for_match
2758
2759 (undef, $opt{forp_arg},
2760 database_arg => $opt{database_arg});
2761 push @$r, $dn;
2762 }
2763
2764
2765
2766 }
2767
2768
2769 ;}
2770
2771 ;
2772
2773
2774 }
2775 $r}
2776 sub dis_all_child_elements ($) {
2777 my ($self) = @_;
2778 my $r;
2779
2780 {
2781
2782
2783 $r = bless [],
2784 'Message::Util::DIS::ManakaiDISElementList'
2785 ;
2786
2787
2788 {
2789
2790 local $Error::Depth = $Error::Depth + 1;
2791
2792 {
2793
2794
2795 C:
2796 for my $cn (@{$self->
2797 child_nodes
2798 }) {
2799 next C unless $cn->
2800 node_type eq
2801 '#element';
2802 my $dn;
2803
2804
2805 {
2806
2807
2808 $cn->{'node'}->{
2809 'rc'
2810 }++;
2811 ${$cn->{'node'}->{
2812 'grc'
2813 }}++;
2814 $dn = bless {
2815
2816 'node'
2817 => $cn->{'node'},
2818 }, 'Message::Util::DIS::ManakaiDISElement';
2819
2820
2821 }
2822
2823 ;
2824 push @$r, $dn;
2825 }
2826
2827
2828
2829 }
2830
2831
2832 ;}
2833
2834 ;
2835
2836
2837 }
2838 $r}
2839 sub add_namespace_binding ($$;$) {
2840 my ($self, $prefix, $namespaceURI) = @_;
2841
2842 {
2843
2844 if
2845 (defined $namespaceURI) {
2846 $self->{
2847 'node'
2848 }->{
2849 'swnsb'
2850 }->{$prefix}
2851 = $namespaceURI;
2852 } else {
2853 CORE::delete $self->{
2854 'node'
2855 }->{
2856 'swnsb'
2857 }
2858 ->{$prefix};
2859 }
2860
2861
2862 }
2863 }
2864 sub dis_namespace_resolver ($;$) {
2865 if (@_ == 1) {my ($self) = @_;
2866 my $r;
2867
2868 {
2869
2870
2871 $r = $self->{
2872 'node'
2873 }->{
2874 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver'
2875 };
2876
2877
2878 }
2879 $r;
2880 } else {my ($self, $given) = @_;
2881
2882 {
2883
2884
2885 $self->{
2886 'node'
2887 }->{
2888 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver'
2889 } = $given;
2890
2891
2892 }
2893 }
2894 }
2895 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISDocument>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
2896 {'',
2897 '1',
2898 '1.0',
2899 '1'},
2900 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
2901 {'',
2902 '1',
2903 '2.1',
2904 '1'}};
2905 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISDocument>} = 3.1;
2906 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISDocument>} = {'o',
2907 ['p'],
2908 's',
2909 ['swcn'],
2910 's2',
2911 ['swetb']};
2912 package Message::Util::IF::DISDatabase;
2913 our $VERSION = 20061231.0921;
2914 package Message::Util::DIS::ManakaiDISDatabase;
2915 our $VERSION = 20061231.0921;
2916 push our @ISA, 'Message::Util::DIS::Perl::ManakaiDISDatabasePerl',
2917 'Message::Util::IF::DISDatabase';
2918 sub get_module ($$) {
2919 my ($self, $moduleURI) = @_;
2920 my $r;
2921
2922 {
2923
2924 if
2925 (defined $self->{modDef}->{$moduleURI}) {
2926 $r = $self->{modDef}->{$moduleURI};
2927 } else {
2928 $r = $self->{modDef}->{$moduleURI}
2929 = bless {
2930 uri => $moduleURI,
2931 db => $self,
2932 forp => [],
2933
2934 'tu'
2935 =>
2936 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Module'
2937 ,
2938
2939 'r'
2940 => 0,
2941 },
2942 'Message::Util::DIS::ManakaiDISModuleDefinition'
2943 ;
2944 require Scalar::Util;
2945 Scalar::Util::weaken ($r->{db});
2946 }
2947
2948
2949 }
2950 $r}
2951 sub get_for ($;$) {
2952 my ($self, $forURI) = @_;
2953 my $r;
2954
2955 {
2956
2957
2958 $forURI =
2959 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' unless
2960 defined $forURI;
2961 if (defined $self->{forDef}->{$forURI}) {
2962 $r = $self->{forDef}->{$forURI};
2963 } elsif (defined $self->{
2964 'rm'
2965 }->{$forURI}) {
2966
2967
2968 {
2969
2970 local $Error::Depth = $Error::Depth + 1;
2971
2972 {
2973
2974
2975
2976 $self->
2977 _pl_load_dis_database_module
2978
2979 ($self->
2980 get_module
2981
2982 (${$self->{
2983 'rm'
2984 }->{$forURI}}));
2985
2986
2987
2988 }
2989
2990
2991 ;}
2992
2993 ;
2994 unless (defined $self->{forDef}->{$forURI}) {
2995
2996 report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'get_for', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $forURI, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => ${$self->{'rm'}
2997 ->{$forURI}};
2998
2999 ;
3000 }
3001 $r = $self->{forDef}->{$forURI};
3002 } else {
3003 $r = $self->{forDef}->{$forURI}
3004 = bless {
3005 uri => $forURI,
3006 isa => {
3007 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
3008 =>
3009 1
3010 },
3011 revISA => {},
3012 db => $self,
3013
3014 'tu'
3015 =>
3016 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#For'
3017 ,
3018
3019 'r'
3020 => 0,
3021 },
3022 'Message::Util::DIS::ManakaiDISForDefinition'
3023 ;
3024 $self->{forDef}->{
3025 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
3026 }->{revISA}->{$forURI} =
3027 1
3028 ;
3029 require Scalar::Util;
3030 Scalar::Util::weaken ($r->{db});
3031 }
3032
3033
3034 }
3035 $r}
3036 sub get_resource ($;$) {
3037 my ($self, $resourceURI) = @_;
3038 my $r;
3039
3040 {
3041
3042
3043 $resourceURI =
3044 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#any' unless
3045 defined $resourceURI;
3046 my $resURI = $resourceURI;
3047
3048 if (defined $self->{resDef}->{$resURI}) {
3049 $r = $self->{resDef}->{$resURI};
3050 } elsif (defined $self->{
3051 'rm'
3052 }->{$resURI}) {
3053
3054
3055 {
3056
3057 local $Error::Depth = $Error::Depth + 1;
3058
3059 {
3060
3061
3062
3063 $self->
3064 _pl_load_dis_database_module
3065
3066 ($self->
3067 get_module
3068
3069 (${$self->{
3070 'rm'
3071 }->{$resURI}}));
3072
3073
3074
3075 }
3076
3077
3078 ;}
3079
3080 ;
3081 unless (defined $self->{resDef}->{$resURI}) {
3082
3083 report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'get_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $resURI, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => ${$self->{'rm'}
3084 ->{$resURI}};
3085
3086 ;
3087 }
3088 $r = $self->{resDef}->{$resURI};
3089 } else {
3090 $r = $self->{resDef}->{$resURI}
3091 = bless {
3092 uri => $resURI,
3093 aliasURI => {$resURI =>
3094 1
3095 },
3096 db => $self,
3097 forp => [],
3098 seq => -1,
3099
3100 'tu'
3101 =>
3102 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Resource'
3103 ,
3104
3105 'r'
3106 => 0,
3107 },
3108 'Message::Util::DIS::ManakaiDISResourceDefinition'
3109 ;
3110 require Scalar::Util;
3111 Scalar::Util::weaken ($r->{db});
3112 }
3113
3114
3115 }
3116 $r}
3117 sub get_any_resource ($;$) {
3118 my ($self, $resourceURI) = @_;
3119 my $r;
3120
3121 {
3122
3123
3124 $resourceURI =
3125 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#any' unless
3126 defined $resourceURI;
3127 my $resURI = $resourceURI;
3128
3129 if (defined $self->{resDef}->{$resURI}) {
3130 $r = $self->{resDef}->{$resURI};
3131 } elsif (defined $self->{modDef}->{$resURI}) {
3132 $r = $self->{modDef}->{$resURI};
3133 } elsif (defined $self->{forDef}->{$resURI}) {
3134 $r = $self->{forDef}->{$resURI};
3135 } elsif (defined $self->{
3136 'rm'
3137 }->{$resURI}) {
3138
3139
3140 {
3141
3142 local $Error::Depth = $Error::Depth + 1;
3143
3144 {
3145
3146
3147
3148 $self->
3149 _pl_load_dis_database_module
3150
3151 ($self->
3152 get_module
3153
3154 (${$self->{
3155 'rm'
3156 }->{$resURI}}));
3157
3158
3159
3160 }
3161
3162
3163 ;}
3164
3165 ;
3166 if (defined $self->{resDef}->{$resURI}) {
3167 $r = $self->{resDef}->{$resURI};
3168 } elsif (defined $self->{forDef}->{$resURI}) {
3169 $r = $self->{forDef}->{$resURI};
3170 } else {
3171
3172 report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'get_any_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $resURI, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => ${$self->{'rm'}
3173 ->{$resURI}};
3174
3175 ;
3176 }
3177 } else {
3178
3179
3180 {
3181
3182 local $Error::Depth = $Error::Depth + 1;
3183
3184 {
3185
3186
3187
3188 $r = $self->
3189 get_resource
3190 ($resURI);
3191
3192
3193
3194 }
3195
3196
3197 ;}
3198
3199 ;
3200 }
3201
3202
3203 }
3204 $r}
3205 sub get_source_file ($$) {
3206 my ($self, $fileName) = @_;
3207 my $r;
3208
3209 {
3210
3211
3212 $r = $self->{
3213 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'
3214 }->{$fileName};
3215
3216
3217 }
3218 $r}
3219 sub set_source_file ($$$) {
3220 my ($self, $fileName, $doc) = @_;
3221
3222 {
3223
3224
3225 $self->{
3226 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'
3227 }->{$fileName} = $doc;
3228
3229
3230 }
3231 }
3232 sub load_module ($$$%) {
3233 my ($self, $doc, $resolver, %opt) = @_;
3234
3235 {
3236
3237
3238 $resolver = bless $resolver,
3239 'Message::Util::DIS::ManakaiDISModuleResolver'
3240 if
3241 ref $resolver eq 'CODE';
3242
3243
3244 }
3245
3246 {
3247
3248
3249 $resolver = bless $resolver,
3250 'Message::Util::DIS::ManakaiDISModuleResolver'
3251 if
3252 ref $resolver eq 'CODE';
3253 ## -- Module Name, URI
3254 my $mod_node;
3255 my $mod_name_node;
3256
3257
3258 {
3259
3260 local $Error::Depth = $Error::Depth + 1;
3261
3262 {
3263
3264
3265
3266 $mod_node = $doc->
3267 module_element
3268 ;
3269 $mod_name_node = $mod_node->
3270 get_attribute_ns
3271
3272 (
3273 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
3274 , 'QName');
3275 unless ($mod_name_node) {
3276
3277
3278 {
3279
3280 local $Error::Depth = $Error::Depth - 1;
3281
3282 {
3283
3284
3285
3286
3287 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $mod_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_MODULE_QNAME_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase';
3288
3289 ;
3290
3291
3292
3293 }
3294
3295
3296 ;}
3297
3298 ;
3299 }
3300 $mod_name_node = bless $mod_name_node,
3301 'Message::Util::DIS::ManakaiDISElement'
3302 if
3303 $mod_name_node->isa (
3304 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement'
3305 );
3306 my $mod_name_uri = $mod_name_node
3307 ->
3308 qname_value_uri
3309 ;
3310 my $mod = $self->
3311 get_module
3312
3313 ($mod_name_uri);
3314
3315 unless ($mod->
3316 is_defined
3317 ) {
3318 ## -- Initializes Module Definition Object
3319 my $v = $mod_name_node->
3320 qname_value_local_name
3321 ;
3322
3323
3324 {
3325
3326 if
3327 (defined $v) {
3328 if (ref $v eq 'SCALAR') {
3329 $mod->{localName} = $v;
3330 } elsif (defined $Message::Util::ManakaiStringRef::Value{$v}) {
3331 $mod->{localName} = $Message::Util::ManakaiStringRef::Value{$v};
3332 } else {
3333 require Scalar::Util;
3334 $mod->{localName} = $Message::Util::ManakaiStringRef::Value{$v} = \($v);
3335 Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$v});
3336 }
3337 } else {
3338 CORE::delete $mod->{localName};
3339 }
3340
3341
3342 }
3343
3344 ;
3345 my $ns = $mod_name_node->
3346 qname_value_namespace_uri
3347 ;
3348
3349
3350 {
3351
3352 if
3353 (defined $ns) {
3354 if (ref $ns eq 'SCALAR') {
3355 $mod->{namespaceURI} = $ns;
3356 } elsif (defined $Message::Util::ManakaiStringRef::Value{$ns}) {
3357 $mod->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns};
3358 } else {
3359 require Scalar::Util;
3360 $mod->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns} = \($ns);
3361 Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ns});
3362 }
3363 } else {
3364 CORE::delete $mod->{namespaceURI};
3365 }
3366
3367
3368 }
3369
3370 ;
3371 $mod->{src} = $mod_node;
3372 $mod->{
3373 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined'
3374 } =
3375 1
3376 ;
3377 $self->
3378 set_source_file
3379 ($mod_name_uri => $doc);
3380
3381 $mod->
3382 target_namespace_uri
3383
3384 ($mod_node->
3385 defining_namespace_uri
3386 );
3387
3388
3389
3390 {
3391
3392
3393 $mod->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'} =
3394 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
3395
3396 ('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String', $doc->flag ('http://suika.fam.cx/~wakaba/archive/2005/swcfg21#fileName'), base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String');
3397
3398
3399 {
3400
3401 local $Error::Depth = $Error::Depth + 1;
3402
3403 {
3404
3405
3406
3407 $mod->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'}->
3408 name
3409 ('http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile');
3410
3411
3412
3413 }
3414
3415
3416 ;}
3417
3418 ;
3419
3420
3421 }
3422
3423 ;
3424
3425
3426 {
3427
3428
3429 $mod->{
3430 'r'
3431 } = time;
3432
3433
3434 }
3435
3436 ;
3437
3438 ## -- Loads "for" definition
3439 my $root_elements
3440 = $doc->
3441 dis_all_child_elements
3442 ;
3443 R: for my $el (@$root_elements) {
3444 next R unless $el->
3445 expanded_uri eq
3446
3447 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForDef'
3448 ;
3449 $self->
3450 load_for
3451
3452 ($mod, $el, srinfo => $opt{srinfo});
3453 }
3454
3455 ## -- Loads "for all"
3456 my $rmod = $self->
3457 get_module
3458
3459 ($mod_name_uri);
3460 unless ($rmod->
3461 is_defined
3462 ) {
3463 my $rdoc = $resolver->
3464 uri_to_document
3465
3466 ($self, $rmod->
3467 uri
3468 ,
3469 $mod->
3470 namespace_uri
3471 ,
3472 $mod->
3473 local_name
3474 );
3475 unless ($rdoc) {
3476
3477
3478 {
3479
3480 local $Error::Depth = $Error::Depth - 1;
3481
3482 {
3483
3484
3485
3486
3487 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $mod->source_element, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#namespaceURI' => $mod->namespace_uri, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => $mod->local_name, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNABLE_TO_GET_MODULE_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $rmod->uri;
3488
3489 ;
3490
3491
3492
3493 }
3494
3495
3496 ;}
3497
3498 ;
3499 }
3500 $self->
3501 load_module
3502
3503 ($rdoc, $resolver,
3504 on_resource_read => $opt{on_resource_read},
3505 srinfo => $opt{srinfo});
3506 } else { # if "for all" loaded
3507 $rmod->
3508 get_property_boolean
3509
3510 (
3511 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--In'
3512 );
3513 ## Dummy to ensure the module is loaded
3514 }
3515
3516 ## -- Loads Required Modules
3517 my $req_node = $mod_node->
3518 require_element
3519 ;
3520 for my $rm (@{$req_node->
3521 dis_all_child_elements
3522 }) {
3523 next unless $rm->
3524 expanded_uri eq
3525
3526 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Module'
3527 ;
3528 my ($uri, $nuri, $ln);
3529 my $mqn = $rm->
3530 get_attribute_ns
3531 (
3532 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
3533 , 'QName');
3534 if ($mqn) {
3535 my $mqv = $mqn->
3536 value
3537 ;
3538 my $mqp = ($mqn->isa (
3539 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement'
3540 )
3541 ? (bless $mqn,
3542 'Message::Util::DIS::ManakaiDISElement'
3543 ) : $mqn)
3544 ->
3545 qname_to_pair
3546 ($mqv, node => $mqn);
3547 ($nuri, $ln) = @$mqp;
3548 } else {
3549 my $mn = $rm->
3550 get_attribute_ns
3551 (
3552 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
3553 , 'Name');
3554 if ($mn) {
3555 $nuri = $mod->
3556 namespace_uri
3557 ;
3558 $ln = $mn->
3559 value
3560 ;
3561 } else {
3562 $nuri = $mod->
3563 namespace_uri
3564 ;
3565 $ln = $mod->
3566 local_name
3567 ;
3568 }
3569 }
3570 my $rmod = $self->
3571 get_module
3572
3573 ($nuri . $ln);
3574 $mod->
3575 add_referring_module_uri
3576 ($nuri.$ln);
3577 unless ($rmod->
3578 is_defined
3579 ) {
3580 my $rdoc = $resolver->
3581 uri_to_document
3582
3583 ($self, $rmod->
3584 uri
3585 ,
3586 $nuri, $ln);
3587 unless ($rdoc) {
3588
3589
3590 {
3591
3592 local $Error::Depth = $Error::Depth - 1;
3593
3594 {
3595
3596
3597
3598
3599 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $rm, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#namespaceURI' => $nuri, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => $ln, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNABLE_TO_GET_MODULE_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $rmod->uri;
3600
3601 ;
3602
3603
3604
3605 }
3606
3607
3608 ;}
3609
3610 ;
3611 }
3612 $self->
3613 load_module
3614
3615 ($rdoc, $resolver,
3616 on_resource_read => $opt{on_resource_read},
3617 srinfo => $opt{srinfo});
3618 }
3619 } # Child Module elements
3620
3621 ## -- Loads child resources
3622 $root_elements = $doc->
3623 dis_child_elements
3624
3625 (database_arg => $self);
3626 for my $el (@$root_elements) {
3627 if ($el->
3628 is_resource_element
3629 ) {
3630 $self->
3631 load_resource
3632
3633 ($mod,
3634 undef
3635 ,
3636 undef
3637 , $el,
3638 on_resource_read => $opt{on_resource_read},
3639 srinfo => $opt{srinfo});
3640 } else {
3641 my $et = $el->
3642 expanded_uri
3643 ;
3644 if ({
3645
3646 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForDef'
3647 => 1,
3648
3649 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Module'
3650 => 1,
3651
3652 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ImplNote'
3653 => 1,
3654 }->{$et}) {
3655 #
3656 } else {
3657
3658
3659 {
3660
3661 local $Error::Depth = $Error::Depth - 1;
3662
3663 {
3664
3665
3666
3667
3668 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ELEMENT_NOT_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $et, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $mod->uri;
3669
3670 ;
3671
3672
3673
3674 }
3675
3676
3677 ;}
3678
3679 ;
3680 }
3681 } # element types
3682 }
3683
3684 my $dn = $mod_node->
3685 get_attribute_ns
3686
3687 (
3688 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
3689 , 'Namespace');
3690 unless ($dn and defined $dn->
3691 value
3692 ) {
3693
3694
3695 {
3696
3697 local $Error::Depth = $Error::Depth - 1;
3698
3699 {
3700
3701
3702
3703
3704 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $mod_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REQUIRED_ATTR_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Namespace';
3705
3706 ;
3707
3708
3709
3710 }
3711
3712
3713 ;}
3714
3715 ;
3716 }
3717 } # Unless this module loaded
3718
3719
3720
3721 }
3722
3723
3724 ;}
3725
3726 ; # Deep
3727
3728
3729 }
3730 }
3731 sub load_for ($$$%) {
3732 my ($self, $mod, $el, %opt) = @_;
3733
3734 {
3735
3736
3737 {
3738
3739 local $Error::Depth = $Error::Depth + 1;
3740
3741 {
3742
3743
3744 my
3745 $qn_node = $el->
3746 get_attribute_ns
3747 (
3748 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--'
3749 , 'QName');
3750 unless ($qn_node) {
3751
3752
3753 {
3754
3755 local $Error::Depth = $Error::Depth - 1;
3756
3757 {
3758
3759
3760
3761
3762 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_for', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_FOR_QNAME_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase';
3763
3764 ;
3765
3766
3767
3768 }
3769
3770
3771 ;}
3772
3773 ;
3774 }
3775 $qn_node = bless $qn_node,
3776 'Message::Util::DIS::ManakaiDISElement'
3777 if
3778 $qn_node->isa (
3779 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement'
3780 );
3781 my $qn_uri = $qn_node->
3782 qname_value_uri
3783 ;
3784 my $for = $self->
3785 get_for
3786 ($qn_uri);
3787
3788 unless ($for->
3789 is_defined
3790 ) {
3791 ## -- Initializes "For" Definition Object
3792 $for->{src} = $el;
3793 $for->{
3794 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined'
3795 } =
3796 1
3797 ;
3798 $for->{
3799 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
3800 } = \ ($mod->{uri});
3801 $mod->
3802 add_for_resource
3803 ($for);
3804
3805 for my $ce (@{$el->
3806 dis_all_child_elements
3807 }) {
3808 my $xn = $ce->
3809 expanded_uri
3810 ;
3811 if ($xn eq
3812 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ISA' or
3813 $xn eq
3814 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Implement'
3815 ) {
3816 my $sfor = $self->
3817 get_for
3818
3819 ($ce->
3820 qname_value_uri
3821 );
3822 $for->
3823 add_isa
3824 ($sfor);
3825 $sfor->
3826 is_referred
3827 ($ce);
3828 ## TODO: warn if dis:Implement
3829 } elsif ({
3830
3831 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Description'
3832 => 1,
3833
3834 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ImplNote'
3835 => 1,
3836
3837 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--FullName'
3838 => 1,
3839
3840 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--QName'
3841 => 1,
3842 }->{$xn}) {
3843 #
3844 } else {
3845
3846
3847 {
3848
3849 local $Error::Depth = $Error::Depth - 1;
3850
3851 {
3852
3853
3854
3855
3856 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $ce, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_for', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ELEMENT_NOT_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $xn, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $qn_uri;
3857
3858 ;
3859
3860
3861
3862 }
3863
3864
3865 ;}
3866
3867 ;
3868 }
3869 }
3870
3871 for (keys %{$opt{srinfo}->{for}->{$qn_uri}->{supOf} or {}}) {
3872 my $subfor = $self->
3873 get_for
3874 ($_);
3875 $subfor->
3876 add_isa
3877 ($for, srinfo => $opt{srinfo});
3878 }
3879 for (keys %{$opt{srinfo}->{for}->{$qn_uri}->{subOf} or {}}) {
3880 my $supfor = $self->
3881 get_for
3882 ($_);
3883 $for->
3884 add_isa
3885 ($supfor, srinfo => $opt{srinfo});
3886 }
3887 } else {
3888
3889
3890 {
3891
3892 local $Error::Depth = $Error::Depth - 1;
3893
3894 {
3895
3896
3897
3898
3899 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_for', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherSourceNode' => $el, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_ALREADY_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $qn_uri;
3900
3901 ;
3902
3903
3904
3905 }
3906
3907
3908 ;}
3909
3910 ;
3911 } # isDefine?
3912
3913
3914
3915 }
3916
3917
3918 ;}
3919
3920 ; # DEEP
3921
3922
3923 }
3924 }
3925 sub load_resource ($$$$$%) {
3926 my ($self, $mod, $parentResource, $dynParent, $el, %opt) = @_;
3927
3928 {
3929
3930
3931 $opt{forp_arg} ||= [];
3932
3933
3934 {
3935
3936 local $Error::Depth = $Error::Depth + 1;
3937
3938 {
3939
3940
3941
3942 ## -- Node names
3943 my @res_uri;
3944
3945 ## Unique resource identifier generated from node id
3946 my $node_id = $el->
3947 node_id_ref
3948 ;
3949 my $node_uri;
3950
3951
3952 {
3953
3954 if
3955 (@{$opt{forp_arg}} == 0) {
3956 $node_uri = $$node_id;
3957 } else {
3958 my $__turi = $$node_id;
3959 my $__furi =
3960 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
3961 ;
3962 for my $__uri ($__turi, $__furi) {
3963 $__uri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])}{sprintf '%%%02X', ord $1}ge;
3964 }
3965 my @__fp;
3966 for my $__uri (@{$opt{forp_arg}}) {
3967 my $__fpuri = $__uri;
3968 $__fpuri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])}
3969 {sprintf '%%%02X', ord $1}ge;
3970 push @__fp, $__fpuri;
3971 }
3972 $node_uri = qq<tag:suika.fam.cx,2005-09:$__turi+$__furi+>.join ('+', @__fp);
3973 }
3974
3975
3976 }
3977
3978 ;
3979
3980 my $al_node = $el->
3981 dis_get_attribute
3982
3983 (
3984 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AliasFor'
3985 ,
3986 forp_arg => $opt{forp_arg},
3987 database_arg => $self);
3988 my $al_canon_uri;
3989 if ($al_node) {
3990 $al_canon_uri = $al_node->qname_value_uri;
3991 }
3992
3993 ## User defined resource identifiers
3994 my $qn_node = $el->
3995 dis_get_attribute
3996
3997 (
3998 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--QName'
3999 ,
4000 forp_arg => $opt{forp_arg},
4001 database_arg => $self);
4002 my $res;
4003 ALD: {
4004 if ($qn_node) {
4005 my $qn_urif = $qn_node->
4006 qname_value_uri
4007 ;
4008 push @res_uri, $qn_urif;
4009 $res = $self->
4010 get_resource
4011 ($qn_urif);
4012 if ($res->
4013 is_defined
4014 ) {
4015 last ALD if defined $al_canon_uri and
4016 $res->{aliasURI}->{$al_canon_uri};
4017
4018
4019 {
4020
4021 local $Error::Depth = $Error::Depth - 1;
4022
4023 {
4024
4025
4026
4027
4028 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $qn_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherSourceNode' => $res->{src}, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_ALREADY_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $qn_urif;
4029
4030 ;
4031
4032
4033
4034 }
4035
4036
4037 ;}
4038
4039 ;
4040 }
4041 my $v = $qn_node->
4042 qname_value_local_name
4043 ;
4044
4045
4046 {
4047
4048 if
4049 (defined $v) {
4050 if (ref $v eq 'SCALAR') {
4051 $res->{localName} = $v;
4052 } elsif (defined $Message::Util::ManakaiStringRef::Value{$v}) {
4053 $res->{localName} = $Message::Util::ManakaiStringRef::Value{$v};
4054 } else {
4055 require Scalar::Util;
4056 $res->{localName} = $Message::Util::ManakaiStringRef::Value{$v} = \($v);
4057 Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$v});
4058 }
4059 } else {
4060 CORE::delete $res->{localName};
4061 }
4062
4063
4064 }
4065
4066 ;
4067 my $ns = $qn_node->
4068 qname_value_namespace_uri
4069 ;
4070
4071
4072 {
4073
4074 if
4075 (defined $ns) {
4076 if (ref $ns eq 'SCALAR') {
4077 $res->{namespaceURI} = $ns;
4078 } elsif (defined $Message::Util::ManakaiStringRef::Value{$ns}) {
4079 $res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns};
4080 } else {
4081 require Scalar::Util;
4082 $res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns} = \($ns);
4083 Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ns});
4084 }
4085 } else {
4086 CORE::delete $res->{namespaceURI};
4087 }
4088
4089
4090 }
4091
4092 ;
4093 } else { ## Anonymous or local
4094 my $n_node = $el->
4095 dis_get_attribute
4096
4097 (
4098 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Name'
4099 ,
4100 forp_arg => $opt{forp_arg},
4101 database_arg => $self);
4102 if ($n_node) {
4103 if ($parentResource) {
4104 my $puri = $parentResource->{uri};
4105 my $ru;
4106 my $ruf;
4107 my $ln = $n_node->
4108 value
4109 ;
4110
4111
4112 {
4113
4114 my
4115 $__parent = $puri;
4116 my $__ln = $ln;
4117 for my $__uri ($__parent, $__ln) {
4118 $__uri =~ s{([^0-9A-Za-z!\$'(),*:;=?\@_./~-])}{sprintf '%%%02X', ord $1}ge;
4119 }
4120 $ru = qq<data:suika.fam.cx,2005-09::$__parent+$__ln>;
4121
4122
4123 }
4124
4125 ;
4126 $ruf = $ru;
4127 push @res_uri, $ruf;
4128 $res = $self->
4129 get_resource
4130 ($ruf);
4131 my $v = $n_node->
4132 value
4133 ;
4134
4135
4136 {
4137
4138 if
4139 (defined $v) {
4140 if (ref $v eq 'SCALAR') {
4141 $res->{localName} = $v;
4142 } elsif (defined $Message::Util::ManakaiStringRef::Value{$v}) {
4143 $res->{localName} = $Message::Util::ManakaiStringRef::Value{$v};
4144 } else {
4145 require Scalar::Util;
4146 $res->{localName} = $Message::Util::ManakaiStringRef::Value{$v} = \($v);
4147 Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$v});
4148 }
4149 } else {
4150 CORE::delete $res->{localName};
4151 }
4152
4153
4154 }
4155
4156 ;
4157 $res->{
4158 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon'
4159 } =
4160 1
4161 ;
4162 } else { ## Root local name resource
4163 my $ln = $n_node->
4164 value
4165 ;
4166 my $ns_uri = $mod->
4167 source_element
4168
4169 ->
4170 defining_namespace_uri
4171 ;
4172 my $qn_urif = $ns_uri . $ln;
4173 push @res_uri, $qn_urif;
4174 $res = $self->
4175 get_resource
4176 ($qn_urif);
4177 if ($res->
4178 is_defined
4179 ) {
4180 last ALD if defined $al_canon_uri and
4181 $res->{aliasURI}->{$al_canon_uri};
4182
4183
4184 {
4185
4186 local $Error::Depth = $Error::Depth - 1;
4187
4188 {
4189
4190
4191
4192
4193 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $n_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherSourceNode' => $res->source_element, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_ALREADY_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $res->uri;
4194
4195 ;
4196
4197
4198
4199 }
4200
4201
4202 ;}
4203
4204 ;
4205 }
4206
4207
4208 {
4209
4210 if
4211 (defined $ns_uri) {
4212 if (ref $ns_uri eq 'SCALAR') {
4213 $res->{namespaceURI} = $ns_uri;
4214 } elsif (defined $Message::Util::ManakaiStringRef::Value{$ns_uri}) {
4215 $res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns_uri};
4216 } else {
4217 require Scalar::Util;
4218 $res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns_uri} = \($ns_uri);
4219 Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ns_uri});
4220 }
4221 } else {
4222 CORE::delete $res->{namespaceURI};
4223 }
4224
4225
4226 }
4227
4228 ;
4229
4230
4231 {
4232
4233 if
4234 (defined $ln) {
4235 if (ref $ln eq 'SCALAR') {
4236 $res->{localName} = $ln;
4237 } elsif (defined $Message::Util::ManakaiStringRef::Value{$ln}) {
4238 $res->{localName} = $Message::Util::ManakaiStringRef::Value{$ln};
4239 } else {
4240 require Scalar::Util;
4241 $res->{localName} = $Message::Util::ManakaiStringRef::Value{$ln} = \($ln);
4242 Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ln});
4243 }
4244 } else {
4245 CORE::delete $res->{localName};
4246 }
4247
4248
4249 }
4250
4251 ;
4252 }
4253 } else {
4254 push @res_uri, $node_uri;
4255 $res = $self->
4256 get_resource
4257 ($node_uri);
4258 $res->{
4259 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon'
4260 } =
4261 1
4262 ;
4263 }
4264 } # anon
4265 $res->{forp} = $opt{forp_arg};
4266 $res->{src} = $el;
4267 $res->{
4268 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
4269 } = \ ($mod->{uri});
4270 $res->
4271 parent_resource
4272
4273 ($parentResource) if $parentResource;
4274 $res->
4275 dynamic_parent_resource
4276
4277 ($dynParent) if $dynParent;
4278 unless ($res->{uri} eq $node_uri) {
4279 push @res_uri, $node_uri;
4280 my $nu_res = $self->
4281 get_resource
4282 ($node_uri);
4283 $res->
4284 merge_as_alias
4285 ($nu_res);
4286 }
4287 $res->{seq} = $self->{seq}++;
4288 $res->
4289 source_node_id_ref
4290 ($node_id);
4291
4292
4293 {
4294
4295
4296 $res->{
4297 'r'
4298 } = time;
4299
4300
4301 }
4302
4303 ;
4304 $mod->
4305 add_resource_uri
4306 ($_) for @res_uri;
4307
4308 ## -- Alias
4309 if ($al_node) {
4310 my $canon_res = $self->
4311 get_resource
4312 ($al_canon_uri);
4313 $canon_res->
4314 is_referred
4315 ($al_node);
4316 $canon_res->
4317 merge_as_alias
4318
4319 ($res, node => $al_node, no_equality_check =>
4320 1
4321 );
4322 $res = $canon_res;
4323 } else {
4324 $res->{
4325 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined'
4326 } =
4327 1
4328 ;
4329 }
4330 } # ALD
4331
4332 ## -- Registers as child
4333 $parentResource->
4334 _add_child_resource
4335 ($res)
4336 if $parentResource;
4337 $dynParent->
4338 _add_dynamic_child_resource
4339 ($res)
4340 if $dynParent;
4341
4342 my $is_multires =
4343 0
4344 ;
4345 my @props;
4346 my @cres;
4347 my @ce0 = @{$el->
4348 dis_child_elements
4349
4350 (forp_arg => $opt{forp_arg},
4351 database_arg => $self)};
4352 my $has_type = $al_node;
4353 while (@ce0) {
4354 my $ce = shift @ce0;
4355 if ($ce->
4356 element_type_match
4357
4358 (
4359 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#resourceType'
4360 , database_arg => $self,
4361 srinfo => $opt{srinfo}) or
4362 $ce->
4363 element_type_match
4364 (
4365 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'
4366 ,
4367 database_arg => $self,
4368 srinfo => $opt{srinfo})) {
4369 ## TODO: Remove this.
4370 $has_type =
4371 1
4372 ;
4373 my $type_uri = $ce->
4374 qname_value_uri
4375 ;
4376 my $type = $self->
4377 get_resource
4378 ($type_uri);
4379 $res->
4380 add_type_uri
4381 ($type_uri,
4382 srinfo => $opt{srinfo});
4383 $type->
4384 is_referred
4385 ($ce);
4386 if ($type->
4387 is_subset_of_uri
4388
4389 (
4390 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--MultipleResource'
4391 ,
4392 srinfo => $opt{srinfo})) {
4393 $is_multires =
4394 1
4395 ;
4396 }
4397 } elsif ($ce->
4398 element_type_match
4399
4400 (
4401 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--subsetOf'
4402 ,
4403 database_arg => $self,
4404 srinfo => $opt{srinfo})) {
4405 my $sres = $self->
4406 get_resource
4407
4408 ($ce->qname_value_uri);
4409 $res->
4410 add_super_resource
4411 ($sres, srinfo => $opt{srinfo});
4412 } elsif ($ce->
4413 is_resource_element
4414 ) {
4415 push @cres, $ce;
4416 } elsif ($ce->
4417 element_type_match
4418
4419 (
4420 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'
4421 ,
4422 database_arg => $self,
4423 srinfo => $opt{srinfo})) {
4424 my $uri = $ce->
4425 qname_value_uri
4426 ;
4427
4428
4429 {
4430
4431
4432 $res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'} =
4433 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
4434
4435 (
4436 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
4437 , $uri);
4438
4439
4440 {
4441
4442 local $Error::Depth = $Error::Depth + 1;
4443
4444 {
4445
4446
4447
4448 $res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'}->
4449 name
4450 ($ce->expanded_uri);
4451
4452
4453
4454 }
4455
4456
4457 ;}
4458
4459 ;
4460
4461
4462 }
4463
4464 ;
4465 my $type = $self->
4466 get_resource
4467 ($uri);
4468 $type->
4469 is_referred
4470 ($ce);
4471 } elsif ($ce->
4472 element_type_match
4473
4474 (
4475 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'
4476 ,
4477 database_arg => $self,
4478 srinfo => $opt{srinfo})) {
4479 my $uri = $ce->
4480 qname_value_uri
4481 ;
4482
4483
4484 {
4485
4486
4487 $res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'} =
4488 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
4489
4490 (
4491 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
4492 , $uri);
4493
4494
4495 {
4496
4497 local $Error::Depth = $Error::Depth + 1;
4498
4499 {
4500
4501
4502
4503 $res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'}->
4504 name
4505 ($ce->expanded_uri);
4506
4507
4508
4509 }
4510
4511
4512 ;}
4513
4514 ;
4515
4516
4517 }
4518
4519 ;
4520 my $type = $self->
4521 get_resource
4522 ($uri);
4523 $type->
4524 is_referred
4525 ($ce);
4526 } else {
4527 ## Property and invalid element is not checked, since not
4528 ## all property definitions has loaded at this stage.
4529 push @props, $ce;
4530 }
4531 } # @ce0
4532
4533 unless ($has_type) {
4534
4535
4536 {
4537
4538 local $Error::Depth = $Error::Depth - 1;
4539
4540 {
4541
4542 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_RDF_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $res->{uri};
4543
4544
4545 }
4546
4547
4548 ;}
4549
4550 ;
4551 }
4552
4553 my $srres = $opt{srinfo}->{resource}->{$res->
4554 uri
4555 };
4556 F: for my $auri (keys %{$srres->{aliasURI} or {}}) {
4557 next F unless $srres->{aliasURI}->{$auri};
4558 $res->{aliasURI}->{$auri} =
4559 1
4560 ;
4561 $self->{resDef}->{$auri} = $res;
4562 A: for (keys %{$res->{subOf} or {}}) {
4563 next A unless $res->{subOf}->{$_};
4564 my $s = $self->
4565 get_resource
4566 ($_);
4567 $s->{supOf}->{$auri} =
4568 1
4569 ;
4570 }
4571 A: for (keys %{$res->{supOf} or {}}) {
4572 next A unless $res->{supOf}->{$_};
4573 my $s = $self->
4574 get_resource
4575 ($_);
4576 $s->{subOf}->{$auri} =
4577 1
4578 ;
4579 }
4580 }
4581 F: for my $suri (keys %{$srres->{supOf} or {}}) {
4582 next F unless $srres->{supOf}->{$suri};
4583 my $sres = $self->
4584 get_resource
4585 ($suri);
4586 $sres->
4587 add_super_resource
4588 ($res, srinfo => $opt{srinfo});
4589 }
4590 F: for my $suri (keys %{$srres->{subOf} or {}}) {
4591 next F unless $srres->{subOf}->{$suri};
4592 my $sres = $self->
4593 get_resource
4594 ($suri);
4595 $res->
4596 add_super_resource
4597 ($sres, srinfo => $opt{srinfo});
4598 }
4599
4600 ## -- Child resources
4601 if (not $is_multires and not $al_node) {
4602 for my $re (@cres) {
4603 $self->
4604 load_resource
4605
4606 ($mod, $res, $res, $re,
4607 forp_arg => $opt{forp_arg},
4608 on_resource_read => $opt{on_resource_read},
4609 srinfo => $opt{srinfo});
4610 }
4611 }
4612
4613 ## -- Multiple representations
4614 if ($is_multires) {
4615 for my $pe (@props) {
4616 if ($pe->
4617 element_type_match
4618
4619 (
4620 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--resourceFor'
4621 ,
4622 database_arg => $self,
4623 srinfo => $opt{srinfo})) {
4624 my $for_uri = $pe->
4625 qname_value_uri
4626 ;
4627 my $for = $self->
4628 get_for
4629 ($for_uri);
4630 $for->
4631 is_referred
4632 ($pe);
4633 $self->
4634 load_resource
4635
4636 ($mod, $parentResource, $res, $el,
4637 forp_arg => [@{$opt{forp_arg}}, $for_uri],
4638 on_resource_read => $opt{on_resource_read},
4639 srinfo => $opt{srinfo});
4640 }
4641 }
4642 }
4643 ($opt{on_resource_read} or sub {})->($self, $res);
4644
4645
4646
4647 }
4648
4649
4650 ;}
4651
4652 ; # DEEP
4653
4654
4655 }
4656 }
4657 sub read_properties ($%) {
4658 my ($self, %opt) = @_;
4659
4660 {
4661
4662
4663 {
4664
4665 local $Error::Depth = $Error::Depth + 1;
4666
4667 {
4668
4669
4670 F:
4671 for my $fd (values %{$self->{modDef}},
4672 values %{$self->{forDef}},
4673 values %{$self->{resDef}}) {
4674 next F if $fd->isa (
4675 'Message::Util::DIS::ManakaiDISModuleLite'
4676 );
4677 if ($fd->
4678 is_defined
4679 ) {
4680 $fd->
4681 read_properties
4682
4683 (on_resource_read => $opt{on_resource_read},
4684 implementation => $opt{implementation});
4685 }
4686 }
4687 CORE::delete $self->{
4688 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'
4689 };
4690
4691
4692
4693 }
4694
4695
4696 ;}
4697
4698 ;
4699
4700
4701 }
4702 }
4703 sub check_undefined_resource ($) {
4704 my ($self) = @_;
4705
4706 {
4707
4708 for
4709 my $fd (values %{$self->{forDef}}) {
4710 if (my $ref = $fd->
4711 is_referred and
4712
4713 not $fd->
4714 is_defined
4715 ) {
4716
4717 report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'check_undefined_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNodePath' => $ref, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $fd->uri;
4718
4719 ;
4720 }
4721 }
4722 for my $fd (values %{$self->{resDef}}) {
4723 if (my $ref = $fd->
4724 is_referred and
4725
4726 not $fd->
4727 is_defined
4728 ) {
4729
4730 report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'check_undefined_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNodePath' => $ref, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $fd->uri;
4731
4732 ;
4733 }
4734 }
4735
4736
4737 }
4738 }
4739 sub unload_module ($$%) {
4740 my ($self, $module, %opt) = @_;
4741 my $r = {};
4742
4743 {
4744
4745
4746 {
4747
4748 local $Error::Depth = $Error::Depth + 1;
4749
4750 {
4751
4752
4753
4754 $r = $opt{srinfo} || {};
4755
4756 ## -- |For|s
4757 F: for my $for (@{$module->
4758 get_for_resource_list
4759 }) {
4760 my $uri = $for->
4761 uri
4762 ;
4763 A: for (%{$for->{ISA} or {}}) {
4764 next A unless $for->{ISA}->{$_};
4765 my $sfor = $self->
4766 get_for
4767 ($_);
4768 next A unless $sfor;
4769 delete $sfor->{revISA}->{$uri};
4770 }
4771 A: for (%{$for->{revISA} or {}}) {
4772 next A unless $for->{revISA}->{$_};
4773 my $sfor = $self->
4774 get_for
4775 ($_);
4776 next A unless $sfor;
4777 delete $sfor->{ISA}->{$uri};
4778 $r->{for}->{$uri}->{supOf}->{$_} =
4779 1
4780 ;
4781 }
4782 delete $self->{forDef}->{$uri};
4783 delete $self->{
4784 'rm'
4785 }->{$uri};
4786 } # F
4787
4788 ## -- Resources
4789 my @res_list = map {
4790 [$_, $self->
4791 get_resource
4792 ($_)]
4793 } @{$module->
4794 get_resource_uri_list
4795 };
4796 my %res_list = map {$_->[0] =>
4797 1
4798 } @res_list;
4799 for my $ur (@res_list) {
4800 my $uri = $ur->[0];
4801 my $res = $ur->[1];
4802 my $owner = $res->
4803 owner_module
4804 ;
4805 if (defined $owner and $owner eq $module) {
4806 ## Non-alias
4807 my %alias;
4808 my %sub = %{$res->{supOf} or {}};
4809 A: for (keys %{$res->{aliasURI} or {}}) {
4810 next A unless $res->{aliasURI}->{$_};
4811 $alias{$_} =
4812 1
4813 ;
4814 delete $sub{$_} if $res->{aliasURI}->{$_};
4815 $r->{resource}->{$uri}->{supOf} = \%sub;
4816 unless ($res_list{$_}) {
4817 ## Defined by other module
4818 $r->{resource}->{$uri}->{aliasURI}->{$_} =
4819 1
4820 ;
4821 }
4822 }
4823 A: for (keys %{$res->{subOf} or {}}) {
4824 next A unless $res->{aliasURI}->{$_};
4825 my $sres = $self->
4826 get_resource
4827 ($_);
4828 next A unless $sres;
4829 delete $res->{supOf}->{$_} for keys %alias;
4830 }
4831 A: for (keys %{$res->{supOf} or {}}) {
4832 next A unless $res->{aliasURI}->{$_};
4833 my $sres = $self->
4834 get_resource
4835 ($_);
4836 next A unless $sres;
4837 delete $res->{subOf}->{$_} for keys %alias;
4838 }
4839 A: for (keys %alias) {
4840 delete $self->{resDef}->{$_};
4841 delete $self->{
4842 'rm'
4843 }->{$_};
4844 }
4845 } else {
4846 ## Alias
4847 delete $res->{aliasURI}->{$uri};
4848 delete $res->{subOf}->{$uri};
4849 delete $res->{supOf}->{$uri};
4850 A: for (keys %{$res->{subOf} or {}}) {
4851 next A unless $res->{subOf}->{$_};
4852 my $sres = $self->
4853 get_resource
4854 ($_);
4855 next A unless $sres;
4856 delete $sres->{supOf}->{$uri};
4857 }
4858 A: for (keys %{$res->{supOf} or {}}) {
4859 next A unless $res->{supOf}->{$_};
4860 my $sres = $self->
4861 get_resource
4862 ($_);
4863 next A unless $sres;
4864 delete $sres->{subOf}->{$uri};
4865 }
4866 delete $self->{resDef}->{$uri};
4867 delete $self->{
4868 'rm'
4869 }->{$uri};
4870 }
4871 }
4872
4873 ## -- Keys
4874 my $v = $module->{
4875 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Perl/plHashKey'
4876 };
4877 K: for my $scope (keys %{$v or {}}) {
4878 my $ks = $self->
4879 get_resource
4880 ($scope);
4881 L: for my $key (keys %{$v->{$scope} or {}}) {
4882 next L unless $v->{$scope}->{$key};
4883 delete $ks->{
4884 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Perl/plHashKey'
4885 }->{$key};
4886 }
4887 }
4888
4889 ## -- Module itself
4890 for (@{$module->
4891 uris
4892 }) {
4893 delete $self->{modDef}->{$_};
4894 }
4895
4896
4897
4898 }
4899
4900
4901 ;}
4902
4903 ;
4904
4905
4906 }
4907 $r}
4908 sub xcref_to_resource ($$$%) {
4909 my ($self, $xcref, $contextNode, %opt) = @_;
4910 my $r = [];
4911
4912 {
4913
4914 my
4915 ($q1, $q2, $q3) = split /\s*\.\s*/, $xcref, 3;
4916
4917
4918 {
4919
4920 local $Error::Depth = $Error::Depth + 1;
4921
4922 {
4923
4924
4925 if
4926 (defined $q3) {
4927 $r->[2] = $self->
4928 get_resource
4929
4930 ($contextNode->
4931 qname_to_uri
4932
4933 ($q3, node => $opt{node}));
4934 $r->[1] = $r->[2]->
4935 parent_resource
4936 ;
4937 } elsif (defined $q2) {
4938 if ($q2 =~ /:/) {
4939 $r->[1] = $self->
4940 get_resource
4941
4942 ($contextNode->
4943 qname_to_uri
4944
4945 ($q2, node => $opt{node}));
4946 } else {
4947 $r->[0] = $self->
4948 get_resource
4949
4950 ($contextNode->
4951 qname_to_uri
4952
4953 ($q1, node => $opt{node}));
4954 $r->[1] = $r->[0]->
4955 get_const_resource_by_name
4956 ($q2);
4957 }
4958 } else { ## $q1 only
4959 $r->[2] = $self->
4960 get_resource
4961
4962 ($contextNode->
4963 qname_to_uri
4964
4965 ($q1, node => $opt{node}));
4966 if ($r->[2]->
4967 is_type_uri
4968 (
4969 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode'
4970 )) {
4971 $r->[1] = $r->[2]->
4972 parent_resource
4973 ;
4974 } else {
4975 $r->[1] = $r->[2]; CORE::delete $r->[2];
4976 }
4977 }
4978
4979 if ($r->[2] and
4980 not $r->[2]->
4981 is_type_uri
4982 (
4983 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode'
4984 )) {
4985
4986
4987 {
4988
4989 local $Error::Depth = $Error::Depth - 1;
4990
4991 {
4992
4993 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'xcref_to_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode' => $xcref, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $r->[2]->{uri};
4994
4995
4996 }
4997
4998
4999 ;}
5000
5001 ;
5002 }
5003 $r->[2]->
5004 is_referred
5005
5006 ($opt{node} or $contextNode)
5007 if $r->[2];
5008
5009 if (not $r->[1] or
5010 not $r->[1]->
5011 is_type_uri
5012 (
5013 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#Const'
5014 )) {
5015
5016
5017 {
5018
5019 local $Error::Depth = $Error::Depth - 1;
5020
5021 {
5022
5023 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'xcref_to_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode' => $xcref, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType' => 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#Const', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => ($r->[1] ? $r->[1]->local_name : undef), 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => ($r->[1] ? $r->[1]->uri
5024 : undef);
5025
5026
5027 }
5028
5029
5030 ;}
5031
5032 ;
5033 }
5034 $r->[1]->
5035 is_referred
5036
5037 ($opt{node} or $contextNode);
5038
5039 unless ($r->[0]) {
5040 my $cg = $r->[1]->
5041 parent_resource
5042 ;
5043 $r->[0] = $cg->
5044 parent_resource if
5045 $cg;
5046 }
5047 if (not $r->[0] or
5048 not $r->[0]->
5049 is_type_uri
5050 (
5051 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#AnyExceptionAnyClass'
5052 )) {
5053
5054
5055 {
5056
5057 local $Error::Depth = $Error::Depth - 1;
5058
5059 {
5060
5061 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'xcref_to_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode' => $xcref, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#AnyExceptionAnyClass', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => $r->[0]->local_name, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $r->[0]->{uri};
5062
5063
5064 }
5065
5066
5067 ;}
5068
5069 ;
5070 }
5071 $r->[0]->
5072 is_referred
5073
5074 ($opt{node} or $contextNode);
5075
5076
5077
5078 }
5079
5080
5081 ;}
5082
5083 ;
5084
5085
5086 }
5087 $r}
5088 sub free ($) {
5089 my ($self) = @_;
5090
5091 {
5092
5093 for
5094 my $file (values %{$self->{
5095 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'
5096 }}) {
5097 $file->
5098 free
5099 if
5100 $file;
5101 }
5102 CORE::delete $self->{modDef};
5103 CORE::delete $self->{forDef};
5104 CORE::delete $self->{resDef};
5105
5106
5107 }
5108 }
5109 sub get_module_uri_list ($) {
5110 my ($self) = @_;
5111 my $r = [];
5112
5113 {
5114
5115
5116 $r = [map {$_->
5117 uri
5118 } values %{$self->{modDef}}];
5119
5120
5121 }
5122 $r}
5123 sub get_any_resource_uri_list ($) {
5124 my ($self) = @_;
5125 my $r = [];
5126
5127 {
5128
5129
5130 $r = [keys %{$self->{
5131 'rm'
5132 }},
5133 map {$_->
5134 uri
5135 } values %{$self->{modDef}}];
5136
5137
5138 }
5139 $r}
5140 sub ___report_error ($$) {
5141 my ($self, $err) = @_;
5142 my $r;
5143
5144 {
5145
5146 if
5147 ($err->isa (
5148 'Message::DOM::IF::DOMError'
5149 )) {
5150
5151
5152 {
5153
5154 local $Error::Depth = $Error::Depth + 1;
5155
5156 {
5157
5158
5159 my
5160 $cfg = $self->
5161 dom_config
5162 ;
5163 my $h = $cfg->
5164 get_parameter
5165 ('error-handler');
5166 $r = $h->
5167 handle_error
5168 ($err);
5169
5170
5171
5172 }
5173
5174
5175 ;}
5176
5177 ;
5178 } else {
5179 $err->
5180 throw
5181 ;
5182 }
5183
5184
5185 }
5186 $r}
5187 sub dom_config ($;$) {
5188 if (@_ == 1) {my ($self) = @_;
5189 my $r;
5190
5191 {
5192
5193
5194 {
5195
5196
5197 $r = bless [$self, $self, 'Message::Util::IF::DISDatabase'],
5198
5199 'Message::DOM::DOMCore::ManakaiDOMConfiguration'
5200 ;
5201
5202
5203 }
5204
5205 ;
5206
5207
5208 }
5209 $r;
5210 } else {my ($self) = @_;
5211 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dom_config';
5212 }
5213 }
5214 sub get_module_resource_list ($) {
5215 my ($self) = @_;
5216 my $r = [];
5217
5218 {
5219
5220
5221 $r = [map {$self->{modDef}->{$_}}
5222 grep {defined $self->{modDef}->{$_}}
5223 keys %{$self->{modDef}}];
5224
5225
5226 }
5227 $r}
5228 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISDatabase>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
5229 {'',
5230 '1',
5231 '1.0',
5232 '1'},
5233 'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl',
5234 {'',
5235 '1',
5236 '1.0',
5237 '1'}};
5238 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISDatabase>} = 2;
5239 package Message::Util::IF::DISModuleResolver;
5240 our $VERSION = 20061231.0921;
5241 package Message::Util::DIS::ManakaiDISModuleResolver;
5242 our $VERSION = 20061231.0921;
5243 push our @ISA, 'Message::Util::IF::DISModuleResolver';
5244 sub uri_to_document ($$$$$) {
5245 my ($self, $disDB, $moduleURI, $moduleNamespaceURI, $moduleLocalName) = @_;
5246 my $r;
5247
5248 {
5249
5250 goto
5251 &$self;
5252
5253
5254 }
5255 $r}
5256 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleResolver>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
5257 {'',
5258 '1',
5259 '1.0',
5260 '1'}};
5261 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleResolver>} = 1;
5262 package Message::Util::IF::DISAnyResource;
5263 our $VERSION = 20061231.0921;
5264 package Message::Util::DIS::ManakaiDISAnyResource;
5265 our $VERSION = 20061231.0921;
5266 push our @ISA, 'Message::Util::IF::DISAnyResource';
5267 sub uri ($;$) {
5268 if (@_ == 1) {my ($self) = @_;
5269 my $r;
5270
5271 {
5272
5273
5274 $r = $self->{uri};
5275
5276
5277 }
5278 $r;
5279 } else {my ($self) = @_;
5280 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri';
5281 }
5282 }
5283 sub uri_ref ($;$) {
5284 if (@_ == 1) {my ($self) = @_;
5285 my $r;
5286
5287 {
5288
5289
5290 $r = \ ($self->{uri});
5291
5292
5293 }
5294 $r;
5295 } else {my ($self) = @_;
5296 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri_ref';
5297 }
5298 }
5299 sub uris ($;$) {
5300 if (@_ == 1) {my ($self) = @_;
5301 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_IMPL_ATTR_NOT_IMPLEMENTED', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris';
5302 } else {my ($self) = @_;
5303 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris';
5304 }
5305 }
5306 sub is_same_resource ($$) {
5307 my ($self, $anotherResource) = @_;
5308 my $r = 0;
5309
5310 {
5311
5312 if
5313 (UNIVERSAL::isa ($anotherResource,
5314
5315 'Message::Util::DIS::ManakaiDISAnyResource'
5316 )) {
5317 $r = $self->{uri} eq $anotherResource->{uri};
5318 }
5319
5320
5321 }
5322 $r}
5323 sub name_uri ($;$) {
5324 if (@_ == 1) {my ($self) = @_;
5325 my $r;
5326
5327 {
5328
5329 if
5330 (defined $self->{localName}) {
5331 $r = defined $self->{namespaceURI}
5332 ? ${$self->{namespaceURI}} . ${$self->{localName}}
5333 : ${$self->{localName}};
5334 }
5335
5336
5337 }
5338 $r;
5339 } else {my ($self) = @_;
5340 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'name_uri';
5341 }
5342 }
5343 sub local_name ($;$) {
5344 if (@_ == 1) {my ($self) = @_;
5345 my $r;
5346
5347 {
5348
5349
5350 $r = defined $self->{localName} ? ${$self->{localName}} :
5351 undef
5352 ;
5353
5354
5355 }
5356 $r;
5357 } else {my ($self) = @_;
5358 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'local_name';
5359 }
5360 }
5361 sub namespace_uri ($;$) {
5362 if (@_ == 1) {my ($self) = @_;
5363 my $r;
5364
5365 {
5366
5367
5368 $r = defined $self->{namespaceURI} ? ${$self->{namespaceURI}} :
5369 undef
5370 ;
5371
5372
5373 }
5374 $r;
5375 } else {my ($self) = @_;
5376 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'namespace_uri';
5377 }
5378 }
5379 sub forp_uri ($;$) {
5380 if (@_ == 1) {my ($self) = @_;
5381 my $r;
5382
5383 {
5384
5385
5386 $r = [@{$self->{forp}}];
5387
5388
5389 }
5390 $r;
5391 } else {my ($self) = @_;
5392 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'forp_uri';
5393 }
5394 }
5395 sub is_for_uri ($$) {
5396 my ($self, $forURI) = @_;
5397 my $r = 0;
5398
5399 {
5400
5401
5402 {
5403
5404 local $Error::Depth = $Error::Depth + 1;
5405
5406 {
5407
5408
5409 C:
5410 for my $this_for_uri (
5411 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
5412 , @{$self->{forp}||[]}) {
5413 if ($this_for_uri eq $forURI) { ## Shortcut
5414 $r =
5415 1
5416 ;
5417 last C;
5418 }
5419 my $this_for = $self->
5420 database
5421
5422 ->
5423 get_for
5424
5425 ($this_for_uri);
5426 if ($this_for->
5427 isa_uri
5428 ($forURI)) {
5429 $r =
5430 1
5431 ;
5432 last C;
5433 }
5434 }
5435
5436
5437
5438 }
5439
5440
5441 ;}
5442
5443 ;
5444
5445
5446 }
5447 $r}
5448 sub is_defined ($;$) {
5449 if (@_ == 1) {my ($self) = @_;
5450 my $r = 0;
5451
5452 {
5453
5454
5455 $r = $self->{
5456 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined'
5457 };
5458
5459
5460 }
5461 $r;
5462 } else {my ($self, $given) = @_;
5463
5464 {
5465
5466
5467 $self->{
5468 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined'
5469 } = $given;
5470
5471
5472 }
5473 }
5474 }
5475 sub owner_module ($;$) {
5476 if (@_ == 1) {my ($self) = @_;
5477 my $r;
5478
5479 {
5480
5481
5482 $r = $self->
5483 database
5484
5485 ->
5486 get_module
5487
5488 (${$self->{
5489 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
5490 }})
5491 if defined $self->{
5492 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
5493 };
5494
5495
5496 }
5497 $r;
5498 } else {my ($self) = @_;
5499 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module';
5500 }
5501 }
5502 sub owner_module_uri ($;$) {
5503 if (@_ == 1) {my ($self) = @_;
5504 my $r;
5505
5506 {
5507
5508 if
5509 (defined $self->{
5510 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
5511 }) {
5512 $r = ${$self->{
5513 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
5514 }};
5515 }
5516
5517
5518 }
5519 $r;
5520 } else {my ($self) = @_;
5521 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module_uri';
5522 }
5523 }
5524 sub owner_module_uri_ref ($;$) {
5525 if (@_ == 1) {my ($self) = @_;
5526 my $r;
5527
5528 {
5529
5530
5531 $r = $self->{
5532 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
5533 };
5534
5535
5536 }
5537 $r;
5538 } else {my ($self, $given) = @_;
5539
5540 {
5541
5542
5543 $self->{
5544 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule'
5545 } = $given;
5546
5547
5548 }
5549 }
5550 }
5551 sub is_referred ($;$) {
5552 if (@_ == 1) {my ($self) = @_;
5553 my $r = '';
5554
5555 {
5556
5557
5558 $r = $self->{
5559 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isReferred'
5560 };
5561
5562
5563 }
5564 $r;
5565 } else {my ($self, $given) = @_;
5566
5567 {
5568
5569 if
5570 (defined $given) {
5571 if (ref $given) {
5572
5573
5574 {
5575
5576 local $Error::Depth = $Error::Depth + 1;
5577
5578 {
5579
5580
5581 if
5582 ($given->isa (
5583 'Message::Util::IF::DVValue'
5584 )) {
5585 $given = $given->
5586 source_node_path
5587 ;
5588 } else {
5589 $given = $given->
5590 flag
5591 ('nodePath') ||
5592 $given->
5593 node_path
5594
5595 (key => [qw/QName Name type Type/]);
5596 }
5597
5598
5599
5600 }
5601
5602
5603 ;}
5604
5605 ;
5606 }
5607 $self->{
5608 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isReferred'
5609 } = $given;
5610 }
5611
5612
5613 }
5614 }
5615 }
5616 sub source_node_id ($;$) {
5617 if (@_ == 1) {my ($self) = @_;
5618 my $r;
5619
5620 {
5621
5622 if
5623 (defined $self->{
5624 'snid'
5625 }) {
5626 $r = ${$self->{
5627 'snid'
5628 }};
5629 } else {
5630 $r =
5631 undef
5632 ;
5633 }
5634
5635
5636 }
5637 $r;
5638 } else {my ($self, $given) = @_;
5639
5640 {
5641
5642 if
5643 (defined $given) {
5644 $self->{
5645 'snid'
5646 } = \$given;
5647 } else {
5648 CORE::delete $self->{
5649 'snid'
5650 };
5651 }
5652
5653
5654 }
5655 }
5656 }
5657 sub source_node_id_ref ($;$) {
5658 if (@_ == 1) {my ($self) = @_;
5659 my $r;
5660
5661 {
5662
5663
5664 $r = $self->{
5665 'snid'
5666 };
5667
5668
5669 }
5670 $r;
5671 } else {my ($self, $given) = @_;
5672
5673 {
5674
5675 if
5676 (defined $given) {
5677 $self->{
5678 'snid'
5679 } = $given;
5680 } else {
5681 CORE::delete $self->{
5682 'snid'
5683 };
5684 }
5685
5686
5687 }
5688 }
5689 }
5690 sub is_anonymous ($;$) {
5691 if (@_ == 1) {my ($self) = @_;
5692 my $r = 0;
5693
5694 {
5695
5696
5697 $r = $self->{
5698 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon'
5699 };
5700
5701
5702 }
5703 $r;
5704 } else {my ($self, $given) = @_;
5705
5706 {
5707
5708
5709 $self->{
5710 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon'
5711 } = $given;
5712
5713
5714 }
5715 }
5716 }
5717 sub source_element ($;$) {
5718 if (@_ == 1) {my ($self) = @_;
5719 my $r;
5720
5721 {
5722
5723
5724 $r = $self->{src};
5725
5726
5727 }
5728 $r;
5729 } else {my ($self) = @_;
5730 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'source_element';
5731 }
5732 }
5733 sub database ($;$) {
5734 if (@_ == 1) {my ($self) = @_;
5735 my $r;
5736
5737 {
5738
5739
5740 $r = $self->{db};
5741
5742
5743 }
5744 $r;
5745 } else {my ($self) = @_;
5746 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'database';
5747 }
5748 }
5749 sub read_properties ($%) {
5750 my ($self, %opt) = @_;
5751
5752 {
5753
5754
5755 {
5756
5757 local $Error::Depth = $Error::Depth + 1;
5758
5759 {
5760
5761
5762 if
5763 (my $src = $self->{src}) {
5764 my $forp = $self->
5765 forp_uri
5766 ;
5767 my $db = $self->
5768 database
5769 ;
5770 my $factory;
5771 for my $el (@{$src->
5772 dis_child_elements
5773
5774 (forp_arg => $forp,
5775 database_arg => $db)}) {
5776 my $xu = $el->
5777 expanded_uri
5778 ;
5779 if ({
5780
5781 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AliasFor'
5782 =>
5783 1
5784 ,
5785
5786 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ContentType'
5787 =>
5788 1
5789 ,
5790
5791 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'
5792 =>
5793 1
5794 ,
5795
5796 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForCheck'
5797 =>
5798 1
5799 ,
5800
5801 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Name'
5802 =>
5803 1
5804 ,
5805
5806 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Namespace'
5807 =>
5808 1
5809 ,
5810
5811 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'
5812 =>
5813 1
5814 ,
5815
5816 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#resourceType'
5817 =>
5818 1
5819 ,
5820
5821 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'
5822 =>
5823 1
5824 , ## TODO: Remove this.
5825
5826 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--QName'
5827 =>
5828 1
5829 ,
5830
5831 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Require'
5832 =>
5833 1
5834 ,
5835
5836 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--resourceFor'
5837 =>
5838 1
5839 ,
5840 }->{$xu}) {
5841 #
5842 } elsif ($el->
5843 is_property_element
5844
5845 (database_arg => $db)) {
5846 my $add_prop;
5847 $add_prop = sub ($$$) {
5848 my ($self, $el, $db) = @_;
5849 my $prop = $db->
5850 get_resource
5851
5852 ($el->
5853 expanded_uri
5854 );
5855 my $prop_uri = $prop->
5856 uri
5857 ;
5858 my $prop_mult = $prop->
5859 multiple_properties_uri
5860 ;
5861 my $new_value;
5862 my $base_type;
5863 my $copy_tree =
5864 0
5865 ;
5866
5867 my %mtopt = (default_media_type => $prop->
5868 default_lextype_uri
5869 ,
5870 database_arg => $db);
5871 my $new_value_type = $el->
5872 media_type_uri
5873 (%mtopt);
5874
5875 if ($el->
5876 media_type_match
5877
5878 (
5879 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#QName'
5880 , $mtopt{default_media_type}, %mtopt)) {
5881
5882
5883 {
5884
5885
5886 $new_value =
5887 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
5888
5889 ($new_value_type, undef, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#QName');
5890
5891
5892 {
5893
5894 local $Error::Depth = $Error::Depth + 1;
5895
5896 {
5897
5898
5899
5900 $new_value->
5901 name
5902 ($prop_uri);
5903
5904
5905
5906 }
5907
5908
5909 ;}
5910
5911 ;
5912
5913
5914 }
5915
5916 ;
5917 $new_value->
5918 local_name
5919
5920 ($el->
5921 qname_value_local_name
5922 );
5923 $new_value->
5924 prefix
5925
5926 (my $prefix = $el->
5927 qname_value_prefix
5928 );
5929 if (not defined $prefix) {
5930 if ($el->
5931 media_type_match
5932
5933 (
5934 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#LanguageTag'
5935 ,
5936 $mtopt{default_media_type}, %mtopt)) {
5937 $new_value->
5938 namespace_uri
5939
5940 ('urn:x-suika-fam-cx:lang:');
5941 } elsif ($el->
5942 media_type_match
5943
5944 (
5945 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#ScriptTag'
5946 ,
5947 $mtopt{default_media_type}, %mtopt)) {
5948 $new_value->
5949 namespace_uri
5950
5951 ('http://suika.fam.cx/~wakaba/archive/2005/5/script#');
5952 } else {
5953 $new_value->
5954 namespace_uri
5955
5956 ($el->
5957 qname_value_namespace_uri
5958 );
5959 }
5960 } else {
5961 $new_value->
5962 namespace_uri
5963
5964 ($el->
5965 qname_value_namespace_uri
5966 );
5967 }
5968 ## TODO: Check whether defined
5969 } elsif ($el->
5970 media_type_match
5971
5972 (
5973 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#TFPQNames'
5974 , $mtopt{default_media_type}, %mtopt)) {
5975
5976
5977 {
5978
5979
5980 $new_value =
5981 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
5982
5983 (
5984 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
5985 , $el->tfqnames_value_uri
5986 ($self->source_node_id));
5987
5988
5989 {
5990
5991 local $Error::Depth = $Error::Depth + 1;
5992
5993 {
5994
5995
5996
5997 $new_value->
5998 name
5999 ($prop_uri);
6000
6001
6002
6003 }
6004
6005
6006 ;}
6007
6008 ;
6009
6010
6011 }
6012
6013 ;
6014 ## TODO: Check whether defined
6015 $new_value_type =
6016 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
6017 ;
6018 } elsif ($el->
6019 media_type_match
6020
6021 (
6022 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#Perl'
6023 , $mtopt{default_media_type},
6024 %mtopt)) {
6025 $el->
6026 preserve_node_path
6027 ;
6028
6029
6030 {
6031
6032
6033 $new_value =
6034 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value_ref
6035
6036 ($new_value_type, $el->value_ref, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#Perl');
6037
6038
6039 {
6040
6041 local $Error::Depth = $Error::Depth + 1;
6042
6043 {
6044
6045
6046
6047 $new_value->
6048 name
6049 ($prop_uri);
6050
6051
6052
6053 }
6054
6055
6056 ;}
6057
6058
6059 }
6060
6061 ;
6062 for my $p (
6063 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
6064 ,
6065 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType'
6066 ) {
6067 if (UNIVERSAL::isa ($self->{$p},
6068 'Message::Util::IF::DVURIValue'
6069 )) {
6070 my $v;
6071
6072
6073 {
6074
6075
6076 $v =
6077 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
6078
6079 (
6080 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
6081 , $self->{$p}->uri);
6082
6083
6084 {
6085
6086 local $Error::Depth = $Error::Depth + 1;
6087
6088 {
6089
6090
6091
6092 $v->
6093 name
6094 ($prop_uri);
6095
6096
6097
6098 }
6099
6100
6101 ;}
6102
6103 ;
6104
6105
6106 }
6107
6108 ;
6109 $new_value->
6110 set_property
6111 ($p => $v);
6112 }
6113 }
6114 $new_value->
6115 default_namespace_uri_ref
6116
6117 ($el->
6118 get_default_namespace_uri_ref
6119 );
6120 $new_value->
6121 namespace_binding_list
6122
6123 ($el->
6124 get_namespace_binding_list
6125 ($db));
6126 $new_value->
6127 source_node_path
6128
6129 ($el->
6130 flag
6131 ('nodePath'));
6132 } elsif ($el->
6133 media_type_match
6134
6135 (
6136 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#disdoc'
6137 , $mtopt{default_media_type},
6138 %mtopt) or
6139 $el->
6140 media_type_match
6141
6142 (
6143 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#disdocInline'
6144 , $mtopt{default_media_type},
6145 %mtopt) or
6146 $el->
6147 media_type_match
6148
6149 (
6150 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#muf'
6151 , $mtopt{default_media_type},
6152 %mtopt) or
6153 $el->
6154 media_type_match
6155
6156 (
6157 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dpg'
6158 , $mtopt{default_media_type},
6159 %mtopt) or
6160 $el->
6161 media_type_match
6162
6163 (
6164 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#tdterr'
6165 ,
6166 $mtopt{default_media_type},
6167 %mtopt)) {
6168 $el->
6169 preserve_node_path
6170 ;
6171
6172
6173 {
6174
6175
6176 $new_value =
6177 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value_ref
6178
6179 ($new_value_type, $el->value_ref, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#disdoc');
6180
6181
6182 {
6183
6184 local $Error::Depth = $Error::Depth + 1;
6185
6186 {
6187
6188
6189
6190 $new_value->
6191 name
6192 ($prop_uri);
6193
6194
6195
6196 }
6197
6198
6199 ;}
6200
6201
6202 }
6203
6204 ;
6205 $new_value->
6206 default_namespace_uri_ref
6207
6208 ($el->
6209 get_default_namespace_uri_ref
6210 );
6211 $new_value->
6212 namespace_binding_list
6213
6214 ($el->
6215 get_namespace_binding_list
6216 ($db));
6217 $new_value->
6218 source_node_path
6219
6220 ($el->
6221 flag
6222 ('nodePath'));
6223 } elsif ($el->
6224 media_type_match
6225
6226 (
6227 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#XCRef'
6228 ,
6229 $mtopt{default_media_type}, %mtopt)) {
6230 my $x = $db->
6231 xcref_to_resource
6232
6233 ($el->
6234 value
6235 ,
6236 $el, node => $el);
6237
6238
6239 {
6240
6241
6242 $new_value =
6243 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
6244
6245 (
6246 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
6247 , ($x->[2] or $x->[1] or $x->[0])
6248 ->uri);
6249
6250
6251 {
6252
6253 local $Error::Depth = $Error::Depth + 1;
6254
6255 {
6256
6257
6258
6259 $new_value->
6260 name
6261 ($prop_uri);
6262
6263
6264
6265 }
6266
6267
6268 ;}
6269
6270 ;
6271
6272
6273 }
6274
6275 ;
6276 $new_value->
6277 get_resource
6278 ($db)
6279 ->
6280 is_referred
6281 ($el);
6282 $new_value_type =
6283 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
6284 ;
6285 } elsif ($el->
6286 media_type_match
6287
6288 (
6289 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel'
6290 ,
6291 $mtopt{default_media_type}, %mtopt)) {
6292 unless (defined $factory) {
6293 $factory = $opt{implementation}->create_document;
6294 }
6295 my $mt = $db->
6296 get_resource
6297
6298 ($el->
6299 media_type_uri
6300 );
6301 my $node = $mt->
6302 parse_string
6303
6304 ($el->
6305 value
6306 , $el, $factory,
6307 );
6308
6309
6310 {
6311
6312
6313 {
6314
6315 local $Error::Depth = $Error::Depth + 1;
6316
6317 {
6318
6319
6320
6321 $new_value = $Message::DOM::ImplementationRegistry
6322 ->get_dom_implementation
6323 ({
6324 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Value'
6325 => '1.0',
6326
6327 'http://suika.fam.cx/www/2006/feature/TreeStore'
6328 => '3.0'})
6329 ->
6330 create_dvxml_value
6331
6332 ($node);
6333 $new_value->
6334 name
6335 ($prop_uri);
6336
6337
6338
6339 }
6340
6341
6342 ;}
6343
6344 ;
6345
6346
6347 }
6348
6349 ;
6350 $new_value->
6351 source_node_path
6352
6353 ($el->
6354 flag
6355 ('nodePath'));
6356 } elsif ($el->
6357 media_type_match
6358
6359 (
6360 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#NSString'
6361 ,
6362 $mtopt{default_media_type}, %mtopt)) {
6363 $el->
6364 preserve_node_path
6365 ;
6366
6367
6368 {
6369
6370
6371 $new_value =
6372 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value_ref
6373
6374 ($new_value_type, $el->value_ref, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#NSString');
6375
6376
6377 {
6378
6379 local $Error::Depth = $Error::Depth + 1;
6380
6381 {
6382
6383
6384
6385 $new_value->
6386 name
6387 ($prop_uri);
6388
6389
6390
6391 }
6392
6393
6394 ;}
6395
6396
6397 }
6398
6399 ;
6400 $new_value->
6401 default_namespace_uri_ref
6402
6403 ($el->
6404 get_default_namespace_uri_ref
6405 );
6406 $new_value->
6407 namespace_binding_list
6408
6409 ($el->
6410 get_namespace_binding_list
6411 ($db));
6412 $new_value->
6413 source_node_path
6414
6415 ($el->
6416 flag
6417 ('nodePath'));
6418 } elsif ($el->
6419 media_type_match
6420
6421 (
6422 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis'
6423 , $mtopt{default_media_type},
6424 %mtopt)) {
6425 $copy_tree =
6426 1
6427 ;
6428 $el->
6429 preserve_node_path
6430 ;
6431 my $elc = $el->clone;
6432
6433
6434 {
6435
6436
6437 $new_value =
6438 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
6439
6440 ($new_value_type, $elc, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis');
6441
6442
6443 {
6444
6445 local $Error::Depth = $Error::Depth + 1;
6446
6447 {
6448
6449
6450
6451 $new_value->
6452 name
6453 ($prop_uri);
6454
6455
6456
6457 }
6458
6459
6460 ;}
6461
6462 ;
6463
6464
6465 }
6466
6467 ;
6468 $elc->
6469 unlink_from_document
6470 ($db);
6471 } elsif ($el->
6472 media_type_match
6473
6474 (
6475 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Integer'
6476 ,
6477 $mtopt{default_media_type}, %mtopt)) {
6478 my $v = $el->
6479 value
6480 ;
6481 if ($v =~ /^0x/) {
6482 $v = hex $v;
6483 } else {
6484 $v += 0;
6485 }
6486
6487
6488 {
6489
6490
6491 $new_value =
6492 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
6493
6494 ($new_value_type, $v, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Integer');
6495
6496
6497 {
6498
6499 local $Error::Depth = $Error::Depth + 1;
6500
6501 {
6502
6503
6504
6505 $new_value->
6506 name
6507 ($prop_uri);
6508
6509
6510
6511 }
6512
6513
6514 ;}
6515
6516 ;
6517
6518
6519 }
6520
6521 ;
6522 } elsif ($el->
6523 media_type_match
6524
6525 (
6526 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#UString'
6527 ,
6528 $mtopt{default_media_type}, %mtopt)) {
6529 my $v = $el->
6530 value
6531 ;
6532 $v =~ s/\$\x0D?\x0A//gs;
6533 $v =~ s/\$\z//;
6534 warn 'String |'.$el->
6535 value
6536 .'| contains '.
6537 'illegal |$| character' if $v =~ /\$(?![uU])/;
6538 ## TODO: Use error-handler
6539 $v =~ s{\$(u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})}{
6540 chr hex substr $1, 1
6541 }ge;
6542
6543
6544 {
6545
6546
6547 $new_value =
6548 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
6549
6550 ('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String', $v, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String');
6551
6552
6553 {
6554
6555 local $Error::Depth = $Error::Depth + 1;
6556
6557 {
6558
6559
6560
6561 $new_value->
6562 name
6563 ($prop_uri);
6564
6565
6566
6567 }
6568
6569
6570 ;}
6571
6572 ;
6573
6574
6575 }
6576
6577 ;
6578 ## NOTE: Since |type| is set to |DISCore:String|,
6579 ## what subtype of |DISCore:UString| it was originally
6580 ## is not preserved.
6581 } else {
6582
6583
6584 {
6585
6586
6587 $new_value =
6588 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
6589
6590 ($new_value_type, $el->value, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String');
6591
6592
6593 {
6594
6595 local $Error::Depth = $Error::Depth + 1;
6596
6597 {
6598
6599
6600
6601 $new_value->
6602 name
6603 ($prop_uri);
6604
6605
6606
6607 }
6608
6609
6610 ;}
6611
6612 ;
6613
6614
6615 }
6616
6617 ;
6618 }
6619
6620 unless ($copy_tree) {
6621 for my $ce (@{$el->
6622 dis_child_elements
6623
6624 (forp_arg => $forp,
6625 database_arg => $db)}) {
6626 my $xu = $ce->
6627 expanded_uri
6628 ;
6629 if ({
6630
6631 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AliasFor'
6632 =>
6633 1
6634 ,
6635
6636 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForCheck'
6637 =>
6638 1
6639 ,
6640
6641 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ContentType'
6642 =>
6643 1
6644 ,
6645
6646 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--resourceFor'
6647 =>
6648 1
6649 ,
6650 }->{$xu}) {
6651 #
6652 } elsif ($ce->
6653 is_property_element
6654
6655 (database_arg => $db)) {
6656 my $pr;
6657
6658
6659 {
6660
6661 local $Error::Depth = $Error::Depth + 1;
6662
6663 {
6664
6665
6666
6667 $pr = $add_prop->($self, $ce, $db);
6668
6669
6670
6671 }
6672
6673
6674 ;}
6675
6676 ;
6677 if ($pr->{prop_mult} eq
6678 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#OrderedList'
6679 ) {
6680 my $cpv = $new_value->
6681 get_property
6682 ($xu);
6683 if (not $cpv) {
6684
6685
6686 {
6687
6688
6689 $cpv =
6690 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_ordered_list
6691
6692 ($mtopt{default_media_type}, base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String');
6693
6694
6695 }
6696
6697 ;
6698 $new_value->
6699 set_property
6700 ($xu => $cpv);
6701 }
6702 $cpv->
6703 add_item
6704 ($pr->{new_value});
6705 } elsif ($pr->{prop_mult} eq
6706 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#UnorderedList'
6707 ) {
6708 my $cpv = $new_value->
6709 get_property
6710 ($xu);
6711 if (not $cpv) {
6712
6713
6714 {
6715
6716
6717 $cpv =
6718 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list
6719
6720 ($mtopt{default_media_type}, base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String');
6721
6722
6723 }
6724
6725 ;
6726 $new_value->
6727 set_property
6728 ($xu => $cpv);
6729 }
6730 $cpv->
6731 add_item
6732 ($pr->{new_value});
6733 } else {
6734 $new_value->
6735 set_property
6736
6737 ($xu => $pr->{new_value});
6738 }
6739 } else {
6740
6741
6742 {
6743
6744 local $Error::Depth = $Error::Depth - 1;
6745
6746 {
6747
6748 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $ce, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'read_properties', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ELEMENT_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $xu;
6749
6750
6751 }
6752
6753
6754 ;}
6755
6756 ;
6757 }
6758 }} # copy_tree
6759
6760 {new_value => $new_value, base_type => $base_type,
6761 prop_uri => $prop_uri, prop_mult => $prop_mult,
6762 new_value_type => $new_value_type};
6763 };
6764
6765 my $pr;
6766
6767
6768 {
6769
6770 local $Error::Depth = $Error::Depth + 1;
6771
6772 {
6773
6774
6775
6776 $pr = $add_prop->($self, $el, $db);
6777
6778
6779
6780 }
6781
6782
6783 ;}
6784
6785 ;
6786 if ($pr->{prop_mult} eq
6787 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#OrderedList'
6788 ) {
6789 if (not $self->{$pr->{prop_uri}}) {
6790
6791
6792 {
6793
6794
6795 $self->{$pr->{prop_uri}} =
6796 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_ordered_list
6797
6798 ($pr->{new_value_type}, base_type => $pr->{base_type} || 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String');
6799
6800
6801 }
6802
6803 ;
6804 }
6805 $self->{$pr->{prop_uri}}->
6806 add_item
6807
6808 ($pr->{new_value});
6809 } elsif ($pr->{prop_mult} eq
6810 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#UnorderedList'
6811 ) {
6812 if (not $self->{$pr->{prop_uri}}) {
6813
6814
6815 {
6816
6817
6818 $self->{$pr->{prop_uri}} =
6819 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list
6820
6821 ($pr->{new_value_type}, base_type => $pr->{base_type} || 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String');
6822
6823
6824 }
6825
6826 ;
6827 }
6828 $self->{$pr->{prop_uri}}->
6829 add_item
6830
6831 ($pr->{new_value});
6832 } else {
6833 $self->{$pr->{prop_uri}} = $pr->{new_value};
6834 }
6835
6836 if ($el->
6837 element_type_match
6838
6839 (
6840 'http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#propHashKey'
6841 , database_arg => $db)) {
6842 $db->
6843 pl_add_hash_key
6844
6845 ($xu => $pr->{new_value}->
6846 string_value
6847
6848 => $self);
6849 }
6850 } elsif ($el->
6851 is_resource_element
6852 ) {
6853 ## TODO: Should rdf:type be validated?
6854 } else {
6855
6856
6857 {
6858
6859 local $Error::Depth = $Error::Depth - 1;
6860
6861 {
6862
6863 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'read_properties', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ELEMENT_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $xu;
6864
6865
6866 }
6867
6868
6869 ;}
6870
6871 ;
6872 }
6873 }
6874 CORE::delete $self->{src};
6875 ($opt{on_resource_read} or sub () {})->($self, $self);
6876 }
6877
6878
6879
6880 }
6881
6882
6883 ;}
6884
6885 ;
6886
6887
6888 }
6889 }
6890 sub is_type_uri ($$) {
6891 my ($self, $typeURI) = @_;
6892 my $r = 0;
6893
6894 {
6895
6896
6897 {
6898
6899 local $Error::Depth = $Error::Depth + 1;
6900
6901 {
6902
6903
6904
6905 $r = $self->
6906 type_resource
6907
6908 ->
6909 is_subset_of_uri
6910 ($typeURI);
6911
6912
6913
6914 }
6915
6916
6917 ;}
6918
6919 ;
6920
6921
6922 }
6923 $r}
6924 sub revision ($;$) {
6925 if (@_ == 1) {my ($self) = @_;
6926 my $r = 0;
6927
6928 {
6929
6930
6931 $r = $self->{
6932 'r'
6933 };
6934
6935
6936 }
6937 $r;
6938 } else {my ($self) = @_;
6939 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'revision';
6940 }
6941 }
6942 sub get_type_uri_list ($) {
6943 my ($self) = @_;
6944 my $r = [];
6945
6946 {
6947
6948
6949 {
6950
6951 local $Error::Depth = $Error::Depth + 1;
6952
6953 {
6954
6955
6956
6957 $r = $self->
6958 type_resource
6959
6960 ->
6961 get_super_resource_uri_list
6962 ;
6963
6964
6965
6966 }
6967
6968
6969 ;}
6970
6971 ;
6972
6973
6974 }
6975 $r}
6976 sub type_resource ($;$) {
6977 if (@_ == 1) {my ($self) = @_;
6978 my $r;
6979
6980 {
6981
6982
6983 {
6984
6985 local $Error::Depth = $Error::Depth + 1;
6986
6987 {
6988
6989
6990
6991 $r = $self->
6992 database
6993
6994 ->
6995 get_resource
6996 ($self->{
6997 'tu'
6998 });
6999
7000
7001
7002 }
7003
7004
7005 ;}
7006
7007 ;
7008
7009
7010 }
7011 $r;
7012 } else {my ($self) = @_;
7013 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'type_resource';
7014 }
7015 }
7016 sub add_type_uri ($$%) {
7017 my ($self, $uri, %opt) = @_;
7018
7019 {
7020
7021
7022 {
7023
7024 local $Error::Depth = $Error::Depth + 1;
7025
7026 {
7027
7028
7029 my
7030 $current_type = $self->
7031 type_resource
7032 ;
7033 unless ($current_type->
7034 is_subset_of_uri
7035
7036 ($uri, srinfo => $opt{srinfo})) {
7037 my $db = $self->
7038 database
7039 ;
7040 my $res = $db->
7041 get_resource
7042 ($uri);
7043 my $current_uri = $current_type->
7044 uri
7045 ;
7046 if ($res->
7047 is_subset_of_uri
7048
7049 ($current_uri, srinfo => $opt{srinfo})) {
7050 $self->{
7051 'tu'
7052 } = $uri;
7053 } else {
7054 my $new_uri;
7055
7056
7057 {
7058
7059 my
7060 $__uri1 = $current_uri;
7061 my $__uri2 = $uri;
7062 for my $__uri ($__uri1, $__uri2) {
7063 $__uri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])}
7064 {sprintf '%%%02X', ord $1}ge;
7065 }
7066 $new_uri = qq<tag:suika.fam.cx,2006-02:$__uri1+$__uri2>;
7067
7068
7069 }
7070
7071 ;
7072 my $new_res = $db->
7073 get_resource
7074 ($new_uri);
7075 unless ($new_res->
7076 is_defined
7077 ) {
7078 $new_res->
7079 is_anonymous
7080 (
7081 1
7082 );
7083 $new_res->
7084 is_defined
7085 (
7086 1
7087 );
7088 $new_res->
7089 add_super_resource
7090
7091 ($current_type, srinfo => $opt{srinfo});
7092 $new_res->
7093 add_super_resource
7094
7095 ($res, srinfo => $opt{srinfo});
7096 }
7097 unless ($new_res->
7098 owner_module_uri_ref
7099 ) {
7100 $new_res->
7101 owner_module_uri_ref
7102
7103 ($res->
7104 owner_module_uri_ref
7105 );
7106 }
7107 $self->{
7108 'tu'
7109 } = $new_uri;
7110 }
7111 }
7112
7113
7114
7115 }
7116
7117
7118 ;}
7119
7120 ;
7121
7122
7123 }
7124 }
7125 sub ___report_error ($$) {
7126 my ($self, $err) = @_;
7127 my $r;
7128
7129 {
7130
7131 if
7132 ($err->isa (
7133 'Message::DOM::IF::DOMError'
7134 )) {
7135
7136
7137 {
7138
7139 local $Error::Depth = $Error::Depth + 1;
7140
7141 {
7142
7143
7144 my
7145 $cfg = $self->
7146 database
7147
7148 ->
7149 dom_config
7150 ;
7151 my $h = $cfg->
7152 get_parameter
7153 ('error-handler');
7154 $r = $h->
7155 handle_error
7156 ($err);
7157
7158
7159
7160 }
7161
7162
7163 ;}
7164
7165 ;
7166 } else {
7167 $err->
7168 throw
7169 ;
7170 }
7171
7172
7173 }
7174 $r}
7175 sub get_error_interface_resource ($) {
7176 my ($self) = @_;
7177 my $r;
7178
7179 {
7180
7181 my
7182 $method;
7183 my $tr = $self->
7184 type_resource
7185 ;
7186
7187
7188 {
7189
7190 my
7191 $__type_uri = $tr->
7192 uri
7193 ;
7194 $method = $Message::Util::DIS::Method{$__type_uri}->{'get_error_interface_resource'};
7195 unless ($method) {
7196 my %__methods;
7197 for (@{$tr->
7198 get_super_resource_uri_list
7199 }) {
7200 $__methods{$_} = $Message::Util::DIS::Method{$_}->{'get_error_interface_resource'}
7201 if $Message::Util::DIS::Method{$_}->{'get_error_interface_resource'};
7202 }
7203 my $__db = $tr->
7204 database
7205 ;
7206 T1: for my $__t1_uri (keys %__methods) {
7207 next T1 unless $__methods{$__t1_uri};
7208 my $__t1 = $__db->
7209 get_resource
7210 ($__t1_uri);
7211 T2: for my $__t2_uri (keys %__methods) {
7212 next T2 if $__t1_uri eq $__t2_uri;
7213 if ($__t1->
7214 is_subset_of_uri
7215 ($__t2_uri)) {
7216 delete $__methods{$__t2_uri};
7217 next T2;
7218 }
7219 if ($Message::Util::DIS::Method{$__t1_uri}->{'get_error_interface_resource'}
7220 eq $Message::Util::DIS::Method{$__t2_uri}->{'get_error_interface_resource'}) {
7221 delete $__methods{$__t2_uri};
7222 next T2;
7223 }
7224 }
7225 }
7226 if (keys %__methods > 1) {
7227
7228 report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'get_error_interface_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods];
7229
7230 ;
7231 }
7232 $Message::Util::DIS::Method{$__type_uri}->{'get_error_interface_resource'} =
7233 $method = $__methods{[keys %__methods]->[0]} if %__methods;
7234 }
7235
7236
7237 }
7238
7239 ;
7240 if ($method) {
7241
7242
7243 {
7244
7245 local $Error::Depth = $Error::Depth + 1;
7246
7247 {
7248
7249
7250
7251 $r = $method->(@_);
7252
7253
7254
7255 }
7256
7257
7258 ;}
7259
7260 ;
7261 } else {
7262 $r =
7263 undef
7264 ;
7265 }
7266
7267
7268 }
7269 $r}
7270 sub get_error_code_resource ($) {
7271 my ($self) = @_;
7272 my $r;
7273
7274 {
7275
7276 my
7277 $method;
7278 my $tr = $self->
7279 type_resource
7280 ;
7281
7282
7283 {
7284
7285 my
7286 $__type_uri = $tr->
7287 uri
7288 ;
7289 $method = $Message::Util::DIS::Method{$__type_uri}->{'get_error_code_resource'};
7290 unless ($method) {
7291 my %__methods;
7292 for (@{$tr->
7293 get_super_resource_uri_list
7294 }) {
7295 $__methods{$_} = $Message::Util::DIS::Method{$_}->{'get_error_code_resource'}
7296 if $Message::Util::DIS::Method{$_}->{'get_error_code_resource'};
7297 }
7298 my $__db = $tr->
7299 database
7300 ;
7301 T1: for my $__t1_uri (keys %__methods) {
7302 next T1 unless $__methods{$__t1_uri};
7303 my $__t1 = $__db->
7304 get_resource
7305 ($__t1_uri);
7306 T2: for my $__t2_uri (keys %__methods) {
7307 next T2 if $__t1_uri eq $__t2_uri;
7308 if ($__t1->
7309 is_subset_of_uri
7310 ($__t2_uri)) {
7311 delete $__methods{$__t2_uri};
7312 next T2;
7313 }
7314 if ($Message::Util::DIS::Method{$__t1_uri}->{'get_error_code_resource'}
7315 eq $Message::Util::DIS::Method{$__t2_uri}->{'get_error_code_resource'}) {
7316 delete $__methods{$__t2_uri};
7317 next T2;
7318 }
7319 }
7320 }
7321 if (keys %__methods > 1) {
7322
7323 report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'get_error_code_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods];
7324
7325 ;
7326 }
7327 $Message::Util::DIS::Method{$__type_uri}->{'get_error_code_resource'} =
7328 $method = $__methods{[keys %__methods]->[0]} if %__methods;
7329 }
7330
7331
7332 }
7333
7334 ;
7335 if ($method) {
7336
7337
7338 {
7339
7340 local $Error::Depth = $Error::Depth + 1;
7341
7342 {
7343
7344
7345
7346 $r = $method->(@_);
7347
7348
7349
7350 }
7351
7352
7353 ;}
7354
7355 ;
7356 } else {
7357 $r =
7358 undef
7359 ;
7360 }
7361
7362
7363 }
7364 $r}
7365 sub get_dom_configuration_parameter_name ($) {
7366 my ($self) = @_;
7367 my $r = '';
7368
7369 {
7370
7371 my
7372 $method;
7373 my $tr = $self->
7374 type_resource
7375 ;
7376
7377
7378 {
7379
7380 my
7381 $__type_uri = $tr->
7382 uri
7383 ;
7384 $method = $Message::Util::DIS::Method{$__type_uri}->{'get_dom_configuration_parameter_name'};
7385 unless ($method) {
7386 my %__methods;
7387 for (@{$tr->
7388 get_super_resource_uri_list
7389 }) {
7390 $__methods{$_} = $Message::Util::DIS::Method{$_}->{'get_dom_configuration_parameter_name'}
7391 if $Message::Util::DIS::Method{$_}->{'get_dom_configuration_parameter_name'};
7392 }
7393 my $__db = $tr->
7394 database
7395 ;
7396 T1: for my $__t1_uri (keys %__methods) {
7397 next T1 unless $__methods{$__t1_uri};
7398 my $__t1 = $__db->
7399 get_resource
7400 ($__t1_uri);
7401 T2: for my $__t2_uri (keys %__methods) {
7402 next T2 if $__t1_uri eq $__t2_uri;
7403 if ($__t1->
7404 is_subset_of_uri
7405 ($__t2_uri)) {
7406 delete $__methods{$__t2_uri};
7407 next T2;
7408 }
7409 if ($Message::Util::DIS::Method{$__t1_uri}->{'get_dom_configuration_parameter_name'}
7410 eq $Message::Util::DIS::Method{$__t2_uri}->{'get_dom_configuration_parameter_name'}) {
7411 delete $__methods{$__t2_uri};
7412 next T2;
7413 }
7414 }
7415 }
7416 if (keys %__methods > 1) {
7417
7418 report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'get_dom_configuration_parameter_name', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods];
7419
7420 ;
7421 }
7422 $Message::Util::DIS::Method{$__type_uri}->{'get_dom_configuration_parameter_name'} =
7423 $method = $__methods{[keys %__methods]->[0]} if %__methods;
7424 }
7425
7426
7427 }
7428
7429 ;
7430 if ($method) {
7431
7432
7433 {
7434
7435 local $Error::Depth = $Error::Depth + 1;
7436
7437 {
7438
7439
7440
7441 $r = $method->(@_);
7442
7443
7444
7445 }
7446
7447
7448 ;}
7449
7450 ;
7451 } else {
7452 $r =
7453 undef
7454 ;
7455 }
7456
7457
7458 }
7459 $r}
7460 sub get_node_from_storage ($$$$) {
7461 my ($self, $key, $hash, $factory) = @_;
7462 my $r;
7463
7464 {
7465
7466 require
7467 Message::DOM::TreeStore;
7468 my $mod = $self->
7469 owner_module
7470 ;
7471 $mod->
7472 pl_load_node_storage
7473 unless
7474 defined $mod->{
7475 'nst'
7476 };
7477 my $st = $mod->{
7478 'nst'
7479 };
7480 if (defined $st->{$key} and $st->{$key}->[1] eq $hash) {
7481 $r = $factory->implementation
7482 ->get_feature (
7483 'http://suika.fam.cx/www/2006/feature/TreeStore'
7484 )
7485 ->create_node_from_storable_object
7486 ($st->{$key}->[0], $factory);
7487 }
7488
7489
7490 }
7491 $r}
7492 sub set_node_to_storage ($$$;$) {
7493 my ($self, $key, $hash, $node) = @_;
7494
7495 {
7496
7497 require
7498 Message::DOM::TreeStore;
7499 my $mod = $self->
7500 owner_module
7501 ;
7502 $mod->
7503 pl_load_node_storage
7504 unless
7505 defined $mod->{
7506 'nst'
7507 };
7508 my $st = $mod->{
7509 'nst'
7510 };
7511 if (defined $node) {
7512 $st->{$key}->[0] = [$node->owner_document
7513 ->implementation
7514 ->get_feature (
7515 'http://suika.fam.cx/www/2006/feature/TreeStore'
7516 )
7517 ->create_storable_object_from_node
7518 ($node), $hash];
7519 } else {
7520 delete $st->{$key};
7521 }
7522 $mod->{
7523 'nstmod'
7524 } =
7525 1
7526 ;
7527
7528
7529 }
7530 }
7531 sub parse_string ($$$$) {
7532 my ($self, $s, $ns, $factory) = @_;
7533 my $r;
7534
7535 {
7536
7537 my
7538 $method;
7539
7540
7541 {
7542
7543 my
7544 $__type_uri = $self->
7545 uri
7546 ;
7547 $method = $Message::Util::DIS::Method{$__type_uri}->{'parse_string'};
7548 unless ($method) {
7549 my %__methods;
7550 for (@{$self->
7551 get_super_resource_uri_list
7552 }) {
7553 $__methods{$_} = $Message::Util::DIS::Method{$_}->{'parse_string'}
7554 if $Message::Util::DIS::Method{$_}->{'parse_string'};
7555 }
7556 my $__db = $self->
7557 database
7558 ;
7559 T1: for my $__t1_uri (keys %__methods) {
7560 next T1 unless $__methods{$__t1_uri};
7561 my $__t1 = $__db->
7562 get_resource
7563 ($__t1_uri);
7564 T2: for my $__t2_uri (keys %__methods) {
7565 next T2 if $__t1_uri eq $__t2_uri;
7566 if ($__t1->
7567 is_subset_of_uri
7568 ($__t2_uri)) {
7569 delete $__methods{$__t2_uri};
7570 next T2;
7571 }
7572 if ($Message::Util::DIS::Method{$__t1_uri}->{'parse_string'}
7573 eq $Message::Util::DIS::Method{$__t2_uri}->{'parse_string'}) {
7574 delete $__methods{$__t2_uri};
7575 next T2;
7576 }
7577 }
7578 }
7579 if (keys %__methods > 1) {
7580
7581 report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'parse_string', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods];
7582
7583 ;
7584 }
7585 $Message::Util::DIS::Method{$__type_uri}->{'parse_string'} =
7586 $method = $__methods{[keys %__methods]->[0]} if %__methods;
7587 }
7588
7589
7590 }
7591
7592 ;
7593 if ($method) {
7594
7595
7596 {
7597
7598 local $Error::Depth = $Error::Depth + 1;
7599
7600 {
7601
7602
7603
7604 $r = $method->(@_);
7605
7606
7607
7608 }
7609
7610
7611 ;}
7612
7613 ;
7614 } else {
7615 $r =
7616 undef
7617 ;
7618 }
7619
7620
7621 }
7622 $r}
7623 use overload
7624 bool => sub () {1},
7625 'eq' => 'is_same_resource',
7626 fallback => 1;
7627 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISAnyResource>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
7628 {'',
7629 '1',
7630 '1.0',
7631 '1'}};
7632 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISAnyResource>} = 1;
7633 package Message::Util::IF::DISModule;
7634 our $VERSION = 20061231.0921;
7635 package Message::Util::DIS::ManakaiDISModuleDefinition;
7636 our $VERSION = 20061231.0921;
7637 push our @ISA, 'Message::Util::DIS::ManakaiDISPropertyAccessor',
7638 'Message::Util::DIS::Perl::ManakaiDISPerlModuleDefinition',
7639 'Message::Util::DIS::Perl::ManakaiDISModulePerl',
7640 'Message::Util::DIS::Perl::ManakaiDISAnyResourcePerl',
7641 'Message::Util::DIS::ManakaiDISAnyResource',
7642 'Message::Util::IF::DISModule';
7643 sub uris ($;$) {
7644 if (@_ == 1) {my ($self) = @_;
7645 my $r;
7646
7647 {
7648
7649
7650 $r = [$self->{uri}];
7651
7652
7653 }
7654 $r;
7655 } else {my ($self) = @_;
7656 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris';
7657 }
7658 }
7659 sub owner_module ($;$) {
7660 if (@_ == 1) {my ($self) = @_;
7661 my $r;
7662
7663 {
7664
7665
7666 $r = $self;
7667
7668
7669 }
7670 $r;
7671 } else {my ($self) = @_;
7672 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module';
7673 }
7674 }
7675 sub add_resource_list ($$) {
7676 my ($self, $disResource) = @_;
7677
7678 {
7679
7680
7681 {
7682
7683 local $Error::Depth = $Error::Depth + 1;
7684
7685 {
7686
7687
7688 push
7689 @{$self->{
7690 'mres'
7691 }||=[]},
7692 map {\$_} @{$disResource->
7693 uris
7694 };
7695
7696
7697
7698 }
7699
7700
7701 ;}
7702
7703 ;
7704
7705
7706 }
7707 }
7708 sub add_resource_uri ($$) {
7709 my ($self, $uri) = @_;
7710
7711 {
7712
7713 push
7714 @{$self->{
7715 'mres'
7716 }||=[]}, \$uri;
7717
7718
7719 }
7720 }
7721 sub get_resource_uri_list ($) {
7722 my ($self) = @_;
7723 my $r = [];
7724
7725 {
7726
7727
7728 $r = [map {$$_} @{$self->{
7729 'mres'
7730 } or []}];
7731
7732
7733 }
7734 $r}
7735 sub get_resource_list ($) {
7736 my ($self) = @_;
7737 my $r = [];
7738
7739 {
7740
7741
7742 {
7743
7744 local $Error::Depth = $Error::Depth + 1;
7745
7746 {
7747
7748
7749 my
7750 $db = $self->
7751 database
7752 ;
7753 $r = [map {
7754 $db->
7755 get_resource
7756 ($$_)
7757 } @{$self->{
7758 'mres'
7759 }}];
7760
7761
7762
7763 }
7764
7765
7766 ;}
7767
7768 ;
7769
7770
7771 }
7772 $r}
7773 sub add_for_resource ($$) {
7774 my ($self, $disResource) = @_;
7775
7776 {
7777
7778
7779 {
7780
7781 local $Error::Depth = $Error::Depth + 1;
7782
7783 {
7784
7785
7786 push
7787 @{$self->{
7788 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#forList'
7789 }||=[]},
7790 $disResource->
7791 uri_ref
7792 ;
7793
7794
7795
7796 }
7797
7798
7799 ;}
7800
7801 ;
7802
7803
7804 }
7805 }
7806 sub get_for_resource_list ($) {
7807 my ($self) = @_;
7808 my $r = [];
7809
7810 {
7811
7812
7813 {
7814
7815 local $Error::Depth = $Error::Depth + 1;
7816
7817 {
7818
7819
7820 my
7821 $db = $self->
7822 database
7823 ;
7824 $r = [map {
7825 $db->
7826 get_for
7827 ($$_)
7828 } @{$self->{
7829 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#forList'
7830 }}];
7831
7832
7833
7834 }
7835
7836
7837 ;}
7838
7839 ;
7840
7841
7842 }
7843 $r}
7844 sub target_namespace_uri ($;$) {
7845 if (@_ == 1) {my ($self) = @_;
7846 my $r;
7847
7848 {
7849
7850
7851 $r = defined $self->{
7852 'dns'
7853 }
7854 ? ${$self->{
7855 'dns'
7856 }} :
7857 undef
7858 ;
7859
7860
7861 }
7862 $r;
7863 } else {my ($self, $given) = @_;
7864
7865 {
7866
7867 if
7868 (defined $given) {
7869 $self->{
7870 'dns'
7871 } = \$given;
7872 } else {
7873 CORE::delete $self->{
7874 'dns'
7875 };
7876 }
7877
7878
7879 }
7880 }
7881 }
7882 sub get_super_resource_uri_list ($) {
7883 my ($self) = @_;
7884 my $r = [];
7885
7886 {
7887
7888
7889 $r = [$self->{uri}];
7890
7891
7892 }
7893 $r}
7894 sub get_referring_module_uri_list ($) {
7895 my ($self) = @_;
7896 my $r = [];
7897
7898 {
7899
7900
7901 $r = [grep {$self->{
7902 'ref'
7903 }->{$_}}
7904 keys %{$self->{
7905 'ref'
7906 } or {}}];
7907
7908
7909 }
7910 $r}
7911 sub add_referring_module_uri ($$) {
7912 my ($self, $uri) = @_;
7913
7914 {
7915
7916
7917 $self->{
7918 'ref'
7919 }->{$uri} =
7920 1
7921 ;
7922
7923
7924 }
7925 }
7926 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleDefinition>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
7927 {'',
7928 '1',
7929 '1.0',
7930 '1'},
7931 'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl',
7932 {'',
7933 '1',
7934 '1.0',
7935 '1'}};
7936 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleDefinition>} = 2;
7937 package Message::Util::DIS::ManakaiDISModuleLite;
7938 our $VERSION = 20061231.0921;
7939 push our @ISA, 'Message::Util::IF::DISAnyResourcePerl',
7940 'Message::Util::IF::DISModulePerl',
7941 'Message::Util::IF::DISResourcePerlModule',
7942 'Message::Util::IF::DISResourceProp';
7943 sub uri ($;$) {
7944 if (@_ == 1) {my ($self) = @_;
7945 my $r;
7946
7947 {
7948
7949
7950 $r = $self->{uri};
7951
7952
7953 }
7954 $r;
7955 } else {my ($self) = @_;
7956 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri';
7957 }
7958 }
7959 sub uri_ref ($;$) {
7960 if (@_ == 1) {my ($self) = @_;
7961 my $r;
7962
7963 {
7964
7965
7966 $r = \ ($self->{uri});
7967
7968
7969 }
7970 $r;
7971 } else {my ($self) = @_;
7972 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri_ref';
7973 }
7974 }
7975 sub uris ($;$) {
7976 if (@_ == 1) {my ($self) = @_;
7977 my $r;
7978
7979 {
7980
7981
7982 $r = [$self->{uri}];
7983
7984
7985 }
7986 $r;
7987 } else {my ($self) = @_;
7988 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris';
7989 }
7990 }
7991 sub is_same_resource ($$) {
7992 my ($self, $anotherResource) = @_;
7993 my $r = 0;
7994
7995 {
7996
7997 if
7998 (UNIVERSAL::isa ($anotherResource,
7999
8000 'Message::Util::DIS::ManakaiDISAnyResource'
8001 )) {
8002 $r = $self->{uri} eq $anotherResource->{uri};
8003 }
8004
8005
8006 }
8007 $r}
8008 sub name_uri ($;$) {
8009 if (@_ == 1) {my ($self) = @_;
8010 my $r;
8011
8012 {
8013
8014 if
8015 (defined $self->{localName}) {
8016 $r = defined $self->{namespaceURI}
8017 ? ${$self->{namespaceURI}} . ${$self->{localName}}
8018 : ${$self->{localName}};
8019 }
8020
8021
8022 }
8023 $r;
8024 } else {my ($self) = @_;
8025 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'name_uri';
8026 }
8027 }
8028 sub local_name ($;$) {
8029 if (@_ == 1) {my ($self) = @_;
8030 my $r;
8031
8032 {
8033
8034
8035 $r = defined $self->{localName} ? ${$self->{localName}} :
8036 undef
8037 ;
8038
8039
8040 }
8041 $r;
8042 } else {my ($self) = @_;
8043 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'local_name';
8044 }
8045 }
8046 sub namespace_uri ($;$) {
8047 if (@_ == 1) {my ($self) = @_;
8048 my $r;
8049
8050 {
8051
8052
8053 $r = defined $self->{namespaceURI} ? ${$self->{namespaceURI}} :
8054 undef
8055 ;
8056
8057
8058 }
8059 $r;
8060 } else {my ($self) = @_;
8061 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'namespace_uri';
8062 }
8063 }
8064 sub forp_uri ($;$) {
8065 if (@_ == 1) {my ($self) = @_;
8066 my $r;
8067
8068 {
8069
8070
8071 $r = [@{$self->{forp}}];
8072
8073
8074 }
8075 $r;
8076 } else {my ($self) = @_;
8077 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'forp_uri';
8078 }
8079 }
8080 sub is_for_uri ($$) {
8081 my ($self, $forURI) = @_;
8082 my $r = 0;
8083
8084 {
8085
8086
8087 {
8088
8089 local $Error::Depth = $Error::Depth + 1;
8090
8091 {
8092
8093
8094 C:
8095 for my $this_for_uri (
8096 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all'
8097 , @{$self->{forp}||[]}) {
8098 if ($this_for_uri eq $forURI) { ## Shortcut
8099 $r =
8100 1
8101 ;
8102 last C;
8103 }
8104 my $this_for = $self->
8105 database
8106
8107 ->
8108 get_for
8109
8110 ($this_for_uri);
8111 if ($this_for->
8112 isa_uri
8113 ($forURI)) {
8114 $r =
8115 1
8116 ;
8117 last C;
8118 }
8119 }
8120
8121
8122
8123 }
8124
8125
8126 ;}
8127
8128 ;
8129
8130
8131 }
8132 $r}
8133 sub is_defined ($;$) {
8134 if (@_ == 1) {my ($self) = @_;
8135 my $r = 0;
8136
8137 {
8138
8139
8140 $r = $self->{
8141 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined'
8142 };
8143
8144
8145 }
8146 $r;
8147 } else {my ($self, $given) = @_;
8148
8149 {
8150
8151
8152 $self->{
8153 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined'
8154 } = $given;
8155
8156
8157 }
8158 }
8159 }
8160 sub owner_module ($;$) {
8161 if (@_ == 1) {my ($self) = @_;
8162 my $r;
8163
8164 {
8165
8166
8167 $r = $self;
8168
8169
8170 }
8171 $r;
8172 } else {my ($self) = @_;
8173 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module';
8174 }
8175 }
8176 sub owner_module_uri ($;$) {
8177 if (@_ == 1) {my ($self) = @_;
8178 my $r;
8179
8180 {
8181
8182
8183 $r = $self->{uri};
8184
8185
8186 }
8187 $r;
8188 } else {my ($self) = @_;
8189 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module_uri';
8190 }
8191 }
8192 sub owner_module_uri_ref ($;$) {
8193 if (@_ == 1) {my ($self) = @_;
8194 my $r;
8195
8196 {
8197
8198
8199 $r = \ ($self->{uri});
8200
8201
8202 }
8203 $r;
8204 } else {my ($self, $given) = @_;
8205
8206 {
8207
8208
8209 # no effect
8210
8211
8212 }
8213 }
8214 }
8215 sub database ($;$) {
8216 if (@_ == 1) {my ($self) = @_;
8217 my $r;
8218
8219 {
8220
8221
8222 $r = $self->{db};
8223
8224
8225 }
8226 $r;
8227 } else {my ($self) = @_;
8228 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'database';
8229 }
8230 }
8231 sub AUTOLOAD ($) {
8232 my ($self) = @_;
8233
8234 {
8235
8236 my
8237 $al = our $AUTOLOAD;
8238 $al =~ s/.+:://;
8239 if ($al ne 'DESTROY') {
8240
8241
8242
8243 {
8244
8245 local $Error::Depth = $Error::Depth + 1;
8246
8247 {
8248
8249
8250
8251 $self->
8252 database
8253
8254 ->
8255 _pl_load_dis_database_module
8256 ($self);
8257
8258
8259
8260 }
8261
8262
8263 ;}
8264
8265 ;
8266 if (ref $self eq
8267 'Message::Util::DIS::ManakaiDISModuleLite'
8268 ) {
8269
8270 report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'AUTOLOAD', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => $self->uri;
8271
8272 ;
8273 }
8274
8275 my $code = $self->can ($al);
8276 if ($code) {
8277 goto &$code;
8278 } else {
8279 require Carp;
8280 local $Carp::CarpLevel = $Error::Depth;
8281 Carp::croak (qq<Can't locate method "$AUTOLOAD">);
8282 }
8283
8284 } # $al
8285
8286
8287 }
8288 }
8289 sub target_namespace_uri ($;$) {
8290 if (@_ == 1) {my ($self) = @_;
8291 my $r;
8292
8293 {
8294
8295
8296 $r = defined $self->{
8297 'dns'
8298 }
8299 ? ${$self->{
8300 'dns'
8301 }} :
8302 undef
8303 ;
8304
8305
8306 }
8307 $r;
8308 } else {my ($self) = @_;
8309 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'target_namespace_uri';
8310 }
8311 }
8312 use overload
8313 bool => sub () {1},
8314 'eq' => 'is_same_resource',
8315 fallback => 1;
8316 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleLite>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
8317 {'',
8318 '1',
8319 '1.0',
8320 '1'}};
8321 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleLite>} = 1;
8322 package Message::Util::IF::DISFor;
8323 our $VERSION = 20061231.0921;
8324 package Message::Util::DIS::ManakaiDISForDefinition;
8325 our $VERSION = 20061231.0921;
8326 push our @ISA, 'Message::Util::DIS::Perl::ManakaiDISAnyResourcePerl',
8327 'Message::Util::DIS::ManakaiDISPropertyAccessor',
8328 'Message::Util::DIS::ManakaiDISAnyResource',
8329 'Message::Util::IF::DISFor';
8330 sub uris ($;$) {
8331 if (@_ == 1) {my ($self) = @_;
8332 my $r;
8333
8334 {
8335
8336
8337 $r = [$self->{uri}];
8338
8339
8340 }
8341 $r;
8342 } else {my ($self) = @_;
8343 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISForDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris';
8344 }
8345 }
8346 sub isa_uri ($$) {
8347 my ($self, $superURI) = @_;
8348 my $r = 0;
8349
8350 {
8351
8352
8353 $r = $self->{uri} eq $superURI ?
8354 1 :
8355 $self->{isa}->{$superURI};
8356
8357
8358 }
8359 $r}
8360 sub add_isa ($$) {
8361 my ($self, $superFor) = @_;
8362
8363 {
8364
8365 my
8366 @from = ($self->{uri},
8367 grep {$self->{revISA}->{$_}} keys %{$self->{revISA}});
8368 my @to = ($superFor->{uri},
8369 grep {$superFor->{isa}->{$_}} keys %{$superFor->{isa}});
8370
8371
8372 {
8373
8374 local $Error::Depth = $Error::Depth + 1;
8375
8376 {
8377
8378
8379 for
8380 my $from (@from) {
8381 for my $to (@to) {
8382 $self->{db}->
8383 get_for
8384
8385 ($from)->{isa}->{$to} =
8386 1
8387 ;
8388 $self->{db}->
8389 get_for
8390
8391 ($to)->{revISA}->{$from} =
8392 1
8393 ;
8394 }
8395 }
8396
8397
8398
8399 }
8400
8401
8402 ;}
8403
8404 ;
8405
8406
8407 }
8408 }
8409 sub forp_uri ($;$) {
8410 if (@_ == 1) {my ($self) = @_;
8411 my $r;
8412
8413 {
8414
8415
8416 $r = [];
8417
8418
8419 }
8420 $r;
8421 } else {my ($self) = @_;
8422 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISForDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'forp_uri';
8423 }
8424 }
8425 sub is_for_uri ($$) {
8426 my ($self, $forURI) = @_;
8427 my $r = 0;
8428
8429 {
8430
8431
8432 $r =
8433 1
8434 ;
8435
8436
8437 }
8438 $r}
8439 sub name_uri ($;$) {
8440 if (@_ == 1) {my ($self) = @_;
8441 my $r;
8442
8443 {
8444
8445
8446 $r = $self->{uri};
8447
8448
8449 }
8450 $r;
8451 } else {my ($self) = @_;
8452 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISForDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'name_uri';
8453 }
8454 }
8455 sub get_super_resource_uri_list ($) {
8456 my ($self) = @_;
8457 my $r = [];
8458
8459 {
8460
8461
8462 $r = [
8463 (grep {$self->{isa}->{$_}} keys %{$self->{isa}}),
8464 (grep {$self->{aliasURI}->{$_}} keys %{$self->{aliasURI}}),
8465 ($self->{uri}),
8466 ];
8467
8468
8469 }
8470 $r}
8471 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISForDefinition>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
8472 {'',
8473 '1',
8474 '1.0',
8475 '1'},
8476 'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl',
8477 {'',
8478 '1',
8479 '1.0',
8480 '1'}};
8481 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISForDefinition>} = 2;
8482 package Message::Util::IF::DISResource;
8483 our $VERSION = 20061231.0921;
8484 package Message::Util::DIS::ManakaiDISResourceDefinition;
8485 our $VERSION = 20061231.0921;
8486 push our @ISA, 'Message::Util::DIS::ManakaiDISResourceMV',
8487 'Message::Util::DIS::Perl::ManakaiDISResourcePerl',
8488 'Message::Util::DIS::Perl::ManakaiDISPerlModuleDefinition',
8489 'Message::Util::DIS::Perl::ManakaiDISAnyResourcePerl',
8490 'Message::Util::DIS::ManakaiDISPropertyAccessor',
8491 'Message::Util::DIS::ManakaiDISAnyResource',
8492 'Message::Util::IF::DISResource';
8493 sub uris ($;$) {
8494 if (@_ == 1) {my ($self) = @_;
8495 my $r;
8496
8497 {
8498
8499
8500 $r = [grep {$self->{aliasURI}->{$_}} keys %{$self->{aliasURI}}];
8501
8502
8503 }
8504 $r;
8505 } else {my ($self) = @_;
8506 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris';
8507 }
8508 }
8509 sub is_subset_of_uri ($$%) {
8510 my ($self, $superURI, %opt) = @_;
8511 my $r = 0;
8512
8513 {
8514
8515
8516 $r = $self->{aliasURI}->{$superURI} || $self->{subOf}->{$superURI};
8517 if (not $r and $opt{srinfo}) {
8518 A: {
8519 if ($opt{srinfo}->{resource}->{$superURI}) {
8520 for my $this_uri (grep {$self->{aliasURI}->{$_}}
8521 keys %{$self->{aliasURI}}) {
8522 if ($opt{srinfo}->{resource}->{$superURI}->{aliasURI}->{$this_uri}) {
8523 $r =
8524 1
8525 ;
8526 last A;
8527 }
8528 if ($opt{srinfo}->{resource}->{$superURI}->{supOf}->{$this_uri}) {
8529 $r =
8530 1
8531 ;
8532 last A;
8533 }
8534 }
8535 }
8536 for my $this_uri (grep {$self->{aliasURI}->{$_}}
8537 keys %{$self->{aliasURI}}) {
8538 if ($opt{srinfo}->{resource}->{$this_uri}) {
8539 if ($opt{srinfo}->{resource}->{$this_uri}->{aliasURI}->{$superURI}) {
8540 $r =
8541 1
8542 ;
8543 last A;
8544 }
8545 }
8546 }
8547 } # A
8548 }
8549
8550
8551 }
8552 $r}
8553 sub add_super_resource ($$%) {
8554 my ($self, $superRes, %opt) = @_;
8555
8556 {
8557
8558 my
8559 @from = ($self->{uri},
8560 grep {$self->{supOf}->{$_}} keys %{$self->{supOf}||{}});
8561 my @to = ($superRes->{uri},
8562 grep {$superRes->{subOf}->{$_}} keys %{$superRes->{subOf}||{}});
8563
8564
8565 {
8566
8567 local $Error::Depth = $Error::Depth + 1;
8568
8569 {
8570
8571
8572 for
8573 my $from (@from) {
8574 for my $to (@to) {
8575 $self->{db}->
8576 get_resource
8577
8578 ($from)->{subOf}->{$to} =
8579 1
8580 ;
8581 $opt{srinfo}->{resource}->{$from}->{subOf}->{$to} =
8582 1
8583 ;
8584 $self->{db}->
8585 get_resource
8586
8587 ($to)->{supOf}->{$from} =
8588 1
8589 ;
8590 $opt{srinfo}->{resource}->{$to}->{supOf}->{$from} =
8591 1
8592 ;
8593 }
8594 }
8595
8596
8597
8598 }
8599
8600
8601 ;}
8602
8603 ;
8604
8605
8606 }
8607 }
8608 sub merge_as_alias ($$%) {
8609 my ($self, $aliasResource, %opt) = @_;
8610
8611 {
8612
8613 if
8614 (not $opt{no_equality_check} and $self eq $aliasResource) {
8615
8616 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'merge_as_alias', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#MERGE_ITSELF_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri;
8617
8618 ;
8619 }
8620 for my $uri ($aliasResource->{uri},
8621 grep {$aliasResource->{aliasURI}->{$_}}
8622 keys %{$aliasResource->{aliasURI}}) {
8623 $self->{aliasURI}->{$uri} =
8624 1
8625 ;
8626 $self->{db}->{resDef}->{$uri} = $self;
8627 $self->{subOf}->{$uri} =
8628 1
8629 ;
8630 $self->{supOf}->{$uri} =
8631 1
8632 ;
8633 }
8634 for my $uri (grep {$aliasResource->{subOf}->{$_}}
8635 keys %{$aliasResource->{subOf}||{}}) {
8636 $self->{subOf}->{$uri} =
8637 1
8638 ;
8639 }
8640 for my $uri (grep {$aliasResource->{supOf}->{$_}}
8641 keys %{$aliasResource->{supOf}||{}}) {
8642 $self->{supOf}->{$uri} =
8643 1
8644 ;
8645 }
8646 my @from = grep {$self->{supOf}->{$_}} keys %{$self->{supOf}||{}};
8647 my @to = grep {$self->{subOf}->{$_}} keys %{$self->{subOf}||{}};
8648
8649
8650 {
8651
8652 local $Error::Depth = $Error::Depth + 1;
8653
8654 {
8655
8656
8657 for
8658 my $from (@from) {
8659 for my $to (@to) {
8660 $self->{db}->
8661 get_resource
8662
8663 ($from)->{subOf}->{$to} =
8664 1
8665 ;
8666 $opt{srinfo}->{resource}->{$from}->{subOf}->{$to} =
8667 1
8668 ;
8669 $self->{db}->
8670 get_resource
8671
8672 ($to)->{supOf}->{$from} =
8673 1
8674 ;
8675 $opt{srinfo}->{resource}->{$to}->{supOf}->{$from} =
8676 1
8677 ;
8678 }
8679 }
8680
8681
8682
8683 }
8684
8685
8686 ;}
8687
8688 ;
8689
8690
8691 }
8692 }
8693 sub dis_data_type_resource ($;$) {
8694 if (@_ == 1) {my ($self) = @_;
8695 my $r;
8696
8697 {
8698
8699
8700 {
8701
8702 local $Error::Depth = $Error::Depth + 1;
8703
8704 {
8705
8706
8707 if
8708 (UNIVERSAL::isa ($self->{
8709 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8710 },
8711 'Message::Util::IF::DVURIValue'
8712 )) {
8713 $r = $self->{
8714 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8715 }->
8716 get_resource
8717
8718 ($self->
8719 database
8720 );
8721 } else {
8722 my $pr = $self->
8723 dynamic_parent_resource
8724 ;
8725 $r = $pr->
8726 dis_data_type_resource if
8727 $pr;
8728 }
8729
8730
8731
8732 }
8733
8734
8735 ;}
8736
8737 ;
8738 unless ($r) {
8739
8740 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri;
8741
8742 ;
8743 }
8744
8745
8746 }
8747 $r;
8748 } else {my ($self) = @_;
8749 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_resource';
8750 }
8751 }
8752 sub dis_data_type_value ($;$) {
8753 if (@_ == 1) {my ($self) = @_;
8754 my $r;
8755
8756 {
8757
8758
8759 {
8760
8761 local $Error::Depth = $Error::Depth + 1;
8762
8763 {
8764
8765
8766 if
8767 (UNIVERSAL::isa ($self->{
8768 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8769 },
8770 'Message::Util::IF::DVURIValue'
8771 )) {
8772 $r = $self->{
8773 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8774 };
8775 } else {
8776 my $pr = $self->
8777 dynamic_parent_resource
8778 ;
8779 $r = $pr->
8780 dis_data_type_value if
8781 $pr;
8782 }
8783
8784
8785
8786 }
8787
8788
8789 ;}
8790
8791 ;
8792 unless ($r) {
8793
8794 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_value', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri;
8795
8796 ;
8797 }
8798
8799
8800 }
8801 $r;
8802 } else {my ($self) = @_;
8803 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_value';
8804 }
8805 }
8806 sub dis_actual_data_type_resource ($;$) {
8807 if (@_ == 1) {my ($self) = @_;
8808 my $r;
8809
8810 {
8811
8812
8813 {
8814
8815 local $Error::Depth = $Error::Depth + 1;
8816
8817 {
8818
8819
8820 if
8821 (UNIVERSAL::isa ($self->{
8822 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType'
8823 },
8824
8825 'Message::Util::IF::DVURIValue'
8826 )) {
8827 $r = $self->{
8828 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType'
8829 }->
8830 get_resource
8831
8832 ($self->
8833 database
8834 );
8835 } elsif (UNIVERSAL::isa ($self->{
8836 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8837 },
8838
8839 'Message::Util::IF::DVURIValue'
8840 )) {
8841 $r = $self->{
8842 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8843 }->
8844 get_resource
8845
8846 ($self->
8847 database
8848 );
8849 } else {
8850 my $pr = $self->
8851 dynamic_parent_resource
8852 ;
8853 $r = $pr->
8854 dis_actual_data_type_resource if
8855 $pr;
8856 }
8857
8858
8859
8860 }
8861
8862
8863 ;}
8864
8865 ;
8866 unless ($r) {
8867
8868 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri;
8869
8870 ;
8871 }
8872
8873
8874 }
8875 $r;
8876 } else {my ($self) = @_;
8877 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_resource';
8878 }
8879 }
8880 sub dis_actual_data_type_value ($;$) {
8881 if (@_ == 1) {my ($self) = @_;
8882 my $r;
8883
8884 {
8885
8886
8887 {
8888
8889 local $Error::Depth = $Error::Depth + 1;
8890
8891 {
8892
8893
8894 if
8895 (UNIVERSAL::isa ($self->{
8896 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType'
8897 },
8898
8899 'Message::Util::IF::DVURIValue'
8900 )) {
8901 $r = $self->{
8902 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType'
8903 };
8904 } elsif (UNIVERSAL::isa ($self->{
8905 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8906 },
8907
8908 'Message::Util::IF::DVURIValue'
8909 )) {
8910 $r = $self->{
8911 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type'
8912 };
8913 } else {
8914 my $pr = $self->
8915 dynamic_parent_resource
8916 ;
8917 $r = $pr->
8918 dis_actual_data_type_value if
8919 $pr;
8920 }
8921
8922
8923
8924 }
8925
8926
8927 ;}
8928
8929 ;
8930 unless ($r) {
8931
8932 report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_value', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri;
8933
8934 ;
8935 }
8936
8937
8938 }
8939 $r;
8940 } else {my ($self) = @_;
8941 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_value';
8942 }
8943 }
8944 sub _add_child_resource ($$) {
8945 my ($self, $disResource) = @_;
8946
8947 {
8948
8949
8950 {
8951
8952 local $Error::Depth = $Error::Depth + 1;
8953
8954 {
8955
8956
8957 push
8958 @{$self->{
8959 'curis'
8960 }||=[]},
8961 $disResource->
8962 uri_ref
8963 ;
8964
8965
8966
8967 }
8968
8969
8970 ;}
8971
8972 ;
8973
8974
8975 }
8976 }
8977 sub _add_dynamic_child_resource ($$) {
8978 my ($self, $disResource) = @_;
8979
8980 {
8981
8982
8983 {
8984
8985 local $Error::Depth = $Error::Depth + 1;
8986
8987 {
8988
8989
8990 push
8991 @{$self->{
8992 'dcuris'
8993 }||=[]},
8994 $disResource->
8995 uri_ref
8996 ;
8997
8998
8999
9000 }
9001
9002
9003 ;}
9004
9005 ;
9006
9007
9008 }
9009 }
9010 sub get_child_resource_list ($) {
9011 my ($self) = @_;
9012 my $r = [];
9013
9014 {
9015
9016
9017 {
9018
9019 local $Error::Depth = $Error::Depth + 1;
9020
9021 {
9022
9023
9024 my
9025 $db = $self->
9026 database
9027 ;
9028 $r = [map {
9029 $db->
9030 get_resource
9031 ($$_)
9032 } @{$self->{
9033 'curis'
9034 }}];
9035
9036
9037
9038 }
9039
9040
9041 ;}
9042
9043 ;
9044
9045
9046 }
9047 $r}
9048 sub get_dynamic_child_resource_list ($) {
9049 my ($self) = @_;
9050 my $r = [];
9051
9052 {
9053
9054
9055 {
9056
9057 local $Error::Depth = $Error::Depth + 1;
9058
9059 {
9060
9061
9062 my
9063 $db = $self->
9064 database
9065 ;
9066 $r = [map {
9067 $db->
9068 get_resource
9069 ($$_)
9070 } @{$self->{
9071 'dcuris'
9072 }}];
9073
9074
9075
9076 }
9077
9078
9079 ;}
9080
9081 ;
9082
9083
9084 }
9085 $r}
9086 sub get_child_resource_by_type ($$) {
9087 my ($self, $typeURI) = @_;
9088 my $r;
9089
9090 {
9091
9092
9093 {
9094
9095 local $Error::Depth = $Error::Depth + 1;
9096
9097 {
9098
9099
9100 my
9101 $db = $self->
9102 database
9103 ;
9104 C: for my $cr_uri (@{$self->{
9105 'curis'
9106 }||[]}) {
9107 my $cr = $db->
9108 get_resource
9109 ($$cr_uri);
9110 if ($cr->
9111 is_type_uri
9112 ($typeURI)) {
9113 $r = $cr;
9114 last C;
9115 }
9116 }
9117
9118
9119
9120 }
9121
9122
9123 ;}
9124
9125 ;
9126
9127
9128 }
9129 $r}
9130 sub get_child_resource_list_by_type ($$) {
9131 my ($self, $typeURI) = @_;
9132 my $r = [];
9133
9134 {
9135
9136
9137 {
9138
9139 local $Error::Depth = $Error::Depth + 1;
9140
9141 {
9142
9143
9144 my
9145 $db = $self->
9146 database
9147 ;
9148 $r = [grep {
9149 $_->
9150 is_type_uri
9151 ($typeURI)
9152 } map {
9153 $db->
9154 get_resource
9155 ($$_)
9156 } @{$self->{
9157 'curis'
9158 }||[]}];
9159
9160
9161
9162 }
9163
9164
9165 ;}
9166
9167 ;
9168
9169
9170 }
9171 $r}
9172 sub get_child_resource_by_name_and_type ($$$) {
9173 my ($self, $localName, $typeURI) = @_;
9174 my $r;
9175
9176 {
9177
9178
9179 {
9180
9181 local $Error::Depth = $Error::Depth + 1;
9182
9183 {
9184
9185
9186 my
9187 $db = $self->
9188 database
9189 ;
9190 C: for my $cr_uri (@{$self->{
9191 'curis'
9192 }||[]}) {
9193 my $cr = $db->
9194 get_resource
9195 ($$cr_uri);
9196 my $ln = $cr->
9197 local_name
9198 ;
9199 if (defined $ln and $ln eq $localName and
9200 $cr->
9201 is_type_uri
9202 ($typeURI)) {
9203 $r = $cr;
9204 last C;
9205 }
9206 }
9207
9208
9209
9210 }
9211
9212
9213 ;}
9214
9215 ;
9216
9217
9218 }
9219 $r}
9220 sub get_const_resource_by_name ($$) {
9221 my ($self, $localName) = @_;
9222 my $r;
9223
9224 {
9225
9226
9227 {
9228
9229 local $Error::Depth = $Error::Depth + 1;
9230
9231 {
9232
9233
9234 my
9235 @constGroup;
9236 my $db = $self->
9237 database
9238 ;
9239 C: for my $cr_uri (@{$self->{
9240 'curis'
9241 }||[]}) {
9242 my $cr = $db->
9243 get_resource
9244 ($$cr_uri);
9245 my $ln = $cr->
9246 local_name
9247 ;
9248 if ($ln and $ln eq $localName and
9249 $cr->
9250 is_type_uri
9251 (
9252 'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#Const'
9253 )) {
9254 $r = $cr;
9255 last C;
9256 } elsif ($cr->
9257 is_type_uri
9258
9259 (
9260 'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#ConstGroup'
9261 )) {
9262 push @constGroup, $cr;
9263 }
9264 }
9265 unless ($r) {
9266 D: for my $cg (@constGroup) {
9267 $r = $cg->
9268 get_child_resource_by_name_and_type
9269
9270 ($localName,
9271 'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#Const'
9272 );
9273 last D if $r;
9274 }
9275 }
9276
9277
9278
9279 }
9280
9281
9282 ;}
9283
9284 ;
9285
9286
9287 }
9288 $r}
9289 sub parent_resource ($;$) {
9290 if (@_ == 1) {my ($self) = @_;
9291 my $r;
9292
9293 {
9294
9295
9296 {
9297
9298 local $Error::Depth = $Error::Depth + 1;
9299
9300 {
9301
9302
9303 if
9304 ($self->{
9305 'puri'
9306 }) {
9307 $r = $self->
9308 database
9309
9310 ->
9311 get_resource
9312
9313 (${$self->{
9314 'puri'
9315 }});
9316 }
9317
9318
9319
9320 }
9321
9322
9323 ;}
9324
9325 ;
9326
9327
9328 }
9329 $r;
9330 } else {my ($self, $given) = @_;
9331
9332 {
9333
9334
9335 {
9336
9337 local $Error::Depth = $Error::Depth + 1;
9338
9339 {
9340
9341
9342 if
9343 ($given) {
9344 $self->{
9345 'puri'
9346 }
9347 = $given->
9348 uri_ref
9349 ;
9350 } else {
9351 CORE::delete $self->{
9352 'puri'
9353 };
9354 }
9355
9356
9357
9358 }
9359
9360
9361 ;}
9362
9363 ;
9364
9365
9366 }
9367 }
9368 }
9369 sub dynamic_parent_resource ($;$) {
9370 if (@_ == 1) {my ($self) = @_;
9371 my $r;
9372
9373 {
9374
9375
9376 {
9377
9378 local $Error::Depth = $Error::Depth + 1;
9379
9380 {
9381
9382
9383 if
9384 ($self->{
9385 'dpuri'
9386 }) {
9387 $r = $self->
9388 database
9389
9390 ->
9391 get_resource
9392
9393 (${$self->{
9394 'dpuri'
9395 }});
9396 }
9397
9398
9399
9400 }
9401
9402
9403 ;}
9404
9405 ;
9406
9407
9408 }
9409 $r;
9410 } else {my ($self, $given) = @_;
9411
9412 {
9413
9414
9415 {
9416
9417 local $Error::Depth = $Error::Depth + 1;
9418
9419 {
9420
9421
9422 if
9423 ($given) {
9424 $self->{
9425 'dpuri'
9426 }
9427 = $given->
9428 uri_ref
9429 ;
9430 } else {
9431 CORE::delete $self->{
9432 'dpuri'
9433 };
9434 }
9435
9436
9437
9438 }
9439
9440
9441 ;}
9442
9443 ;
9444
9445
9446 }
9447 }
9448 }
9449 sub owner_class_node_uri ($;$) {
9450 if (@_ == 1) {my ($self) = @_;
9451 my $r;
9452
9453 {
9454
9455 if
9456 (exists $self->{
9457 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ownerClass'
9458 }) {
9459 $r = $self->{
9460 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ownerClass'
9461 };
9462 } else {
9463 my $res = $self;
9464
9465
9466 {
9467
9468 local $Error::Depth = $Error::Depth + 1;
9469
9470 {
9471
9472
9473 RES:
9474 {
9475 if ($res->
9476 is_type_uri
9477
9478 (
9479 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#Class'
9480 )) {
9481 $r = $res->
9482 source_node_id
9483 ;
9484 } else {
9485 $res = $res->
9486 parent_resource
9487 ;
9488 redo RES if $res;
9489 }
9490 }
9491
9492
9493
9494 }
9495
9496
9497 ;}
9498
9499 ;
9500 $self->{
9501 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ownerClass'
9502 } = $r;
9503 }
9504
9505
9506 }
9507 $r;
9508 } else {my ($self) = @_;
9509 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_class_node_uri';
9510 }
9511 }
9512 sub dis_is_null_value ($;$) {
9513 if (@_ == 1) {my ($self) = @_;
9514 my $r = 0;
9515
9516 {
9517
9518 if
9519 ($self->{
9520 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Value'
9521 }) {
9522 $r = $self->{
9523 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Value'
9524 }->
9525 is_null
9526 ;
9527 }
9528
9529
9530 }
9531 $r;
9532 } else {my ($self) = @_;
9533 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_is_null_value';
9534 }
9535 }
9536 sub feature_name_list ($;$) {
9537 if (@_ == 1) {my ($self) = @_;
9538 my $r = [];
9539
9540 {
9541
9542
9543 {
9544
9545 local $Error::Depth = $Error::Depth + 1;
9546
9547 {
9548
9549
9550
9551 $r = [map {lc} @{$self->
9552 get_property_text_list
9553
9554 (
9555 'http://suika.fam.cx/~wakaba/archive/2004/dom/feature#name'
9556 )}];
9557 unless (@$r) {
9558 ## TODO: instance feature
9559 my $pr = $self->
9560 parent_resource
9561 ;
9562 if ($pr) {
9563 if ($pr->
9564 is_type_uri
9565 (
9566 'http://suika.fam.cx/~wakaba/archive/2004/dom/feature#Feature'
9567 ) and
9568 not $pr->
9569 is_anonymous
9570 ) {
9571 push @$r, @{$pr->
9572 feature_name_list
9573 };
9574 }
9575 }
9576 }
9577 unless (@$r) {
9578 if ($self->
9579 is_anonymous
9580 ) {
9581 my $ln = $self->
9582 local_name
9583 ;
9584 push @$r, lc $ln if defined $ln;
9585 } else {
9586 push @$r, lc $self->
9587 name_uri
9588 ;
9589 }
9590 }
9591
9592
9593
9594 }
9595
9596
9597 ;}
9598
9599 ;
9600
9601
9602 }
9603 $r;
9604 } else {my ($self) = @_;
9605 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'feature_name_list';
9606 }
9607 }
9608 sub multiple_properties_uri ($;$) {
9609 if (@_ == 1) {my ($self) = @_;
9610 my $r = '';
9611
9612 {
9613
9614
9615 {
9616
9617 local $Error::Depth = $Error::Depth + 1;
9618
9619 {
9620
9621
9622 if
9623 ($self->{
9624 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'
9625 }) {
9626 $r = $self->{
9627 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'
9628 }
9629 ->
9630 get_resource
9631
9632 ($self->
9633 database
9634 )
9635 ->
9636 uri
9637 ;
9638 } else {
9639 $r =
9640 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#OrderedList'
9641 ;
9642 }
9643
9644
9645
9646 }
9647
9648
9649 ;}
9650
9651 ;
9652
9653
9654 }
9655 $r;
9656 } else {my ($self) = @_;
9657 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'multiple_properties_uri';
9658 }
9659 }
9660 sub default_lextype_uri ($;$) {
9661 if (@_ == 1) {my ($self) = @_;
9662 my $r = '';
9663
9664 {
9665
9666
9667 {
9668
9669 local $Error::Depth = $Error::Depth + 1;
9670
9671 {
9672
9673
9674 if
9675 ($self->{
9676 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'
9677 }) {
9678 $r = $self->{
9679 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'
9680 }
9681 ->
9682 get_resource
9683
9684 ($self->
9685 database
9686 )
9687 ->
9688 uri
9689 ;
9690 } else {
9691 $r =
9692 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'
9693 ;
9694 }
9695
9696
9697
9698 }
9699
9700
9701 ;}
9702
9703 ;
9704
9705
9706 }
9707 $r;
9708 } else {my ($self) = @_;
9709 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'default_lextype_uri';
9710 }
9711 }
9712 sub get_super_resource_uri_list ($) {
9713 my ($self) = @_;
9714 my $r = [];
9715
9716 {
9717
9718
9719 $r = [
9720 (grep {$self->{subOf}->{$_}} keys %{$self->{subOf}}),
9721 (grep {$self->{aliasURI}->{$_}} keys %{$self->{aliasURI}}),
9722 ];
9723
9724
9725 }
9726 $r}
9727 use overload
9728 bool => sub () {1},
9729 '<=>' => sub ($$) {
9730 my ($self, $anotherResource) = @_;
9731 my $r = 0;
9732
9733 {
9734
9735 if
9736 (UNIVERSAL::isa ($anotherResource,
9737
9738 'Message::Util::DIS::ManakaiDISResourceDefinition'
9739 )) {
9740 $r = $self->{seq} <=> $anotherResource->{seq};
9741 } else {
9742 $r = $self->{uri} <=> $anotherResource;
9743 }
9744
9745
9746 }
9747 $r}
9748 ,
9749 fallback => 1;
9750 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISResourceDefinition>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
9751 {'',
9752 '1',
9753 '1.0',
9754 '1'},
9755 'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl',
9756 {'',
9757 '1',
9758 '1.0',
9759 '1'}};
9760 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISResourceDefinition>} = 2;
9761 package Message::Util::IF::DISResourceMV;
9762 our $VERSION = 20061231.0921;
9763 package Message::Util::DIS::ManakaiDISResourceMV;
9764 our $VERSION = 20061231.0921;
9765 push our @ISA, 'Message::Util::IF::DISResourceMV';
9766 sub mv_local_name ($;$) {
9767 if (@_ == 1) {my ($self) = @_;
9768 my $r = '';
9769
9770 {
9771
9772
9773 {
9774
9775 local $Error::Depth = $Error::Depth + 1;
9776
9777 {
9778
9779
9780 if
9781 (UNIVERSAL::isa ($self->{
9782 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9783 },
9784
9785 'Message::Util::IF::DVQNameValue'
9786 )) {
9787 $r = $self->{
9788 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9789 }->
9790 local_name
9791 ;
9792 } elsif (defined $self->{
9793 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9794 }) {
9795 $r = $self->{
9796 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9797 }->
9798 string_value
9799 ;
9800 } else {
9801 $r = $self->
9802 local_name
9803 ;
9804 }
9805
9806
9807
9808 }
9809
9810
9811 ;}
9812
9813 ;
9814
9815
9816 }
9817 $r;
9818 } else {my ($self) = @_;
9819 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_local_name';
9820 }
9821 }
9822 sub mv_prefix ($;$) {
9823 if (@_ == 1) {my ($self) = @_;
9824 my $r = '';
9825
9826 {
9827
9828
9829 {
9830
9831 local $Error::Depth = $Error::Depth + 1;
9832
9833 {
9834
9835
9836 if
9837 (UNIVERSAL::isa ($self->{
9838 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9839 },
9840
9841 'Message::Util::IF::DVQNameValue'
9842 )) {
9843 $r = $self->{
9844 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9845 }->
9846 prefix
9847 ;
9848 }
9849 unless (defined $r) {
9850 my $nsuri = $self->
9851 mv_namespace_uri
9852 ;
9853 if (defined $nsuri and $nsuri =~ /([A-Za-z]\w*)\W*$/) {
9854 $r = $1;
9855 } elsif (defined $nsuri) {
9856 $r = 'ns';
9857 }
9858 }
9859
9860
9861
9862 }
9863
9864
9865 ;}
9866
9867 ;
9868
9869
9870 }
9871 $r;
9872 } else {my ($self) = @_;
9873 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_prefix';
9874 }
9875 }
9876 sub mv_namespace_uri ($;$) {
9877 if (@_ == 1) {my ($self) = @_;
9878 my $r;
9879
9880 {
9881
9882
9883 {
9884
9885 local $Error::Depth = $Error::Depth + 1;
9886
9887 {
9888
9889
9890 if
9891 (UNIVERSAL::isa ($self->{
9892 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9893 },
9894
9895 'Message::Util::IF::DVQNameValue'
9896 )) {
9897 $r = $self->{
9898 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9899 }->
9900 namespace_uri
9901 ;
9902 } elsif (defined $self->{
9903 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName'
9904 }) {
9905 $r =
9906 undef
9907 ;
9908 } else {
9909 $r = $self->
9910 namespace_uri
9911 ;
9912 }
9913
9914
9915
9916 }
9917
9918
9919 ;}
9920
9921 ;
9922
9923
9924 }
9925 $r;
9926 } else {my ($self) = @_;
9927 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_namespace_uri';
9928 }
9929 }
9930 sub mv_owner_element_resource ($;$) {
9931 if (@_ == 1) {my ($self) = @_;
9932 my $r;
9933
9934 {
9935
9936
9937 {
9938
9939 local $Error::Depth = $Error::Depth + 1;
9940
9941 {
9942
9943
9944 if
9945 (exists $self->{
9946 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI'
9947 }) {
9948 $r = $self->
9949 database
9950
9951 ->
9952 get_resource
9953
9954 ($self->{
9955 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI'
9956 })
9957 if defined $self->{
9958 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI'
9959 };
9960 } else {
9961 $r = $self->
9962 parent_resource
9963 ;
9964 undef $r if $r and not $r->
9965 is_type_uri
9966 (
9967 'http://suika.fam.cx/~wakaba/archive/2004/dis/Markup#AnyOwnerElement'
9968 );
9969 $self->{
9970 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI'
9971 } = $r->
9972 uri
9973 if
9974 $r;
9975 }
9976
9977
9978
9979 }
9980
9981
9982 ;}
9983
9984 ;
9985
9986
9987 }
9988 $r;
9989 } else {my ($self) = @_;
9990 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_owner_element_resource';
9991 }
9992 }
9993 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISResourceMV>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
9994 {'',
9995 '1',
9996 '1.0',
9997 '1'}};
9998 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISResourceMV>} = 1;
9999 package Message::Util::IF::DISResourceProp;
10000 our $VERSION = 20061231.0921;
10001 package Message::Util::DIS::ManakaiDISPropertyAccessor;
10002 our $VERSION = 20061231.0921;
10003 push our @ISA, 'Message::Util::IF::DISResourceProp';
10004 sub get_property_value ($$) {
10005 my ($self, $propName) = @_;
10006 my $r;
10007
10008 {
10009
10010 if
10011 ($self->{$propName}) {
10012 $r = $self->{$propName}->[0];
10013 } else {
10014 my $pr = $self->
10015 database
10016
10017 ->
10018 get_resource
10019 ($propName);
10020 A: for (grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}}
10021 (keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})) {
10022 my $v = $self->{$_};
10023 if ($v) {
10024 $r = $v->[0];
10025 last A;
10026 }
10027 }
10028 }
10029
10030
10031 }
10032 $r}
10033 sub get_property_value_list ($$) {
10034 my ($self, $propName) = @_;
10035 my $r = [];
10036
10037 {
10038
10039 my
10040 $pr = $self->
10041 database
10042
10043 ->
10044 get_resource
10045 ($propName);
10046 $r = [map {@$_}
10047 grep {defined $_}
10048 map {$self->{$_}}
10049 grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}}
10050 (keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})];
10051
10052
10053 }
10054 $r}
10055 sub get_property_boolean ($$$) {
10056 my ($self, $propName, $default) = @_;
10057 my $r = 0;
10058
10059 {
10060
10061 if
10062 (ref $self->{$propName}) {
10063 $r = $self->{$propName}->
10064 value
10065 ?
10066 1 :
10067
10068 0
10069 ;
10070 $r = $default unless defined $r;
10071 } else {
10072 my $pr = $self->
10073 database
10074
10075 ->
10076 get_resource
10077 ($propName);
10078 C: {
10079 for (map {$self->{$_}}
10080 grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}}
10081 (keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})) {
10082 if (defined $_) {
10083 $r = $_->
10084 value
10085 ?
10086 1 :
10087
10088 0
10089 ;
10090 last C;
10091 }
10092 }
10093 $r = $default;
10094 } # C
10095 }
10096
10097
10098 }
10099 $r}
10100 sub get_property_text ($$;$) {
10101 my ($self, $propName, $default) = @_;
10102 my $r = '';
10103
10104 {
10105
10106 if
10107 (defined $self->{$propName}) {
10108 $r = $self->{$propName}->
10109 string_value
10110 ;
10111 $r = $default unless defined $r;
10112 } else {
10113 my $pr = $self->
10114 database
10115
10116 ->
10117 get_resource
10118 ($propName);
10119 C: {
10120 for (map {$self->{$_}}
10121 grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}}
10122 (keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})) {
10123 if (defined $_) {
10124 $r = $_->
10125 string_value
10126 ;
10127 last C;
10128 }
10129 }
10130 $r = $default;
10131 } # C
10132 }
10133
10134
10135 }
10136 $r}
10137 sub get_property_text_list ($$) {
10138 my ($self, $propName) = @_;
10139 my $r = [];
10140
10141 {
10142
10143 my
10144 $pr = $self->
10145 database
10146
10147 ->
10148 get_resource
10149 ($propName);
10150 $r = [map {$_->
10151 string_value
10152 }
10153 map {@$_}
10154 grep {$_}
10155 map {$self->{$_}}
10156 grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}}
10157 (keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})];
10158
10159
10160 }
10161 $r}
10162 sub get_property_resource ($$) {
10163 my ($self, $propName) = @_;
10164 my $r;
10165
10166 {
10167
10168
10169 {
10170
10171 local $Error::Depth = $Error::Depth + 1;
10172
10173 {
10174
10175
10176 my
10177 $v = $self->
10178 get_property_value
10179
10180 ($propName);
10181 if (UNIVERSAL::isa ($v,
10182 'Message::Util::IF::DVURIValue'
10183 )) {
10184 $r = $v->
10185 get_resource
10186
10187 ($self->
10188 database
10189 );
10190 }
10191
10192
10193
10194 }
10195
10196
10197 ;}
10198
10199 ;
10200
10201
10202 }
10203 $r}
10204 sub get_property_resource_list ($$%) {
10205 my ($self, $propName, %opt) = @_;
10206 my $r = [];
10207
10208 {
10209
10210
10211 $r = [];
10212
10213
10214 {
10215
10216 local $Error::Depth = $Error::Depth + 1;
10217
10218 {
10219
10220
10221 my
10222 $v = $self->
10223 get_property_value_list
10224 ($propName);
10225 my $db = $self->
10226 database
10227 ;
10228 for my $a (@$v) {
10229 if ($a->isa (
10230 'Message::Util::IF::DVURIValue'
10231 )) {
10232 push @$r, $a->
10233 get_resource
10234 ($db);
10235 }
10236 if ($opt{isa_recursive}) {
10237 my $b = $a->
10238 get_property
10239
10240 (
10241 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#stopISARecursive'
10242 );
10243 if ($b and $b->
10244 value
10245 ) {
10246 $opt{isa_recursive} =
10247 0
10248 ;
10249 }
10250 }
10251 }
10252
10253
10254
10255 }
10256
10257
10258 ;}
10259
10260 ;
10261
10262 if ($opt{recursive}) {
10263
10264
10265 {
10266
10267 local $Error::Depth = $Error::Depth + 1;
10268
10269 {
10270
10271
10272
10273 $opt{___recursive_isa_done} ||= {$self->
10274 uri
10275 =>
10276 1
10277 };
10278 my @p_res = @$r;
10279 for my $p_res (@p_res) {
10280 my $p_res_uri = $p_res->
10281 uri
10282 ;
10283 next if $opt{___recursive_isa_done}->{$p_res_uri};
10284 $opt{___recursive_isa_done}->{$p_res_uri} =
10285 1
10286 ;
10287 push @$r, @{$p_res->
10288 get_property_resource_list
10289
10290 ($propName, recursive =>
10291 1
10292 ,
10293 recursive_isa => $opt{recursive_isa},
10294 ___recursive_isa_done => $opt{___recursive_isa_done})};
10295 }
10296
10297
10298
10299 }
10300
10301
10302 ;}
10303
10304 ;
10305 }
10306 if ($opt{recursive_isa}) {
10307
10308
10309 {
10310
10311 local $Error::Depth = $Error::Depth + 1;
10312
10313 {
10314
10315
10316
10317 $opt{recursive_isa_prop_name} =
10318 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ISA'
10319 unless
10320 defined $opt{recursive_isa_prop_name};
10321 $opt{___recursive_isa_done} ||= {$self->
10322 uri
10323 =>
10324 1
10325 };
10326 my @p_res = @$r;
10327 for my $p_res (@p_res) {
10328 my $p_res_uri = $p_res->
10329 uri
10330 ;
10331 next if $opt{___recursive_isa_done}->{$p_res_uri};
10332 $opt{___recursive_isa_done}->{$p_res_uri} =
10333 1
10334 ;
10335 push @$r, @{$p_res->
10336 get_property_resource_list
10337
10338 ($opt{recursive_isa_prop_name},
10339 recursive =>
10340 1
10341 ,
10342 ___recursive_isa_done => $opt{___recursive_isa_done})};
10343 }
10344
10345
10346
10347 }
10348
10349
10350 ;}
10351
10352 ;
10353 }
10354 if ($opt{isa_recursive}) {
10355
10356
10357 {
10358
10359 local $Error::Depth = $Error::Depth + 1;
10360
10361 {
10362
10363
10364
10365 $opt{isa_recursive_prop_name} =
10366 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ISA'
10367 unless
10368 defined $opt{isa_recursive_prop_name};
10369 my $self_uri = $self->
10370 uri
10371 ;
10372 $opt{___recursive_isa_done} ||= {$self_uri =>
10373 1
10374 };
10375 $opt{___isa_recursive_done} ||= {$self_uri =>
10376 1
10377 };
10378 my @p_res = @{$self->
10379 get_property_resource_list
10380
10381 ($opt{isa_recursive_prop_name}, recursive_isa =>
10382 0
10383 ,
10384 recursive =>
10385 0
10386 ,
10387 )};
10388 for my $p_res (@p_res) {
10389 my $p_res_uri = $p_res->
10390 uri
10391 ;
10392 next if $opt{___isa_recursive_done}->{$p_res_uri};
10393 $opt{___isa_recursive_done}->{$p_res_uri} =
10394 1
10395 ;
10396 push @$r, @{$p_res->
10397 get_property_resource_list
10398
10399 ($propName, recursive_isa =>
10400 0
10401 ,
10402 recursive =>
10403 0
10404 ,
10405 isa_recursive =>
10406 1
10407 ,
10408 ___isa_recursive_done =>
10409 $opt{___isa_recursive_done})};
10410 }
10411
10412
10413
10414 }
10415
10416
10417 ;}
10418
10419 ;
10420 }
10421
10422
10423 }
10424 $r}
10425 sub add_property_resource_list ($$$) {
10426 my ($self, $propName, $res) = @_;
10427
10428 {
10429
10430 if
10431 ($self->{$propName}) {
10432 my $uriv;
10433
10434
10435 {
10436
10437
10438 $uriv =
10439 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
10440
10441 (
10442 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
10443 , $res->uri);
10444
10445
10446 {
10447
10448 local $Error::Depth = $Error::Depth + 1;
10449
10450 {
10451
10452
10453
10454 $uriv->
10455 name
10456 ($propName);
10457
10458
10459
10460 }
10461
10462
10463 ;}
10464
10465 ;
10466
10467
10468 }
10469
10470 ;
10471 $self->{$propName}->
10472 add_item
10473 ($uriv);
10474 } else {
10475
10476
10477 {
10478
10479
10480 $self->{$propName} =
10481 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_ordered_list
10482
10483 ('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI', base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI');
10484
10485
10486 }
10487
10488 ;
10489 my $uriv;
10490
10491
10492 {
10493
10494
10495 $uriv =
10496 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
10497
10498 (
10499 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
10500 , $res->uri);
10501
10502
10503 {
10504
10505 local $Error::Depth = $Error::Depth + 1;
10506
10507 {
10508
10509
10510
10511 $uriv->
10512 name
10513 ($propName);
10514
10515
10516
10517 }
10518
10519
10520 ;}
10521
10522 ;
10523
10524
10525 }
10526
10527 ;
10528 $self->{$propName}->
10529 add_item
10530 ($uriv);
10531 }
10532
10533
10534 }
10535 }
10536 sub add_property_resource_ulist ($$$) {
10537 my ($self, $propName, $res) = @_;
10538
10539 {
10540
10541 if
10542 ($self->{$propName}) {
10543 my $uriv;
10544
10545
10546 {
10547
10548
10549 $uriv =
10550 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
10551
10552 (
10553 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
10554 , $res->uri);
10555
10556
10557 {
10558
10559 local $Error::Depth = $Error::Depth + 1;
10560
10561 {
10562
10563
10564
10565 $uriv->
10566 name
10567 ($propName);
10568
10569
10570
10571 }
10572
10573
10574 ;}
10575
10576 ;
10577
10578
10579 }
10580
10581 ;
10582 $self->{$propName}->
10583 add_item
10584 ($uriv);
10585 } else {
10586
10587
10588 {
10589
10590
10591 $self->{$propName} =
10592 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list
10593
10594 ('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI', base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI');
10595
10596
10597 }
10598
10599 ;
10600 my $uriv;
10601
10602
10603 {
10604
10605
10606 $uriv =
10607 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
10608
10609 (
10610 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
10611 , $res->uri);
10612
10613
10614 {
10615
10616 local $Error::Depth = $Error::Depth + 1;
10617
10618 {
10619
10620
10621
10622 $uriv->
10623 name
10624 ($propName);
10625
10626
10627
10628 }
10629
10630
10631 ;}
10632
10633 ;
10634
10635
10636 }
10637
10638 ;
10639 $self->{$propName}->
10640 add_item
10641 ($uriv);
10642 }
10643
10644
10645 }
10646 }
10647 sub add_peoperty_uri_ulist ($$$) {
10648 my ($self, $propName, $uri) = @_;
10649
10650 {
10651
10652
10653 {
10654
10655 local $Error::Depth = $Error::Depth + 1;
10656
10657 {
10658
10659
10660 if
10661 ($self->{$propName}) {
10662 my $uriv;
10663
10664
10665 {
10666
10667
10668 $uriv =
10669 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
10670
10671 (
10672 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
10673 , $uri);
10674
10675
10676 {
10677
10678 local $Error::Depth = $Error::Depth + 1;
10679
10680 {
10681
10682
10683
10684 $uriv->
10685 name
10686 ($propName);
10687
10688
10689
10690 }
10691
10692
10693 ;}
10694
10695 ;
10696
10697
10698 }
10699
10700 ;
10701 $self->{$propName}->
10702 add_item
10703 ($uriv);
10704 } else {
10705
10706
10707 {
10708
10709
10710 $self->{$propName} =
10711 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list
10712
10713 ('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI', base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI');
10714
10715
10716 }
10717
10718 ;
10719 my $uriv;
10720
10721
10722 {
10723
10724
10725 $uriv =
10726 Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value
10727
10728 (
10729 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'
10730 , $uri);
10731
10732
10733 {
10734
10735 local $Error::Depth = $Error::Depth + 1;
10736
10737 {
10738
10739
10740
10741 $uriv->
10742 name
10743 ($propName);
10744
10745
10746
10747 }
10748
10749
10750 ;}
10751
10752 ;
10753
10754
10755 }
10756
10757 ;
10758 $self->{$propName}->
10759 add_item
10760 ($uriv);
10761 }
10762
10763
10764
10765 }
10766
10767
10768 ;}
10769
10770 ;
10771
10772
10773 }
10774 }
10775 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISPropertyAccessor>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
10776 {'',
10777 '1',
10778 '1.0',
10779 '1'}};
10780 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISPropertyAccessor>} = 1;
10781 package Message::Util::IF::DISException;
10782 our $VERSION = 20061231.0921;
10783 push our @ISA, 'Message::Util::Error';
10784
10785 sub ___error_def () {
10786 \%Message::Util::IF::DISException::ErrorDef
10787 }
10788
10789 sub HIERARCHY_REQUEST_ERR () {
10790 3}
10791 $Message::Util::IF::DISException::ErrorDef{'HIERARCHY_REQUEST_ERR'} = {'description',
10792 'An attempt is made to break the hierarchy.',
10793 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
10794 '3'};
10795 $Message::Util::IF::DISException::ErrorDef{'HIERARCHY_REQUEST_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#MERGE_ITSELF_ERR'} = {'description',
10796 'An attempt is made to merge the resource <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri} );> to itself'};
10797 sub NOT_SUPPORTED_ERR () {
10798 9}
10799 $Message::Util::IF::DISException::ErrorDef{'NOT_SUPPORTED_ERR'} = {'description',
10800 'An attempt is made to do something the implementation does not support.',
10801 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
10802 '9'};
10803 $Message::Util::IF::DISException::ErrorDef{'NOT_SUPPORTED_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_MEDIA_TYPE_ERR'} = {'description',
10804 '%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": } );%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType}, prefix => { (Element type: <}, suffix => {>) } );Media type <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is not supported'};
10805 $Message::Util::IF::DISException::ErrorDef{'NOT_SUPPORTED_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ELEMENT_TYPE_ERR'} = {'description',
10806 'Element type "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});" is not supported'};
10807 sub INVALID_STATE_ERR () {
10808 11}
10809 $Message::Util::IF::DISException::ErrorDef{'INVALID_STATE_ERR'} = {'description',
10810 'An attempt is made to use an object that is not (or no longer) usable.',
10811 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
10812 '11'};
10813 $Message::Util::IF::DISException::ErrorDef{'INVALID_STATE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ASSOCIATED_DB_ERR'} = {'description',
10814 'No <QUOTE::dis> database has been associated with this document.'};
10815 sub INVALID_SOURCE_ERR () {
10816 501}
10817 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'} = {'description',
10818 'The source input is well-formed but invalid.',
10819 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
10820 '501'};
10821 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_MODULE_QNAME_ERR'} = {'description',
10822 'The <Q::dis:Module> element must have its <Q::dis:QName> attribute.'};
10823 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_LOCAL_NAME_ERR'} = {'description',
10824 'The resource does not have a local name.'};
10825 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNABLE_TO_GET_MODULE_ERR'} = {'description',
10826 'Unable to get the module source of <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>'};
10827 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_FOR_QNAME_ERR'} = {'description',
10828 'A <Q::dis:ForDef> element must have <Q::dis:QName> attribute.'};
10829 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_ALREADY_DEFINED_ERR'} = {'description',
10830 '<QUOTE::For> <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is already defined'};
10831 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_ALREADY_DEFINED_ERR'} = {'description',
10832 '%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI}, prefix => {Module <}, suffix => {>: }) ;Resource <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is already defined'};
10833 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ELEMENT_NOT_ALLOWED_ERR'} = {'description',
10834 'Module <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>: Element of type <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});> is not allowed here'};
10835 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REQUIRED_ATTR_ERR'} = {'description',
10836 'Attribute <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});> must be specified'};
10837 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_NOT_DEFINED_ERR'} = {'description',
10838 '<QUOTE::For> <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is not defined'};
10839 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR'} = {'description',
10840 '%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI}, prefix => {Module <}, suffix => {>: }) ;%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNodePath}, suffix => {: }) ;%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": }) ;%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#parentURI}, prefix => {(In <}, suffix => {>) }) ;Resource%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => { <}, suffix => {>});%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName}, prefix => { "}, suffix => {"}); is not defined or wrong type%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType}, prefix => { (<}, suffix => {> is expected)});'};
10841 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_SOURCE_NODE_ERR'} = {'description',
10842 'A resource does not have associated node in the source tree.'};
10843 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESERVED_PERL_METHOD_NAME_ERR'} = {'description',
10844 'A reserved Perl method name is used.'};
10845 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_DIS_TYPE_ERR'} = {'description',
10846 'Resource "%t (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});" has no "dis:Type" attribute'};
10847 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_METHOD_RETURN_ERR'} = {'description',
10848 'Method "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName});" does not have "Return" child'};
10849 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ATTR_GET_ERR'} = {'description',
10850 'A <Q::DISLang:Attribute> resource does not have any <Q::DISLang:AttributeGet> child.'};
10851 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#INTERFACE_CLASS_METHOD_ERR'} = {'description',
10852 'An attempt is made to call a static (class) method from an interface.'};
10853 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#BROKEN_PARAM_SPEC_ERR'} = {'description',
10854 '%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": });Broken parameter specification'};
10855 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_ELEMENT_TYPE_ERR'} = {'description',
10856 '%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": });Element type name is not specified'};
10857 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_PERL_PACKAGE_NAME_ERR'} = {'description',
10858 '%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => {<}, suffix => {>: });Perl package name is not defined'};
10859 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_EXCEPTION_TYPE_ERR'} = {'description',
10860 'An exception type specification is required.'};
10861 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_CODE_NAME_ERR'} = {'description',
10862 'A code name specification is required.'};
10863 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_CODE_NOT_DEFINED_ERR'} = {'description',
10864 'Resource%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => { "}, suffix => {"}); has no Perl code definition'};
10865 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_METHOD_ERR'} = {'description',
10866 'A preprocessing instruction which is only allowed in method definitions is used in a code which is not a method.'};
10867 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_FOR_ERR'} = {'description',
10868 'A <QUOTE::for> specification is required.'};
10869 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_ASSERT_TYPE_ERR'} = {'description',
10870 'An assertion type specification is required.'};
10871 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_BLOCK_NOT_ALLOWED_ERR'} = {'description',
10872 'A preprocessing instruction block occurred with element type which does not allow it.'};
10873 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NON_NAMED_PARAMETER_AFTER_NAMED_ERR'} = {'description',
10874 'A non-named method parameter following any named method parameter is occurred.'};
10875 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#DISPERL_NO_VALUE_ALLOWED_ERR'} = {'description',
10876 'An element node have a value but the definition of that element type does not allow it.'};
10877 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_CONST_VALUE_ERR'} = {'description',
10878 'The source element node for a constant value resource does not have <Q::dis:Value> attribute.'};
10879 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ATTR_SET_ERR'} = {'description',
10880 'An attribute setter is referred but the attribute does not define any setter.'};
10881 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_SUBROUTINE_ALREADY_DEFINED_ERR'} = {'description',
10882 'A resource defines a Perl subroutine whose name is same as another subroutine.'};
10883 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_OPERATOR_ALREADY_OVERLOADED_ERR'} = {'description',
10884 'A resource is defined to overload a Perl operator which is already overloaded by another resource.'};
10885 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_UNUSED_SUBROUTINE_ERR'} = {'description',
10886 'A resource defines a Perl subroutine but it is not used.'};
10887 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_LICENSE_ATTR_ERR'} = {'description',
10888 'The <Q::dis:Module> element does not have the <Q::dis:License> attribute.'};
10889 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ROLE_ERR'} = {'description',
10890 'Role <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is not supported'};
10891 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REFLECT_GET_DEFINED_ERR'} = {'description',
10892 'An attribute is defined to reflect an element attribute but no reflecting attribute getter template is defined.'};
10893 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REFLECT_SET_DEFINED_ERR'} = {'description',
10894 'An attribute is defined to reflect an element attribute but no reflecting attribute setter template is defined.'};
10895 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_END_TAG_ERR'} = {'description',
10896 'End tag for element "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});" is required%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => { (}, suffix => {)});'};
10897 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_RDF_TYPE_ERR'} = {'description',
10898 'Resource%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => { "}, suffix => {"}); does not have "rdf:type" attribute'};
10899 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_HASH_KEY_ALREADY_DEFINED_ERR'} = {'description',
10900 '<%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>: Hash key "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#hashKeyName});" in <%p (mame => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#hashKeyScope});> is already defined for <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherURI});>'};
10901 $Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_EXCEPTION_CLASS_ERR'} = {'description',
10902 'Exception interface <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>: There is no class that implements this interface'};
10903 package Message::Util::DIS::ManakaiDISException;
10904 our $VERSION = 20061231.0921;
10905 push our @ISA, 'Message::Util::Error::DOMException::Exception',
10906 'Message::Util::IF::DISException';
10907 sub text ($;$) {
10908 if (@_ == 1) {my ($self) = @_;
10909 my $r = '';
10910
10911 {
10912
10913
10914 $r = $self->SUPER::text;
10915 if (defined $self->{
10916 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri'
10917 }) {
10918 $r = '<' . $self->{
10919 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri'
10920 } . '>: ' . $r;
10921 }
10922 if (defined $self->{
10923 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode'
10924 }) {
10925 $r = 'Node ' . $self->{
10926 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode'
10927 }->
10928 node_path
10929
10930 . ': ' . $r;
10931 }
10932
10933
10934 }
10935 $r;
10936 } else {my ($self) = @_;
10937 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISException', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'text';
10938 }
10939 }
10940 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISException>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core',
10941 {'',
10942 '1',
10943 '1.0',
10944 '1'}};
10945 $Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISException>} = 1;
10946 for ($Message::DOM::IF::DOMImplementation::, $Message::Markup::IF::SWCFGParser::, $Message::Util::IF::DISAnyResourcePerl::, $Message::Util::IF::DISModulePerl::, $Message::Util::IF::DISResourcePerlModule::){}
10947 ## License: <http://suika.fam.cx/~wakaba/archive/2004/8/18/license#Perl+MPL>
10948 1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24