blob: 123064706b9c8cee487e7f4cdb121f95c8810fef [file] [log] [blame]
/*
* %W% %E%
*
* (C) Copyright IBM Corp. 2001 - All Rights Reserved
*
*/
#ifndef __SCRPTRUN_H
#define __SCRPTRUN_H
#include "layout/LETypes.h"
struct ScriptRecord
{
LEUnicode32 startChar;
LEUnicode32 endChar;
le_int32 scriptCode;
};
class ScriptRun
{
public:
ScriptRun();
ScriptRun(const LEUnicode chars[], le_int32 length);
ScriptRun(const LEUnicode chars[], le_int32 start, le_int32 length);
void reset();
void reset(le_int32 start, le_int32 count);
void reset(const LEUnicode chars[], le_int32 start, le_int32 length);
le_int32 getScriptStart();
le_int32 getScriptEnd();
le_int32 getScriptCode();
le_bool next();
private:
static le_bool sameScript(le_int32 scriptOne, le_int32 scriptTwo);
le_int32 charStart;
le_int32 charLimit;
const LEUnicode *charArray;
le_int32 scriptStart;
le_int32 scriptEnd;
le_int32 scriptCode;
};
inline ScriptRun::ScriptRun()
{
reset(NULL, 0, 0);
}
inline ScriptRun::ScriptRun(const LEUnicode chars[], le_int32 length)
{
reset(chars, 0, length);
}
inline ScriptRun::ScriptRun(const LEUnicode chars[], le_int32 start, le_int32 length)
{
reset(chars, start, length);
}
inline le_int32 ScriptRun::getScriptStart()
{
return scriptStart;
}
inline le_int32 ScriptRun::getScriptEnd()
{
return scriptEnd;
}
inline le_int32 ScriptRun::getScriptCode()
{
return scriptCode;
}
inline void ScriptRun::reset()
{
scriptStart = charStart;
scriptEnd = charStart;
scriptCode = -1;
}
inline void ScriptRun::reset(le_int32 start, le_int32 length)
{
charStart = start;
charLimit = start + length;
reset();
}
inline void ScriptRun::reset(const LEUnicode chars[], le_int32 start, le_int32 length)
{
charArray = chars;
reset(start, length);
}
#endif