Beispiel #1
0
/*=========================================================
 * set_array_obj -- Set element (object) in array
 *  grow if necessary
 *=======================================================*/
void
set_array_obj (ARRAY array, INT i, OBJECT obj)
{
	ASSERT(i>=0);
	ASSERT(i< 0x1000000); /* 16,777,216 */
	if (i>=AMax(array)) {
		enlarge_array(array, i);
	}
	if (i>=ASize(array)) {
		int j;
		for (j=ASize(array); j<i; ++j)
			AData(array)[j] = 0;
		ASize(array)=i+1;
	}
	AData(array)[i] = obj;
}
Beispiel #2
0
int find_conv_to_ind(char *lab)
{
  int i, label;
  char *tmp;

  /* no string == empty label */
  if (lab == NULL)
    return LABEL_EMPTY;

  /* empty string == empty label */
  if (lab[0] == '\0')
    return LABEL_EMPTY;

  /* check if the label is already in the table */
  label = -1;
  for (i = 0; i < num_labs; i++)
    if (strcmp(labels[i], lab) == 0)
      {
	label = i;
	break;
      }
  
  if (label < 0)
    {
      /* label not found in array. Add it. */
      label = num_labs;
      if (label >= lab_array_size)
	if (enlarge_array())
	  return -1;
      
      if ((tmp = ostrdup(lab)) == NULL)
	return -1;
      
      labels[label] = tmp;
      num_labs++;
    }

  return(label + 1);
}