MiKTeX 26.5-next
A scalable TeX distribution
Loading...
Searching...
No Matches
InputOutputImpl.h
Go to the documentation of this file.
1
13
14#pragma once
15
16#include <miktex/TeXAndFriends/config.h>
17
18#include "WebAppInputLine.h"
19
20MIKTEX_TEXMF_BEGIN_NAMESPACE;
21
22template<class PROGRAM_CLASS> class InputOutputImpl :
23 public IInputOutput
24{
25
26public:
27
28 InputOutputImpl(PROGRAM_CLASS& program) :
29 program(program)
30 {
31 }
32
33 C4P::C4P_signed32& loc() override
34 {
35#if defined(MIKTEX_META_COMPILER) || defined(MIKTEX_TEX_COMPILER)
36 return program.curinput.locfield;
37#else
38 MIKTEX_UNEXPECTED();
39#endif
40 }
41
42 C4P::C4P_signed32& limit() override
43 {
44#if defined(MIKTEX_META_COMPILER) || defined(MIKTEX_TEX_COMPILER)
45 return program.curinput.limitfield;
46#else
47 MIKTEX_UNEXPECTED();
48#endif
49 }
50
51 C4P::C4P_signed32 first() override
52 {
53#if defined(MIKTEX_META_COMPILER) || defined(MIKTEX_TEX_COMPILER)
54 return program.first;
55#else
56 return 0;
57#endif
58 }
59
60 C4P::C4P_signed32& last() override
61 {
62 return program.last;
63 }
64
65 C4P::C4P_signed32 bufsize() override
66 {
67 return program.bufsize;
68 }
69
70 char*& nameoffile() override
71 {
72 MIKTEX_ASSERT(sizeof(program.nameoffile[0]) == sizeof(char));
73 return reinterpret_cast<char*&>(program.nameoffile);
74 }
75
76 C4P::C4P_signed32& namelength() override
77 {
78 return program.namelength;
79 }
80
81 char* buffer() override
82 {
83#if defined(MIKTEX_XETEX)
84 MIKTEX_UNEXPECTED();
85#else
86 MIKTEX_ASSERT(sizeof(program.buffer[0]) == sizeof(char));
87 return reinterpret_cast<char*>(program.buffer);
88#endif
89 }
90
91 char* buffer2() override
92 {
93 return nullptr;
94 }
95
96 char32_t* buffer32() override
97 {
98#if defined(MIKTEX_XETEX)
99 MIKTEX_ASSERT(sizeof(program.buffer[0]) == sizeof(char32_t));
100 return reinterpret_cast<char32_t*>(program.buffer);
101#else
102 MIKTEX_UNEXPECTED();
103#endif
104 }
105
106 C4P::C4P_signed32& maxbufstack() override
107 {
108#if defined(MIKTEX_META_COMPILER) || defined(MIKTEX_TEX_COMPILER)
109 return program.maxbufstack;
110#else
111 MIKTEX_UNEXPECTED();
112#endif
113 }
114
115 void overflow(C4P::C4P_signed32 s, C4P::C4P_integer n) override
116 {
117#if defined(MIKTEX_META_COMPILER) || defined(MIKTEX_TEX_COMPILER)
118 program.overflow(s, n);
119#else
120 MIKTEX_UNEXPECTED();
121#endif
122 }
123
124protected:
125
126 PROGRAM_CLASS& program;
127};
128
129MIKTEX_TEXMF_END_NAMESPACE;
MiKTeX WebApp input line base implementation.
Definition WebAppInputLine.h:51