john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

Win CE char buffer List

/* 2010-05 john pfeiffer 
buffer linked list for file data
Depends on drawRectangle */

#define  BUFFERMAX 32

typedef struct charbuffer* charbufferptr;

struct charbuffer
{   int id;
    char data[ BUFFERMAX ];
    rectangle location;
    charbufferptr prev;
    charbufferptr next ;
};

charbufferptr charbufferAlloc( VOID ) 
{  
    return( (charbufferptr)malloc(  sizeof( struct charbuffer ) )  );
}/* end   charbufferAlloc(  )  */

charbufferptr initializecharbuffer( VOID  )
{  
    charbufferptr temp;
    temp = charbufferAlloc( );
    if( temp == NULL )
   {    printf( "error allocating memory");
        exit( 1 );
    }
    temp -> id = 0;
    memset( temp ->data , 0 , sizeof( temp ->data ) );
    temp -> location.left = 0;
    temp -> location.top  = 0;
    temp -> location.right  = 0;
    temp -> location.bottom = 0;
    temp ->prev = NULL ;
    temp ->next = NULL ;

    return temp ;   
}/* end   initializecharbuffer(  )  */

charbufferptr appendcharbufferList( charbufferptr listend , charbufferptr newobject )
{  
    listend -> next = newobject ;
    newobject ->id = ( listend ->id ) +1;   
    newobject ->prev = listend ;

    return newobject ;   
}/* end   appendcharbufferList(  )  */

void displaycharbufferConsole( charbufferptr temp )
{    int i=0;
    if( temp != NULL) 
    {    
        while( temp->data[i] != 0)
        {    printf("%c",  temp->data[ i ] );  
             i++;
        }
 }
}/* end   displaycharbufferConsole(  )  */

void displaycharbufferDebug( charbufferptr temp )
{   if( temp != NULL) 
    {  
        printf("id=%d\n", temp->id );
        printf("data=%s\n", temp->data );
        printf("next=%d\n", (int) temp->next );
        printf("prev=%d\n", (int) temp->prev );
     }
}/* end   displaycharbufferDebug() */

void displaycharbufferListConsole( charbufferptr temp )
{
    printf(" \n*charbuffer LIST* \n");         
    while( temp != NULL) 
    {  
        displaycharbufferConsole( temp );
        temp = temp-> next ; 
    }
}/* end  displaycharbufferListConsole(  )  */


charbufferptr removecharbufferListEnd( charbufferptr t )
{  
    charbufferptr temp; 
    if(t != NULL)
    { 
        temp = t;  
        t = t->prev;
        t->next = NULL;
        free( temp );
        return t;   
    }   
    return( NULL );
}/* end   removecharbufferListEnd(  )  */


/* deletes down the list next */
charbufferptr deletecharbufferList( charbufferptr t )
{ 
    charbufferptr temp; 
    printf("\n*charbuffer LIST delete*\n ");

    while( t != NULL) 
    {  
        printf( "%d " , t->id );
        temp = t;  
        t = t->next;
        free( temp );     
     }
 printf( "\n"  );
}/* end function  deletecharbufferList(  )  */

int charbufferGetData ( charbufferptr temp , FILE* fp )
{
    int i = 0 ;
    memset(  temp -> data , 0 , sizeof(temp-> data) );

    while( (i < BUFFERMAX) && !feof(fp) )
    {              
          temp -> data[ i ] =  fgetc(fp); 
          i++;     
    }

/* EOF condition stored in data, remove? */
    if( feof(fp) && i>0)
    {    temp -> data[ i-1 ] = 0;    }

    return i;
}/* end charbufferGetData */

  • « apache httpd example httpd.conf
  • blackberry enterprise server express install on win2k3 for exch2k3 »

Published

May 3, 2010

Category

c

~270 words

Tags

  • charbufferlist 1
  • win-ce 40