1e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao/* 2e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Copyright 2011, The Android Open Source Project 3e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * 4e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License"); 5e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * you may not use this file except in compliance with the License. 6e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * You may obtain a copy of the License at 7e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * 8e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * http://www.apache.org/licenses/LICENSE-2.0 9e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * 10e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Unless required by applicable law or agreed to in writing, software 11e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS, 12e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * See the License for the specific language governing permissions and 14e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * limitations under the License. 15e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao */ 16e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao 1774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien#ifndef MEM_CHUNK_H 1874f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien#define MEM_CHUNK_H 1974f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 2074f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien#include <stddef.h> 2149567d1b850754d514faaf1f2e0b35fe33b2a126Logan Chien#include <stdlib.h> 2274f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 2374f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chienclass MemChunk { 2474f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chienprivate: 2574f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien unsigned char *buf; 2674f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien size_t buf_size; 2774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 2874f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chienpublic: 2974f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien MemChunk(); 3074f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 3174f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien ~MemChunk(); 3274f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 3374f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien bool allocate(size_t size); 3474f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 3574f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien void print() const; 3674f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 3774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien bool protect(int prot); 3874f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 3974f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien unsigned char const *getBuffer() const { 4074f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien return buf; 4174f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien } 4274f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 4374f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien unsigned char *getBuffer() { 4474f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien return buf; 4574f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien } 4674f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 4774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien unsigned char &operator[](size_t index) { 4874f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien return buf[index]; 4974f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien } 5074f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 5174f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien unsigned char const &operator[](size_t index) const { 5274f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien return buf[index]; 5374f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien } 5474f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 5574f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien size_t size() const { 5674f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien return buf_size; 5774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien } 5874f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 5974f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien}; 6074f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien 6174f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien#endif // MEM_CHUNK_H 62