blob: ac555cb7d6ebfc748c4582b6e083e4bdf6310930 [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/* libs/opengles/Tokenizer.h
2**
3** Copyright 2006, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9** http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18
19#ifndef ANDROID_OPENGLES_TOKENIZER_H
20#define ANDROID_OPENGLES_TOKENIZER_H
21
22#include <utils/Vector.h>
23#include <utils/Errors.h>
24
25// ----------------------------------------------------------------------------
26
27namespace android {
28
29class Tokenizer
30{
31public:
32 Tokenizer();
33 Tokenizer(const Tokenizer& other);
34 ~Tokenizer();
35
36 uint32_t acquire();
37 status_t reserve(uint32_t token);
38 status_t release(uint32_t token);
39 bool isAcquired(uint32_t token) const;
40
41 void dump() const;
42
43 struct run_t {
44 run_t() {};
45 run_t(uint32_t f, uint32_t l) : first(f), length(l) {}
46 uint32_t first;
47 uint32_t length;
48 };
49private:
50 ssize_t _indexOrderOf(uint32_t token, size_t* order=0) const;
51 ssize_t _insertTokenAt(uint32_t token, size_t index);
52 Vector<run_t> mRanges;
53};
54
55}; // namespace android
56
57// ----------------------------------------------------------------------------
58
59#endif // ANDROID_OPENGLES_TOKENIZER_H