xref: /AOO41X/main/autodoc/source/parser/inc/tokens/parseinc.hxx (revision 1c78a5d6c0093dece4c096ba53051800fbad6e33)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef ADC_PARSEINC_HXX
25 #define ADC_PARSEINC_HXX
26 
27 
28 #include <tools/tkpchars.hxx>
29 
30 inline char
jumpOver(CharacterSource & io_rText,char in_c)31 jumpOver( CharacterSource & io_rText,
32           char in_c )
33 {
34     char cNext;
35     for ( cNext = io_rText.CurChar();
36           cNext == in_c;
37           cNext = io_rText.MoveOn() )
38     { }
39 
40     return cNext;
41 }
42 
43 inline char
jumpTo(CharacterSource & io_rText,char in_c)44 jumpTo( CharacterSource & io_rText,
45         char              in_c )
46 {
47     char cNext;
48     for ( cNext = io_rText.CurChar();
49           cNext != in_c AND cNext != 0;
50           cNext = io_rText.MoveOn() )
51     { }
52 
53     return cNext;
54 }
55 
56 inline char
jumpTo(CharacterSource & io_rText,char in_c1,char in_c2)57 jumpTo( CharacterSource & io_rText,
58         char              in_c1,
59         char              in_c2 )
60 {
61     char cNext;
62     for ( cNext = io_rText.CurChar();
63           cNext != in_c1 AND cNext != in_c2 AND cNext != 0;
64           cNext = io_rText.MoveOn() )
65     { }
66 
67     return cNext;
68 }
69 
70 inline char
jumpTo(CharacterSource & io_rText,char in_c1,char in_c2,char in_c3)71 jumpTo( CharacterSource & io_rText,
72         char              in_c1,
73         char              in_c2,
74         char              in_c3 )
75 {
76     char cNext;
77     for ( cNext = io_rText.CurChar();
78           cNext != in_c1 AND cNext != in_c2 AND cNext != in_c3 AND cNext != 0;
79           cNext = io_rText.MoveOn() )
80     { }
81 
82     return cNext;
83 }
84 
85 inline char
jumpTo(CharacterSource & io_rText,char in_c1,char in_c2,char in_c3,char in_c4)86 jumpTo( CharacterSource & io_rText,
87         char              in_c1,
88         char              in_c2,
89         char              in_c3,
90         char              in_c4 )
91 {
92     char cNext;
93     for ( cNext = io_rText.CurChar();
94           cNext != in_c1 AND cNext != in_c2 AND cNext != in_c3
95                          AND cNext != in_c4 AND cNext != 0;
96           cNext = io_rText.MoveOn() )
97     { }
98 
99     return cNext;
100 }
101 
102 inline char
jumpOverWhite(CharacterSource & io_rText)103 jumpOverWhite(CharacterSource & io_rText)
104 {
105     char cNext;
106     for ( cNext = io_rText.CurChar();
107           static_cast<UINT8>(cNext) < 33
108             AND cNext != 0 AND cNext != 13 AND cNext != 10;
109           cNext = io_rText.MoveOn() )
110     { }
111 
112     return cNext;
113 }
114 
115 inline char
jumpToWhite(CharacterSource & io_rText)116 jumpToWhite(CharacterSource & io_rText)
117 {
118     char cNext;
119     for ( cNext = io_rText.CurChar();
120           static_cast<UINT8>(cNext) > 32;
121           cNext = io_rText.MoveOn() )
122     { }
123 
124     return cNext;
125 }
126 
127 inline char
jumpToEol(CharacterSource & io_rText,int & o_rCount_BackslashedLineBreaks)128 jumpToEol(CharacterSource & io_rText, int & o_rCount_BackslashedLineBreaks )
129 {
130     o_rCount_BackslashedLineBreaks = 0;
131     char cNext;
132     for ( cNext = io_rText.CurChar();
133           cNext != 13 AND cNext != 10 AND cNext != NULCH;
134           cNext = io_rText.MoveOn() )
135     {
136         if ( cNext == '\\')
137         {
138             cNext = io_rText.MoveOn();
139             if ( cNext == 13 )
140                 io_rText.MoveOn();
141             if ( cNext == 10 )
142                 ++o_rCount_BackslashedLineBreaks;
143         }
144     }
145     return cNext;
146 }
147 
148 inline char
jumpToEol(CharacterSource & io_rText)149 jumpToEol(CharacterSource & io_rText)
150 {
151     char cNext;
152     for ( cNext = io_rText.CurChar();
153           cNext != 13 AND cNext != 10 AND cNext != NULCH;
154           cNext = io_rText.MoveOn() )
155     {
156         if ( cNext == '\\')
157             io_rText.MoveOn();
158     }
159     return cNext;
160 }
161 
162 inline char
jumpOverEol(CharacterSource & io_rText)163 jumpOverEol(CharacterSource & io_rText)
164 {
165     char cNext = io_rText.CurChar();
166 
167     if (cNext == 13)
168         io_rText.MoveOn();
169     if (cNext == 10)
170         io_rText.MoveOn();
171     return cNext;
172 }
173 
174 
175 inline char // Finds a matching closing bracket after the opening one is passed
jumpToMatchingBracket(CharacterSource & io_rText,char in_cBegin,char in_cEnd)176 jumpToMatchingBracket( CharacterSource & io_rText,
177                        char              in_cBegin,
178                        char              in_cEnd )
179 {
180     intt nCounter = 1;
181     char cNext;
182     for ( cNext = io_rText.CurChar();
183           nCounter - (cNext == in_cEnd ? 1 : 0) > 0 AND cNext != NULCH;
184           cNext = io_rText.MoveOn() )
185     {
186         if (cNext == in_cEnd)
187            nCounter++;
188         else if (cNext == in_cBegin)
189            nCounter--;
190     }
191 
192     return cNext;
193 }
194 
195 
196 
197 
198 #endif
199 
200