OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / frameworks / base / opengl / libagl / Tokenizer.h
1 /* 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
27 namespace android {
28
29 class Tokenizer
30 {
31 public:
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     };
49 private:
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