1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru **********************************************************************
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   Copyright (C) 2003, International Business Machines
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   Corporation and others.  All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru **********************************************************************
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "layout/LETypes.h"
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "layout/LEFontInstance.h"
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/locid.h"
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "layout/RunArrays.h"
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst char RunArray::fgClassID = 0;
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruRunArray::RunArray(le_int32 initialCapacity)
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    : fClientArrays(FALSE), fLimits(NULL), fCount(0), fCapacity(initialCapacity)
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (initialCapacity > 0) {
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fLimits = LE_NEW_ARRAY(le_int32, fCapacity);
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruRunArray::~RunArray()
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (! fClientArrays) {
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        LE_DELETE_ARRAY(fLimits);
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fLimits = NULL;
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_int32 RunArray::ensureCapacity()
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (fCount >= fCapacity) {
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        if (fCapacity == 0) {
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            fCapacity = INITIAL_CAPACITY;
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            init(fCapacity);
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        } else {
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            fCapacity += (fCapacity < CAPACITY_GROW_LIMIT ? fCapacity : CAPACITY_GROW_LIMIT);
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            grow(fCapacity);
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        }
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return fCount++;
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid RunArray::init(le_int32 capacity)
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fLimits = LE_NEW_ARRAY(le_int32, capacity);
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid RunArray::grow(le_int32 newCapacity)
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fLimits = (le_int32 *) LE_GROW_ARRAY(fLimits, newCapacity);
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_int32 RunArray::add(le_int32 limit)
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (fClientArrays) {
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return -1;
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int32  index  = ensureCapacity();
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int32 *limits = (le_int32 *) fLimits;
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    limits[index] = limit;
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return index;
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst char FontRuns::fgClassID = 0;
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruFontRuns::FontRuns(le_int32 initialCapacity)
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    : RunArray(initialCapacity), fFonts(NULL)
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (initialCapacity > 0) {
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fFonts = LE_NEW_ARRAY(const LEFontInstance *, initialCapacity);
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruFontRuns::~FontRuns()
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (! fClientArrays) {
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        LE_DELETE_ARRAY(fFonts);
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fFonts = NULL;
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid FontRuns::init(le_int32 capacity)
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RunArray::init(capacity);
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fFonts = LE_NEW_ARRAY(const LEFontInstance *, capacity);
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid FontRuns::grow(le_int32 capacity)
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RunArray::grow(capacity);
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fFonts = (const LEFontInstance **) LE_GROW_ARRAY(fFonts, capacity);
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_int32 FontRuns::add(const LEFontInstance *font, le_int32 limit)
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int32 index = RunArray::add(limit);
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (index >= 0) {
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        LEFontInstance **fonts = (LEFontInstance **) fFonts;
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fonts[index] = (LEFontInstance *) font;
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return index;
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst LEFontInstance *FontRuns::getFont(le_int32 run) const
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (run < 0 || run >= getCount()) {
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return NULL;
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return fFonts[run];
124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst char LocaleRuns::fgClassID = 0;
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruLocaleRuns::LocaleRuns(le_int32 initialCapacity)
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    : RunArray(initialCapacity), fLocales(NULL)
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (initialCapacity > 0) {
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fLocales = LE_NEW_ARRAY(const Locale *, initialCapacity);
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruLocaleRuns::~LocaleRuns()
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (! fClientArrays) {
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        LE_DELETE_ARRAY(fLocales);
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fLocales = NULL;
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid LocaleRuns::init(le_int32 capacity)
145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RunArray::init(capacity);
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fLocales = LE_NEW_ARRAY(const Locale *, capacity);
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid LocaleRuns::grow(le_int32 capacity)
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RunArray::grow(capacity);
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fLocales = (const Locale **) LE_GROW_ARRAY(fLocales, capacity);
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_int32 LocaleRuns::add(const Locale *locale, le_int32 limit)
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int32 index = RunArray::add(limit);
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (index >= 0) {
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        Locale **locales = (Locale **) fLocales;
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        locales[index] = (Locale *) locale;
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return index;
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst Locale *LocaleRuns::getLocale(le_int32 run) const
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (run < 0 || run >= getCount()) {
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return NULL;
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return fLocales[run];
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst char ValueRuns::fgClassID = 0;
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruValueRuns::ValueRuns(le_int32 initialCapacity)
181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    : RunArray(initialCapacity), fValues(NULL)
182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (initialCapacity > 0) {
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fValues = LE_NEW_ARRAY(le_int32, initialCapacity);
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruValueRuns::~ValueRuns()
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (! fClientArrays) {
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        LE_DELETE_ARRAY(fValues);
192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fValues = NULL;
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid ValueRuns::init(le_int32 capacity)
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RunArray::init(capacity);
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fValues = LE_NEW_ARRAY(le_int32, capacity);
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid ValueRuns::grow(le_int32 capacity)
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RunArray::grow(capacity);
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fValues = (const le_int32 *) LE_GROW_ARRAY(fValues, capacity);
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_int32 ValueRuns::add(le_int32 value, le_int32 limit)
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int32 index = RunArray::add(limit);
211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (index >= 0) {
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        le_int32 *values = (le_int32 *) fValues;
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        values[index] = value;
216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return index;
219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_int32 ValueRuns::getValue(le_int32 run) const
222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (run < 0 || run >= getCount()) {
224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return -1;
225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return fValues[run];
228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END
231