home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / TIERRA40.ZIP / ALMOND / OVERVIEW / OVSTATS.C < prev    next >
C/C++ Source or Header  |  1992-07-06  |  2KB  |  128 lines

  1. /*
  2. * ovstats.c
  3. *
  4. * Copyright (c) 1991, 1992 by Marc W. Cygnus and Virtual Life
  5. * All Rights Reserved.
  6. *
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <errno.h>
  12.  
  13. #include <X11/Intrinsic.h>
  14.  
  15. #include "debug.h"
  16.  
  17. #include "overview.h"
  18.  
  19.  
  20.  
  21. /* DONE
  22. * initialise_orglist()
  23. *
  24. */
  25.  
  26. void
  27. initialise_orglist()
  28. {
  29.   OrgMap        *om;
  30.   register int        i, j;
  31.  
  32.   if (( om = (OrgMap *)ALMalloc( sizeof( OrgMap ) )) == (OrgMap *)NULL ) {
  33.     fprintf( stderr, "init_memoryspace: can't malloc orgmap\n" );
  34.     exit( 1 );
  35.   }
  36.  
  37.   GS.orgmap = om;
  38.  
  39.   om->start = 0;
  40.   om->len = 0;
  41.   om->colour = 0;
  42.   om->next = (OrgMap *)NULL;
  43.   om->prev = (OrgMap *)NULL;
  44.  
  45.   for ( i = 0; i < (NUM_SPECCOLOURS+1); i++ )    /* HARDCODED CONSTANT */
  46.     for ( j = 0; j < 4; j++ )            /* HARDCODED CONSTANT */
  47.       GS.key_list[i][j] = 0;
  48. }
  49.  
  50.  
  51. /* DONE
  52. * add_org_to_orgmap()
  53. *
  54. */
  55.  
  56. void
  57. add_org_to_orgmap( om )
  58.   OrgMap    *om;
  59. {
  60.   OrgMap    *orgmap;
  61.  
  62.   orgmap = GS.orgmap;
  63.   orgmap->start++;    /* header node; start is population, so increment */
  64.  
  65.   if ( (long)(om->start / 2) < GS.memsize / 2 ) {
  66.  
  67.     while ( orgmap->next != (OrgMap *)NULL && orgmap->next->start < om->start )
  68.       orgmap = orgmap->next;
  69.  
  70.   } else {
  71.  
  72.     while ( orgmap->prev != (OrgMap *)NULL && orgmap->prev->start > om->start )
  73.       orgmap = orgmap->prev;
  74.   }
  75.  
  76.   om->next = orgmap->next;
  77.   orgmap->next = om;
  78.   om->prev = orgmap;
  79.   if ( om->next == (OrgMap *)NULL )
  80.     GS.orgmap->prev = om;
  81.   else
  82.     om->next->prev = om;
  83.   
  84. }
  85.  
  86.  
  87. /* DONE
  88. * del_org_from_orgmap()
  89. *
  90. */
  91.  
  92. OrgMap *
  93. del_org_from_orgmap( start )
  94.   u_long    start;
  95. {
  96.   OrgMap    *orgmap;
  97.  
  98.   orgmap = GS.orgmap;
  99.   orgmap->start--;
  100.  
  101.   if ( (long)(start / 2) < GS.memsize / 2 ) {
  102.  
  103.     while ( orgmap->next != (OrgMap *)NULL && orgmap->next->start <= start )
  104.       orgmap = orgmap->next;
  105.  
  106.   } else {
  107.  
  108.     while ( orgmap->prev != (OrgMap *)NULL && orgmap->prev->start >= start )
  109.       orgmap = orgmap->prev;
  110.  
  111.   }
  112.  
  113.   if ( orgmap == (OrgMap *)NULL ) {
  114.     fprintf( stderr, "del_org_from_orgmap: bogus death! start = %d\n", start );
  115.     GS.orgmap->start++;
  116.   }
  117.  
  118.   orgmap->prev->next = orgmap->next;
  119.   if ( orgmap->next == (OrgMap *)NULL )
  120.     GS.orgmap->prev = orgmap->next;
  121.   else
  122.     orgmap->next->prev = orgmap->prev;
  123.  
  124.   return orgmap;
  125. }
  126.  
  127.  
  128.