cb22561995-10-11Fredrik Hübinette (Hubbe) /*\
06983f1996-09-22Fredrik Hübinette (Hubbe) ||| This file a part of Pike, and is copyright by Fredrik Hubinette ||| Pike is distributed as GPL (General Public License)
cb22561995-10-11Fredrik Hübinette (Hubbe) ||| See the files COPYING and DISCLAIMER for more information. \*/
24ddc71998-03-28Henrik Grubbström (Grubba)  /*
37c98f2000-08-10Henrik Grubbström (Grubba)  * $Id: dynamic_buffer.h,v 1.10 2000/08/10 13:09:16 grubba Exp $
24ddc71998-03-28Henrik Grubbström (Grubba)  */
5267b71995-08-09Fredrik Hübinette (Hubbe) #ifndef DYNAMIC_BUFFER_H #define DYNAMIC_BUFFER_H #define BUFFER_BEGIN_SIZE 4080 struct string_s { char *str; SIZE_T len; }; typedef struct string_s string; struct dynamic_buffer_s { string s; SIZE_T bufsize; }; typedef struct dynamic_buffer_s dynamic_buffer; /* Prototypes begin here */
d9ab782000-08-04Henrik Grubbström (Grubba) char *low_make_buf_space(size_t space, dynamic_buffer *buf);
5267b71995-08-09Fredrik Hübinette (Hubbe) void low_my_putchar(char b,dynamic_buffer *buf);
d9ab782000-08-04Henrik Grubbström (Grubba) void low_my_binary_strcat(const char *b, size_t l, dynamic_buffer *buf);
61e9a01998-01-25Fredrik Hübinette (Hubbe) void debug_initialize_buf(dynamic_buffer *buf);
e43ca21996-11-15Fredrik Hübinette (Hubbe) void low_reinit_buf(dynamic_buffer *buf);
61e9a01998-01-25Fredrik Hübinette (Hubbe) void low_init_buf_with_string(string s, dynamic_buffer *buf);
5267b71995-08-09Fredrik Hübinette (Hubbe) string complex_free_buf(void); void toss_buffer(dynamic_buffer *buf); char *simple_free_buf(void);
3c0c281998-01-26Fredrik Hübinette (Hubbe) struct pike_string *debug_low_free_buf(dynamic_buffer *buf); struct pike_string *debug_free_buf(void);
5267b71995-08-09Fredrik Hübinette (Hubbe) char *make_buf_space(INT32 space); void my_putchar(char b);
37c98f2000-08-10Henrik Grubbström (Grubba) void my_binary_strcat(const char *b, ptrdiff_t l);
5267b71995-08-09Fredrik Hübinette (Hubbe) void my_strcat(const char *b); void init_buf(void); void init_buf_with_string(string s);
3c0c281998-01-26Fredrik Hübinette (Hubbe) char *debug_return_buf(void);
5267b71995-08-09Fredrik Hübinette (Hubbe) /* Prototypes end here */
61e9a01998-01-25Fredrik Hübinette (Hubbe) #ifdef DEBUG_MALLOC #define initialize_buf(X) \ do { dynamic_buffer *b_=(X); debug_initialize_buf(b_); \
20f7a02000-03-20Fredrik Hübinette (Hubbe)  debug_malloc_touch(b_->s.str); } while(0)
3c0c281998-01-26Fredrik Hübinette (Hubbe) #define low_free_buf(X) \
fe6bb62000-03-26Henrik Grubbström (Grubba)  ((struct pike_string *)debug_malloc_pass(debug_low_free_buf(X)))
3c0c281998-01-26Fredrik Hübinette (Hubbe)  #define free_buf() \
fe6bb62000-03-26Henrik Grubbström (Grubba)  ((struct pike_string *)debug_malloc_pass(debug_free_buf()))
3c0c281998-01-26Fredrik Hübinette (Hubbe)  #define return_buf() \
fe6bb62000-03-26Henrik Grubbström (Grubba)  ((char *)debug_malloc_pass(debug_return_buf()))
3c0c281998-01-26Fredrik Hübinette (Hubbe) 
61e9a01998-01-25Fredrik Hübinette (Hubbe) #else #define initialize_buf debug_initialize_buf
3c0c281998-01-26Fredrik Hübinette (Hubbe) #define low_free_buf debug_low_free_buf #define free_buf debug_free_buf #define return_buf debug_return_buf
61e9a01998-01-25Fredrik Hübinette (Hubbe) #endif
5267b71995-08-09Fredrik Hübinette (Hubbe) #endif