sourcepawn/compiler/sctracker.h
author David Anderson <dvander@alliedmods.net>
Mon Oct 16 02:05:26 2006 +0000 (2006-10-16)
changeset 118 0cfeb76486a2
parent 117 f1edbb5d485a
child 132 dabef847cd2c
permissions -rw-r--r--
initial import of.... DYNAMIC ARRAYS
dvander@115
     1
#ifndef _INCLUDE_SOURCEPAWN_COMPILER_TRACKER_H_
dvander@115
     2
#define _INCLUDE_SOURCEPAWN_COMPILER_TRACKER_H_
dvander@115
     3
dvander@116
     4
#define MEMUSE_STATIC      0
dvander@116
     5
#define MEMUSE_DYNAMIC     1
dvander@115
     6
dvander@116
     7
typedef struct memuse_s {
dvander@116
     8
  int type;   /* MEMUSE_STATIC or MEMUSE_DYNAMIC */
dvander@116
     9
  int size;   /* size of array for static (0 for dynamic) */
dvander@116
    10
  struct memuse_s *prev; /* previous block on the list */
dvander@116
    11
} memuse_t;
dvander@115
    12
dvander@116
    13
typedef struct memuse_list_s {
dvander@116
    14
  struct memuse_list_s *prev;   /* last used list */
dvander@117
    15
  int list_id;
dvander@116
    16
  memuse_t *head;               /* head of the current list */
dvander@116
    17
} memuse_list_t;
dvander@115
    18
dvander@116
    19
/**
dvander@116
    20
 * Heap functions
dvander@116
    21
 */
dvander@115
    22
void pushheaplist();
dvander@116
    23
memuse_list_t *popsaveheaplist();
dvander@115
    24
void popheaplist();
dvander@115
    25
int markheap(int type, int size);
dvander@115
    26
dvander@116
    27
/**
dvander@116
    28
 * Stack functions
dvander@116
    29
 */
dvander@116
    30
void pushstacklist();
dvander@116
    31
void popstacklist();
dvander@116
    32
int markstack(int type, int size);
dvander@117
    33
/**
dvander@118
    34
 * Generates code to free mem usage, but does not pop the list.  
dvander@117
    35
 *  This is used for code like dobreak()/docont()/doreturn().
dvander@117
    36
 * stop_id is the list at which to stop generating.
dvander@117
    37
 */
dvander@117
    38
void genstackfree(int stop_id);
dvander@118
    39
void genheapfree(int stop_id);
dvander@117
    40
dvander@117
    41
/**
dvander@118
    42
 * Resets a mem list by freeing everything
dvander@117
    43
 */
dvander@117
    44
void resetstacklist();
dvander@118
    45
void resetheaplist();
dvander@116
    46
dvander@116
    47
extern memuse_list_t *heapusage;
dvander@116
    48
extern memuse_list_t *stackusage;
dvander@116
    49
dvander@115
    50
#endif //_INCLUDE_SOURCEPAWN_COMPILER_TRACKER_H_