Beispiel #1
0
SASStringBTreeEnum_t
SASStringBTreeEnumCreate (SASStringBTree_t tree)
{
    __SBEnumeration *stringenum = NULL;
    stringenum = (__SBEnumeration *) malloc (sizeof (__SBEnumeration));
    if (stringenum != NULL)
    {
        stringenum->curmod = SASStringBTreeGetModCount (tree);
        stringenum->curcount = SASStringBTreeGetCurCount (tree);
        if (stringenum->curmod != 0L)
        {
            stringenum->hasmore = !SASStringBTreeIsEmpty (tree);
            stringenum->tree = tree;
            stringenum->ref.node = NULL;
            stringenum->ref.pos = 0;
            stringenum->entryString[0] = '\0';
            stringenum->curkey = &stringenum->entryString[0];
        }
        else
        {
            free (stringenum);
            stringenum = NULL;
        }
    }
    else
    {
    }

    return (SASStringBTreeEnum_t) stringenum;
}
Beispiel #2
0
static int
sassim_btree_test1 ()
{
  SASStringBTree_t stringBTree;
  SASStringBTreeEnum_t senum;
  unsigned long blockSize = block__Size64K;
  char *temp1, *temp2, *temp3, *temp4, *temp5, *temp6;
  char str[64];
  char str2[4] = " ";
  char *strptr;
  char chr;
  int rc1;
  long modcnt;

  stringBTree = SASStringBTreeCreate (blockSize);
  if (!stringBTree)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeCreate(%u)", blockSize);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeCreate (%lu) success", blockSize);
  SASSIM_PRINT_MSG ("SASStringBTreeFreeSpace() = %zu",
		    SASStringBTreeFreeSpace (stringBTree));
  SASSIM_DUMP_BLOCK (stringBTree, 128);
  SASSIM_PRINT_MSG ("SASStringBTreeIsEmpty(stringBTree) = %d",
		    SASStringBTreeIsEmpty (stringBTree));
  rc1 = SASStringBTreePut (stringBTree, (char *) "s", (void *) "s");
  if (!rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s)", stringBTree, "s",
			"s");
      return 1;
    }
  rc1 = SASStringBTreePut (stringBTree, (char *) "j", (void *) "j");
  if (!rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s)", stringBTree, "j",
			"j");
      return 1;
    }
  rc1 = SASStringBTreePut (stringBTree, (char *) "m", (void *) "m");
  if (!rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s)", stringBTree, "m",
			"m");
      return 1;
    }
  rc1 = SASStringBTreePut (stringBTree, (char *) "~", (void *) "~");
  if (!rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s)", stringBTree, "~",
			"~");
      return 1;
    }
  rc1 = SASStringBTreePut (stringBTree, (char *) "!", (void *) "!");
  if (!rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s)", stringBTree, "!",
			"!");
      return 1;
    }
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  SASSIM_PRINT_MSG ("SASStringBTreeIsEmpty(stringBTree) = %d",
		    SASStringBTreeIsEmpty (stringBTree));
  temp1 = SASStringBTreeGetMinKey (stringBTree);
  if (!temp1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMinKey(%p)", stringBTree);
      return 1;
    } else {
      SASSIM_PRINT_MSG ("SASStringBTreeGetMinKey=%s", temp1);
      if (strcmp(temp1, "!") != 0)
      {
          SASSIM_PRINT_ERR ("SASStringBTreeGetMinKey(%p) expected <%s> was %s@%p",
        		  stringBTree, "!", temp1, temp1);
      }
    }


  temp2 = SASStringBTreeGetMaxKey (stringBTree);
  if (!temp2)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMaxKey(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMaxKey=%s", temp2);
  rc1 = SASStringBTreeContainsKey (stringBTree, (char *) "s");
  if (!rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeContainsKey(%p, %s): %d", stringBTree,
			"s", rc1);
      return 1;
    }
  rc1 = SASStringBTreeContainsKey (stringBTree, (char *) "S");
  if (rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeContainsKey(%p, %s): %d", stringBTree,
			"S", rc1);
      return 1;
    }
  temp3 = (char *) SASStringBTreeGet (stringBTree, (char *) "s");
  if (!temp3)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGet(%p, %s): %p", stringBTree, "s",
			temp3);
      return 1;
    }
  temp4 = (char *) SASStringBTreeGet (stringBTree, (char *) "S");
  if (temp4)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGet(%p, %s): %p", stringBTree, "S",
			temp4);
      return 1;
    }
  rc1 = SASStringBTreePut (stringBTree, (char *) "m", (void *) "M");
  if (rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s): %d", stringBTree,
			"m", "M", rc1);
      return 1;
    }
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp5 =
    (char *) SASStringBTreeReplace (stringBTree, (char *) "m", (void *) "M");
  if (!temp5)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeReplace(%p, %s, %s)", stringBTree,
			"m", "M");
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeReplace(m, M) = <%s>", temp5);
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp5 =
    (char *) SASStringBTreeReplace (stringBTree, (char *) "n", (void *) "N");
  if (temp5)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeReplace(%p, %s, %s): %p", stringBTree,
			"n", "N", temp5);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeReplace(n,N)=<%s>", temp5);
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp5 = (char *) SASStringBTreeRemove (stringBTree, (char *) "s");
  if (!temp5)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeRemove(%p, %s)", stringBTree, "s");
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeRemove(s)=<%s>", temp5);
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp5 = (char *) SASStringBTreeRemove (stringBTree, (char *) "j");
  if (!temp5)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeRemove(%p, %s)", stringBTree, "j");
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeRemove(j)=<%s>", temp5);
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp5 = (char *) SASStringBTreeRemove (stringBTree, (char *) "m");
  if (!temp5)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeRemove(%p, %s)", stringBTree, "m");
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeRemove(m)=<%s>", temp5);
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp5 = (char *) SASStringBTreeRemove (stringBTree, (char *) "~");
  if (!temp5)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeRemove(%p, %s)", stringBTree, "~");
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeRemove(~)=<%s>", temp5);
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp5 = (char *) SASStringBTreeRemove (stringBTree, (char *) "!");
  if (!temp5)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeRemove(%p, %s)", stringBTree, "!");
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeRemove(!)=<%s>", temp5);
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);
  temp1 = SASStringBTreeGetMinKey (stringBTree);
  if (temp1)
    {
      SASSIM_PRINT_ERR
	("SASStringBTreeGetMinKey(%p) returned on a empty btree",
	 stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMinKey=%s", temp1);
  temp2 = SASStringBTreeGetMaxKey (stringBTree);
  if (temp2)
    {
      SASSIM_PRINT_ERR
	("SASStringBTreeGetMaxKey(%p) returned on a empty btree",
	 stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMaxKey=%s", temp2);
  memset (str, '\0', 64);
  strptr = &str[33];
  for (chr = 'a'; chr <= 'z'; chr++)
    {
      *strptr = chr;
      rc1 = SASStringBTreePut (stringBTree, strptr, strptr);
      if (!rc1)
	{
	  SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s)", stringBTree,
			    strptr, strptr);
	  return 1;
	}
      SASSIM_PRINT_MSG ("sasbtree_print=");
      sasbtree_print (stringBTree);
      strptr++;
    }
  modcnt = SASStringBTreeGetModCount (stringBTree);
  if (!modcnt)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetModCount(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetModCount=%ld", modcnt);
  temp1 = SASStringBTreeGetMinKey (stringBTree);
  if (!temp1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMinKey(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMinKey=%s", temp1);
  temp2 = SASStringBTreeGetMaxKey (stringBTree);
  if (!temp2)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMaxKey(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMaxKey=%s", temp2);
  senum = SASStringBTreeEnumCreate (stringBTree);
  if (!senum)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeEnumCreate(%p)", stringBTree);
      return 1;
    }
  printf ("SASStringBTreeEnumCreate(%p)", stringBTree);
  printf (" SASStringBTreeEnumNext(%p)   =<", senum);
  while (SASStringBTreeEnumHasMore (senum))
    {
      char *temp = (char *) SASStringBTreeEnumNext (senum);
      if (!temp)
	{
	  break;
	}
      SASSIM_PRINT_MSG ("%c", *temp);
    }
  printf (">");
  SASStringBTreeEnumDestroy (senum);
  senum = SASStringBTreeEnumCreate (stringBTree);
  if (!senum)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeEnumCreate(%p)", stringBTree);
      return 1;
    }
  printf ("SASStringBTreeEnumCreate(%p)", stringBTree);
  strptr = &str[1];
  for (chr = 'A'; chr <= 'Z'; chr++)
    {
      *strptr = chr;
      rc1 = SASStringBTreePut (stringBTree, strptr, strptr);
      if (!rc1)
	{
	  SASSIM_PRINT_ERR ("SASStringBTreePut(%p, %s, %s)", stringBTree,
			    strptr, strptr);
	  return 1;
	}
      SASSIM_PRINT_MSG ("sasbtree_print=");
      sasbtree_print (stringBTree);
      if (SASStringBTreeEnumHasMore (senum))
	{
	  char *temp = (char *) SASStringBTreeEnumNext (senum);
	  if (!temp)
	    {
	      SASSIM_PRINT_ERR ("SASStringBTreeEnumNext(%p)", senum);
	      return 1;
	    }
	  SASSIM_PRINT_MSG ("SASStringBTreeEnumNext(%p)=%c", senum, *temp);
	  strptr++;
	}
      printf (" SASStringBTreeEnumNext(%p)   =<", senum);
      while (SASStringBTreeEnumHasMore (senum))
	{
	  char *temp = (char *) SASStringBTreeEnumNext (senum);
	  if (!temp)
	    {
	      break;
	    }
	  SASSIM_PRINT_MSG ("%c", *temp);
	}
      printf (">");
    }
  SASStringBTreeEnumDestroy (senum);
  SASSIM_PRINT_MSG ("SASStringBTreeFreeSpace() = %zu",
		    SASStringBTreeFreeSpace (stringBTree));
  modcnt = SASStringBTreeGetModCount (stringBTree);
  if (!modcnt)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetModCount(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetModCount=%ld", modcnt);
  temp1 = SASStringBTreeGetMinKey (stringBTree);
  if (!temp1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMinKey(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMinKey=%s", temp1);
  temp2 = SASStringBTreeGetMaxKey (stringBTree);
  if (!temp2)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMaxKey(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMaxKey=%s", temp2);
  senum = SASStringBTreeEnumCreate (stringBTree);
  if (!senum)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeEnumCreate(%p)", stringBTree);
      return 1;
    }
  printf ("SASStringBTreeEnumCreate(%p)", stringBTree);
  printf (" SASStringBTreeEnumNext(%p)   =<", senum);
  while (SASStringBTreeEnumHasMore (senum))
    {
      char *temp = (char *) SASStringBTreeEnumNext (senum);
      if (!temp)
	{
	  break;
	}
      SASSIM_PRINT_MSG ("%c", *temp);
    }
  printf (">");
  SASStringBTreeEnumDestroy (senum);
  senum = SASStringBTreeEnumCreateStartAt (stringBTree, (char*)"m");
  if (!senum)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeEnumCreateStartAt(%p)", stringBTree);
      return 1;
    }
  printf ("SASStringBTreeEnumCreate(%p)", stringBTree);
  temp6 = SASStringBTreeEnumCurrent(senum);
  printf (" SASStringBTreeEnumNext(%p) %c  =<", senum, *temp6);
  while (SASStringBTreeEnumHasMore (senum))
    {
      char *temp = (char *) SASStringBTreeEnumNext (senum);
      if (!temp)
	{
	  break;
	}
      SASSIM_PRINT_MSG ("%c", *temp);
    }
  printf (">");
  SASStringBTreeEnumDestroy (senum);
#if 1
  for (chr = 'a'; chr <= 'z'; chr++)
    {
      str2[0] = chr;
      temp6 = (char *) SASStringBTreeRemove (stringBTree, str2);
      if (!temp6)
	{
	  break;
	}
      SASSIM_PRINT_MSG ("SASStringBTreeRemove(%s)= %c", str2, *temp6);
      SASSIM_PRINT_MSG ("sasbtree_print=");
      sasbtree_print (stringBTree);
    }
  for (chr = 'A'; chr <= 'Z'; chr++)
    {
      str2[0] = chr;
      temp6 = (char *) SASStringBTreeRemove (stringBTree, str2);
      if (!temp6)
	{
	  break;
	}
      SASSIM_PRINT_MSG ("SASStringBTreeRemove(%s)= %c", str2, *temp6);
      SASSIM_PRINT_MSG ("sasbtree_print=");
      sasbtree_print (stringBTree);
    }

  SASSIM_PRINT_MSG ("SASStringBTreeFreeSpace() = %zu",
		    SASStringBTreeFreeSpace (stringBTree));
  SASSIM_DUMP_BLOCK (stringBTree, 128);
#endif
  SASStringBTreeDestroy (stringBTree);
  return 0;
}
Beispiel #3
0
//#define __SASDebugPrint__ 1
static int
sassim_btree_test_split ()
{
  SASStringBTree_t stringBTree;
  unsigned long blockSize = block__Size64K;
  SASStringBTreeEnum_t senum;
  char *rawkey, *keyval, *strptr;
  char *temp1, *temp2;
  int i, rc1;
  long modcnt;
  char chr, str[128], keylist[128];
  char str2[4] = " ";

  stringBTree = SASStringBTreeCreate (blockSize);
  if (!stringBTree)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeCreate(%zu)", blockSize);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeCreate (%lu) success", blockSize);
  SASSIM_PRINT_MSG ("SASStringBTreeFreeSpace() = %zu", SASStringBTreeFreeSpace (stringBTree));
#ifdef __SASDebugPrint__
  SASSIM_DUMP_BLOCK (stringBTree, 128);
#endif
  SASSIM_PRINT_MSG ("SASStringBTreeIsEmpty(stringBTree) = %d", SASStringBTreeIsEmpty (stringBTree));

  memset (str, '\0', 128);
  strptr = &str[0];
  i = 0;
  for (chr = '1'; chr <= 0x7d; chr++)
    {
      keylist[i] = chr;
      *strptr = chr;
      rc1 = SASStringBTreePut (stringBTree, strptr, strptr);
      if (!rc1) {
        SASSIM_PRINT_ERR ("SASStringBTreePut (%p, %s, %s)", stringBTree, strptr, strptr);
        return 1;
      }
#ifdef __SASDebugPrint__
      SASSIM_PRINT_MSG ("sasbtree_print=");
      sasbtree_print (stringBTree);
#endif
     strptr++;
     i++;
    }
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);

  temp1 = SASStringBTreeGetMinKey (stringBTree);
  if (!temp1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMinKey (%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMinKey=(%s)", temp1);
  temp2 = SASStringBTreeGetMaxKey (stringBTree);
  if (!temp2)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMaxKey (%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMaxKey=(%s)", temp2);
  modcnt = SASStringBTreeGetModCount (stringBTree);
  if (!modcnt)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetModCount (%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetModCount=%ld", modcnt);

  senum = SASStringBTreeEnumCreate (stringBTree);
  if (!senum)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeEnumCreate (%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeEnumCreate(%p)", stringBTree);

  i = 0;
  while (SASStringBTreeEnumHasMore (senum))
    {
      char *temp = (char *) SASStringBTreeEnumNext (senum);
      if (!temp)
        {
          break;
        }
        if (keylist[i] != *temp)
        {
            SASSIM_PRINT_ERR ("SASStringBTreeEnumNext: misscompare %c != %c",
                        keylist[i] != *temp);
            return 1;
        }
      SASSIM_PRINT_MSG ("<%p> %c", temp, *temp);
      i++;
    }
  SASStringBTreeEnumDestroy (senum);

  SASSIM_PRINT_MSG ("SASStringBTreeFreeSpace() = %zu", SASStringBTreeFreeSpace (stringBTree));
#ifdef __SASDebugPrint__
  SASSIM_DUMP_BLOCK (stringBTree, 128);
#endif
  for (chr = 0x31; chr <= 0x60; chr++)
    {
      str2[0] = chr;
      keyval = (char *) SASStringBTreeRemove (stringBTree, str2);
      if (!keyval) {
        SASSIM_PRINT_ERR ("SASStringBTreeRemove (%p, %s) = %c", stringBTree, str2, *keyval);
        return 1;
      } else {
        SASSIM_PRINT_MSG ("SASStringBTreeRemove (%p, %s) = %c", stringBTree, str2, *keyval);
      }

#ifdef __SASDebugPrint__
      SASSIM_PRINT_MSG ("sasbtree_print=");
      sasbtree_print (stringBTree);
#endif
    }
  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);

  temp1 = SASStringBTreeGetMinKey (stringBTree);
  if (!temp1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMinKey (%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMinKey=%s", temp1);
  temp2 = SASStringBTreeGetMaxKey (stringBTree);
  if (!temp2)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetMaxKey(%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetMaxKey=%s", temp2);
  modcnt = SASStringBTreeGetModCount (stringBTree);
  if (modcnt == 0)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeGetModCount (%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeGetModCount=%ld", modcnt);

  senum = SASStringBTreeEnumCreate (stringBTree);
  if (!senum)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeEnumCreate (%p)", stringBTree);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeEnumCreate(%p)", stringBTree);

  keyval = (char *) SASStringBTreeEnumNext (senum);
  if (!keyval)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeEnumNext (%p)", senum);
      return 1;
    }
  SASSIM_PRINT_MSG ("<%p> %c", keyval, *keyval);
  if (*keyval != 'a')
  {
    SASSIM_PRINT_ERR ("SASStringBTreeEnumNext(%p)=%c expected 'a'",
                senum, *keyval);
    return 1;
  }
  rawkey = keyval;
  while (SASStringBTreeEnumHasMore (senum))
    {
      keyval = (char *) SASStringBTreeEnumNext (senum);
      if (!keyval)
        {
          SASSIM_PRINT_ERR ("SASStringBTreeEnumNext (%p)", senum);
          return 1;
        }
      SASSIM_PRINT_MSG ("<%p> %c", keyval, *keyval);
      if (rawkey < keyval)
          rawkey = keyval;
      else
      {
          SASSIM_PRINT_ERR ("SASStringBTreeEnumNext(%p) ordering %c=%c",
                          senum, rawkey, *keyval);
          return 1;
      }
    }
  SASStringBTreeEnumDestroy (senum);
  for (chr = 0x61; chr <= 0x7d; chr++)
    {
      str2[0] = chr;
      keyval = (char *) SASStringBTreeRemove (stringBTree, str2);
      if (!keyval) {
        SASSIM_PRINT_ERR ("SASStringBTreeRemove (%p, %s) = %c", stringBTree, str2, *keyval);
        return 1;
      } else {
        SASSIM_PRINT_MSG ("SASStringBTreeRemove (%p, %s) = %c", stringBTree, str2, *keyval);
      }
#ifdef __SASDebugPrint__
      SASSIM_PRINT_MSG ("sasbtree_print=");
      sasbtree_print (stringBTree);
#endif
    }

  SASSIM_PRINT_MSG ("sasbtree_print=");
  sasbtree_print (stringBTree);

  rc1 = SASStringBTreeIsEmpty (stringBTree);
  if (!rc1)
    {
      SASSIM_PRINT_ERR ("SASStringBTreeIsEmpty(stringBTree) = %d", rc1);
      return 1;
    }
  SASSIM_PRINT_MSG ("SASStringBTreeIsEmpty(stringBTree) = %d", rc1);

  SASSIM_PRINT_MSG ("SASStringBTreeFreeSpace() = %zu", SASStringBTreeFreeSpace (stringBTree));

#ifdef __SASDebugPrint__
  SASSIM_DUMP_BLOCK (stringBTree, 128);
#endif
  SASStringBTreeDestroy (stringBTree);

  return 0;
}