//  File: des08.C
//
//  The dangers of destructors, part 8
//
//  Using pointers solve all of our problems, but is awkward

#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#include "record2.h"


Record *foo(Record *T) {
   Record *R ;

   R = new Record("R") ;

   printf("\nIdentify T: ") ;
   T->id() ;

   printf("\nIdentify R: ") ;
   R->id() ;

   return R ;
}


main() {
   Record *S ;
   Record *P ;
   char *str1, *str2 ;

   S = new Record("S") ;

   printf("Identify S: ") ;
   S->id() ;

   printf("\nDo Assignment\n") ;
   P = foo(S) ;
   printf("Finished Assignment\n\n") ;

   str1 = strdup("Hello") ;
   printf ("str1=(%p,\"%s\")\n", str1, str1) ;

   str2 = strdup("World") ;
   printf ("str2=(%p,\"%s\")\n", str2, str2) ;
   
   printf("Identify S: ") ;
   S->id() ;

   printf("Identify P: ") ;
   P->id() ;

   printf("\nDestroy all: \n") ;
   delete S ;
   delete P ;

   printf("\n\nEnd of main()\n\n") ;
}
