Main Page | Class List | Directories | File List | Class Members | File Members

dynamic_buffer.h

Go to the documentation of this file.
00001 /*
00002 || This file is part of Pike. For copyright information see COPYRIGHT.
00003 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
00004 || for more information.
00005 || $Id: dynamic_buffer.h,v 1.20 2004/11/05 19:47:37 grubba Exp $
00006 */
00007 
00008 #ifndef DYNAMIC_BUFFER_H
00009 #define DYNAMIC_BUFFER_H
00010 
00011 #define BUFFER_BEGIN_SIZE 4080
00012 
00013 struct dynbuf_string_s
00014 {
00015   char *str;
00016   SIZE_T len;
00017 };
00018 
00019 typedef struct dynbuf_string_s dynbuf_string;
00020 
00021 struct dynamic_buffer_s
00022 {
00023   dynbuf_string s;
00024   SIZE_T bufsize;
00025 };
00026 
00027 typedef struct dynamic_buffer_s dynamic_buffer;
00028 
00029 extern dynamic_buffer pike_global_buffer;
00030 
00031 /* Prototypes begin here */
00032 PMOD_EXPORT char *low_make_buf_space(size_t space, dynamic_buffer *buf);
00033 PMOD_EXPORT void low_my_putchar(int b,dynamic_buffer *buf);
00034 PMOD_EXPORT void low_my_binary_strcat(const char *b, size_t l, dynamic_buffer *buf);
00035 PMOD_EXPORT void debug_initialize_buf(dynamic_buffer *buf);
00036 PMOD_EXPORT void low_reinit_buf(dynamic_buffer *buf);
00037 PMOD_EXPORT void low_init_buf_with_string(dynbuf_string s, dynamic_buffer *buf);
00038 PMOD_EXPORT void toss_buffer(dynamic_buffer *buf);
00039 PMOD_EXPORT struct pike_string *debug_low_free_buf(dynamic_buffer *buf);
00040 
00041 PMOD_EXPORT dynbuf_string complex_free_buf(dynamic_buffer *old_buf);
00042 PMOD_EXPORT char *simple_free_buf(dynamic_buffer *old_buf);
00043 PMOD_EXPORT struct pike_string *debug_free_buf(dynamic_buffer *old_buf);
00044 PMOD_EXPORT char *make_buf_space(INT32 space);
00045 PMOD_EXPORT void my_putchar(int b);
00046 PMOD_EXPORT void my_binary_strcat(const char *b, ptrdiff_t l);
00047 PMOD_EXPORT void my_strcat(const char *b);
00048 PMOD_EXPORT void init_buf(dynamic_buffer *old_buf);
00049 PMOD_EXPORT void init_buf_with_string(dynamic_buffer *old_buf, dynbuf_string s);
00050 PMOD_EXPORT void save_buffer (dynamic_buffer *save_buf);
00051 PMOD_EXPORT void restore_buffer (dynamic_buffer *save_buf);
00052 /* PMOD_EXPORT char *debug_return_buf(void); */
00053 /* Prototypes end here */
00054 
00055 #ifdef DEBUG_MALLOC
00056 #define initialize_buf(X) \
00057   do { dynamic_buffer *b_=(X); debug_initialize_buf(b_); \
00058    debug_malloc_touch(b_->s.str); } while(0)
00059 #define low_free_buf(X) \
00060   ((struct pike_string *)debug_malloc_pass(debug_low_free_buf(X)))
00061 
00062 #define free_buf(OLD_BUF) \
00063   ((struct pike_string *)debug_malloc_pass(debug_free_buf(OLD_BUF)))
00064 
00065 #define return_buf() \
00066   ((char *)debug_malloc_pass(debug_return_buf()))
00067 
00068 #else
00069 #define initialize_buf debug_initialize_buf
00070 #define low_free_buf debug_low_free_buf
00071 #define free_buf debug_free_buf
00072 #define return_buf debug_return_buf
00073 #endif
00074 
00075 #endif

Generated on Fri Jul 22 23:44:24 2005 for Pike by  doxygen 1.3.9.1