/**********************************************************************
This file is part of Crack dot Com's free source code release of Golgotha.
for information about compiling & licensing issues visit this URL
 If that doesn't help, contact Jonathan Clark at 
  golgotha_source@usa.net (Subject should have "GOLG" in it) 
***********************************************************************/

#include "test.hh"

CStart startup("Test2");

class CTest2 : public CBase
{
protected:
  virtual char *Type() { return "Test2"; }
public:
  int accesses;
  CBase *sub;

  CTest2(char *name) : CBase(name), accesses(0), sub(0) {}

  ~CTest2()
  {
    if (sub)
      delete sub;
    sub = 0;
  }

  virtual void Action(char *command)
  {
    accesses++;
    switch (command[0]) {
    case 'c':
      if (sub)
	delete sub;
      sub = Make("Test1","subobject");
      break;
    case 's':
      sub->Action(command+2);
      break;
    case 'p':
      print();
      break;
    case 'a':
      printf("I've been accessed %d times.\n", accesses);
      break;
    }
  }
};

class CTest2Foundry : public CFoundry
{
public:
  char *Type() { return "Test2"; }
  CBase *Make(char *name) { return new CTest2(name); }
} CTest2Foundry;

extern "C" void test2(int a, int b)
{
  printf("Test 2 succesfully executed with %d and %d\n",a,b);
}