Elm  1.0
ELM is a library providing generic data structures, OS-independent interface, plugins and XML.
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
DynBlock.h
1 /*
2  * $Id$
3  * Copyright (c) 2004, Alfheim Corporation.
4  *
5  * elm/block/DynBlock.h -- interface for DynBlock class.
6  */
7 #ifndef ELM_BLOCK_DYNBLOCK_H
8 #define ELM_BLOCK_DYNBLOCK_H
9 
10 namespace elm { namespace block {
11 
12 // DynBlock class
13 class DynBlock {
14 public:
15  inline DynBlock(int capacity = 256, int increment = 64)
16  : _size(0), cap(capacity), inc(increment), buf(new char[capacity]) { }
17  inline ~DynBlock(void) { if(buf) delete [] buf; }
18  void put(const char *block, int size);
19  void get(char *block, int size, int pos);
20  char *alloc(int size);
21  inline int size(void) const { return _size; }
22  inline int capacity(void) const { return cap; }
23  inline int increment(void) const { return inc; }
24  inline void setSize(int new_size) { _size = new_size; }
25  inline void reset(void) { _size = 0; }
26  inline const char *base(void) const { return buf; }
27  inline char *detach(void)
28  { char *result = buf; buf = 0; return result; }
29 private:
30  int _size, cap, inc;
31  char *buf;
32  void grow(int min);
33 };
34 
35 } } // elm::block
36 
37 #endif // ELM_BLOCK_DYNBLOCK_H
char * detach(void)
Definition: DynBlock.h:27
void setSize(int new_size)
Definition: DynBlock.h:24
char * alloc(int size)
Definition: block_DynBlock.cpp:139
~DynBlock(void)
Definition: DynBlock.h:17
int increment(void) const
Definition: DynBlock.h:23
int capacity(void) const
Definition: DynBlock.h:22
void reset(void)
Definition: DynBlock.h:25
Definition: DynBlock.h:13
DynBlock(int capacity=256, int increment=64)
Definition: DynBlock.h:15
int size(void) const
Definition: DynBlock.h:21
void put(const char *block, int size)
Definition: block_DynBlock.cpp:57
const char * base(void) const
Definition: DynBlock.h:26
const T & min(const T &x, const T &y)
Definition: compare.h:90