iupdate buffer.
This commit is contained in:
@@ -49,7 +49,7 @@ int growBuffer(Buffer b, size_t minfree);
|
||||
{ if ( !growBuffer((Buffer)b, sizeof(type)) ) \
|
||||
outOfCore(); \
|
||||
} \
|
||||
*((type *)(b)->top) = obj; \
|
||||
*((type *)(b)->top) = obj; \
|
||||
(b)->top += sizeof(type); \
|
||||
} while(0)
|
||||
|
||||
@@ -68,6 +68,24 @@ int growBuffer(Buffer b, size_t minfree);
|
||||
(b)->top = (char *)_d; \
|
||||
} while(0)
|
||||
|
||||
#define allocFromBuffer(b, bytes) \
|
||||
f__allocFromBuffer((Buffer)(b), (bytes))
|
||||
|
||||
static inline void*
|
||||
f__allocFromBuffer(Buffer b, size_t bytes)
|
||||
{ if ( b->top + bytes <= b->max ||
|
||||
growBuffer(b, bytes) )
|
||||
{ void *top = b->top;
|
||||
|
||||
b->top += bytes;
|
||||
|
||||
return top;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
#define baseBuffer(b, type) ((type *) (b)->base)
|
||||
#define topBuffer(b, type) ((type *) (b)->top)
|
||||
#define inBuffer(b, addr) ((char *) (addr) >= (b)->base && \
|
||||
@@ -83,6 +101,8 @@ int growBuffer(Buffer b, size_t minfree);
|
||||
sizeof((b)->static_buffer))
|
||||
#define emptyBuffer(b) ((b)->top = (b)->base)
|
||||
#define isEmptyBuffer(b) ((b)->top == (b)->base)
|
||||
#define popBuffer(b,type) \
|
||||
((b)->top -= sizeof(type), *(type*)(b)->top)
|
||||
|
||||
#define discardBuffer(b) \
|
||||
do \
|
||||
@@ -99,6 +119,6 @@ int growBuffer(Buffer b, size_t minfree);
|
||||
|
||||
COMMON(Buffer) findBuffer(int flags);
|
||||
COMMON(int) unfindBuffer(int flags);
|
||||
COMMON(char *) buffer_string(const char *s, int flags);
|
||||
COMMON(char *) buffer_string(const char *s, int flags);
|
||||
|
||||
#endif /*BUFFER_H_INCLUDED*/
|
||||
|
Reference in New Issue
Block a user