
  AiksaurusGTK_strlist Class 
  --------------------------


  Purpose:
  
     Assists in creating GLists of c-style strings.
     
     Incidentally useful for creating string stacks / queues.



  Motivation:
  
     You can create such a list manually by doing something like this:

	GList *list = NULL;
	list = g_list_append(list, "String 1");
	list = g_list_append(list, "String 2");
	list = g_list_append(list, "String 3");

     Which, if a little ugly, is still pretty easy to do.  Where you 
     begin to run into trouble is when you want, say, user-entered 
     strings to be stored in this list.  

     Suppose you have a global char* buffer, which is going to be 
     set by a function called getInput.  If you try to do something 
     like this:

	
	GList *list = NULL;
	
	getInput();
	list = g_list_append(list, buffer);
	
	getInput();
	list = g_list_append(list, buffer);
	

     You will run into problems, because the GList construct does not 
     do a full copy of the string, so you have now created a very 
     invalid construct.

     So, we write a class, AiksaurusGTK_strlist, which will allow you
     to create a glist of strings without this fuss, because it will
     create copies of the strings you want to put in it and manage
     them by itself.

  

  Programming Interface:

     Creation 
     
        The class provides a single constructor with no arguments.
	This creates a blank list.


     Inserting Elements
     
        void push_back(const char* str) 
	  adds str to the end of the list. O(1).
	  
	void push_front(const char* str) 
	  adds str to the front of the list. O(1).


     Removing Elements

	void pop_back();
	  removes the last element in the list. O(1).
	  
	void pop_front();
	  removes the first element in the list. O(1).

	void remove_first(const char* str)
	   removes the first copy of 'str' in the list. O(n).

	void clear();
	  removes all elements in the list. O(n).


     Viewing Elements
     
        const char* look_front();
	  returns first string in the list. O(1).
	  becomes invalid if that element is destroyed!

	const char* look_back()
	  returns last string in the list. O(1).
	  becomes invalid if that element is destroyed!


     Other

        unsigned int size() const;
	   returns the number of strings in the list. O(1).

	const GList* list() const;
	   returns a pointer to the list itself. O(1).

        void debug()
	   prints debug info, define NDEBUG to disable.



