1 // Copyright (c) 1996 James Clark
2 // See the file copying.txt for copying permission.
3
4 #include "stylelib.h"
5 #include "FOTBuilder.h"
6 #include "Owner.h"
7 #include "macros.h"
8
9 #ifdef DSSSL_NAMESPACE
10 namespace DSSSL_NAMESPACE {
11 #endif
12
symbolName(Symbol sym)13 const char *FOTBuilder::symbolName(Symbol sym)
14 {
15 if (sym < 2 || sym >= int(nSymbols))
16 return 0;
17 // These must match the order in Symbol
18 static const char *names[] = {
19 "not-applicable",
20 "ultra-condensed",
21 "extra-condensed",
22 "condensed",
23 "semi-condensed",
24 "ultra-light",
25 "extra-light",
26 "light",
27 "semi-light",
28 "medium",
29 "semi-expanded",
30 "expanded",
31 "extra-expanded",
32 "ultra-expanded",
33 "semi-bold",
34 "bold",
35 "extra-bold",
36 "ultra-bold",
37 "upright",
38 "oblique",
39 "back-slanted-oblique",
40 "italic",
41 "back-slanted-italic",
42 "start",
43 "end",
44 "center",
45 "justify",
46 "spread-inside",
47 "spread-outside",
48 "page-inside",
49 "page-outside",
50 "wrap",
51 "asis",
52 "asis-wrap",
53 "asis-truncate",
54 "none",
55 "before",
56 "through",
57 "after",
58 "top-to-bottom",
59 "left-to-right",
60 "bottom-to-top",
61 "right-to-left",
62 "inside",
63 "outside",
64 "horizontal",
65 "vertical",
66 "escapement",
67 "line-progression",
68 "math",
69 "ordinary",
70 "operator",
71 "binary",
72 "relation",
73 "opening",
74 "closing",
75 "punctuation",
76 "inner",
77 "space",
78 "page",
79 "page-region",
80 "column-set",
81 "column",
82 "max",
83 "max-uniform",
84 "miter",
85 "round",
86 "join",
87 "butt",
88 "square",
89 "loose",
90 "normal",
91 "kern",
92 "tight",
93 "touch",
94 "preserve",
95 "collapse",
96 "ignore",
97 "relative",
98 "display",
99 "inline",
100 "border",
101 "background",
102 "both",
103 "base",
104 "font",
105 "top",
106 "bottom",
107 "spread",
108 "solid",
109 "outline",
110 "with",
111 "against",
112 "force",
113 "independent",
114 "pile",
115 "sup-out",
116 "sub-out",
117 "lead-edge",
118 "trail-edge",
119 "explicit",
120 "row-major",
121 "column-major",
122 };
123 ASSERT(SIZEOF(names) == nSymbols - 2);
124 return names[sym - 2];
125 }
126
asSaveFOTBuilder()127 SaveFOTBuilder *FOTBuilder::asSaveFOTBuilder()
128 {
129 return 0;
130 }
131
~FOTBuilder()132 FOTBuilder::~FOTBuilder()
133 {
134 }
135
start()136 void FOTBuilder::start()
137 {
138 }
139
end()140 void FOTBuilder::end()
141 {
142 }
143
atomic()144 void FOTBuilder::atomic()
145 {
146 start();
147 end();
148 }
149
characters(const Char *,size_t)150 void FOTBuilder::characters(const Char *, size_t)
151 {
152 }
153
charactersFromNode(const NodePtr &,const Char * s,size_t n)154 void FOTBuilder::charactersFromNode(const NodePtr &, const Char *s, size_t n)
155 {
156 characters(s, n);
157 }
158
character(const CharacterNIC & nic)159 void FOTBuilder::character(const CharacterNIC &nic)
160 {
161 if (nic.specifiedC & (1 << CharacterNIC::cChar))
162 characters(&nic.ch, 1);
163 atomic();
164 }
165
startSequence()166 void FOTBuilder::startSequence()
167 {
168 start();
169 }
170
endSequence()171 void FOTBuilder::endSequence()
172 {
173 end();
174 }
175
startLineField(const LineFieldNIC &)176 void FOTBuilder::startLineField(const LineFieldNIC &)
177 {
178 start();
179 }
180
endLineField()181 void FOTBuilder::endLineField()
182 {
183 end();
184 }
185
paragraphBreak(const ParagraphNIC &)186 void FOTBuilder::paragraphBreak(const ParagraphNIC &)
187 {
188 atomic();
189 }
190
externalGraphic(const ExternalGraphicNIC &)191 void FOTBuilder::externalGraphic(const ExternalGraphicNIC &)
192 {
193 atomic();
194 }
195
rule(const RuleNIC &)196 void FOTBuilder::rule(const RuleNIC &)
197 {
198 atomic();
199 }
200
alignmentPoint()201 void FOTBuilder::alignmentPoint()
202 {
203 atomic();
204 }
205
formattingInstruction(const StringC &)206 void FOTBuilder::formattingInstruction(const StringC &)
207 {
208 atomic();
209 }
210
startParagraph(const ParagraphNIC &)211 void FOTBuilder::startParagraph(const ParagraphNIC &)
212 {
213 start();
214 }
215
endParagraph()216 void FOTBuilder::endParagraph()
217 {
218 end();
219 }
220
startDisplayGroup(const DisplayGroupNIC &)221 void FOTBuilder::startDisplayGroup(const DisplayGroupNIC &)
222 {
223 start();
224 }
225
endDisplayGroup()226 void FOTBuilder::endDisplayGroup()
227 {
228 end();
229 }
230
startScroll()231 void FOTBuilder::startScroll()
232 {
233 start();
234 }
235
endScroll()236 void FOTBuilder::endScroll()
237 {
238 end();
239 }
240
startLink(const Address &)241 void FOTBuilder::startLink(const Address &)
242 {
243 start();
244 }
245
endLink()246 void FOTBuilder::endLink()
247 {
248 end();
249 }
250
startMarginalia()251 void FOTBuilder::startMarginalia()
252 {
253 start();
254 }
255
endMarginalia()256 void FOTBuilder::endMarginalia()
257 {
258 end();
259 }
260
startMultiMode(const FOTBuilder::MultiMode *,const Vector<FOTBuilder::MultiMode> &,Vector<FOTBuilder * > & ports)261 void FOTBuilder::startMultiMode(const FOTBuilder::MultiMode *,
262 const Vector<FOTBuilder::MultiMode> &,
263 Vector<FOTBuilder *> &ports)
264 {
265 start();
266 for (size_t i = 0; i < ports.size(); i++)
267 ports[i] = this;
268 }
269
endMultiMode()270 void FOTBuilder::endMultiMode()
271 {
272 end();
273 }
274
startScore(Symbol)275 void FOTBuilder::startScore(Symbol)
276 {
277 start();
278 }
279
startScore(Char)280 void FOTBuilder::startScore(Char)
281 {
282 start();
283 }
284
startScore(const LengthSpec &)285 void FOTBuilder::startScore(const LengthSpec &)
286 {
287 start();
288 }
289
endScore()290 void FOTBuilder::endScore()
291 {
292 end();
293 }
294
startLeader(const LeaderNIC &)295 void FOTBuilder::startLeader(const LeaderNIC &)
296 {
297 start();
298 }
299
endLeader()300 void FOTBuilder::endLeader()
301 {
302 end();
303 }
304
startBox(const BoxNIC &)305 void FOTBuilder::startBox(const BoxNIC &)
306 {
307 start();
308 }
309
endBox()310 void FOTBuilder::endBox()
311 {
312 end();
313 }
314
startSideline()315 void FOTBuilder::startSideline()
316 {
317 }
318
endSideline()319 void FOTBuilder::endSideline()
320 {
321 }
322
startSimplePageSequence()323 void FOTBuilder::startSimplePageSequence()
324 {
325 start();
326 }
327
endSimplePageSequence()328 void FOTBuilder::endSimplePageSequence()
329 {
330 end();
331 }
332
startSimplePageSequenceHeaderFooter(unsigned)333 void FOTBuilder::startSimplePageSequenceHeaderFooter(unsigned)
334 {
335 }
336
endSimplePageSequenceHeaderFooter(unsigned)337 void FOTBuilder::endSimplePageSequenceHeaderFooter(unsigned)
338 {
339 }
340
endAllSimplePageSequenceHeaderFooter()341 void FOTBuilder::endAllSimplePageSequenceHeaderFooter()
342 {
343 }
344
pageNumber()345 void FOTBuilder::pageNumber()
346 {
347 }
348
startTable(const TableNIC &)349 void FOTBuilder::startTable(const TableNIC &)
350 {
351 start();
352 }
353
endTable()354 void FOTBuilder::endTable()
355 {
356 end();
357 }
358
tableBeforeRowBorder()359 void FOTBuilder::tableBeforeRowBorder()
360 {
361 atomic();
362 }
363
tableAfterRowBorder()364 void FOTBuilder::tableAfterRowBorder()
365 {
366 atomic();
367 }
368
tableBeforeColumnBorder()369 void FOTBuilder::tableBeforeColumnBorder()
370 {
371 atomic();
372 }
373
tableAfterColumnBorder()374 void FOTBuilder::tableAfterColumnBorder()
375 {
376 atomic();
377 }
378
startTablePart(const TablePartNIC &,FOTBuilder * & header,FOTBuilder * & footer)379 void FOTBuilder::startTablePart(const TablePartNIC &, FOTBuilder *&header, FOTBuilder *&footer)
380 {
381 start();
382 header = footer = this;
383 }
384
endTablePart()385 void FOTBuilder::endTablePart()
386 {
387 end();
388 }
389
tableColumn(const TableColumnNIC &)390 void FOTBuilder::tableColumn(const TableColumnNIC &)
391 {
392 atomic();
393 }
394
startTableRow()395 void FOTBuilder::startTableRow()
396 {
397 start();
398 }
399
endTableRow()400 void FOTBuilder::endTableRow()
401 {
402 end();
403 }
404
startTableCell(const TableCellNIC &)405 void FOTBuilder::startTableCell(const TableCellNIC &)
406 {
407 start();
408 }
409
endTableCell()410 void FOTBuilder::endTableCell()
411 {
412 end();
413 }
414
tableCellBeforeRowBorder()415 void FOTBuilder::tableCellBeforeRowBorder()
416 {
417 atomic();
418 }
419
tableCellAfterRowBorder()420 void FOTBuilder::tableCellAfterRowBorder()
421 {
422 atomic();
423 }
424
tableCellBeforeColumnBorder()425 void FOTBuilder::tableCellBeforeColumnBorder()
426 {
427 atomic();
428 }
429
tableCellAfterColumnBorder()430 void FOTBuilder::tableCellAfterColumnBorder()
431 {
432 atomic();
433 }
434
startMathSequence()435 void FOTBuilder::startMathSequence()
436 {
437 start();
438 }
439
endMathSequence()440 void FOTBuilder::endMathSequence()
441 {
442 end();
443 }
444
startFraction(FOTBuilder * & numerator,FOTBuilder * & denominator)445 void FOTBuilder::startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator)
446 {
447 start();
448 numerator = denominator = this;
449 }
450
endFraction()451 void FOTBuilder::endFraction()
452 {
453 end();
454 }
455
fractionBar()456 void FOTBuilder::fractionBar()
457 {
458 atomic();
459 }
460
startUnmath()461 void FOTBuilder::startUnmath()
462 {
463 start();
464 }
465
endUnmath()466 void FOTBuilder::endUnmath()
467 {
468 end();
469 }
470
startSuperscript()471 void FOTBuilder::startSuperscript()
472 {
473 start();
474 }
475
endSuperscript()476 void FOTBuilder::endSuperscript()
477 {
478 end();
479 }
480
startSubscript()481 void FOTBuilder::startSubscript()
482 {
483 start();
484 }
485
endSubscript()486 void FOTBuilder::endSubscript()
487 {
488 end();
489 }
490
startScript(FOTBuilder * & preSup,FOTBuilder * & preSub,FOTBuilder * & postSup,FOTBuilder * & postSub,FOTBuilder * & midSup,FOTBuilder * & midSub)491 void FOTBuilder::startScript(FOTBuilder *&preSup,
492 FOTBuilder *&preSub,
493 FOTBuilder *&postSup,
494 FOTBuilder *&postSub,
495 FOTBuilder *&midSup,
496 FOTBuilder *&midSub)
497 {
498 start();
499 preSup = preSub = postSup = postSub = midSup = midSub = this;
500 }
501
endScript()502 void FOTBuilder::endScript()
503 {
504 end();
505 }
506
startMark(FOTBuilder * & overMark,FOTBuilder * & underMark)507 void FOTBuilder::startMark(FOTBuilder *&overMark, FOTBuilder *&underMark)
508 {
509 start();
510 overMark = underMark = this;
511 }
512
endMark()513 void FOTBuilder::endMark()
514 {
515 end();
516 }
517
startFence(FOTBuilder * & open,FOTBuilder * & close)518 void FOTBuilder::startFence(FOTBuilder *&open, FOTBuilder *&close)
519 {
520 start();
521 open = close = this;
522 }
523
endFence()524 void FOTBuilder::endFence()
525 {
526 end();
527 }
528
startRadical(FOTBuilder * & degree)529 void FOTBuilder::startRadical(FOTBuilder *°ree)
530 {
531 start();
532 degree = this;
533 }
534
endRadical()535 void FOTBuilder::endRadical()
536 {
537 end();
538 }
539
radicalRadical(const CharacterNIC &)540 void FOTBuilder::radicalRadical(const CharacterNIC &)
541 {
542 atomic();
543 }
544
radicalRadicalDefaulted()545 void FOTBuilder::radicalRadicalDefaulted()
546 {
547 }
548
startMathOperator(FOTBuilder * & oper,FOTBuilder * & lowerLimit,FOTBuilder * & upperLimit)549 void FOTBuilder::startMathOperator(FOTBuilder *&oper,
550 FOTBuilder *&lowerLimit,
551 FOTBuilder *&upperLimit)
552 {
553 start();
554 oper = lowerLimit = upperLimit = this;
555 }
556
endMathOperator()557 void FOTBuilder::endMathOperator()
558 {
559 end();
560 }
561
startGrid(const GridNIC &)562 void FOTBuilder::startGrid(const GridNIC &)
563 {
564 start();
565 }
566
endGrid()567 void FOTBuilder::endGrid()
568 {
569 end();
570 }
571
startGridCell(const GridCellNIC &)572 void FOTBuilder::startGridCell(const GridCellNIC &)
573 {
574 start();
575 }
576
endGridCell()577 void FOTBuilder::endGridCell()
578 {
579 end();
580 }
581
extension(const ExtensionFlowObj &,const NodePtr &)582 void FOTBuilder::extension(const ExtensionFlowObj &, const NodePtr &)
583 {
584 atomic();
585 }
586
startExtension(const CompoundExtensionFlowObj &,const NodePtr &,Vector<FOTBuilder * > & ports)587 void FOTBuilder::startExtension(const CompoundExtensionFlowObj &,
588 const NodePtr &,
589 Vector<FOTBuilder *> &ports)
590 {
591 for (size_t i = 0; i < ports.size(); i++)
592 ports[i] = this;
593 start();
594 }
595
endExtension(const CompoundExtensionFlowObj &)596 void FOTBuilder::endExtension(const CompoundExtensionFlowObj &)
597 {
598 end();
599 }
600
601
setFontSize(Length)602 void FOTBuilder::setFontSize(Length)
603 {
604 }
605
setFontFamilyName(const StringC &)606 void FOTBuilder::setFontFamilyName(const StringC &)
607 {
608 }
609
setFontWeight(Symbol)610 void FOTBuilder::setFontWeight(Symbol)
611 {
612 }
613
setFontPosture(Symbol)614 void FOTBuilder::setFontPosture(Symbol)
615 {
616 }
617
setStartIndent(const LengthSpec &)618 void FOTBuilder::setStartIndent(const LengthSpec &)
619 {
620 }
621
setEndIndent(const LengthSpec &)622 void FOTBuilder::setEndIndent(const LengthSpec &)
623 {
624 }
625
setFirstLineStartIndent(const LengthSpec &)626 void FOTBuilder::setFirstLineStartIndent(const LengthSpec &)
627 {
628 }
629
setLastLineEndIndent(const LengthSpec &)630 void FOTBuilder::setLastLineEndIndent(const LengthSpec &)
631 {
632 }
633
setLineSpacing(const LengthSpec &)634 void FOTBuilder::setLineSpacing(const LengthSpec &)
635 {
636 }
637
setFieldWidth(const LengthSpec &)638 void FOTBuilder::setFieldWidth(const LengthSpec &)
639 {
640 }
641
setQuadding(Symbol)642 void FOTBuilder::setQuadding(Symbol)
643 {
644 }
645
setDisplayAlignment(Symbol)646 void FOTBuilder::setDisplayAlignment(Symbol)
647 {
648 }
649
setFieldAlign(Symbol)650 void FOTBuilder::setFieldAlign(Symbol)
651 {
652 }
653
setLines(Symbol)654 void FOTBuilder::setLines(Symbol)
655 {
656 }
657
setColor(const DeviceRGBColor &)658 void FOTBuilder::setColor(const DeviceRGBColor &)
659 {
660 }
661
setBackgroundColor(const DeviceRGBColor &)662 void FOTBuilder::setBackgroundColor(const DeviceRGBColor &)
663 {
664 }
665
setBackgroundColor()666 void FOTBuilder::setBackgroundColor()
667 {
668 }
669
setPageWidth(Length)670 void FOTBuilder::setPageWidth(Length)
671 {
672 }
673
setPageHeight(Length)674 void FOTBuilder::setPageHeight(Length)
675 {
676 }
677
setLeftMargin(Length)678 void FOTBuilder::setLeftMargin(Length)
679 {
680 }
681
setRightMargin(Length)682 void FOTBuilder::setRightMargin(Length)
683 {
684 }
685
setTopMargin(Length)686 void FOTBuilder::setTopMargin(Length)
687 {
688 }
689
setBottomMargin(Length)690 void FOTBuilder::setBottomMargin(Length)
691 {
692 }
693
setHeaderMargin(Length)694 void FOTBuilder::setHeaderMargin(Length)
695 {
696 }
697
setFooterMargin(Length)698 void FOTBuilder::setFooterMargin(Length)
699 {
700 }
701
setBorderPresent(bool)702 void FOTBuilder::setBorderPresent(bool)
703 {
704 }
705
setLineThickness(Length)706 void FOTBuilder::setLineThickness(Length)
707 {
708 }
709
setCellBeforeRowMargin(Length)710 void FOTBuilder::setCellBeforeRowMargin(Length)
711 {
712 }
713
setCellAfterRowMargin(Length)714 void FOTBuilder::setCellAfterRowMargin(Length)
715 {
716 }
717
setCellBeforeColumnMargin(Length)718 void FOTBuilder::setCellBeforeColumnMargin(Length)
719 {
720 }
721
setCellAfterColumnMargin(Length)722 void FOTBuilder::setCellAfterColumnMargin(Length)
723 {
724 }
725
setLineSep(Length)726 void FOTBuilder::setLineSep(Length)
727 {
728 }
729
setBoxSizeBefore(Length)730 void FOTBuilder::setBoxSizeBefore(Length)
731 {
732 }
733
setBoxSizeAfter(Length)734 void FOTBuilder::setBoxSizeAfter(Length)
735 {
736 }
737
setPositionPointShift(const LengthSpec &)738 void FOTBuilder::setPositionPointShift(const LengthSpec &)
739 {
740 }
741
setStartMargin(const LengthSpec &)742 void FOTBuilder::setStartMargin(const LengthSpec &)
743 {
744 }
745
setEndMargin(const LengthSpec &)746 void FOTBuilder::setEndMargin(const LengthSpec &)
747 {
748 }
749
setSidelineSep(const LengthSpec &)750 void FOTBuilder::setSidelineSep(const LengthSpec &)
751 {
752 }
753
setAsisWrapIndent(const LengthSpec &)754 void FOTBuilder::setAsisWrapIndent(const LengthSpec &)
755 {
756 }
757
setLineNumberSep(const LengthSpec &)758 void FOTBuilder::setLineNumberSep(const LengthSpec &)
759 {
760 }
761
setLastLineJustifyLimit(const LengthSpec &)762 void FOTBuilder::setLastLineJustifyLimit(const LengthSpec &)
763 {
764 }
765
setJustifyGlyphSpaceMaxAdd(const LengthSpec &)766 void FOTBuilder::setJustifyGlyphSpaceMaxAdd(const LengthSpec &)
767 {
768 }
769
setJustifyGlyphSpaceMaxRemove(const LengthSpec &)770 void FOTBuilder::setJustifyGlyphSpaceMaxRemove(const LengthSpec &)
771 {
772 }
773
setTableCornerRadius(const LengthSpec &)774 void FOTBuilder::setTableCornerRadius(const LengthSpec &)
775 {
776 }
777
setBoxCornerRadius(const LengthSpec &)778 void FOTBuilder::setBoxCornerRadius(const LengthSpec &)
779 {
780 }
781
setMarginaliaSep(const LengthSpec &)782 void FOTBuilder::setMarginaliaSep(const LengthSpec &)
783 {
784 }
785
setMinPreLineSpacing(const OptLengthSpec &)786 void FOTBuilder::setMinPreLineSpacing(const OptLengthSpec &)
787 {
788 }
789
setMinPostLineSpacing(const OptLengthSpec &)790 void FOTBuilder::setMinPostLineSpacing(const OptLengthSpec &)
791 {
792 }
793
setMinLeading(const OptLengthSpec &)794 void FOTBuilder::setMinLeading(const OptLengthSpec &)
795 {
796 }
797
setInhibitLineBreaks(bool)798 void FOTBuilder::setInhibitLineBreaks(bool)
799 {
800 }
801
setHyphenate(bool)802 void FOTBuilder::setHyphenate(bool)
803 {
804 }
805
setKern(bool)806 void FOTBuilder::setKern(bool)
807 {
808 }
809
setLigature(bool)810 void FOTBuilder::setLigature(bool)
811 {
812 }
813
setScoreSpaces(bool)814 void FOTBuilder::setScoreSpaces(bool)
815 {
816 }
817
setFloatOutMarginalia(bool)818 void FOTBuilder::setFloatOutMarginalia(bool)
819 {
820 }
821
setFloatOutSidelines(bool)822 void FOTBuilder::setFloatOutSidelines(bool)
823 {
824 }
825
setFloatOutLineNumbers(bool)826 void FOTBuilder::setFloatOutLineNumbers(bool)
827 {
828 }
829
setCellBackground(bool)830 void FOTBuilder::setCellBackground(bool)
831 {
832 }
833
setSpanWeak(bool)834 void FOTBuilder::setSpanWeak(bool)
835 {
836 }
837
setIgnoreRecordEnd(bool)838 void FOTBuilder::setIgnoreRecordEnd(bool)
839 {
840 }
841
setNumberedLines(bool)842 void FOTBuilder::setNumberedLines(bool)
843 {
844 }
845
setHangingPunct(bool)846 void FOTBuilder::setHangingPunct(bool)
847 {
848 }
849
setBoxOpenEnd(bool)850 void FOTBuilder::setBoxOpenEnd(bool)
851 {
852 }
853
setTruncateLeader(bool)854 void FOTBuilder::setTruncateLeader(bool)
855 {
856 }
857
setAlignLeader(bool)858 void FOTBuilder::setAlignLeader(bool)
859 {
860 }
861
setTablePartOmitMiddleHeader(bool)862 void FOTBuilder::setTablePartOmitMiddleHeader(bool)
863 {
864 }
865
setTablePartOmitMiddleFooter(bool)866 void FOTBuilder::setTablePartOmitMiddleFooter(bool)
867 {
868 }
869
setBorderOmitAtBreak(bool)870 void FOTBuilder::setBorderOmitAtBreak(bool)
871 {
872 }
873
setPrincipalModeSimultaneous(bool)874 void FOTBuilder::setPrincipalModeSimultaneous(bool)
875 {
876 }
877
setMarginaliaKeepWithPrevious(bool)878 void FOTBuilder::setMarginaliaKeepWithPrevious(bool)
879 {
880 }
881
setGridEquidistantRows(bool)882 void FOTBuilder::setGridEquidistantRows(bool)
883 {
884 }
885
setGridEquidistantColumns(bool)886 void FOTBuilder::setGridEquidistantColumns(bool)
887 {
888 }
889
setLineJoin(Symbol)890 void FOTBuilder::setLineJoin(Symbol)
891 {
892 }
893
setLineCap(Symbol)894 void FOTBuilder::setLineCap(Symbol)
895 {
896 }
897
setLineNumberSide(Symbol)898 void FOTBuilder::setLineNumberSide(Symbol)
899 {
900 }
901
setKernMode(Symbol)902 void FOTBuilder::setKernMode(Symbol)
903 {
904 }
905
setInputWhitespaceTreatment(Symbol)906 void FOTBuilder::setInputWhitespaceTreatment(Symbol)
907 {
908 }
909
setFillingDirection(Symbol)910 void FOTBuilder::setFillingDirection(Symbol)
911 {
912 }
913
setWritingMode(Symbol)914 void FOTBuilder::setWritingMode(Symbol)
915 {
916 }
917
setLastLineQuadding(Symbol)918 void FOTBuilder::setLastLineQuadding(Symbol)
919 {
920 }
921
setMathDisplayMode(Symbol)922 void FOTBuilder::setMathDisplayMode(Symbol)
923 {
924 }
925
setScriptPreAlign(Symbol)926 void FOTBuilder::setScriptPreAlign(Symbol)
927 {
928 }
929
setScriptPostAlign(Symbol)930 void FOTBuilder::setScriptPostAlign(Symbol)
931 {
932 }
933
setScriptMidSupAlign(Symbol)934 void FOTBuilder::setScriptMidSupAlign(Symbol)
935 {
936 }
937
setScriptMidSubAlign(Symbol)938 void FOTBuilder::setScriptMidSubAlign(Symbol)
939 {
940 }
941
setNumeratorAlign(Symbol)942 void FOTBuilder::setNumeratorAlign(Symbol)
943 {
944 }
945
setDenominatorAlign(Symbol)946 void FOTBuilder::setDenominatorAlign(Symbol)
947 {
948 }
949
setGridPositionCellType(Symbol)950 void FOTBuilder::setGridPositionCellType(Symbol)
951 {
952 }
953
setGridColumnAlignment(Symbol)954 void FOTBuilder::setGridColumnAlignment(Symbol)
955 {
956 }
957
setGridRowAlignment(Symbol)958 void FOTBuilder::setGridRowAlignment(Symbol)
959 {
960 }
961
setBoxType(Symbol)962 void FOTBuilder::setBoxType(Symbol)
963 {
964 }
965
setGlyphAlignmentMode(Symbol)966 void FOTBuilder::setGlyphAlignmentMode(Symbol)
967 {
968 }
969
setBoxBorderAlignment(Symbol)970 void FOTBuilder::setBoxBorderAlignment(Symbol)
971 {
972 }
973
setCellRowAlignment(Symbol)974 void FOTBuilder::setCellRowAlignment(Symbol)
975 {
976 }
977
setBorderAlignment(Symbol)978 void FOTBuilder::setBorderAlignment(Symbol)
979 {
980 }
981
setSidelineSide(Symbol)982 void FOTBuilder::setSidelineSide(Symbol)
983 {
984 }
985
setHyphenationKeep(Symbol)986 void FOTBuilder::setHyphenationKeep(Symbol)
987 {
988 }
989
setFontStructure(Symbol)990 void FOTBuilder::setFontStructure(Symbol)
991 {
992 }
993
setFontProportionateWidth(Symbol)994 void FOTBuilder::setFontProportionateWidth(Symbol)
995 {
996 }
997
setCellCrossed(Symbol)998 void FOTBuilder::setCellCrossed(Symbol)
999 {
1000 }
1001
setMarginaliaSide(Symbol)1002 void FOTBuilder::setMarginaliaSide(Symbol)
1003 {
1004 }
1005
setLayer(long)1006 void FOTBuilder::setLayer(long)
1007 {
1008 }
1009
setBackgroundLayer(long)1010 void FOTBuilder::setBackgroundLayer(long)
1011 {
1012 }
1013
setBorderPriority(long)1014 void FOTBuilder::setBorderPriority(long)
1015 {
1016 }
1017
setLineRepeat(long)1018 void FOTBuilder::setLineRepeat(long)
1019 {
1020 }
1021
setSpan(long)1022 void FOTBuilder::setSpan(long)
1023 {
1024 }
1025
setMinLeaderRepeat(long)1026 void FOTBuilder::setMinLeaderRepeat(long)
1027 {
1028 }
1029
setHyphenationRemainCharCount(long)1030 void FOTBuilder::setHyphenationRemainCharCount(long)
1031 {
1032 }
1033
setHyphenationPushCharCount(long)1034 void FOTBuilder::setHyphenationPushCharCount(long)
1035 {
1036 }
1037
setWidowCount(long)1038 void FOTBuilder::setWidowCount(long)
1039 {
1040 }
1041
setOrphanCount(long)1042 void FOTBuilder::setOrphanCount(long)
1043 {
1044 }
1045
setExpandTabs(long)1046 void FOTBuilder::setExpandTabs(long)
1047 {
1048 }
1049
setHyphenationLadderCount(long)1050 void FOTBuilder::setHyphenationLadderCount(long)
1051 {
1052 }
1053
setBackgroundTile(PublicId)1054 void FOTBuilder::setBackgroundTile(PublicId)
1055 {
1056 }
1057
setLineBreakingMethod(PublicId)1058 void FOTBuilder::setLineBreakingMethod(PublicId)
1059 {
1060 }
1061
setLineCompositionMethod(PublicId)1062 void FOTBuilder::setLineCompositionMethod(PublicId)
1063 {
1064 }
1065
setImplicitBidiMethod(PublicId)1066 void FOTBuilder::setImplicitBidiMethod(PublicId)
1067 {
1068 }
1069
setGlyphSubstMethod(PublicId)1070 void FOTBuilder::setGlyphSubstMethod(PublicId)
1071 {
1072 }
1073
setGlyphReorderMethod(PublicId)1074 void FOTBuilder::setGlyphReorderMethod(PublicId)
1075 {
1076 }
1077
setHyphenationMethod(PublicId)1078 void FOTBuilder::setHyphenationMethod(PublicId)
1079 {
1080 }
1081
setTableAutoWidthMethod(PublicId)1082 void FOTBuilder::setTableAutoWidthMethod(PublicId)
1083 {
1084 }
1085
setFontName(PublicId)1086 void FOTBuilder::setFontName(PublicId)
1087 {
1088 }
1089
setLanguage(Letter2)1090 void FOTBuilder::setLanguage(Letter2)
1091 {
1092 }
1093
setCountry(Letter2)1094 void FOTBuilder::setCountry(Letter2)
1095 {
1096 }
1097
setEscapementSpaceBefore(const InlineSpace &)1098 void FOTBuilder::setEscapementSpaceBefore(const InlineSpace &)
1099 {
1100 }
1101
setEscapementSpaceAfter(const InlineSpace &)1102 void FOTBuilder::setEscapementSpaceAfter(const InlineSpace &)
1103 {
1104 }
1105
setGlyphSubstTable(const Vector<ConstPtr<GlyphSubstTable>> &)1106 void FOTBuilder::setGlyphSubstTable(const Vector<ConstPtr<GlyphSubstTable> > &)
1107 {
1108 }
1109
startNode(const NodePtr &,const StringC &)1110 void FOTBuilder::startNode(const NodePtr &, const StringC &)
1111 {
1112 }
1113
endNode()1114 void FOTBuilder::endNode()
1115 {
1116 }
1117
currentNodePageNumber(const NodePtr &)1118 void FOTBuilder::currentNodePageNumber(const NodePtr &)
1119 {
1120 }
1121
extensionSet(void (FOTBuilder::* func)(bool),bool arg)1122 void FOTBuilder::extensionSet(void (FOTBuilder::*func)(bool), bool arg)
1123 {
1124 (this->*func)(arg);
1125 }
1126
extensionSet(void (FOTBuilder::* func)(const StringC &),const StringC & arg)1127 void FOTBuilder::extensionSet(void (FOTBuilder::*func)(const StringC &), const StringC &arg)
1128 {
1129 (this->*func)(arg);
1130 }
1131
extensionSet(void (FOTBuilder::* func)(long),long arg)1132 void FOTBuilder::extensionSet(void (FOTBuilder::*func)(long), long arg)
1133 {
1134 (this->*func)(arg);
1135 }
1136
1137
DisplayNIC()1138 FOTBuilder::DisplayNIC::DisplayNIC()
1139 : positionPreference(symbolFalse),
1140 keep(symbolFalse),
1141 breakBefore(symbolFalse),
1142 breakAfter(symbolFalse),
1143 keepWithPrevious(0),
1144 keepWithNext(0),
1145 mayViolateKeepBefore(0),
1146 mayViolateKeepAfter(0)
1147 {
1148 }
1149
DisplayGroupNIC()1150 FOTBuilder::DisplayGroupNIC::DisplayGroupNIC()
1151 : hasCoalesceId(0)
1152 {
1153 }
1154
InlineNIC()1155 FOTBuilder::InlineNIC::InlineNIC()
1156 : breakBeforePriority(0),
1157 breakAfterPriority(0)
1158 {
1159 }
1160
ExternalGraphicNIC()1161 FOTBuilder::ExternalGraphicNIC::ExternalGraphicNIC()
1162 : scaleType(symbolMaxUniform),
1163 isDisplay(0),
1164 hasMaxWidth(0),
1165 hasMaxHeight(0),
1166 escapementDirection(symbolFalse)
1167 {
1168 }
1169
BoxNIC()1170 FOTBuilder::BoxNIC::BoxNIC()
1171 : isDisplay(0)
1172 {
1173 }
1174
RuleNIC()1175 FOTBuilder::RuleNIC::RuleNIC()
1176 : orientation(symbolHorizontal),
1177 hasLength(0)
1178 {
1179 }
1180
LeaderNIC()1181 FOTBuilder::LeaderNIC::LeaderNIC()
1182 : hasLength(0)
1183 {
1184 }
1185
CharacterNIC()1186 FOTBuilder::CharacterNIC::CharacterNIC()
1187 : specifiedC(0),
1188 stretchFactor(1.0)
1189 {
1190 }
1191
TableNIC()1192 FOTBuilder::TableNIC::TableNIC()
1193 : widthType(widthFull)
1194 {
1195 }
1196
TableColumnNIC()1197 FOTBuilder::TableColumnNIC::TableColumnNIC()
1198 : columnIndex(0), nColumnsSpanned(1), hasWidth(0)
1199 {
1200 }
1201
TableCellNIC()1202 FOTBuilder::TableCellNIC::TableCellNIC()
1203 : columnIndex(0), nColumnsSpanned(1), nRowsSpanned(1), missing(0)
1204 {
1205 }
1206
GridNIC()1207 FOTBuilder::GridNIC::GridNIC()
1208 : nColumns(0), nRows(0)
1209 {
1210 }
1211
GridCellNIC()1212 FOTBuilder::GridCellNIC::GridCellNIC()
1213 : columnNumber(0), rowNumber(0)
1214 {
1215 }
1216
MultiMode()1217 FOTBuilder::MultiMode::MultiMode()
1218 : hasDesc(0)
1219 {
1220 }
1221
subst(const FOTBuilder::GlyphId & gid) const1222 FOTBuilder::GlyphId FOTBuilder::GlyphSubstTable::subst(const FOTBuilder::GlyphId &gid) const
1223 {
1224 for (size_t i = 0; i < pairs.size(); i += 2)
1225 if (gid == pairs[i])
1226 return pairs[i + 1];
1227 return gid;
1228 }
1229
SaveFOTBuilder()1230 SaveFOTBuilder::SaveFOTBuilder()
1231 : calls_(0), tail_(&calls_)
1232 {
1233 }
1234
SaveFOTBuilder(const NodePtr & currentNode,const StringC & processingMode)1235 SaveFOTBuilder::SaveFOTBuilder(const NodePtr ¤tNode,
1236 const StringC &processingMode)
1237 : currentNode_(currentNode),
1238 processingMode_(processingMode),
1239 calls_(0), tail_(&calls_)
1240 {
1241 }
1242
~SaveFOTBuilder()1243 SaveFOTBuilder::~SaveFOTBuilder()
1244 {
1245 *tail_ = 0;
1246 while (calls_) {
1247 Call *tem = calls_;
1248 calls_ = calls_->next;
1249 delete tem;
1250 }
1251 }
1252
asSaveFOTBuilder()1253 SaveFOTBuilder *SaveFOTBuilder::asSaveFOTBuilder()
1254 {
1255 return this;
1256 }
1257
emit(FOTBuilder & fotb)1258 void SaveFOTBuilder::emit(FOTBuilder &fotb)
1259 {
1260 if (currentNode_)
1261 fotb.startNode(currentNode_, processingMode_);
1262 SaveFOTBuilder *save = fotb.asSaveFOTBuilder();
1263 if (save) {
1264 if (calls_) {
1265 *save->tail_ = calls_;
1266 save->tail_ = tail_;
1267 calls_ = 0;
1268 tail_ = &calls_;
1269 }
1270 }
1271 else {
1272 *tail_ = 0;
1273 while (calls_) {
1274 Call *tem = calls_;
1275 calls_ = calls_->next;
1276 tem->emit(fotb);
1277 delete tem;
1278 }
1279 tail_ = &calls_;
1280 }
1281 if (currentNode_)
1282 fotb.endNode();
1283 }
1284
1285 #define NO_ARG_CALL(F) \
1286 void SaveFOTBuilder::F() { \
1287 *tail_ = new NoArgCall(&FOTBuilder::F); \
1288 tail_ = &(*tail_)->next; }
1289
1290 NO_ARG_CALL(startSequence)
NO_ARG_CALL(endSequence)1291 NO_ARG_CALL(endSequence)
1292 NO_ARG_CALL(endLineField)
1293 NO_ARG_CALL(endParagraph)
1294 NO_ARG_CALL(endDisplayGroup)
1295 NO_ARG_CALL(alignmentPoint)
1296 NO_ARG_CALL(startScroll)
1297 NO_ARG_CALL(endScroll)
1298 NO_ARG_CALL(endLeader)
1299 NO_ARG_CALL(endLink)
1300 NO_ARG_CALL(startMarginalia)
1301 NO_ARG_CALL(endMarginalia)
1302 NO_ARG_CALL(endMultiMode)
1303 NO_ARG_CALL(endScore)
1304 NO_ARG_CALL(endBox)
1305 NO_ARG_CALL(startSideline)
1306 NO_ARG_CALL(endSideline)
1307 NO_ARG_CALL(endNode)
1308 NO_ARG_CALL(startSimplePageSequence)
1309 NO_ARG_CALL(endSimplePageSequence)
1310 NO_ARG_CALL(endAllSimplePageSequenceHeaderFooter)
1311 NO_ARG_CALL(pageNumber)
1312 NO_ARG_CALL(endTable)
1313 NO_ARG_CALL(tableBeforeRowBorder)
1314 NO_ARG_CALL(tableAfterRowBorder)
1315 NO_ARG_CALL(tableBeforeColumnBorder)
1316 NO_ARG_CALL(tableAfterColumnBorder)
1317 NO_ARG_CALL(endTablePart)
1318 NO_ARG_CALL(startTableRow)
1319 NO_ARG_CALL(endTableRow)
1320 NO_ARG_CALL(endTableCell)
1321 NO_ARG_CALL(tableCellBeforeRowBorder)
1322 NO_ARG_CALL(tableCellAfterRowBorder)
1323 NO_ARG_CALL(tableCellBeforeColumnBorder)
1324 NO_ARG_CALL(tableCellAfterColumnBorder)
1325 NO_ARG_CALL(startMathSequence)
1326 NO_ARG_CALL(endMathSequence)
1327 NO_ARG_CALL(endFraction)
1328 NO_ARG_CALL(fractionBar)
1329 NO_ARG_CALL(startUnmath)
1330 NO_ARG_CALL(endUnmath)
1331 NO_ARG_CALL(startSuperscript)
1332 NO_ARG_CALL(endSuperscript)
1333 NO_ARG_CALL(startSubscript)
1334 NO_ARG_CALL(endSubscript)
1335 NO_ARG_CALL(endScript)
1336 NO_ARG_CALL(endMark)
1337 NO_ARG_CALL(endFence)
1338 NO_ARG_CALL(endRadical)
1339 NO_ARG_CALL(radicalRadicalDefaulted)
1340 NO_ARG_CALL(endMathOperator)
1341 NO_ARG_CALL(endGrid)
1342 NO_ARG_CALL(endGridCell)
1343
1344 #define LENGTH_SPEC_ARG_CALL(F) \
1345 void SaveFOTBuilder::F(const LengthSpec &lengthSpec) { \
1346 *tail_ = new LengthSpecArgCall(&FOTBuilder::F, lengthSpec); \
1347 tail_ = &(*tail_)->next; }
1348
1349 LENGTH_SPEC_ARG_CALL(setStartIndent)
1350 LENGTH_SPEC_ARG_CALL(setEndIndent)
1351 LENGTH_SPEC_ARG_CALL(setFirstLineStartIndent)
1352 LENGTH_SPEC_ARG_CALL(setLastLineEndIndent)
1353 LENGTH_SPEC_ARG_CALL(setLineSpacing)
1354 LENGTH_SPEC_ARG_CALL(setFieldWidth)
1355 LENGTH_SPEC_ARG_CALL(setPositionPointShift)
1356 LENGTH_SPEC_ARG_CALL(setStartMargin)
1357 LENGTH_SPEC_ARG_CALL(setEndMargin)
1358 LENGTH_SPEC_ARG_CALL(setSidelineSep)
1359 LENGTH_SPEC_ARG_CALL(setAsisWrapIndent)
1360 LENGTH_SPEC_ARG_CALL(setLineNumberSep)
1361 LENGTH_SPEC_ARG_CALL(setLastLineJustifyLimit)
1362 LENGTH_SPEC_ARG_CALL(setJustifyGlyphSpaceMaxAdd)
1363 LENGTH_SPEC_ARG_CALL(setJustifyGlyphSpaceMaxRemove)
1364 LENGTH_SPEC_ARG_CALL(setTableCornerRadius)
1365 LENGTH_SPEC_ARG_CALL(setBoxCornerRadius)
1366 LENGTH_SPEC_ARG_CALL(setMarginaliaSep)
1367
1368 #define OPT_LENGTH_SPEC_ARG_CALL(F) \
1369 void SaveFOTBuilder::F(const OptLengthSpec &optLengthSpec) { \
1370 *tail_ = new OptLengthSpecArgCall(&FOTBuilder::F, optLengthSpec); \
1371 tail_ = &(*tail_)->next; }
1372
1373 OPT_LENGTH_SPEC_ARG_CALL(setMinPreLineSpacing)
1374 OPT_LENGTH_SPEC_ARG_CALL(setMinPostLineSpacing)
1375 OPT_LENGTH_SPEC_ARG_CALL(setMinLeading)
1376
1377 #define LONG_ARG_CALL(F) \
1378 void SaveFOTBuilder::F(long n) { \
1379 *tail_ = new LongArgCall(&FOTBuilder::F, n); \
1380 tail_ = &(*tail_)->next; }
1381
1382
1383 LONG_ARG_CALL(setFontSize)
1384 LONG_ARG_CALL(setPageWidth)
1385 LONG_ARG_CALL(setPageHeight)
1386 LONG_ARG_CALL(setLeftMargin)
1387 LONG_ARG_CALL(setRightMargin)
1388 LONG_ARG_CALL(setTopMargin)
1389 LONG_ARG_CALL(setBottomMargin)
1390 LONG_ARG_CALL(setHeaderMargin)
1391 LONG_ARG_CALL(setFooterMargin)
1392 LONG_ARG_CALL(setLineThickness)
1393 LONG_ARG_CALL(setCellBeforeRowMargin)
1394 LONG_ARG_CALL(setCellAfterRowMargin)
1395 LONG_ARG_CALL(setCellBeforeColumnMargin)
1396 LONG_ARG_CALL(setCellAfterColumnMargin)
1397 LONG_ARG_CALL(setLineSep)
1398 LONG_ARG_CALL(setBoxSizeBefore)
1399 LONG_ARG_CALL(setBoxSizeAfter)
1400 LONG_ARG_CALL(setLayer)
1401 LONG_ARG_CALL(setBackgroundLayer)
1402 LONG_ARG_CALL(setBorderPriority)
1403 LONG_ARG_CALL(setLineRepeat)
1404 LONG_ARG_CALL(setSpan)
1405 LONG_ARG_CALL(setMinLeaderRepeat)
1406 LONG_ARG_CALL(setHyphenationRemainCharCount)
1407 LONG_ARG_CALL(setHyphenationPushCharCount)
1408 LONG_ARG_CALL(setWidowCount)
1409 LONG_ARG_CALL(setOrphanCount)
1410 LONG_ARG_CALL(setExpandTabs)
1411 LONG_ARG_CALL(setHyphenationLadderCount)
1412
1413 #define BOOL_ARG_CALL(F) \
1414 void SaveFOTBuilder::F(bool b) { \
1415 *tail_ = new BoolArgCall(&FOTBuilder::F, b); \
1416 tail_ = &(*tail_)->next; }
1417
1418 BOOL_ARG_CALL(setBorderPresent)
1419 BOOL_ARG_CALL(setInhibitLineBreaks)
1420 BOOL_ARG_CALL(setHyphenate)
1421 BOOL_ARG_CALL(setKern)
1422 BOOL_ARG_CALL(setLigature)
1423 BOOL_ARG_CALL(setScoreSpaces)
1424 BOOL_ARG_CALL(setFloatOutMarginalia)
1425 BOOL_ARG_CALL(setFloatOutSidelines)
1426 BOOL_ARG_CALL(setFloatOutLineNumbers)
1427 BOOL_ARG_CALL(setCellBackground)
1428 BOOL_ARG_CALL(setSpanWeak)
1429 BOOL_ARG_CALL(setIgnoreRecordEnd)
1430 BOOL_ARG_CALL(setNumberedLines)
1431 BOOL_ARG_CALL(setHangingPunct)
1432 BOOL_ARG_CALL(setBoxOpenEnd)
1433 BOOL_ARG_CALL(setTruncateLeader)
1434 BOOL_ARG_CALL(setAlignLeader)
1435 BOOL_ARG_CALL(setTablePartOmitMiddleHeader)
1436 BOOL_ARG_CALL(setTablePartOmitMiddleFooter)
1437 BOOL_ARG_CALL(setBorderOmitAtBreak)
1438 BOOL_ARG_CALL(setPrincipalModeSimultaneous)
1439 BOOL_ARG_CALL(setMarginaliaKeepWithPrevious)
1440 BOOL_ARG_CALL(setGridEquidistantRows)
1441 BOOL_ARG_CALL(setGridEquidistantColumns)
1442
1443 #define SYMBOL_ARG_CALL(F) \
1444 void SaveFOTBuilder::F(Symbol sym) { \
1445 *tail_ = new SymbolArgCall(&FOTBuilder::F, sym); \
1446 tail_ = &(*tail_)->next; }
1447
1448 SYMBOL_ARG_CALL(setFontWeight)
1449 SYMBOL_ARG_CALL(setFontPosture)
1450 SYMBOL_ARG_CALL(setLines)
1451 SYMBOL_ARG_CALL(setQuadding)
1452 SYMBOL_ARG_CALL(setDisplayAlignment)
1453 SYMBOL_ARG_CALL(setFieldAlign)
1454 SYMBOL_ARG_CALL(setLineJoin)
1455 SYMBOL_ARG_CALL(setLineCap)
1456 SYMBOL_ARG_CALL(setLineNumberSide)
1457 SYMBOL_ARG_CALL(setKernMode)
1458 SYMBOL_ARG_CALL(setInputWhitespaceTreatment)
1459 SYMBOL_ARG_CALL(setFillingDirection)
1460 SYMBOL_ARG_CALL(setWritingMode)
1461 SYMBOL_ARG_CALL(setLastLineQuadding)
1462 SYMBOL_ARG_CALL(setMathDisplayMode)
1463 SYMBOL_ARG_CALL(setScriptPreAlign)
1464 SYMBOL_ARG_CALL(setScriptPostAlign)
1465 SYMBOL_ARG_CALL(setScriptMidSupAlign)
1466 SYMBOL_ARG_CALL(setScriptMidSubAlign)
1467 SYMBOL_ARG_CALL(setNumeratorAlign)
1468 SYMBOL_ARG_CALL(setDenominatorAlign)
1469 SYMBOL_ARG_CALL(setGridPositionCellType)
1470 SYMBOL_ARG_CALL(setGridColumnAlignment)
1471 SYMBOL_ARG_CALL(setGridRowAlignment)
1472 SYMBOL_ARG_CALL(setBoxType)
1473 SYMBOL_ARG_CALL(setGlyphAlignmentMode)
1474 SYMBOL_ARG_CALL(setBoxBorderAlignment)
1475 SYMBOL_ARG_CALL(setCellRowAlignment)
1476 SYMBOL_ARG_CALL(setBorderAlignment)
1477 SYMBOL_ARG_CALL(setSidelineSide)
1478 SYMBOL_ARG_CALL(setHyphenationKeep)
1479 SYMBOL_ARG_CALL(setFontStructure)
1480 SYMBOL_ARG_CALL(setFontProportionateWidth)
1481 SYMBOL_ARG_CALL(setCellCrossed)
1482 SYMBOL_ARG_CALL(setMarginaliaSide)
1483
1484 #define PUBLIC_ID_ARG_CALL(F) \
1485 void SaveFOTBuilder::F(PublicId pubid) { \
1486 *tail_ = new PublicIdArgCall(&FOTBuilder::F, pubid); \
1487 tail_ = &(*tail_)->next; }
1488
1489 PUBLIC_ID_ARG_CALL(setBackgroundTile)
1490 PUBLIC_ID_ARG_CALL(setLineBreakingMethod)
1491 PUBLIC_ID_ARG_CALL(setLineCompositionMethod)
1492 PUBLIC_ID_ARG_CALL(setImplicitBidiMethod)
1493 PUBLIC_ID_ARG_CALL(setGlyphSubstMethod)
1494 PUBLIC_ID_ARG_CALL(setGlyphReorderMethod)
1495 PUBLIC_ID_ARG_CALL(setHyphenationMethod)
1496 PUBLIC_ID_ARG_CALL(setTableAutoWidthMethod)
1497 PUBLIC_ID_ARG_CALL(setFontName)
1498
1499 #define UNSIGNED_ARG_CALL(F) \
1500 void SaveFOTBuilder::F(unsigned n) { \
1501 *tail_ = new UnsignedArgCall(&FOTBuilder::F, n); \
1502 tail_ = &(*tail_)->next; }
1503
1504 UNSIGNED_ARG_CALL(setLanguage)
1505 UNSIGNED_ARG_CALL(setCountry)
1506 UNSIGNED_ARG_CALL(startSimplePageSequenceHeaderFooter)
1507 UNSIGNED_ARG_CALL(endSimplePageSequenceHeaderFooter)
1508
1509 #define STRING_ARG_CALL(F) \
1510 void SaveFOTBuilder::F(const StringC &str) { \
1511 *tail_ = new StringArgCall(&FOTBuilder::F, str); \
1512 tail_ = &(*tail_)->next; }
1513
1514
1515 STRING_ARG_CALL(setFontFamilyName)
1516 STRING_ARG_CALL(formattingInstruction)
1517
1518 #define INLINE_SPACE_ARG_CALL(F) \
1519 void SaveFOTBuilder::F(const InlineSpace &is) { \
1520 *tail_ = new InlineSpaceArgCall(&FOTBuilder::F, is); \
1521 tail_ = &(*tail_)->next; }
1522
1523 INLINE_SPACE_ARG_CALL(setEscapementSpaceBefore)
1524 INLINE_SPACE_ARG_CALL(setEscapementSpaceAfter)
1525
1526 SaveFOTBuilder::Call::~Call()
1527 {
1528 }
1529
emit(FOTBuilder & fotb)1530 void SaveFOTBuilder::NoArgCall::emit(FOTBuilder &fotb)
1531 {
1532 (fotb.*func)();
1533 }
1534
emit(FOTBuilder & fotb)1535 void SaveFOTBuilder::LongArgCall::emit(FOTBuilder &fotb)
1536 {
1537 (fotb.*func)(arg);
1538 }
1539
emit(FOTBuilder & fotb)1540 void SaveFOTBuilder::ExtensionLongArgCall::emit(FOTBuilder &fotb)
1541 {
1542 fotb.extensionSet(func, arg);
1543 }
1544
emit(FOTBuilder & fotb)1545 void SaveFOTBuilder::BoolArgCall::emit(FOTBuilder &fotb)
1546 {
1547 (fotb.*func)(arg);
1548 }
1549
emit(FOTBuilder & fotb)1550 void SaveFOTBuilder::ExtensionBoolArgCall::emit(FOTBuilder &fotb)
1551 {
1552 fotb.extensionSet(func, arg);
1553 }
1554
emit(FOTBuilder & fotb)1555 void SaveFOTBuilder::SymbolArgCall::emit(FOTBuilder &fotb)
1556 {
1557 (fotb.*func)(arg);
1558 }
1559
emit(FOTBuilder & fotb)1560 void SaveFOTBuilder::PublicIdArgCall::emit(FOTBuilder &fotb)
1561 {
1562 (fotb.*func)(arg);
1563 }
1564
emit(FOTBuilder & fotb)1565 void SaveFOTBuilder::UnsignedArgCall::emit(FOTBuilder &fotb)
1566 {
1567 (fotb.*func)(arg);
1568 }
1569
emit(FOTBuilder & fotb)1570 void SaveFOTBuilder::InlineSpaceArgCall::emit(FOTBuilder &fotb)
1571 {
1572 (fotb.*func)(arg);
1573 }
1574
emit(FOTBuilder & fotb)1575 void SaveFOTBuilder::StringArgCall::emit(FOTBuilder &fotb)
1576 {
1577 (fotb.*func)(arg);
1578 }
1579
emit(FOTBuilder & fotb)1580 void SaveFOTBuilder::ExtensionStringArgCall::emit(FOTBuilder &fotb)
1581 {
1582 fotb.extensionSet(func, arg);
1583 }
1584
emit(FOTBuilder & fotb)1585 void SaveFOTBuilder::CharArgCall::emit(FOTBuilder &fotb)
1586 {
1587 (fotb.*func)(arg);
1588 }
1589
emit(FOTBuilder & fotb)1590 void SaveFOTBuilder::LengthSpecArgCall::emit(FOTBuilder &fotb)
1591 {
1592 (fotb.*func)(arg);
1593 }
1594
emit(FOTBuilder & fotb)1595 void SaveFOTBuilder::OptLengthSpecArgCall::emit(FOTBuilder &fotb)
1596 {
1597 (fotb.*func)(arg);
1598 }
1599
emit(FOTBuilder & fotb)1600 void SaveFOTBuilder::NodePtrArgCall::emit(FOTBuilder &fotb)
1601 {
1602 (fotb.*func)(arg);
1603 }
1604
emit(FOTBuilder & fotb)1605 void SaveFOTBuilder::DeviceRGBColorArgCall::emit(FOTBuilder &fotb)
1606 {
1607 (fotb.*func)(arg);
1608 }
1609
charactersFromNode(const NodePtr & node,const Char * s,size_t n)1610 void SaveFOTBuilder::charactersFromNode(const NodePtr &node, const Char *s, size_t n)
1611 {
1612 *tail_ = new CharactersFromNodeCall(node, s, n);
1613 tail_ = &(*tail_)->next;
1614 }
1615
CharactersFromNodeCall(const NodePtr & nd,const Char * s,size_t n)1616 SaveFOTBuilder::CharactersFromNodeCall::CharactersFromNodeCall(const NodePtr &nd,
1617 const Char *s, size_t n)
1618 : data(s), size(n), node(nd)
1619 {
1620 }
1621
emit(FOTBuilder & fotb)1622 void SaveFOTBuilder::CharactersFromNodeCall::emit(FOTBuilder &fotb)
1623 {
1624 fotb.charactersFromNode(node, data, size);
1625 }
1626
characters(const Char * s,size_t n)1627 void SaveFOTBuilder::characters(const Char *s, size_t n)
1628 {
1629 *tail_ = new CharactersCall(s, n);
1630 tail_ = &(*tail_)->next;
1631 }
1632
emit(FOTBuilder & fotb)1633 void SaveFOTBuilder::CharacterCall::emit(FOTBuilder &fotb)
1634 {
1635 fotb.character(arg);
1636 }
1637
character(const CharacterNIC & nic)1638 void SaveFOTBuilder::character(const CharacterNIC &nic)
1639 {
1640 *tail_ = new CharacterCall(nic);
1641 tail_ = &(*tail_)->next;
1642 }
1643
StartNodeCall(const NodePtr & nd,const StringC & m)1644 SaveFOTBuilder::StartNodeCall::StartNodeCall(const NodePtr &nd,
1645 const StringC &m)
1646 : node(nd), mode(m)
1647 {
1648 }
1649
emit(FOTBuilder & fotb)1650 void SaveFOTBuilder::StartNodeCall::emit(FOTBuilder &fotb)
1651 {
1652 fotb.startNode(node, mode);
1653 }
1654
startNode(const NodePtr & node,const StringC & mode)1655 void SaveFOTBuilder::startNode(const NodePtr &node, const StringC &mode)
1656 {
1657 *tail_ = new StartNodeCall(node, mode);
1658 tail_ = &(*tail_)->next;
1659 }
1660
currentNodePageNumber(const NodePtr & node)1661 void SaveFOTBuilder::currentNodePageNumber(const NodePtr &node)
1662 {
1663 *tail_ = new NodePtrArgCall(&FOTBuilder::currentNodePageNumber, node);
1664 tail_ = &(*tail_)->next;
1665 }
1666
setColor(const DeviceRGBColor & color)1667 void SaveFOTBuilder::setColor(const DeviceRGBColor &color)
1668 {
1669 *tail_ = new DeviceRGBColorArgCall(&FOTBuilder::setColor, color);
1670 tail_ = &(*tail_)->next;
1671 }
1672
setBackgroundColor(const DeviceRGBColor & color)1673 void SaveFOTBuilder::setBackgroundColor(const DeviceRGBColor &color)
1674 {
1675 DeviceRGBColorArgCall::FuncPtr f = &FOTBuilder::setBackgroundColor;
1676 *tail_ = new DeviceRGBColorArgCall(f, color);
1677 tail_ = &(*tail_)->next;
1678 }
1679
setBackgroundColor()1680 void SaveFOTBuilder::setBackgroundColor()
1681 {
1682 NoArgCall::FuncPtr f = &FOTBuilder::setBackgroundColor;
1683 *tail_ = new NoArgCall(f);
1684 tail_ = &(*tail_)->next;
1685 }
1686
startParagraph(const ParagraphNIC & nic)1687 void SaveFOTBuilder::startParagraph(const ParagraphNIC &nic)
1688
1689 {
1690 *tail_ = new StartParagraphCall(nic);
1691 tail_ = &(*tail_)->next;
1692 }
1693
paragraphBreak(const ParagraphNIC & nic)1694 void SaveFOTBuilder::paragraphBreak(const ParagraphNIC &nic)
1695
1696 {
1697 *tail_ = new ParagraphBreakCall(nic);
1698 tail_ = &(*tail_)->next;
1699 }
1700
startDisplayGroup(const DisplayGroupNIC & nic)1701 void SaveFOTBuilder::startDisplayGroup(const DisplayGroupNIC &nic)
1702 {
1703 *tail_ = new StartDisplayGroupCall(nic);
1704 tail_ = &(*tail_)->next;
1705 }
1706
externalGraphic(const ExternalGraphicNIC & nic)1707 void SaveFOTBuilder::externalGraphic(const ExternalGraphicNIC &nic)
1708 {
1709 *tail_ = new ExternalGraphicCall(nic);
1710 tail_ = &(*tail_)->next;
1711 }
1712
rule(const RuleNIC & nic)1713 void SaveFOTBuilder::rule(const RuleNIC &nic)
1714 {
1715 *tail_ = new RuleCall(nic);
1716 tail_ = &(*tail_)->next;
1717 }
1718
startLeader(const LeaderNIC & nic)1719 void SaveFOTBuilder::startLeader(const LeaderNIC &nic)
1720 {
1721 *tail_ = new StartLeaderCall(nic);
1722 tail_ = &(*tail_)->next;
1723 }
1724
startLink(const Address & addr)1725 void SaveFOTBuilder::startLink(const Address &addr)
1726 {
1727 *tail_ = new StartLinkCall(addr);
1728 tail_ = &(*tail_)->next;
1729 }
1730
startScore(Symbol type)1731 void SaveFOTBuilder::startScore(Symbol type)
1732 {
1733 SymbolArgCall::FuncPtr func = &FOTBuilder::startScore;
1734 *tail_ = new SymbolArgCall(func, type);
1735 tail_ = &(*tail_)->next;
1736 }
1737
startScore(Char c)1738 void SaveFOTBuilder::startScore(Char c)
1739 {
1740 CharArgCall::FuncPtr func = &FOTBuilder::startScore;
1741 *tail_ = new CharArgCall(func, c);
1742 tail_ = &(*tail_)->next;
1743 }
1744
startScore(const LengthSpec & len)1745 void SaveFOTBuilder::startScore(const LengthSpec &len)
1746 {
1747 LengthSpecArgCall::FuncPtr func = &FOTBuilder::startScore;
1748 *tail_ = new LengthSpecArgCall(func, len);
1749 tail_ = &(*tail_)->next;
1750 }
1751
startLineField(const LineFieldNIC & nic)1752 void SaveFOTBuilder::startLineField(const LineFieldNIC &nic)
1753 {
1754 *tail_ = new StartLineFieldCall(nic);
1755 tail_ = &(*tail_)->next;
1756 }
1757
startBox(const BoxNIC & nic)1758 void SaveFOTBuilder::startBox(const BoxNIC &nic)
1759 {
1760 *tail_ = new StartBoxCall(nic);
1761 tail_ = &(*tail_)->next;
1762 }
1763
startTable(const TableNIC & nic)1764 void SaveFOTBuilder::startTable(const TableNIC &nic)
1765 {
1766 *tail_ = new StartTableCall(nic);
1767 tail_ = &(*tail_)->next;
1768 }
1769
startTablePart(const TablePartNIC & nic,FOTBuilder * & header,FOTBuilder * & footer)1770 void SaveFOTBuilder::startTablePart(const TablePartNIC &nic, FOTBuilder *&header, FOTBuilder *&footer)
1771 {
1772 *tail_ = new StartTablePartCall(nic, header, footer);
1773 tail_ = &(*tail_)->next;
1774 }
1775
tableColumn(const TableColumnNIC & nic)1776 void SaveFOTBuilder::tableColumn(const TableColumnNIC &nic)
1777 {
1778 *tail_ = new TableColumnCall(nic);
1779 tail_ = &(*tail_)->next;
1780 }
1781
startTableCell(const TableCellNIC & nic)1782 void SaveFOTBuilder::startTableCell(const TableCellNIC &nic)
1783 {
1784 *tail_ = new StartTableCellCall(nic);
1785 tail_ = &(*tail_)->next;
1786 }
1787
startFraction(FOTBuilder * & numerator,FOTBuilder * & denominator)1788 void SaveFOTBuilder::startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator)
1789 {
1790 *tail_ = new StartFractionCall(numerator, denominator);
1791 tail_ = &(*tail_)->next;
1792 }
1793
startScript(FOTBuilder * & preSup,FOTBuilder * & preSub,FOTBuilder * & postSup,FOTBuilder * & postSub,FOTBuilder * & midSup,FOTBuilder * & midSub)1794 void SaveFOTBuilder::startScript(FOTBuilder *&preSup,
1795 FOTBuilder *&preSub,
1796 FOTBuilder *&postSup,
1797 FOTBuilder *&postSub,
1798 FOTBuilder *&midSup,
1799 FOTBuilder *&midSub)
1800 {
1801 *tail_ = new StartScriptCall(preSup, preSub,
1802 postSup, postSub,
1803 midSup, midSub);
1804 tail_ = &(*tail_)->next;
1805 }
1806
startMark(FOTBuilder * & overMark,FOTBuilder * & underMark)1807 void SaveFOTBuilder::startMark(FOTBuilder *&overMark, FOTBuilder *&underMark)
1808 {
1809 *tail_ = new StartMarkCall(overMark, underMark);
1810 tail_ = &(*tail_)->next;
1811 }
1812
startFence(FOTBuilder * & open,FOTBuilder * & close)1813 void SaveFOTBuilder::startFence(FOTBuilder *&open, FOTBuilder *&close)
1814 {
1815 *tail_ = new StartFenceCall(open, close);
1816 tail_ = &(*tail_)->next;
1817 }
1818
startRadical(FOTBuilder * & degree)1819 void SaveFOTBuilder::startRadical(FOTBuilder *°ree)
1820 {
1821 *tail_ = new StartRadicalCall(degree);
1822 tail_ = &(*tail_)->next;
1823 }
1824
radicalRadical(const CharacterNIC & nic)1825 void SaveFOTBuilder::radicalRadical(const CharacterNIC &nic)
1826 {
1827 *tail_ = new RadicalRadicalCall(nic);
1828 tail_ = &(*tail_)->next;
1829 }
1830
startMathOperator(FOTBuilder * & oper,FOTBuilder * & lowerLimit,FOTBuilder * & upperLimit)1831 void SaveFOTBuilder::startMathOperator(FOTBuilder *&oper,
1832 FOTBuilder *&lowerLimit,
1833 FOTBuilder *&upperLimit)
1834 {
1835 *tail_ = new StartMathOperatorCall(oper, lowerLimit, upperLimit);
1836 tail_ = &(*tail_)->next;
1837 }
1838
startGrid(const GridNIC & nic)1839 void SaveFOTBuilder::startGrid(const GridNIC &nic)
1840 {
1841 *tail_ = new StartGridCall(nic);
1842 tail_ = &(*tail_)->next;
1843 }
1844
startGridCell(const GridCellNIC & nic)1845 void SaveFOTBuilder::startGridCell(const GridCellNIC &nic)
1846 {
1847 *tail_ = new StartGridCellCall(nic);
1848 tail_ = &(*tail_)->next;
1849 }
1850
startMultiMode(const MultiMode * principalMode,const Vector<MultiMode> & namedModes,Vector<FOTBuilder * > & namedPorts)1851 void SaveFOTBuilder::startMultiMode(const MultiMode *principalMode,
1852 const Vector<MultiMode> &namedModes,
1853 Vector<FOTBuilder *> &namedPorts)
1854 {
1855 *tail_ = new StartMultiModeCall(principalMode, namedModes, namedPorts);
1856 tail_ = &(*tail_)->next;
1857 }
1858
setGlyphSubstTable(const Vector<ConstPtr<GlyphSubstTable>> & tables)1859 void SaveFOTBuilder::setGlyphSubstTable(const Vector<ConstPtr<GlyphSubstTable> > &tables)
1860 {
1861 *tail_ = new SetGlyphSubstTableCall(tables);
1862 tail_ = &(*tail_)->next;
1863 }
1864
extensionSet(void (FOTBuilder::* func)(bool),bool arg)1865 void SaveFOTBuilder::extensionSet(void (FOTBuilder::*func)(bool), bool arg)
1866 {
1867 *tail_ = new ExtensionBoolArgCall(func, arg);
1868 tail_ = &(*tail_)->next;
1869 }
1870
extensionSet(void (FOTBuilder::* func)(const StringC &),const StringC & arg)1871 void SaveFOTBuilder::extensionSet(void (FOTBuilder::*func)(const StringC &), const StringC &arg)
1872 {
1873 *tail_ = new ExtensionStringArgCall(func, arg);
1874 tail_ = &(*tail_)->next;
1875 }
1876
extensionSet(void (FOTBuilder::* func)(long),long arg)1877 void SaveFOTBuilder::extensionSet(void (FOTBuilder::*func)(long), long arg)
1878 {
1879 *tail_ = new ExtensionLongArgCall(func, arg);
1880 tail_ = &(*tail_)->next;
1881 }
1882
startExtension(const CompoundExtensionFlowObj & fo,const NodePtr & node,Vector<FOTBuilder * > & ports)1883 void SaveFOTBuilder::startExtension(const CompoundExtensionFlowObj &fo,
1884 const NodePtr &node,
1885 Vector<FOTBuilder *> &ports)
1886 {
1887 *tail_ = new StartExtensionCall(fo, node, ports);
1888 tail_ = &(*tail_)->next;
1889 }
1890
endExtension(const CompoundExtensionFlowObj & fo)1891 void SaveFOTBuilder::endExtension(const CompoundExtensionFlowObj &fo)
1892 {
1893 *tail_ = new EndExtensionCall(fo);
1894 tail_ = &(*tail_)->next;
1895 }
1896
extension(const ExtensionFlowObj & fo,const NodePtr & node)1897 void SaveFOTBuilder::extension(const ExtensionFlowObj &fo, const NodePtr &node)
1898 {
1899 *tail_ = new ExtensionCall(fo, node);
1900 tail_ = &(*tail_)->next;
1901 }
1902
CharactersCall(const Char * s,size_t n)1903 SaveFOTBuilder::CharactersCall::CharactersCall(const Char *s, size_t n)
1904 : str(s, n)
1905 {
1906 }
1907
emit(FOTBuilder & fotb)1908 void SaveFOTBuilder::CharactersCall::emit(FOTBuilder &fotb)
1909 {
1910 fotb.characters(str.data(), str.size());
1911 }
1912
StartFractionCall(FOTBuilder * & n,FOTBuilder * & d)1913 StartFractionCall::StartFractionCall(FOTBuilder *&n, FOTBuilder *&d)
1914 {
1915 n = &numerator;
1916 d = &denominator;
1917 }
1918
emit(FOTBuilder & fotb)1919 void StartFractionCall::emit(FOTBuilder &fotb)
1920 {
1921 FOTBuilder *n, *d;
1922 fotb.startFraction(n, d);
1923 numerator.emit(*n);
1924 denominator.emit(*d);
1925 }
1926
StartScriptCall(FOTBuilder * & p0,FOTBuilder * & p1,FOTBuilder * & p2,FOTBuilder * & p3,FOTBuilder * & p4,FOTBuilder * & p5)1927 StartScriptCall::StartScriptCall(FOTBuilder *&p0,
1928 FOTBuilder *&p1,
1929 FOTBuilder *&p2,
1930 FOTBuilder *&p3,
1931 FOTBuilder *&p4,
1932 FOTBuilder *&p5)
1933 {
1934 p0 = &preSup;
1935 p1 = &preSub;
1936 p2 = &postSup;
1937 p3 = &postSub;
1938 p4 = &midSup;
1939 p5 = &midSub;
1940 }
1941
emit(FOTBuilder & fotb)1942 void StartScriptCall::emit(FOTBuilder &fotb)
1943 {
1944 FOTBuilder *v[6];
1945 fotb.startScript(v[0], v[1], v[2], v[3], v[4], v[5]);
1946 preSup.emit(*v[0]);
1947 preSub.emit(*v[1]);
1948 postSup.emit(*v[2]);
1949 postSub.emit(*v[3]);
1950 midSup.emit(*v[4]);
1951 midSub.emit(*v[5]);
1952 }
1953
StartMarkCall(FOTBuilder * & o,FOTBuilder * & u)1954 StartMarkCall::StartMarkCall(FOTBuilder *&o, FOTBuilder *&u)
1955 {
1956 o = &overMark;
1957 u = &underMark;
1958 }
1959
emit(FOTBuilder & fotb)1960 void StartMarkCall::emit(FOTBuilder &fotb)
1961 {
1962 FOTBuilder *o, *u;
1963 fotb.startMark(o, u);
1964 overMark.emit(*o);
1965 underMark.emit(*u);
1966 }
1967
StartFenceCall(FOTBuilder * & o,FOTBuilder * & c)1968 StartFenceCall::StartFenceCall(FOTBuilder *&o, FOTBuilder *&c)
1969 {
1970 o = &open;
1971 c = &close;
1972 }
1973
emit(FOTBuilder & fotb)1974 void StartFenceCall::emit(FOTBuilder &fotb)
1975 {
1976 FOTBuilder *o, *c;
1977 fotb.startFence(o, c);
1978 open.emit(*o);
1979 close.emit(*c);
1980 }
1981
StartRadicalCall(FOTBuilder * & d)1982 StartRadicalCall::StartRadicalCall(FOTBuilder *&d)
1983 {
1984 d = °ree;
1985 }
1986
emit(FOTBuilder & fotb)1987 void StartRadicalCall::emit(FOTBuilder &fotb)
1988 {
1989 FOTBuilder *d;
1990 fotb.startRadical(d);
1991 degree.emit(*d);
1992 }
1993
StartMathOperatorCall(FOTBuilder * & o,FOTBuilder * & l,FOTBuilder * & u)1994 StartMathOperatorCall::StartMathOperatorCall(FOTBuilder *&o,
1995 FOTBuilder *&l,
1996 FOTBuilder *&u)
1997 {
1998 o = &oper;
1999 l = &lowerLimit;
2000 u = &upperLimit;
2001 }
2002
emit(FOTBuilder & fotb)2003 void StartMathOperatorCall::emit(FOTBuilder &fotb)
2004 {
2005 FOTBuilder *o, *l, *u;
2006 fotb.startMathOperator(o, l, u);
2007 oper.emit(*o);
2008 lowerLimit.emit(*l);
2009 upperLimit.emit(*u);
2010 }
2011
StartMultiModeCall(const FOTBuilder::MultiMode * pm,const Vector<FOTBuilder::MultiMode> & nm,Vector<FOTBuilder * > & v)2012 StartMultiModeCall::StartMultiModeCall(const FOTBuilder::MultiMode *pm,
2013 const Vector<FOTBuilder::MultiMode> &nm,
2014 Vector<FOTBuilder *> &v)
2015 : namedModes(nm)
2016 {
2017 if (pm) {
2018 hasPrincipalMode = 1;
2019 principalMode = *pm;
2020 }
2021 else
2022 hasPrincipalMode = 0;
2023 for (size_t i = v.size(); i > 0; i--) {
2024 ports.insert(new SaveFOTBuilder);
2025 v[i - 1] = ports.head();
2026 }
2027 }
2028
emit(FOTBuilder & fotb)2029 void StartMultiModeCall::emit(FOTBuilder &fotb)
2030 {
2031 Vector<FOTBuilder *> v(namedModes.size());
2032 fotb.startMultiMode(hasPrincipalMode ? &principalMode : 0, namedModes, v);
2033 for (size_t i = 0; i < v.size(); i++) {
2034 Owner<SaveFOTBuilder> tem(ports.get());
2035 tem->emit(*v[i]);
2036 }
2037 }
2038
emit(FOTBuilder & fotb)2039 void SaveFOTBuilder::StartTableCall::emit(FOTBuilder &fotb)
2040 {
2041 fotb.startTable(arg);
2042 }
2043
emit(FOTBuilder & fotb)2044 void SaveFOTBuilder::TableColumnCall::emit(FOTBuilder &fotb)
2045 {
2046 fotb.tableColumn(arg);
2047 }
2048
emit(FOTBuilder & fotb)2049 void SaveFOTBuilder::StartTableCellCall::emit(FOTBuilder &fotb)
2050 {
2051 fotb.startTableCell(arg);
2052 }
2053
StartTablePartCall(const SaveFOTBuilder::TablePartNIC & nic,FOTBuilder * & h,FOTBuilder * & f)2054 StartTablePartCall::StartTablePartCall(const SaveFOTBuilder::TablePartNIC &nic,
2055 FOTBuilder *&h, FOTBuilder *&f)
2056 : arg(nic)
2057 {
2058 h = &header;
2059 f = &footer;
2060 }
2061
emit(FOTBuilder & fotb)2062 void StartTablePartCall::emit(FOTBuilder &fotb)
2063 {
2064 FOTBuilder *h, *f;
2065 fotb.startTablePart(arg, h, f);
2066 header.emit(*h);
2067 footer.emit(*f);
2068 }
2069
StartParagraphCall(const ParagraphNIC & nic)2070 SaveFOTBuilder::StartParagraphCall::StartParagraphCall(const ParagraphNIC &nic)
2071 : arg(nic)
2072 {
2073 }
2074
emit(FOTBuilder & fotb)2075 void SaveFOTBuilder::StartParagraphCall::emit(FOTBuilder &fotb)
2076 {
2077 fotb.startParagraph(arg);
2078 }
2079
ParagraphBreakCall(const ParagraphNIC & nic)2080 SaveFOTBuilder::ParagraphBreakCall::ParagraphBreakCall(const ParagraphNIC &nic)
2081 : arg(nic)
2082 {
2083 }
2084
emit(FOTBuilder & fotb)2085 void SaveFOTBuilder::ParagraphBreakCall::emit(FOTBuilder &fotb)
2086 {
2087 fotb.paragraphBreak(arg);
2088 }
2089
2090 SaveFOTBuilder
StartDisplayGroupCall(const DisplayGroupNIC & nic)2091 ::StartDisplayGroupCall::StartDisplayGroupCall(const DisplayGroupNIC &nic)
2092 : arg(nic)
2093 {
2094 }
2095
emit(FOTBuilder & fotb)2096 void SaveFOTBuilder::StartDisplayGroupCall::emit(FOTBuilder &fotb)
2097 {
2098 fotb.startDisplayGroup(arg);
2099 }
2100
emit(FOTBuilder & fotb)2101 void SaveFOTBuilder::ExternalGraphicCall::emit(FOTBuilder &fotb)
2102 {
2103 fotb.externalGraphic(arg);
2104 }
2105
emit(FOTBuilder & fotb)2106 void SaveFOTBuilder::RuleCall::emit(FOTBuilder &fotb)
2107 {
2108 fotb.rule(arg);
2109 }
2110
emit(FOTBuilder & fotb)2111 void SaveFOTBuilder::StartLeaderCall::emit(FOTBuilder &fotb)
2112 {
2113 fotb.startLeader(arg);
2114 }
2115
emit(FOTBuilder & fotb)2116 void SaveFOTBuilder::StartBoxCall::emit(FOTBuilder &fotb)
2117 {
2118 fotb.startBox(arg);
2119 }
2120
emit(FOTBuilder & fotb)2121 void SaveFOTBuilder::StartLineFieldCall::emit(FOTBuilder &fotb)
2122 {
2123 fotb.startLineField(arg);
2124 }
2125
emit(FOTBuilder & fotb)2126 void SaveFOTBuilder::StartLinkCall::emit(FOTBuilder &fotb)
2127 {
2128 fotb.startLink(arg);
2129 }
2130
emit(FOTBuilder & fotb)2131 void SaveFOTBuilder::SetGlyphSubstTableCall::emit(FOTBuilder &fotb)
2132 {
2133 fotb.setGlyphSubstTable(arg);
2134 }
2135
emit(FOTBuilder & fotb)2136 void SaveFOTBuilder::StartGridCall::emit(FOTBuilder &fotb)
2137 {
2138 fotb.startGrid(arg);
2139 }
2140
emit(FOTBuilder & fotb)2141 void SaveFOTBuilder::StartGridCellCall::emit(FOTBuilder &fotb)
2142 {
2143 fotb.startGridCell(arg);
2144 }
2145
emit(FOTBuilder & fotb)2146 void SaveFOTBuilder::RadicalRadicalCall::emit(FOTBuilder &fotb)
2147 {
2148 fotb.radicalRadical(arg);
2149 }
2150
emit(FOTBuilder & fotb)2151 void SaveFOTBuilder::ExtensionCall::emit(FOTBuilder &fotb)
2152 {
2153 fotb.extension(*arg, node);
2154 }
2155
emit(FOTBuilder & fotb)2156 void SaveFOTBuilder::EndExtensionCall::emit(FOTBuilder &fotb)
2157 {
2158 fotb.endExtension(*arg);
2159 }
2160
StartExtensionCall(const FOTBuilder::CompoundExtensionFlowObj & fo,const NodePtr & nd,Vector<FOTBuilder * > & v)2161 StartExtensionCall::StartExtensionCall(const FOTBuilder::CompoundExtensionFlowObj &fo,
2162 const NodePtr &nd,
2163 Vector<FOTBuilder *> &v)
2164 : flowObj(fo.copy()->asCompoundExtensionFlowObj()), node(nd)
2165 {
2166 for (size_t i = v.size(); i > 0; i--) {
2167 ports.insert(new SaveFOTBuilder);
2168 v[i - 1] = ports.head();
2169 }
2170 }
2171
emit(FOTBuilder & fotb)2172 void StartExtensionCall::emit(FOTBuilder &fotb)
2173 {
2174 Vector<StringC> portNames;
2175 flowObj->portNames(portNames);
2176 Vector<FOTBuilder *> v(portNames.size());
2177 fotb.startExtension(*flowObj, node, v);
2178 for (size_t i = 0; i < v.size(); i++) {
2179 Owner<SaveFOTBuilder> tem(ports.get());
2180 tem->emit(*v[i]);
2181 }
2182 }
2183
SerialFOTBuilder()2184 SerialFOTBuilder::SerialFOTBuilder()
2185 {
2186 }
2187
startFraction(FOTBuilder * & numerator,FOTBuilder * & denominator)2188 void SerialFOTBuilder::startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator)
2189 {
2190 save_.insert(new SaveFOTBuilder);
2191 denominator = save_.head();
2192 save_.insert(new SaveFOTBuilder);
2193 numerator = save_.head();
2194 startFractionSerial();
2195 }
2196
endFraction()2197 void SerialFOTBuilder::endFraction()
2198 {
2199 {
2200 Owner<SaveFOTBuilder> numerator(save_.get());
2201 startFractionNumerator();
2202 numerator->emit(*this);
2203 endFractionNumerator();
2204 }
2205 {
2206 Owner<SaveFOTBuilder> denominator(save_.get());
2207 startFractionDenominator();
2208 denominator->emit(*this);
2209 endFractionDenominator();
2210 }
2211 endFractionSerial();
2212 }
2213
startScript(FOTBuilder * & preSup,FOTBuilder * & preSub,FOTBuilder * & postSup,FOTBuilder * & postSub,FOTBuilder * & midSup,FOTBuilder * & midSub)2214 void SerialFOTBuilder::startScript(FOTBuilder *&preSup,
2215 FOTBuilder *&preSub,
2216 FOTBuilder *&postSup,
2217 FOTBuilder *&postSub,
2218 FOTBuilder *&midSup,
2219 FOTBuilder *&midSub)
2220 {
2221 save_.insert(new SaveFOTBuilder);
2222 midSub = save_.head();
2223 save_.insert(new SaveFOTBuilder);
2224 midSup = save_.head();
2225 save_.insert(new SaveFOTBuilder);
2226 postSub = save_.head();
2227 save_.insert(new SaveFOTBuilder);
2228 postSup = save_.head();
2229 save_.insert(new SaveFOTBuilder);
2230 preSub = save_.head();
2231 save_.insert(new SaveFOTBuilder);
2232 preSup = save_.head();
2233 startScriptSerial();
2234 }
2235
endScript()2236 void SerialFOTBuilder::endScript()
2237 {
2238 {
2239 Owner<SaveFOTBuilder> tem(save_.get());
2240 startScriptPreSup();
2241 tem->emit(*this);
2242 endScriptPreSup();
2243 }
2244 {
2245 Owner<SaveFOTBuilder> tem(save_.get());
2246 startScriptPreSub();
2247 tem->emit(*this);
2248 endScriptPreSub();
2249 }
2250 {
2251 Owner<SaveFOTBuilder> tem(save_.get());
2252 startScriptPostSup();
2253 tem->emit(*this);
2254 endScriptPostSup();
2255 }
2256 {
2257 Owner<SaveFOTBuilder> tem(save_.get());
2258 startScriptPostSub();
2259 tem->emit(*this);
2260 endScriptPostSub();
2261 }
2262 {
2263 Owner<SaveFOTBuilder> tem(save_.get());
2264 startScriptMidSup();
2265 tem->emit(*this);
2266 endScriptMidSup();
2267 }
2268 {
2269 Owner<SaveFOTBuilder> tem(save_.get());
2270 startScriptMidSub();
2271 tem->emit(*this);
2272 endScriptMidSub();
2273 }
2274 endScriptSerial();
2275 }
2276
startMark(FOTBuilder * & overMark,FOTBuilder * & underMark)2277 void SerialFOTBuilder::startMark(FOTBuilder *&overMark, FOTBuilder *&underMark)
2278 {
2279 save_.insert(new SaveFOTBuilder);
2280 underMark = save_.head();
2281 save_.insert(new SaveFOTBuilder);
2282 overMark = save_.head();
2283 startMarkSerial();
2284 }
2285
endMark()2286 void SerialFOTBuilder::endMark()
2287 {
2288 {
2289 Owner<SaveFOTBuilder> tem(save_.get());
2290 startMarkOver();
2291 tem->emit(*this);
2292 endMarkOver();
2293 }
2294 {
2295 Owner<SaveFOTBuilder> tem(save_.get());
2296 startMarkUnder();
2297 tem->emit(*this);
2298 endMarkUnder();
2299 }
2300 endMarkSerial();
2301 }
2302
startFence(FOTBuilder * & open,FOTBuilder * & close)2303 void SerialFOTBuilder::startFence(FOTBuilder *&open, FOTBuilder *&close)
2304 {
2305 save_.insert(new SaveFOTBuilder);
2306 close = save_.head();
2307 save_.insert(new SaveFOTBuilder);
2308 open = save_.head();
2309 startFenceSerial();
2310 }
2311
endFence()2312 void SerialFOTBuilder::endFence()
2313 {
2314 {
2315 Owner<SaveFOTBuilder> tem(save_.get());
2316 startFenceOpen();
2317 tem->emit(*this);
2318 endFenceOpen();
2319 }
2320 {
2321 Owner<SaveFOTBuilder> tem(save_.get());
2322 startFenceClose();
2323 tem->emit(*this);
2324 endFenceClose();
2325 }
2326 endFenceSerial();
2327 }
2328
startRadical(FOTBuilder * & degree)2329 void SerialFOTBuilder::startRadical(FOTBuilder *°ree)
2330 {
2331 save_.insert(new SaveFOTBuilder);
2332 degree = save_.head();
2333 startRadicalSerial();
2334 }
2335
endRadical()2336 void SerialFOTBuilder::endRadical()
2337 {
2338 Owner<SaveFOTBuilder> tem(save_.get());
2339 startRadicalDegree();
2340 tem->emit(*this);
2341 endRadicalDegree();
2342 endRadicalSerial();
2343 }
2344
startMathOperator(FOTBuilder * & oper,FOTBuilder * & lowerLimit,FOTBuilder * & upperLimit)2345 void SerialFOTBuilder::startMathOperator(FOTBuilder *&oper,
2346 FOTBuilder *&lowerLimit,
2347 FOTBuilder *&upperLimit)
2348 {
2349 save_.insert(new SaveFOTBuilder);
2350 upperLimit = save_.head();
2351 save_.insert(new SaveFOTBuilder);
2352 lowerLimit = save_.head();
2353 save_.insert(new SaveFOTBuilder);
2354 oper = save_.head();
2355 startMathOperatorSerial();
2356 }
2357
endMathOperator()2358 void SerialFOTBuilder::endMathOperator()
2359 {
2360 {
2361 Owner<SaveFOTBuilder> tem(save_.get());
2362 startMathOperatorOperator();
2363 tem->emit(*this);
2364 endMathOperatorOperator();
2365 }
2366 {
2367 Owner<SaveFOTBuilder> tem(save_.get());
2368 startMathOperatorLowerLimit();
2369 tem->emit(*this);
2370 endMathOperatorLowerLimit();
2371 }
2372 {
2373 Owner<SaveFOTBuilder> tem(save_.get());
2374 startMathOperatorUpperLimit();
2375 tem->emit(*this);
2376 endMathOperatorUpperLimit();
2377 }
2378 endMathOperatorSerial();
2379 }
2380
startFractionSerial()2381 void SerialFOTBuilder::startFractionSerial()
2382 {
2383 start();
2384 }
2385
endFractionSerial()2386 void SerialFOTBuilder::endFractionSerial()
2387 {
2388 end();
2389 }
2390
startFractionNumerator()2391 void SerialFOTBuilder::startFractionNumerator()
2392 {
2393 }
2394
endFractionNumerator()2395 void SerialFOTBuilder::endFractionNumerator()
2396 {
2397 }
2398
startFractionDenominator()2399 void SerialFOTBuilder::startFractionDenominator()
2400 {
2401 }
2402
endFractionDenominator()2403 void SerialFOTBuilder::endFractionDenominator()
2404 {
2405 }
2406
startScriptSerial()2407 void SerialFOTBuilder::startScriptSerial()
2408 {
2409 start();
2410 }
2411
endScriptSerial()2412 void SerialFOTBuilder::endScriptSerial()
2413 {
2414 end();
2415 }
2416
startScriptPreSup()2417 void SerialFOTBuilder::startScriptPreSup()
2418 {
2419 }
2420
endScriptPreSup()2421 void SerialFOTBuilder::endScriptPreSup()
2422 {
2423 }
2424
startScriptPreSub()2425 void SerialFOTBuilder::startScriptPreSub()
2426 {
2427 }
2428
endScriptPreSub()2429 void SerialFOTBuilder::endScriptPreSub()
2430 {
2431 }
2432
startScriptPostSup()2433 void SerialFOTBuilder::startScriptPostSup()
2434 {
2435 }
2436
endScriptPostSup()2437 void SerialFOTBuilder::endScriptPostSup()
2438 {
2439 }
2440
startScriptPostSub()2441 void SerialFOTBuilder::startScriptPostSub()
2442 {
2443 }
2444
endScriptPostSub()2445 void SerialFOTBuilder::endScriptPostSub()
2446 {
2447 }
2448
startScriptMidSup()2449 void SerialFOTBuilder::startScriptMidSup()
2450 {
2451 }
2452
endScriptMidSup()2453 void SerialFOTBuilder::endScriptMidSup()
2454 {
2455 }
2456
startScriptMidSub()2457 void SerialFOTBuilder::startScriptMidSub()
2458 {
2459 }
2460
endScriptMidSub()2461 void SerialFOTBuilder::endScriptMidSub()
2462 {
2463 }
2464
startMarkSerial()2465 void SerialFOTBuilder::startMarkSerial()
2466 {
2467 start();
2468 }
2469
endMarkSerial()2470 void SerialFOTBuilder::endMarkSerial()
2471 {
2472 end();
2473 }
2474
startMarkOver()2475 void SerialFOTBuilder::startMarkOver()
2476 {
2477 }
2478
endMarkOver()2479 void SerialFOTBuilder::endMarkOver()
2480 {
2481 }
2482
startMarkUnder()2483 void SerialFOTBuilder::startMarkUnder()
2484 {
2485 }
2486
endMarkUnder()2487 void SerialFOTBuilder::endMarkUnder()
2488 {
2489 }
2490
startFenceSerial()2491 void SerialFOTBuilder::startFenceSerial()
2492 {
2493 start();
2494 }
2495
endFenceSerial()2496 void SerialFOTBuilder::endFenceSerial()
2497 {
2498 end();
2499 }
2500
startFenceOpen()2501 void SerialFOTBuilder::startFenceOpen()
2502 {
2503 }
2504
endFenceOpen()2505 void SerialFOTBuilder::endFenceOpen()
2506 {
2507 }
2508
startFenceClose()2509 void SerialFOTBuilder::startFenceClose()
2510 {
2511 }
2512
endFenceClose()2513 void SerialFOTBuilder::endFenceClose()
2514 {
2515 }
2516
startRadicalSerial()2517 void SerialFOTBuilder::startRadicalSerial()
2518 {
2519 start();
2520 }
2521
endRadicalSerial()2522 void SerialFOTBuilder::endRadicalSerial()
2523 {
2524 end();
2525 }
2526
startRadicalDegree()2527 void SerialFOTBuilder::startRadicalDegree()
2528 {
2529 }
2530
endRadicalDegree()2531 void SerialFOTBuilder::endRadicalDegree()
2532 {
2533 }
2534
startMathOperatorSerial()2535 void SerialFOTBuilder::startMathOperatorSerial()
2536 {
2537 start();
2538 }
2539
endMathOperatorSerial()2540 void SerialFOTBuilder::endMathOperatorSerial()
2541 {
2542 end();
2543 }
2544
startMathOperatorOperator()2545 void SerialFOTBuilder::startMathOperatorOperator()
2546 {
2547 }
2548
endMathOperatorOperator()2549 void SerialFOTBuilder::endMathOperatorOperator()
2550 {
2551 }
2552
startMathOperatorLowerLimit()2553 void SerialFOTBuilder::startMathOperatorLowerLimit()
2554 {
2555 }
2556
endMathOperatorLowerLimit()2557 void SerialFOTBuilder::endMathOperatorLowerLimit()
2558 {
2559 }
2560
startMathOperatorUpperLimit()2561 void SerialFOTBuilder::startMathOperatorUpperLimit()
2562 {
2563 }
2564
endMathOperatorUpperLimit()2565 void SerialFOTBuilder::endMathOperatorUpperLimit()
2566 {
2567 }
2568
startTablePart(const FOTBuilder::TablePartNIC & nic,FOTBuilder * & header,FOTBuilder * & footer)2569 void SerialFOTBuilder::startTablePart(const FOTBuilder::TablePartNIC &nic,
2570 FOTBuilder *&header, FOTBuilder *&footer)
2571 {
2572 save_.insert(new SaveFOTBuilder);
2573 footer = save_.head();
2574 save_.insert(new SaveFOTBuilder);
2575 header = save_.head();
2576 startTablePartSerial(nic);
2577 }
2578
endTablePart()2579 void SerialFOTBuilder::endTablePart()
2580 {
2581 Owner<SaveFOTBuilder> header(save_.get());
2582 startTablePartHeader();
2583 header->emit(*this);
2584 endTablePartHeader();
2585 Owner<SaveFOTBuilder> footer(save_.get());
2586 startTablePartFooter();
2587 footer->emit(*this);
2588 endTablePartFooter();
2589 endTablePartSerial();
2590 }
2591
startTablePartSerial(const TablePartNIC &)2592 void SerialFOTBuilder::startTablePartSerial(const TablePartNIC &)
2593 {
2594 start();
2595 }
2596
endTablePartSerial()2597 void SerialFOTBuilder::endTablePartSerial()
2598 {
2599 end();
2600 }
2601
startTablePartHeader()2602 void SerialFOTBuilder::startTablePartHeader()
2603 {
2604 }
2605
endTablePartHeader()2606 void SerialFOTBuilder::endTablePartHeader()
2607 {
2608 }
2609
startTablePartFooter()2610 void SerialFOTBuilder::startTablePartFooter()
2611 {
2612 }
2613
endTablePartFooter()2614 void SerialFOTBuilder::endTablePartFooter()
2615 {
2616 }
2617
startMultiMode(const MultiMode * principalMode,const Vector<MultiMode> & namedModes,Vector<FOTBuilder * > & namedPorts)2618 void SerialFOTBuilder::startMultiMode(const MultiMode *principalMode,
2619 const Vector<MultiMode> &namedModes,
2620 Vector<FOTBuilder *> &namedPorts)
2621 {
2622 for (size_t i = namedModes.size(); i > 0; i--) {
2623 save_.insert(new SaveFOTBuilder);
2624 namedPorts[i - 1] = save_.head();
2625 }
2626 multiModeStack_.push_back(namedModes);
2627 startMultiModeSerial(principalMode);
2628 }
2629
endMultiMode()2630 void SerialFOTBuilder::endMultiMode()
2631 {
2632 const Vector<MultiMode> &namedModes = multiModeStack_.back();
2633 for (size_t i = 0; i < namedModes.size(); i++) {
2634 Owner<SaveFOTBuilder> mode(save_.get());
2635 startMultiModeMode(namedModes[i]);
2636 mode->emit(*this);
2637 endMultiModeMode();
2638 }
2639 endMultiModeSerial();
2640 multiModeStack_.resize(multiModeStack_.size() - 1);
2641 }
2642
startMultiModeSerial(const MultiMode *)2643 void SerialFOTBuilder::startMultiModeSerial(const MultiMode *)
2644 {
2645 start();
2646 }
2647
endMultiModeSerial()2648 void SerialFOTBuilder::endMultiModeSerial()
2649 {
2650 end();
2651 }
2652
startMultiModeMode(const MultiMode &)2653 void SerialFOTBuilder::startMultiModeMode(const MultiMode &)
2654 {
2655 }
2656
endMultiModeMode()2657 void SerialFOTBuilder::endMultiModeMode()
2658 {
2659 }
2660
startExtension(const CompoundExtensionFlowObj & flowObj,const NodePtr & nd,Vector<FOTBuilder * > & ports)2661 void SerialFOTBuilder::startExtension(const CompoundExtensionFlowObj &flowObj,
2662 const NodePtr &nd,
2663 Vector<FOTBuilder *> &ports)
2664 {
2665 for (size_t i = ports.size(); i > 0; i--) {
2666 save_.insert(new SaveFOTBuilder);
2667 ports[i - 1] = save_.head();
2668 }
2669 startExtensionSerial(flowObj, nd);
2670 }
2671
endExtension(const CompoundExtensionFlowObj & flowObj)2672 void SerialFOTBuilder::endExtension(const CompoundExtensionFlowObj &flowObj)
2673 {
2674 Vector<StringC> portNames;
2675 flowObj.portNames(portNames);
2676 for (size_t i = 0; i < portNames.size(); i++) {
2677 Owner<SaveFOTBuilder> stream(save_.get());
2678 startExtensionStream(portNames[i]);
2679 stream->emit(*this);
2680 endExtensionStream(portNames[i]);
2681 }
2682 endExtensionSerial(flowObj);
2683 }
2684
startExtensionSerial(const CompoundExtensionFlowObj &,const NodePtr &)2685 void SerialFOTBuilder::startExtensionSerial(const CompoundExtensionFlowObj &, const NodePtr &)
2686 {
2687 start();
2688 }
2689
endExtensionSerial(const CompoundExtensionFlowObj &)2690 void SerialFOTBuilder::endExtensionSerial(const CompoundExtensionFlowObj &)
2691 {
2692 end();
2693 }
2694
startExtensionStream(const StringC &)2695 void SerialFOTBuilder::startExtensionStream(const StringC &)
2696 {
2697 }
2698
endExtensionStream(const StringC &)2699 void SerialFOTBuilder::endExtensionStream(const StringC &)
2700 {
2701 }
2702
~ExtensionFlowObj()2703 FOTBuilder::ExtensionFlowObj::~ExtensionFlowObj()
2704 {
2705 }
2706
2707 FOTBuilder::CompoundExtensionFlowObj *
asCompoundExtensionFlowObj()2708 FOTBuilder::ExtensionFlowObj::asCompoundExtensionFlowObj()
2709 {
2710 return 0;
2711 }
2712
2713 const FOTBuilder::CompoundExtensionFlowObj *
asCompoundExtensionFlowObj() const2714 FOTBuilder::ExtensionFlowObj::asCompoundExtensionFlowObj() const
2715 {
2716 return 0;
2717 }
2718
hasNIC(const StringC &) const2719 bool FOTBuilder::ExtensionFlowObj::hasNIC(const StringC &) const
2720 {
2721 return 0;
2722 }
2723
setNIC(const StringC &,const Value &)2724 void FOTBuilder::ExtensionFlowObj::setNIC(const StringC &, const Value &)
2725 {
2726 CANNOT_HAPPEN();
2727 }
2728
2729 FOTBuilder::CompoundExtensionFlowObj *
asCompoundExtensionFlowObj()2730 FOTBuilder::CompoundExtensionFlowObj::asCompoundExtensionFlowObj()
2731 {
2732 return this;
2733 }
2734
2735 const FOTBuilder::CompoundExtensionFlowObj *
asCompoundExtensionFlowObj() const2736 FOTBuilder::CompoundExtensionFlowObj::asCompoundExtensionFlowObj() const
2737 {
2738 return this;
2739 }
2740
hasPrincipalPort() const2741 bool FOTBuilder::CompoundExtensionFlowObj::hasPrincipalPort() const
2742 {
2743 return 1;
2744 }
2745
portNames(Vector<StringC> &) const2746 void FOTBuilder::CompoundExtensionFlowObj::portNames(Vector<StringC> &) const
2747 {
2748 }
2749
2750 #ifdef DSSSL_NAMESPACE
2751 }
2752 #endif
2753