2 *******************************************************************************
4 * Copyright (c) 1995-2013 International Business Machines Corporation and others
8 * Permission is hereby granted, free of charge, to any person obtaining a copy of
9 * this software and associated documentation files (the "Software"), to deal in
10 * the Software without restriction, including without limitation the rights to
11 * use, copy, modify, merge, publish, distribute, and/or sell copies of the
12 * Software, and to permit persons to whom the Software is furnished to do so,
13 * provided that the above copyright notice(s) and this permission notice appear
14 * in all copies of the Software and that both the above copyright notice(s) and
15 * this permission notice appear in supporting documentation.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
20 * NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
21 * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
22 * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
23 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
24 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
26 * Except as contained in this notice, the name of a copyright holder shall not be
27 * used in advertising or otherwise to promote the sale, use or other dealings in
28 * this Software without prior written authorization of the copyright holder.
30 *******************************************************************************
31 * file name: scrptrun.h
33 * created on: 10/17/2001
34 * created by: Eric R. Mader
37 #ifndef INCLUDED_VCL_INC_SCRPTRUN_H
38 #define INCLUDED_VCL_INC_SCRPTRUN_H
40 #include <sal/config.h>
42 #include <unicode/uobject.h>
43 #include <unicode/uscript.h>
48 struct ParenStackEntry
51 UScriptCode scriptCode
;
54 , scriptCode(USCRIPT_INVALID_CODE
)
59 class ScriptRun
: public icu::UObject
{
62 ScriptRun(const UChar chars
[], int32_t length
);
66 void reset(int32_t start
, int32_t count
);
68 void reset(const UChar chars
[], int32_t start
, int32_t length
);
70 int32_t getScriptStart() const;
72 int32_t getScriptEnd() const;
74 UScriptCode
getScriptCode() const;
79 s * ICU "poor man's RTTI", returns a UClassID for the actual class.
83 virtual UClassID
getDynamicClassID() const override
{ return getStaticClassID(); }
86 * ICU "poor man's RTTI", returns a UClassID for this class.
90 static UClassID
getStaticClassID() { return static_cast<UClassID
>(const_cast<char *>(&fgClassID
)); }
96 const UChar
*charArray
;
100 UScriptCode scriptCode
;
102 std::vector
<ParenStackEntry
> parenStack
;
106 * The address of this static class variable serves as this class's ID
107 * for ICU "poor man's RTTI".
109 static const char fgClassID
;
112 inline ScriptRun::ScriptRun(const UChar chars
[], int32_t length
)
114 reset(chars
, 0, length
);
117 inline int32_t ScriptRun::getScriptStart() const
122 inline int32_t ScriptRun::getScriptEnd() const
127 inline UScriptCode
ScriptRun::getScriptCode() const
132 inline void ScriptRun::reset()
134 scriptStart
= charStart
;
135 scriptEnd
= charStart
;
136 scriptCode
= USCRIPT_INVALID_CODE
;
138 parenStack
.resize(128);
141 inline void ScriptRun::reset(int32_t start
, int32_t length
)
144 charLimit
= start
+ length
;
149 inline void ScriptRun::reset(const UChar chars
[], int32_t start
, int32_t length
)
153 reset(start
, length
);