Home | History | Annotate | Download | only in libagl
      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
     60