/****************************************************************************
* *
* W utils . c XGAP Source Frank Celler
* *
* *
* Y Copyright 1995 - 1997 , Lehrstuhl D fuer Mathematik , RWTH Aachen , Germany
* Y Copyright 1997 , Frank Celler , Huerth , Germany
* *
* * This file contains the utility functions and macros used in XGAP ,
* * basically the list functions ( ' ELM ' , ' LEN ' , ' AddList ' , and ' List ' ) and
* * the debug macro ( ' DEBUG ' ) . This file also includes all the necessary
* * system and X11 include files and defines the following data types :
* *
* * Boolean " True " or " False " ( defined by X11 )
* * Char a " Char " will be able to hold one character
* * Int a 32 - bit signed integer
* * Long an integer able to hold a pointer
* * Pointer a generic pointer
* * Short a 16 - bit signed integer
* * String an array of chars
* * UChar unsigned version of " Char "
* * UInt a 32 - bit unsigned integer
* * ULong unsigned version of " Long "
* * UShort a 16 - bit unsigned integer
* *
* * List ( < len > )
* * - - - - - - - - - - - - -
* * ' List ' creates a new list able to hold < len > pointers of type ' Pointer ' .
* *
* * AddList ( < lst > , < elm > )
* * - - - - - - - - - - - - - - - - - - - - - - -
* * ' AddList ' appends the new element < elm > of type ' Pointer ' to < lst > ,
* * enlarging the list if necessary .
* *
* * ELM ( < lst > , < i > )
* * - - - - - - - - - - - - - - - - -
* * ' ELM ' returns the < i > . th element of < lst > .
* *
* * LEN ( < lst > )
* * - - - - - - - - - - - -
* * ' LEN ' returns the length of < lst > .
* *
* * DEBUG ( < type > , ( < debug - text > , . . . ) )
* * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* * ' DEBUG ' uses ' printf ' to print the < debug - text > in case that ' Debug ' & &
* * < type > is true . The text is preceded by the line number and the source
* * file name . The following types are available : D_LIST , D_XCMD , D_COMM .
*/
#include "utils.h"
/****************************************************************************
* *
* V Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . debug on / off
*/
Int Debug = 0 ;
/****************************************************************************
* *
* F List ( < len > ) . . . . . . . . . . . . . . . . . . . create a new list
*/
#ifdef DEBUG_ON
TypeList LIST (
String file,
Int line,
UInt len)
#else
TypeList List (
UInt len)
#endif
{
TypeList list;
/* get memory for new list */
list = (TypeList) XtMalloc( sizeof ( struct _list ) );
list->len = len;
list->size = len+10 ;
list->ptr = (Pointer) XtMalloc( list->size * sizeof (Pointer) );
/* give some debug information */
#ifdef DEBUG_ON
if ( Debug & D_LIST )
printf( "%04d:%s: List(%d)=%p\n" , line, file, len, (void *)list );
#endif
/* return the new list */
return list;
}
/****************************************************************************
* *
* F AddList ( < lst > , < elm > ) . . . . . . . . add list element < elm > to < list >
*/
#ifdef DEBUG_ON
void ADD_LIST (
String file,
Int line,
TypeList lst,
Pointer elm)
#else
void AddList (
TypeList lst,
Pointer elm)
#endif
{
/* give some debug information */
#ifdef DEBUG_ON
if ( Debug & D_LIST )
printf( "%04d:%s: AddList( %p, %p )\n" , line, file, (void *)lst,
(void *)elm );
#endif
/* resize <lst> if necessary */
if ( lst->len == lst->size )
{
lst->size = lst->size*4 /3 + 5 ;
lst->ptr = (Pointer) XtRealloc( (char *) lst->ptr,
lst->size * sizeof (Pointer) );
}
/* and add list element */
lst->ptr[lst->len++] = elm;
}
/****************************************************************************
* *
* E utils . c . . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here
*/
Messung V0.5 in Prozent C=95 H=70 G=83
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-07-01)
¤
*© Formatika GbR, Deutschland