Skip to content
Snippets Groups Projects
Select Git revision
  • df8b5e435e62d08440b04eada7304519fb020879
  • master default protected
2 results

unit_options.pp

Blame
  • dynamic_buffer.h 2.40 KiB
    /*
    || This file is part of Pike. For copyright information see COPYRIGHT.
    || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
    || for more information.
    */
    
    #ifndef DYNAMIC_BUFFER_H
    #define DYNAMIC_BUFFER_H
    
    #define BUFFER_BEGIN_SIZE 4080
    
    struct dynbuf_string_s
    {
      char *str;
      SIZE_T len;
    };
    
    typedef struct dynbuf_string_s dynbuf_string;
    
    struct dynamic_buffer_s
    {
      dynbuf_string s;
      SIZE_T bufsize;
    };
    
    typedef struct dynamic_buffer_s dynamic_buffer;
    
    PMOD_EXPORT extern dynamic_buffer pike_global_buffer;
    
    /* Prototypes begin here */
    PMOD_EXPORT char *low_make_buf_space(ptrdiff_t space, dynamic_buffer *buf);
    PMOD_EXPORT void low_my_putchar(int b,dynamic_buffer *buf);
    PMOD_EXPORT void low_my_binary_strcat(const char *b, size_t l, dynamic_buffer *buf);
    PMOD_EXPORT void debug_initialize_buf(dynamic_buffer *buf);
    PMOD_EXPORT void low_reinit_buf(dynamic_buffer *buf);
    PMOD_EXPORT void low_init_buf_with_string(dynbuf_string s, dynamic_buffer *buf);
    PMOD_EXPORT void toss_buffer(dynamic_buffer *buf);
    PMOD_EXPORT struct pike_string *debug_low_free_buf(dynamic_buffer *buf);
    
    PMOD_EXPORT dynbuf_string complex_free_buf(dynamic_buffer *old_buf);
    PMOD_EXPORT char *simple_free_buf(dynamic_buffer *old_buf);
    PMOD_EXPORT struct pike_string *debug_free_buf(dynamic_buffer *old_buf);
    PMOD_EXPORT void abandon_buf(dynamic_buffer *old_buf);
    PMOD_EXPORT char *make_buf_space(INT32 space);
    PMOD_EXPORT void my_putchar(int b);
    PMOD_EXPORT void my_binary_strcat(const char *b, ptrdiff_t l);
    PMOD_EXPORT void my_strcat(const char *b);
    PMOD_EXPORT void init_buf(dynamic_buffer *old_buf);
    PMOD_EXPORT void init_buf_with_string(dynamic_buffer *old_buf, dynbuf_string s);
    PMOD_EXPORT void save_buffer (dynamic_buffer *save_buf);
    PMOD_EXPORT void restore_buffer (dynamic_buffer *save_buf);
    /* PMOD_EXPORT char *debug_return_buf(void); */
    /* Prototypes end here */
    
    #ifdef DEBUG_MALLOC
    #define initialize_buf(X) \
      do { dynamic_buffer *b_=(X); debug_initialize_buf(b_); \
       debug_malloc_touch(b_->s.str); } while(0)
    #define low_free_buf(X) \
      ((struct pike_string *)debug_malloc_pass(debug_low_free_buf(X)))
    
    #define free_buf(OLD_BUF) \
      ((struct pike_string *)debug_malloc_pass(debug_free_buf(OLD_BUF)))
    
    #define return_buf() \
      ((char *)debug_malloc_pass(debug_return_buf()))
    
    #else
    #define initialize_buf debug_initialize_buf
    #define low_free_buf debug_low_free_buf
    #define free_buf debug_free_buf
    #define return_buf debug_return_buf
    #endif
    
    #endif