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 *&degree)
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 &currentNode,
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 *&degree)
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 = &degree;
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 *&degree)
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