ut_umem.h File Reference


Detailed Description

Includefile Memory-UtilityFunctions.

Go to the source code of this file.

Defines

#define UME_EMPTY   {NULL, NULL, NULL, 0, 0}
#define UME_alloc_tmp(siz)   alloca(siz)
#define UME_connect(memPos, memSeg)   (memPos)=(memSeg)->next
 UME_connect get actual memSpacePosition.
#define UME_release(memPos, memSeg)   (memSeg)->next=(memPos)
 UME_release release memSpace.

Functions

int UME_init (Memspc *memSpc, void *objDat, int osiz)
void * UME_save (Memspc *memSpc, void *objDat, int osiz)
void * UME_reserve (Memspc *memSpc, int osiz)
int UME_add (Memspc *memSpc, int osiz)
int UME_reset (Memspc *memSpc, void *newStart)
int UME_ck_free (Memspc *memSpc)
int UME_dump (Memspc *memSpc, char *txt)
int UME_del (Memspc *memSpc, void *nach, void *von,...)
void UME_connect (void *memPos, Memspc *memSeg)
void UME_release (void *memPos, Memspc *memSeg)
int UME_reall_add (long *spcOff, Memspc *memSpc, long addSiz)
int UME_realloc (long *spcOff, Memspc *memSpc, long newSiz)
int UME_reall_save (long *spcOff, Memspc *memSpc, void *objDat, int osiz)
void * UME_alloc_tmp (int siz)


Define Documentation

#define UME_EMPTY   {NULL, NULL, NULL, 0, 0}

#define UME_alloc_tmp ( siz   )     alloca(siz)

    UME_alloc_tmp             allocate mem for active function
    spc = (typ*)UME_alloc_tmp(size);

#define UME_connect ( memPos,
memSeg   )     (memPos)=(memSeg)->next

UME_connect get actual memSpacePosition.

#define UME_release ( memPos,
memSeg   )     (memSeg)->next=(memPos)

UME_release release memSpace.


Function Documentation

int UME_init ( Memspc memSpc,
void *  objDat,
int  osiz 
)

    UME_init              init Memspc
    
    puts memSpc as first Record into objDat; gives back its Adress.
    
      Examples:
    char     memspc51[50000];
    Memspc   memSeg1;
    int      *iTab, sizTab;
    // attach memspc51
    UME_init (&memSeg1, memspc51, sizeof(memspc51));
    
    // give whole space to iTab; do not fix memspc.next
    UME_connect (iTab, &memSeg1);
    // set max size for iTab
    sizTab = UME_ck_free (&memSeg1) / sizeof(int);
    
    // reserve 100 int's in memSeg1; update memspc.next.
    iTab = UME_reserve (&memSeg1, 100 * sizeof(int));
    // give the remaining space to (char*)cbuf
    UME_connect (cbuf, memSeg1);
    // query size of cbuf
    cbufSiz = UME_ck_free (memSeg1);
    
    see also ../doc/gCAD3D_prog_de.txt section Memoryfunktionen

void* UME_save ( Memspc memSpc,
void *  objDat,
int  osiz 
)

    UME_save              save Obj -> Memspc
    RetCode: the address (starting-Position) of the memSpace;
      NULL if EOM

void* UME_reserve ( Memspc memSpc,
int  osiz 
)

    UME_reserve           get memSpacePos & reserve space
      does UME_connect (returns memspace) & UME_add (modify memspc.next)
    RetCode: the address (starting-Position) of the memSpace;
      NULL if EOM (not enough memspace)

int UME_add ( Memspc memSpc,
int  osiz 
)

    UME_add               den next-Pointer korrigieren (Obj. manuell speichern)
    
    RetCod 0=OK, -1=OutOfSpace
    
    Platz reservieren; wird nachfolgend NICHT mit UME_save belegt.
    
    Achtung Reihenfolge:
    
    1) den Pointer merken
      Point  *pTab;
      pTab = (Point*)memSeg1->next;
    
    2) den Platz reservieren (aendert den Pointer memSeg1->next)
      i1 = UME_add (memSeg1, sizeof(Point) * ptNr);
      if(i1 < 0) goto L_eom;  // Test ob genug Platz im memSeg
    
    3) den Platz belegen
      memcpy (pTab, pta, sizeof(Point) * ptNr);

int UME_reset ( Memspc memSpc,
void *  newStart 
)

UME_reset verkleinern Memspc

int UME_ck_free ( Memspc memSpc  ) 

UME_ck_free return free space

int UME_dump ( Memspc memSpc,
char *  txt 
)

UME_dump display free space

int UME_del ( Memspc memSpc,
void *  nach,
void *  von,
  ... 
)

    Datenbereich (u Pointer) loeschen (nach links verschieben);
      "nach" muss also kleiner als "von" sein !!

void UME_connect ( void *  memPos,
Memspc memSeg 
)

void UME_release ( void *  memPos,
Memspc memSeg 
)

int UME_reall_add ( long *  spcOff,
Memspc memSpc,
long  addSiz 
)

    add = allocate Space for <addSiz> bytes; reallocate if necessary.
    next-Pointer is incremented <addSiz> bytes
    Input:
      addSiz   occupy <addSiz> bytes in memSpc
                0: must increase memSpc
    Output:
      spcOff   displacement-offset; 0: no reallocate.
      RetCode  0=OK; -1=outOfMemory-Error.

int UME_realloc ( long *  spcOff,
Memspc memSpc,
long  newSiz 
)

    memspc vergroessern; die Pointer start, next und end korrigieren.
    Input:
      newSiz   is new total size of memSpc
    Output:
      spcOff   distance from active memSpc->start to new memSpc->start

int UME_reall_save ( long *  spcOff,
Memspc memSpc,
void *  objDat,
int  osiz 
)

    UME_reall_save              save Obj -> Memspc
    next-Pointer is incremented <addSiz> bytes and
    <osiz> bytes from position <objDat> are saved into memSpc.
    Input:
      oSiz     nr of bytes to save
      objDat   date to be saved in memSpc
    Output:
      spcOff   displacement-offset; 0: no reallocate.
      RetCode  0=OK; -1=outOfMemory-Error.

void* UME_alloc_tmp ( int  siz  ) 


Generated on Sat May 30 09:31:56 2009 for gCAD3D by  doxygen 1.5.6