rbtagger 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +21 -0
 - data/History.txt +4 -0
 - data/LICENSE +21 -0
 - data/License.txt +20 -0
 - data/Manifest.txt +75 -0
 - data/PostInstall.txt +7 -0
 - data/README +7 -0
 - data/README.txt +53 -0
 - data/Rakefile +33 -0
 - data/config/hoe.rb +74 -0
 - data/config/requirements.rb +15 -0
 - data/ext/rule_tagger/bool.h +38 -0
 - data/ext/rule_tagger/darray.c +292 -0
 - data/ext/rule_tagger/darray.h +125 -0
 - data/ext/rule_tagger/darrayP.h +50 -0
 - data/ext/rule_tagger/extconf.rb +14 -0
 - data/ext/rule_tagger/lex.c +170 -0
 - data/ext/rule_tagger/lex.h +49 -0
 - data/ext/rule_tagger/memory.c +127 -0
 - data/ext/rule_tagger/memory.h +20 -0
 - data/ext/rule_tagger/rbtagger.c +252 -0
 - data/ext/rule_tagger/registry.c +326 -0
 - data/ext/rule_tagger/registry.h +129 -0
 - data/ext/rule_tagger/registryP.h +46 -0
 - data/ext/rule_tagger/ruby-compat.h +20 -0
 - data/ext/rule_tagger/rules.c +525 -0
 - data/ext/rule_tagger/rules.h +42 -0
 - data/ext/rule_tagger/sysdep.h +20 -0
 - data/ext/rule_tagger/tagger.c +110 -0
 - data/ext/rule_tagger/tagger.h +46 -0
 - data/ext/rule_tagger/useful.c +44 -0
 - data/ext/rule_tagger/useful.h +51 -0
 - data/ext/word_tagger/extconf.rb +7 -0
 - data/ext/word_tagger/porter_stemmer.c +430 -0
 - data/ext/word_tagger/porter_stemmer.h +19 -0
 - data/ext/word_tagger/rtagger.cc +83 -0
 - data/ext/word_tagger/tagger.cc +153 -0
 - data/ext/word_tagger/tagger.h +27 -0
 - data/ext/word_tagger/tagger.rb +8 -0
 - data/ext/word_tagger/test/Makefile +22 -0
 - data/ext/word_tagger/test/doc.txt +87 -0
 - data/ext/word_tagger/test/test.cc +107 -0
 - data/ext/word_tagger/test.rb +31 -0
 - data/lib/brill/tagger.rb +225 -0
 - data/lib/rbtagger/version.rb +9 -0
 - data/lib/rbtagger.rb +6 -0
 - data/script/console +10 -0
 - data/script/destroy +14 -0
 - data/script/generate +14 -0
 - data/script/txt2html +82 -0
 - data/setup.rb +1585 -0
 - data/tasks/deployment.rake +34 -0
 - data/tasks/environment.rake +7 -0
 - data/tasks/website.rake +17 -0
 - data/test/CONTEXTUALRULEFILE +284 -0
 - data/test/LEXICALRULEFILE +148 -0
 - data/test/LEXICON +93696 -0
 - data/test/docs/doc0.txt +20 -0
 - data/test/docs/doc1.txt +11 -0
 - data/test/docs/doc2.txt +52 -0
 - data/test/docs/doc3.txt +128 -0
 - data/test/docs/doc4.txt +337 -0
 - data/test/docs/doc5.txt +497 -0
 - data/test/docs/doc6.txt +116 -0
 - data/test/docs/doc7.txt +101 -0
 - data/test/docs/doc8.txt +25 -0
 - data/test/docs/doc9.txt +84 -0
 - data/test/tagger_test.rb +60 -0
 - data/test/test_helper.rb +2 -0
 - data/tools/rakehelp.rb +113 -0
 - data/website/index.html +113 -0
 - data/website/index.txt +53 -0
 - data/website/javascripts/rounded_corners_lite.inc.js +285 -0
 - data/website/stylesheets/screen.css +138 -0
 - data/website/template.html.erb +48 -0
 - metadata +155 -0
 
| 
         @@ -0,0 +1,125 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #ifndef _darray_h_
         
     | 
| 
      
 2 
     | 
    
         
            +
            #define _darray_h_
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            #include "sysdep.h"
         
     | 
| 
      
 5 
     | 
    
         
            +
            #include "bool.h"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            typedef struct st_Darray *Darray;
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            #ifdef __STDC__
         
     | 
| 
      
 10 
     | 
    
         
            +
            extern Darray Darray_create(NOARGS);
         
     | 
| 
      
 11 
     | 
    
         
            +
            extern NORET Darray_destroy(Darray);
         
     | 
| 
      
 12 
     | 
    
         
            +
            extern NORET Darray_hint(Darray, unsigned int, unsigned int);
         
     | 
| 
      
 13 
     | 
    
         
            +
            extern unsigned int Darray_len(Darray);
         
     | 
| 
      
 14 
     | 
    
         
            +
            extern NORET Darray_addh(Darray, VOIDP);
         
     | 
| 
      
 15 
     | 
    
         
            +
            extern NORET Darray_addl(Darray, VOIDP);
         
     | 
| 
      
 16 
     | 
    
         
            +
            extern VOIDP Darray_remh(Darray);
         
     | 
| 
      
 17 
     | 
    
         
            +
            extern VOIDP Darray_reml(Darray);
         
     | 
| 
      
 18 
     | 
    
         
            +
            extern Bool Darray_valid_index(Darray, unsigned int);
         
     | 
| 
      
 19 
     | 
    
         
            +
            extern NORET Darray_set(Darray, unsigned int, VOIDP);
         
     | 
| 
      
 20 
     | 
    
         
            +
            extern VOIDP Darray_get(Darray, unsigned int);
         
     | 
| 
      
 21 
     | 
    
         
            +
            extern NORET Darray_values(Darray, VOIDP *);
         
     | 
| 
      
 22 
     | 
    
         
            +
            extern Darray Darray_copy(Darray);
         
     | 
| 
      
 23 
     | 
    
         
            +
            extern Darray Darray_remove(Darray, int);
         
     | 
| 
      
 24 
     | 
    
         
            +
            extern Darray Darray_duplicate(Darray);
         
     | 
| 
      
 25 
     | 
    
         
            +
            extern Darray Darray_insert(Darray, int, VOIDP);
         
     | 
| 
      
 26 
     | 
    
         
            +
            extern void   Darray_clear(Darray); 
         
     | 
| 
      
 27 
     | 
    
         
            +
            #else
         
     | 
| 
      
 28 
     | 
    
         
            +
            extern Darray Darray_create();
         
     | 
| 
      
 29 
     | 
    
         
            +
            extern NORET Darray_destroy();
         
     | 
| 
      
 30 
     | 
    
         
            +
            extern NORET Darray_hint();
         
     | 
| 
      
 31 
     | 
    
         
            +
            extern unsigned int Darray_len();
         
     | 
| 
      
 32 
     | 
    
         
            +
            extern NORET Darray_addh();
         
     | 
| 
      
 33 
     | 
    
         
            +
            extern NORET Darray_addl();
         
     | 
| 
      
 34 
     | 
    
         
            +
            extern VOIDP Darray_remh();
         
     | 
| 
      
 35 
     | 
    
         
            +
            extern VOIDP Darray_reml();
         
     | 
| 
      
 36 
     | 
    
         
            +
            extern Bool Darray_valid_index();
         
     | 
| 
      
 37 
     | 
    
         
            +
            extern NORET Darray_set();
         
     | 
| 
      
 38 
     | 
    
         
            +
            extern VOIDP Darray_get();
         
     | 
| 
      
 39 
     | 
    
         
            +
            extern NORET Darray_values();
         
     | 
| 
      
 40 
     | 
    
         
            +
            extern Darray Darray_copy();
         
     | 
| 
      
 41 
     | 
    
         
            +
            extern Darray Darray_remove();
         
     | 
| 
      
 42 
     | 
    
         
            +
            extern Darray Darray_duplicate();
         
     | 
| 
      
 43 
     | 
    
         
            +
            extern Darray Darray_insert();
         
     | 
| 
      
 44 
     | 
    
         
            +
            extern void   Darray_clear(); 
         
     | 
| 
      
 45 
     | 
    
         
            +
            #endif /* __STDC__ */
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            /*
         
     | 
| 
      
 49 
     | 
    
         
            +
             * Dynamic arrays are zero-based (0 <= index < length-of-array)
         
     | 
| 
      
 50 
     | 
    
         
            +
             *
         
     | 
| 
      
 51 
     | 
    
         
            +
             * Darray_create()
         
     | 
| 
      
 52 
     | 
    
         
            +
             * Creates and returns an empty dynamic array.
         
     | 
| 
      
 53 
     | 
    
         
            +
             *
         
     | 
| 
      
 54 
     | 
    
         
            +
             * Darray_destroy(dynamic_array)
         
     | 
| 
      
 55 
     | 
    
         
            +
             * Frees all memory used by the dynamic_array.  Calling this routine
         
     | 
| 
      
 56 
     | 
    
         
            +
             * should be the last use of the dynamic_array.  The object held by
         
     | 
| 
      
 57 
     | 
    
         
            +
             * the array are not destroyed.
         
     | 
| 
      
 58 
     | 
    
         
            +
             * 
         
     | 
| 
      
 59 
     | 
    
         
            +
             * Darray_hint(dynamic_array, addl_hint, addh_hint)
         
     | 
| 
      
 60 
     | 
    
         
            +
             * The hints specify how many additional (occuring after the hint call) addl
         
     | 
| 
      
 61 
     | 
    
         
            +
             * and addh operations are expected.  Large values may improve performance
         
     | 
| 
      
 62 
     | 
    
         
            +
             * at the cost of additional memory usage.
         
     | 
| 
      
 63 
     | 
    
         
            +
             *
         
     | 
| 
      
 64 
     | 
    
         
            +
             * Darray_len(dynamic_array)
         
     | 
| 
      
 65 
     | 
    
         
            +
             * Returns the length of the dynamic array passed.
         
     | 
| 
      
 66 
     | 
    
         
            +
             *
         
     | 
| 
      
 67 
     | 
    
         
            +
             * Darray_addh(dynamic_array, element)
         
     | 
| 
      
 68 
     | 
    
         
            +
             * Adds the element to the "high end" of the dynamic array.  
         
     | 
| 
      
 69 
     | 
    
         
            +
             * 
         
     | 
| 
      
 70 
     | 
    
         
            +
             * Darray_addl(dynamic_array, element)
         
     | 
| 
      
 71 
     | 
    
         
            +
             * Adds the element to the "low end" of the dynamic array.  
         
     | 
| 
      
 72 
     | 
    
         
            +
             *
         
     | 
| 
      
 73 
     | 
    
         
            +
             * Darray_remh(dynamic_array)
         
     | 
| 
      
 74 
     | 
    
         
            +
             * Returns element at the "high end" of the dynamic array,
         
     | 
| 
      
 75 
     | 
    
         
            +
             * and removes that element from the array.  Darray_len(dynamic_array)
         
     | 
| 
      
 76 
     | 
    
         
            +
             * must be > 0.
         
     | 
| 
      
 77 
     | 
    
         
            +
             *
         
     | 
| 
      
 78 
     | 
    
         
            +
             * Darray_reml(dynamic_array)
         
     | 
| 
      
 79 
     | 
    
         
            +
             * Returns element at the "low end" of the dynamic array,
         
     | 
| 
      
 80 
     | 
    
         
            +
             * and removes that element from the array.  Darray_len(dynamic_array)
         
     | 
| 
      
 81 
     | 
    
         
            +
             * must be > 0.
         
     | 
| 
      
 82 
     | 
    
         
            +
             *
         
     | 
| 
      
 83 
     | 
    
         
            +
             * Darray_valid_index(dynamic_array, index)
         
     | 
| 
      
 84 
     | 
    
         
            +
             * Checks if index is valid for use in a call to Darray_set or Darray_get.
         
     | 
| 
      
 85 
     | 
    
         
            +
             * Returns Bool_TRUE if index < Darray_len(dynamic_array), 
         
     | 
| 
      
 86 
     | 
    
         
            +
             * Bool_FALSE otherwise.
         
     | 
| 
      
 87 
     | 
    
         
            +
             *
         
     | 
| 
      
 88 
     | 
    
         
            +
             * Darray_set(dynamic_array, index, new_value)
         
     | 
| 
      
 89 
     | 
    
         
            +
             * Sets the index position in the dynamic array to be
         
     | 
| 
      
 90 
     | 
    
         
            +
             * the new value.  Darray_valid_index(dynamic_array, index) must be Bool_TRUE.
         
     | 
| 
      
 91 
     | 
    
         
            +
             * 
         
     | 
| 
      
 92 
     | 
    
         
            +
             * Darray_get(dynamic_array, index)
         
     | 
| 
      
 93 
     | 
    
         
            +
             * Returns the value at the index position in the dynamic array.
         
     | 
| 
      
 94 
     | 
    
         
            +
             * Darray_valid_index(dynamic_array, index) must be Bool_TRUE.
         
     | 
| 
      
 95 
     | 
    
         
            +
             * 
         
     | 
| 
      
 96 
     | 
    
         
            +
             * Darray_values(dynamic_array, pointer to c_array)
         
     | 
| 
      
 97 
     | 
    
         
            +
             * Stores all the elements (as void pointers) of the dynamic array into 
         
     | 
| 
      
 98 
     | 
    
         
            +
             * the c_array.  The
         
     | 
| 
      
 99 
     | 
    
         
            +
             * c_array must contain at least Darray_len(dynamic_array) slots for
         
     | 
| 
      
 100 
     | 
    
         
            +
             * void pointers (note: not object pointers).
         
     | 
| 
      
 101 
     | 
    
         
            +
             *
         
     | 
| 
      
 102 
     | 
    
         
            +
             * Darray_copy(dynamic_array)
         
     | 
| 
      
 103 
     | 
    
         
            +
             * Creates and returns a new dynamic array, with the same contents as
         
     | 
| 
      
 104 
     | 
    
         
            +
             * the dynamic array passed.  The new dynamic array does not inherit 
         
     | 
| 
      
 105 
     | 
    
         
            +
             * any hints that may apply to the original dynamic array.
         
     | 
| 
      
 106 
     | 
    
         
            +
             * 
         
     | 
| 
      
 107 
     | 
    
         
            +
             * Darray_remove(dynamic_array, index)
         
     | 
| 
      
 108 
     | 
    
         
            +
             * removes the item indexed by index from the array.  Index is base 0
         
     | 
| 
      
 109 
     | 
    
         
            +
             * (i.e. first item in array is 0, last item is Darray_len()-1)
         
     | 
| 
      
 110 
     | 
    
         
            +
             * (added by Rich Pito: this is not efficient code at the moment)
         
     | 
| 
      
 111 
     | 
    
         
            +
             * 
         
     | 
| 
      
 112 
     | 
    
         
            +
             * Darray_insert(dynamic_array, index, data)
         
     | 
| 
      
 113 
     | 
    
         
            +
             * inserts the data into the dynamic_array at index.  data is inserted
         
     | 
| 
      
 114 
     | 
    
         
            +
             * at position index.  All items with position values greater than or
         
     | 
| 
      
 115 
     | 
    
         
            +
             * equal to index are assigned new position values one greater than
         
     | 
| 
      
 116 
     | 
    
         
            +
             * their old ones.  If index is greater than the maximum position
         
     | 
| 
      
 117 
     | 
    
         
            +
             * value in the dynamic_array, data is added as the topmost element to
         
     | 
| 
      
 118 
     | 
    
         
            +
             * the array.  If index is less than zero it is inserted as if index
         
     | 
| 
      
 119 
     | 
    
         
            +
             * were zero. 
         
     | 
| 
      
 120 
     | 
    
         
            +
             * (added by Rich Pito: this is not efficient code at the moment)
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
             */
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            #endif /* ifndef _darray_h_ */
         
     | 
| 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #ifndef _darrayP_h_
         
     | 
| 
      
 2 
     | 
    
         
            +
            #define _darrayP_h_
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            #include "sysdep.h"
         
     | 
| 
      
 5 
     | 
    
         
            +
            #include "memory.h"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            #include "darray.h"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            typedef struct st_Darray {
         
     | 
| 
      
 10 
     | 
    
         
            +
              unsigned length;
         
     | 
| 
      
 11 
     | 
    
         
            +
              VOIDP *storage;
         
     | 
| 
      
 12 
     | 
    
         
            +
              unsigned storage_offset;
         
     | 
| 
      
 13 
     | 
    
         
            +
              unsigned storage_length;
         
     | 
| 
      
 14 
     | 
    
         
            +
            } Darray_rep;
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            #define draise(p_to_rep) ((Darray)p_to_rep)
         
     | 
| 
      
 17 
     | 
    
         
            +
            #define dlower(obj) ((Darray_rep *)obj)
         
     | 
| 
      
 18 
     | 
    
         
            +
            #define dcreate() ((Darray_rep *)Memory_allocate(sizeof(Darray_rep)))
         
     | 
| 
      
 19 
     | 
    
         
            +
            /*#define destroy(p_to_rep) (Memory_free(p_to_rep))*/
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            #define MAX_GROW_STEP 100	/* Defines the maximum amount to increase
         
     | 
| 
      
 22 
     | 
    
         
            +
            				   storage_length when storage is full.
         
     | 
| 
      
 23 
     | 
    
         
            +
            				   A call to Darray_hint can cause a larger
         
     | 
| 
      
 24 
     | 
    
         
            +
            				   grow to occur; this only applies to 
         
     | 
| 
      
 25 
     | 
    
         
            +
            				   "on-demand grows" */
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            enum grow_direction {GROW_HIGH, GROW_LOW};
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            #ifdef __STDC__
         
     | 
| 
      
 30 
     | 
    
         
            +
            static NORET grow(Darray_rep *, enum grow_direction, unsigned);
         
     | 
| 
      
 31 
     | 
    
         
            +
            #else
         
     | 
| 
      
 32 
     | 
    
         
            +
            static NORET grow();
         
     | 
| 
      
 33 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            /* Invariant conditions:
         
     | 
| 
      
 36 
     | 
    
         
            +
             * 
         
     | 
| 
      
 37 
     | 
    
         
            +
             * Each array component (object) is stored in a void pointer.
         
     | 
| 
      
 38 
     | 
    
         
            +
             *
         
     | 
| 
      
 39 
     | 
    
         
            +
             * [storage_length] >= 1
         
     | 
| 
      
 40 
     | 
    
         
            +
             * 
         
     | 
| 
      
 41 
     | 
    
         
            +
             * [storage] is pointer to a a heap object large enough for
         
     | 
| 
      
 42 
     | 
    
         
            +
             * [storage_length] pointers to void,
         
     | 
| 
      
 43 
     | 
    
         
            +
             *
         
     | 
| 
      
 44 
     | 
    
         
            +
             * [storage_length] >= [length]
         
     | 
| 
      
 45 
     | 
    
         
            +
             * 
         
     | 
| 
      
 46 
     | 
    
         
            +
             * The n-th element (index=n-1) of the dynamic array is located at 
         
     | 
| 
      
 47 
     | 
    
         
            +
             * address [storage]+[storage_offset]+n-1.
         
     | 
| 
      
 48 
     | 
    
         
            +
             *
         
     | 
| 
      
 49 
     | 
    
         
            +
             */ 
         
     | 
| 
      
 50 
     | 
    
         
            +
            #endif /* ifndef _darrayP_h_ */
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'mkmf'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            dir_config('rule_tagger')
         
     | 
| 
      
 4 
     | 
    
         
            +
            have_header('stdlib.h')
         
     | 
| 
      
 5 
     | 
    
         
            +
            have_header('string.h')
         
     | 
| 
      
 6 
     | 
    
         
            +
            have_library('c', 'main')
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            if !have_func('snprintf', 'stdio.h')
         
     | 
| 
      
 9 
     | 
    
         
            +
              raise "You must have snprintf available to compile this library"
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            CFLAGS='-Wall -g'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            create_makefile('rule_tagger')
         
     | 
| 
         @@ -0,0 +1,170 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #include <stdio.h>
         
     | 
| 
      
 2 
     | 
    
         
            +
            #include <string.h>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #include <stdlib.h>
         
     | 
| 
      
 4 
     | 
    
         
            +
            #include "useful.h"
         
     | 
| 
      
 5 
     | 
    
         
            +
            #include "lex.h"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            int numspaces(char *buf);
         
     | 
| 
      
 8 
     | 
    
         
            +
            int numchars(char *buf, char achar);
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            char *append_with_space(w1,w2)
         
     | 
| 
      
 11 
     | 
    
         
            +
                 char *w1,*w2;
         
     | 
| 
      
 12 
     | 
    
         
            +
            {
         
     | 
| 
      
 13 
     | 
    
         
            +
              char *result;
         
     | 
| 
      
 14 
     | 
    
         
            +
              
         
     | 
| 
      
 15 
     | 
    
         
            +
              result = (char *)malloc((strlen(w1) + strlen(w2)+2) * sizeof(char)); 
         
     | 
| 
      
 16 
     | 
    
         
            +
              strcpy(result,w1);
         
     | 
| 
      
 17 
     | 
    
         
            +
              strcat(result," ");
         
     | 
| 
      
 18 
     | 
    
         
            +
              strcat(result,w2);
         
     | 
| 
      
 19 
     | 
    
         
            +
              return(result);
         
     | 
| 
      
 20 
     | 
    
         
            +
            }
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            char *append_with_char(w1,w2,w3)
         
     | 
| 
      
 23 
     | 
    
         
            +
                 char *w1,*w2,w3;
         
     | 
| 
      
 24 
     | 
    
         
            +
            {
         
     | 
| 
      
 25 
     | 
    
         
            +
              char *result;
         
     | 
| 
      
 26 
     | 
    
         
            +
              result = (char *)malloc((strlen(w1) + strlen(w2)+2) * sizeof(char)); 
         
     | 
| 
      
 27 
     | 
    
         
            +
              sprintf(result,"%s%c%s",w1,w3,w2);
         
     | 
| 
      
 28 
     | 
    
         
            +
              return(result);
         
     | 
| 
      
 29 
     | 
    
         
            +
            }
         
     | 
| 
      
 30 
     | 
    
         
            +
              
         
     | 
| 
      
 31 
     | 
    
         
            +
            void perl_split_free( char **split_buf )
         
     | 
| 
      
 32 
     | 
    
         
            +
            {
         
     | 
| 
      
 33 
     | 
    
         
            +
              int i;
         
     | 
| 
      
 34 
     | 
    
         
            +
              for( i = 0; split_buf[i] != NULL; ++i ) { 
         
     | 
| 
      
 35 
     | 
    
         
            +
                free( split_buf[i] );
         
     | 
| 
      
 36 
     | 
    
         
            +
              }
         
     | 
| 
      
 37 
     | 
    
         
            +
              free( split_buf );
         
     | 
| 
      
 38 
     | 
    
         
            +
            }
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            char **perl_split(buf)
         
     | 
| 
      
 42 
     | 
    
         
            +
                 const char *buf;
         
     | 
| 
      
 43 
     | 
    
         
            +
            {
         
     | 
| 
      
 44 
     | 
    
         
            +
              char **return_buf;
         
     | 
| 
      
 45 
     | 
    
         
            +
              int cntr = 0;
         
     | 
| 
      
 46 
     | 
    
         
            +
              char *temp,*temp2;
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              temp2 = (char *)malloc(sizeof(char)*(1+strlen(buf)));
         
     | 
| 
      
 49 
     | 
    
         
            +
              while(*buf == ' ' || *buf == '\t') ++buf;
         
     | 
| 
      
 50 
     | 
    
         
            +
              strcpy(temp2,buf);
         
     | 
| 
      
 51 
     | 
    
         
            +
              return_buf = (char **) malloc(sizeof(char *) * ((numspaces(temp2)+1) + 2));
         
     | 
| 
      
 52 
     | 
    
         
            +
              return_buf[cntr++] = strdup( (char *)strtok(temp2," \t") );
         
     | 
| 
      
 53 
     | 
    
         
            +
              while ( (temp = (char *)strtok(NULL," \t")) ) 
         
     | 
| 
      
 54 
     | 
    
         
            +
            	if (temp != NULL) {
         
     | 
| 
      
 55 
     | 
    
         
            +
            		return_buf[cntr] = strdup(temp);
         
     | 
| 
      
 56 
     | 
    
         
            +
            		++cntr;}
         
     | 
| 
      
 57 
     | 
    
         
            +
              return_buf[cntr] = NULL;
         
     | 
| 
      
 58 
     | 
    
         
            +
              free(temp2);
         
     | 
| 
      
 59 
     | 
    
         
            +
              return(return_buf);
         
     | 
| 
      
 60 
     | 
    
         
            +
            }
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            char **perl_split_independent(buf_in)
         
     | 
| 
      
 65 
     | 
    
         
            +
                 const char *buf_in;
         
     | 
| 
      
 66 
     | 
    
         
            +
            {
         
     | 
| 
      
 67 
     | 
    
         
            +
              char **return_buf;
         
     | 
| 
      
 68 
     | 
    
         
            +
              int cntr = 0;
         
     | 
| 
      
 69 
     | 
    
         
            +
              char *temp;
         
     | 
| 
      
 70 
     | 
    
         
            +
              char *buf = mystrdup(buf_in);
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              while(*buf == ' ' || *buf == '\t') ++buf;
         
     | 
| 
      
 73 
     | 
    
         
            +
              return_buf = (char **) malloc(sizeof(char *) * (numspaces(buf)+3));
         
     | 
| 
      
 74 
     | 
    
         
            +
              return_buf[cntr++] = (char *)mystrdup((char *)strtok(buf," \t"));
         
     | 
| 
      
 75 
     | 
    
         
            +
              while ((temp = (char *)strtok(NULL,"\t ")) != NULL) {
         
     | 
| 
      
 76 
     | 
    
         
            +
                return_buf[cntr] =(char *)mystrdup(temp);
         
     | 
| 
      
 77 
     | 
    
         
            +
                ++cntr;
         
     | 
| 
      
 78 
     | 
    
         
            +
              }
         
     | 
| 
      
 79 
     | 
    
         
            +
              return_buf[cntr] = NULL;
         
     | 
| 
      
 80 
     | 
    
         
            +
              return(return_buf); }
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            char **perl_split_on_char(buf,achar)
         
     | 
| 
      
 86 
     | 
    
         
            +
                 char *buf;
         
     | 
| 
      
 87 
     | 
    
         
            +
                 char achar;
         
     | 
| 
      
 88 
     | 
    
         
            +
            {
         
     | 
| 
      
 89 
     | 
    
         
            +
              char **return_buf;
         
     | 
| 
      
 90 
     | 
    
         
            +
              int cntr = 0;
         
     | 
| 
      
 91 
     | 
    
         
            +
              char *temp,temp2[2],*temp3;
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
              temp3 = (char *)malloc(sizeof(char)*(1+strlen(buf)));
         
     | 
| 
      
 94 
     | 
    
         
            +
              temp2[0] = achar; temp2[1] = '\0';
         
     | 
| 
      
 95 
     | 
    
         
            +
              return_buf = (char **) malloc(sizeof(char *) * ((numchars(temp3,achar)+1) + 2));
         
     | 
| 
      
 96 
     | 
    
         
            +
              return_buf[cntr++] = (char *)strtok(temp3,temp2);
         
     | 
| 
      
 97 
     | 
    
         
            +
              while ( (temp = (char *)strtok(NULL,temp2)) )
         
     | 
| 
      
 98 
     | 
    
         
            +
            	if (temp != NULL) {
         
     | 
| 
      
 99 
     | 
    
         
            +
            		return_buf[cntr] = temp;
         
     | 
| 
      
 100 
     | 
    
         
            +
            		++cntr;}
         
     | 
| 
      
 101 
     | 
    
         
            +
              return_buf[cntr] = NULL;
         
     | 
| 
      
 102 
     | 
    
         
            +
              return(return_buf); }
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            char **perl_split_on_nothing(buf)
         
     | 
| 
      
 108 
     | 
    
         
            +
                 char *buf;
         
     | 
| 
      
 109 
     | 
    
         
            +
            {
         
     | 
| 
      
 110 
     | 
    
         
            +
              char **return_buf;
         
     | 
| 
      
 111 
     | 
    
         
            +
              int cntr;
         
     | 
| 
      
 112 
     | 
    
         
            +
              char *temp2;  
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
              temp2 = (char *)malloc(sizeof(char)*(1+strlen(buf)));
         
     | 
| 
      
 115 
     | 
    
         
            +
              strcpy(temp2,buf);
         
     | 
| 
      
 116 
     | 
    
         
            +
              
         
     | 
| 
      
 117 
     | 
    
         
            +
              return_buf = (char **) malloc(sizeof(char *) * (strlen(buf)+1));
         
     | 
| 
      
 118 
     | 
    
         
            +
              for (cntr = 0; cntr < strlen(buf); ++cntr) {
         
     | 
| 
      
 119 
     | 
    
         
            +
                return_buf[cntr] = (char *)malloc(sizeof(char)*2);
         
     | 
| 
      
 120 
     | 
    
         
            +
                return_buf[cntr][0] = temp2[cntr];
         
     | 
| 
      
 121 
     | 
    
         
            +
                return_buf[cntr][1] = '\0'; }
         
     | 
| 
      
 122 
     | 
    
         
            +
                return_buf[cntr] = NULL;
         
     | 
| 
      
 123 
     | 
    
         
            +
                return(return_buf); 
         
     | 
| 
      
 124 
     | 
    
         
            +
            }
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            int numspaces(buf)
         
     | 
| 
      
 127 
     | 
    
         
            +
                 char *buf;
         
     | 
| 
      
 128 
     | 
    
         
            +
            {
         
     | 
| 
      
 129 
     | 
    
         
            +
              int tot,count;
         
     | 
| 
      
 130 
     | 
    
         
            +
              tot = 0;
         
     | 
| 
      
 131 
     | 
    
         
            +
              for (count = 0; count < strlen(buf); ++count) 
         
     | 
| 
      
 132 
     | 
    
         
            +
                if (buf[count]==' ')
         
     | 
| 
      
 133 
     | 
    
         
            +
                  ++tot;
         
     | 
| 
      
 134 
     | 
    
         
            +
              return(tot); }
         
     | 
| 
      
 135 
     | 
    
         
            +
                
         
     | 
| 
      
 136 
     | 
    
         
            +
            int numchars(buf,achar)
         
     | 
| 
      
 137 
     | 
    
         
            +
                 char *buf,achar;
         
     | 
| 
      
 138 
     | 
    
         
            +
            {
         
     | 
| 
      
 139 
     | 
    
         
            +
              int tot,count;
         
     | 
| 
      
 140 
     | 
    
         
            +
              tot = 0;
         
     | 
| 
      
 141 
     | 
    
         
            +
              for (count = 0; count < strlen(buf); ++count) 
         
     | 
| 
      
 142 
     | 
    
         
            +
                if (buf[count]== achar)
         
     | 
| 
      
 143 
     | 
    
         
            +
                  ++tot;
         
     | 
| 
      
 144 
     | 
    
         
            +
              return(tot); }
         
     | 
| 
      
 145 
     | 
    
         
            +
                
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            char *return_tag(theword)
         
     | 
| 
      
 149 
     | 
    
         
            +
                 char *theword;
         
     | 
| 
      
 150 
     | 
    
         
            +
            {
         
     | 
| 
      
 151 
     | 
    
         
            +
              char *tempword;
         
     | 
| 
      
 152 
     | 
    
         
            +
              tempword = (char *)strchr(theword,'/');
         
     | 
| 
      
 153 
     | 
    
         
            +
              if (tempword != NULL)  return (tempword+1); 
         
     | 
| 
      
 154 
     | 
    
         
            +
              else return(NULL); }
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
            char *before_tag(theword)
         
     | 
| 
      
 158 
     | 
    
         
            +
                 char *theword;
         
     | 
| 
      
 159 
     | 
    
         
            +
            {
         
     | 
| 
      
 160 
     | 
    
         
            +
              int count = 0;
         
     | 
| 
      
 161 
     | 
    
         
            +
              
         
     | 
| 
      
 162 
     | 
    
         
            +
              while (theword[count] != '\0' &&
         
     | 
| 
      
 163 
     | 
    
         
            +
            	 theword[count] != '/')
         
     | 
| 
      
 164 
     | 
    
         
            +
                count++;
         
     | 
| 
      
 165 
     | 
    
         
            +
              if (theword[count] == '/')
         
     | 
| 
      
 166 
     | 
    
         
            +
                theword[count] = '\0';
         
     | 
| 
      
 167 
     | 
    
         
            +
              return(theword); }
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #ifndef _LEX_H_
         
     | 
| 
      
 2 
     | 
    
         
            +
            #define _LEX_H_
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            #ifdef __STDC__
         
     | 
| 
      
 6 
     | 
    
         
            +
            extern char *append_with_space(char *,char *); 
         
     | 
| 
      
 7 
     | 
    
         
            +
                /* takes 2 strings, and appends them with a space btwn them */
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            extern char *append_with_char(char *,char *,char);
         
     | 
| 
      
 10 
     | 
    
         
            +
                         /* takes 2 strings, and appends them with character w3 (the */
         
     | 
| 
      
 11 
     | 
    
         
            +
            	     /* third argument) btwn them */
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            extern char **perl_split(const char *);
         
     | 
| 
      
 14 
     | 
    
         
            +
            	      /* takes a string with spaces and does a split, returning */
         
     | 
| 
      
 15 
     | 
    
         
            +
            	      /* an array of ptrs to strings. */
         
     | 
| 
      
 16 
     | 
    
         
            +
                          /* like perl - @temp = split(/\s+/,$buf); 
         
     | 
| 
      
 17 
     | 
    
         
            +
            		 Last ptr is a null. */
         
     | 
| 
      
 18 
     | 
    
         
            +
                 /* x = perl_split(buf);  then you are responsible for freeing
         
     | 
| 
      
 19 
     | 
    
         
            +
            	*x and x */
         
     | 
| 
      
 20 
     | 
    
         
            +
            extern void perl_split_free( char **split_buf );
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            extern char **perl_split_independent(const char *);
         
     | 
| 
      
 23 
     | 
    
         
            +
                     /* same as perl_split, but each element in the array is a separate */
         
     | 
| 
      
 24 
     | 
    
         
            +
            	 /* string of memory. */
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            extern char **perl_split_on_char(char *,char);
         
     | 
| 
      
 27 
     | 
    
         
            +
                    /* same as perl_split, but split on the specified character, instead */
         
     | 
| 
      
 28 
     | 
    
         
            +
            	/* of space */
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            extern char **perl_split_on_nothing(char *);
         
     | 
| 
      
 31 
     | 
    
         
            +
                     /* same as perl_split, but split on nothing instead of space*/
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            extern char *return_tag(char *);   /* returns a ptr to the tag
         
     | 
| 
      
 36 
     | 
    
         
            +
            				in a tagged word (the/dt),
         
     | 
| 
      
 37 
     | 
    
         
            +
            				or NULL if not tagged.*/
         
     | 
| 
      
 38 
     | 
    
         
            +
            #else
         
     | 
| 
      
 39 
     | 
    
         
            +
            extern char *append_with_space(); 
         
     | 
| 
      
 40 
     | 
    
         
            +
            extern char *append_with_char();
         
     | 
| 
      
 41 
     | 
    
         
            +
            extern char **perl_split();
         
     | 
| 
      
 42 
     | 
    
         
            +
            extern char **perl_split_independent();
         
     | 
| 
      
 43 
     | 
    
         
            +
            extern char **perl_split_on_char();
         
     | 
| 
      
 44 
     | 
    
         
            +
            extern char **perl_split_on_nothing();
         
     | 
| 
      
 45 
     | 
    
         
            +
            extern char *return_tag(); 
         
     | 
| 
      
 46 
     | 
    
         
            +
             
         
     | 
| 
      
 47 
     | 
    
         
            +
            #endif /* __STDC__ */
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            #endif /* _LEX_H_ */
         
     | 
| 
         @@ -0,0 +1,127 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #include <stddef.h>
         
     | 
| 
      
 2 
     | 
    
         
            +
            #include <stdlib.h>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #include <assert.h>
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            #include <stdio.h>
         
     | 
| 
      
 6 
     | 
    
         
            +
            #include "sysdep.h"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            #ifndef MEMORY_LEAK_COUNT
         
     | 
| 
      
 10 
     | 
    
         
            +
            long Memory_unfreed_bytes(NOARGS)
         
     | 
| 
      
 11 
     | 
    
         
            +
            {
         
     | 
| 
      
 12 
     | 
    
         
            +
              return 0;
         
     | 
| 
      
 13 
     | 
    
         
            +
            }
         
     | 
| 
      
 14 
     | 
    
         
            +
            #else
         
     | 
| 
      
 15 
     | 
    
         
            +
            static long bytes_unfreed;
         
     | 
| 
      
 16 
     | 
    
         
            +
            long Memory_unfreed_bytes(NOARGS)
         
     | 
| 
      
 17 
     | 
    
         
            +
            {
         
     | 
| 
      
 18 
     | 
    
         
            +
              return bytes_unfreed;
         
     | 
| 
      
 19 
     | 
    
         
            +
            }
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            #ifdef MEMORY_CHECK_POINTERS
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            #define MEMORY_REGISTRY_HT_SIZE 997
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            #include "registry.h"
         
     | 
| 
      
 28 
     | 
    
         
            +
            #include "bool.h"
         
     | 
| 
      
 29 
     | 
    
         
            +
            static Registry valid_blocks = NULL;
         
     | 
| 
      
 30 
     | 
    
         
            +
            static int dont_check = 0;
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            static NORET mem_add_to_rgy(temp, bytes)
         
     | 
| 
      
 33 
     | 
    
         
            +
            VOIDP temp;
         
     | 
| 
      
 34 
     | 
    
         
            +
            size_t bytes;
         
     | 
| 
      
 35 
     | 
    
         
            +
            {
         
     | 
| 
      
 36 
     | 
    
         
            +
              dont_check = 1;
         
     | 
| 
      
 37 
     | 
    
         
            +
              assert(Registry_add(valid_blocks, temp, (VOIDP)bytes)==Bool_TRUE);
         
     | 
| 
      
 38 
     | 
    
         
            +
            #ifdef MEMORY_LEAK_COUNT
         
     | 
| 
      
 39 
     | 
    
         
            +
              bytes_unfreed += bytes;
         
     | 
| 
      
 40 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 41 
     | 
    
         
            +
              dont_check = 0;
         
     | 
| 
      
 42 
     | 
    
         
            +
            }
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            static NORET mem_remove_from_rgy(temp)
         
     | 
| 
      
 45 
     | 
    
         
            +
            VOIDP temp;
         
     | 
| 
      
 46 
     | 
    
         
            +
            {
         
     | 
| 
      
 47 
     | 
    
         
            +
              long num_bytes;
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              dont_check = 1;
         
     | 
| 
      
 50 
     | 
    
         
            +
              num_bytes = (long)Registry_get(valid_blocks, temp);
         
     | 
| 
      
 51 
     | 
    
         
            +
              assert(num_bytes != 0);
         
     | 
| 
      
 52 
     | 
    
         
            +
            #ifdef MEMORY_LEAK_COUNT
         
     | 
| 
      
 53 
     | 
    
         
            +
              bytes_unfreed -= num_bytes;
         
     | 
| 
      
 54 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 55 
     | 
    
         
            +
              assert(Registry_remove(valid_blocks, temp));
         
     | 
| 
      
 56 
     | 
    
         
            +
              dont_check = 0;
         
     | 
| 
      
 57 
     | 
    
         
            +
            }
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            static int mem_rgy_initialized(NOARGS)
         
     | 
| 
      
 60 
     | 
    
         
            +
            {
         
     | 
| 
      
 61 
     | 
    
         
            +
              if (valid_blocks == (Registry)NULL) {
         
     | 
| 
      
 62 
     | 
    
         
            +
                dont_check = 1;
         
     | 
| 
      
 63 
     | 
    
         
            +
                valid_blocks = Registry_create(Registry_ptrcmp,
         
     | 
| 
      
 64 
     | 
    
         
            +
            				   Registry_ptrhash);
         
     | 
| 
      
 65 
     | 
    
         
            +
                Registry_size_hint(valid_blocks, (unsigned int)MEMORY_REGISTRY_HT_SIZE);
         
     | 
| 
      
 66 
     | 
    
         
            +
                dont_check = 0;
         
     | 
| 
      
 67 
     | 
    
         
            +
              }
         
     | 
| 
      
 68 
     | 
    
         
            +
              return 1;
         
     | 
| 
      
 69 
     | 
    
         
            +
            }
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            VOIDP Memory_allocate(n)
         
     | 
| 
      
 74 
     | 
    
         
            +
                 size_t n;
         
     | 
| 
      
 75 
     | 
    
         
            +
            {
         
     | 
| 
      
 76 
     | 
    
         
            +
              VOIDP temp;
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
              temp = (VOIDP)malloc(n);
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            #ifdef MEMORY_CHECK_POINTERS
         
     | 
| 
      
 81 
     | 
    
         
            +
              assert(dont_check ||mem_rgy_initialized());
         
     | 
| 
      
 82 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
              if (temp == NULL) {
         
     | 
| 
      
 86 
     | 
    
         
            +
                fprintf(stderr, "Fatal error allocating %d bytes", (int)n);
         
     | 
| 
      
 87 
     | 
    
         
            +
                abort();
         
     | 
| 
      
 88 
     | 
    
         
            +
              }
         
     | 
| 
      
 89 
     | 
    
         
            +
            #ifdef MEMORY_CHECK_POINTERS
         
     | 
| 
      
 90 
     | 
    
         
            +
              assert(dont_check || (mem_add_to_rgy(temp,n),1));
         
     | 
| 
      
 91 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 92 
     | 
    
         
            +
              return temp;
         
     | 
| 
      
 93 
     | 
    
         
            +
            }
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            VOIDP Memory_reallocate(ptr, n)
         
     | 
| 
      
 96 
     | 
    
         
            +
                 VOIDP ptr;
         
     | 
| 
      
 97 
     | 
    
         
            +
                 size_t n;
         
     | 
| 
      
 98 
     | 
    
         
            +
            {
         
     | 
| 
      
 99 
     | 
    
         
            +
              VOIDP temp;
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            #ifdef MEMORY_CHECK_POINTERS
         
     | 
| 
      
 102 
     | 
    
         
            +
              assert(dont_check ||mem_rgy_initialized());
         
     | 
| 
      
 103 
     | 
    
         
            +
              assert(dont_check ||(mem_remove_from_rgy(ptr),1));
         
     | 
| 
      
 104 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
              temp = (VOIDP)realloc(ptr, n);
         
     | 
| 
      
 107 
     | 
    
         
            +
              if (temp == NULL) {
         
     | 
| 
      
 108 
     | 
    
         
            +
                fprintf(stderr, "Fatal error allocating %d bytes", (int)n);
         
     | 
| 
      
 109 
     | 
    
         
            +
                abort();
         
     | 
| 
      
 110 
     | 
    
         
            +
              }
         
     | 
| 
      
 111 
     | 
    
         
            +
            #ifdef MEMORY_CHECK_POINTERS
         
     | 
| 
      
 112 
     | 
    
         
            +
              assert(dont_check ||(mem_add_to_rgy(temp,n),1));
         
     | 
| 
      
 113 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 114 
     | 
    
         
            +
              return temp;
         
     | 
| 
      
 115 
     | 
    
         
            +
            }
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            NORET Memory_free(ptr)
         
     | 
| 
      
 118 
     | 
    
         
            +
                 VOIDP ptr;
         
     | 
| 
      
 119 
     | 
    
         
            +
            {
         
     | 
| 
      
 120 
     | 
    
         
            +
            #ifdef MEMORY_CHECK_POINTERS
         
     | 
| 
      
 121 
     | 
    
         
            +
              assert(dont_check ||mem_rgy_initialized());
         
     | 
| 
      
 122 
     | 
    
         
            +
              assert(dont_check ||(mem_remove_from_rgy(ptr),1));
         
     | 
| 
      
 123 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
              if (ptr != NULL)
         
     | 
| 
      
 126 
     | 
    
         
            +
                free(ptr);
         
     | 
| 
      
 127 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #ifndef _Memory_h_
         
     | 
| 
      
 2 
     | 
    
         
            +
            #define _Memory_h_
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            #include <stddef.h>
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            #include "sysdep.h"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            #ifdef __STDC__
         
     | 
| 
      
 9 
     | 
    
         
            +
            extern VOIDP Memory_allocate(size_t);
         
     | 
| 
      
 10 
     | 
    
         
            +
            extern VOIDP Memory_reallocate(VOIDP, size_t);
         
     | 
| 
      
 11 
     | 
    
         
            +
            extern NORET Memory_free(VOIDP);
         
     | 
| 
      
 12 
     | 
    
         
            +
            extern long Memory_unfreed_bytes(NOARGS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            #else
         
     | 
| 
      
 14 
     | 
    
         
            +
            extern VOIDP Memory_allocate();
         
     | 
| 
      
 15 
     | 
    
         
            +
            extern VOIDP Memory_reallocate();
         
     | 
| 
      
 16 
     | 
    
         
            +
            extern NORET Memory_free();
         
     | 
| 
      
 17 
     | 
    
         
            +
            extern long Memory_unfreed_bytes(NOARGS);
         
     | 
| 
      
 18 
     | 
    
         
            +
            #endif /* __STDC__ */
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            #endif
         
     |