Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
SyntaxColoring.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4
5namespace Stroika::Frameworks::Led {
6
7#if qStroika_Frameworks_Led_SupportGDI
8
9 /*
10 ********************************************************************************
11 ********************* SyntaxColoringMarkerOwner::ColoredStyleMarker ************
12 ********************************************************************************
13 */
14 inline SyntaxColoringMarkerOwner::ColoredStyleMarker::ColoredStyleMarker (const Color& color)
15 : fColor{color}
16 {
17 }
18
19 /*
20 ********************************************************************************
21 ******************** TableDrivenKeywordSyntaxAnalyzer::KeywordTable ************
22 ********************************************************************************
23 */
24 inline TableDrivenKeywordSyntaxAnalyzer::KeywordTable::KeywordTable (const Led_tChar* keyWords[], size_t nKeywords,
25 int (*cmpFunction) (const Led_tChar*, const Led_tChar*, size_t))
26 : fKeywords (keyWords)
27 , fNKeywords (nKeywords)
28 , fMaxKeywordLength ()
29 , fCmpFunction (cmpFunction)
30 {
31 RequireNotNull (cmpFunction);
32 unsigned u = 0;
33 for (size_t i = 0; i < nKeywords; ++i) {
34 u = max (u, unsigned (Led_tStrlen (keyWords[i])));
35 }
36 fMaxKeywordLength = u;
37 }
38 inline size_t TableDrivenKeywordSyntaxAnalyzer::KeywordTable::MaxKeywordLength () const
39 {
40 return fMaxKeywordLength;
41 }
42 inline size_t TableDrivenKeywordSyntaxAnalyzer::KeywordTable::KeywordLength (const Led_tChar* t, size_t nTChars) const
43 {
44 for (size_t i = 0; i < fNKeywords; ++i) {
45 const size_t kKeywordLen = Led_tStrlen (fKeywords[i]);
46 if (kKeywordLen <= nTChars and fCmpFunction (fKeywords[i], t, kKeywordLen) == 0) {
47 return kKeywordLen;
48 }
49 }
50 return 0;
51 }
52#endif
53
54}
#define RequireNotNull(p)
Definition Assertions.h:347