<?php

# This file illustrates the low-level C++ interface
# created by SWIG.  In this case, all of our C++ classes
# get converted into function calls.

# ----- Object creation -----

print "Creating some objects:\n";
$c = new Circle(10);
print "    Created circle \$c\n";
$s = new Square(10);
print "    Created square \$s\n";

# ----- Create the ShapeContainer ----

$container = new ShapeContainer();

$container->addShape($c);
$container->addShape($s);

# ----- Access a static member -----

print "\nA total of " . Shape::nshapes() . " shapes were created\n";

# ----- Delete by the old references -----
# This should not truly delete the shapes because they are now owned
# by the ShapeContainer.

print "Delete the old references.";

# Note: this invokes the virtual destructor
$c = NULL;
$s = NULL;

print "\nA total of " . Shape::nshapes() . " shapes remain\n";

# ----- Delete by the container -----
# This should truly delete the shapes

print "Delete the container.";
$container = NULL;
print "\nA total of " . Shape::nshapes() . " shapes remain\n";

print "Goodbye\n";
