#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SList.h"
 
class Data
{
  public:
  
  int _val;
  char *_name;
  
  Data(char *name, int val)
  {
    _val = val;
    _name = strdup(name);
  }

  ~Data()
  {
    free(_name);
  }
};


main(int argc, char **argv)
{
  SList<Data *> list;

  list.append(new Data("one", 1));
  list.append(new Data("two", 2));
//  list.append(new Data("three", 3));

  printf("list.length()=%d\n", list.length());
  
  SListIter<Data *> iter(list);
  Data **data;

  int remTarget = -1;
  if (argc > 1)
    remTarget = atoi(argv[1]);
  
  for (int i = 0; (data = iter()) != 0; i++)
  {
    printf("name: %s, val: %d\n", 
	   (*data)->_name, (*data)->_val);

    if (i == remTarget)
      printf("remove element %d: ret=%d\n", remTarget, iter.remove());
  }
  if (remTarget == -1)
    exit(0);

  printf("list.length()=%d\n", list.length());  
  fprintf(stderr, "Element %d should now be gone:\n", remTarget);
  iter.reset();
  while (data = iter())
  {
    printf("name: %s, val: %d\n", 
	   (*data)->_name, (*data)->_val);
  }

  
  exit(0);
}
