Blame testing/027_extends.c

Packit 1c1d7e
// objective: test the \extends, \implements, \memberof, \private, and \public commands
Packit 1c1d7e
// check: struct_object.xml
Packit 1c1d7e
// check: struct_vehicle.xml
Packit 1c1d7e
// check: struct_car.xml
Packit 1c1d7e
// check: struct_truck.xml
Packit 1c1d7e
Packit 1c1d7e
/**
Packit 1c1d7e
 * \file 
Packit 1c1d7e
 */
Packit 1c1d7e
Packit 1c1d7e
typedef struct Object Object;   //!< Object type
Packit 1c1d7e
typedef struct Vehicle Vehicle; //!< Vehicle type
Packit 1c1d7e
typedef struct Car Car;         //!< Car type
Packit 1c1d7e
typedef struct Truck Truck;     //!< Truck type
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Base object class.
Packit 1c1d7e
 */
Packit 1c1d7e
struct Object
Packit 1c1d7e
{
Packit 1c1d7e
  int ref;    //!< \private Reference count.
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Increments object reference count by one.
Packit 1c1d7e
 * \public \memberof Object
Packit 1c1d7e
 */
Packit 1c1d7e
static Object * objRef(Object *obj);
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Decrements object reference count by one.
Packit 1c1d7e
 * \public \memberof Object
Packit 1c1d7e
 */
Packit 1c1d7e
static Object * objUnref(Object *obj);
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Vehicle class.
Packit 1c1d7e
 * \extends Object
Packit 1c1d7e
 */
Packit 1c1d7e
struct Vehicle
Packit 1c1d7e
{
Packit 1c1d7e
  Object base;    //!< \protected Base class.
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Starts the vehicle.
Packit 1c1d7e
 * \public \memberof Vehicle
Packit 1c1d7e
 */
Packit 1c1d7e
void vehicleStart(Vehicle *obj);
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Stops the vehicle.
Packit 1c1d7e
 * \public \memberof Vehicle
Packit 1c1d7e
 */
Packit 1c1d7e
void vehicleStop(Vehicle *obj);
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Car class.
Packit 1c1d7e
 * \implements Vehicle
Packit 1c1d7e
 */
Packit 1c1d7e
struct Car
Packit 1c1d7e
{
Packit 1c1d7e
  Vehicle base;    //!< \protected Base class.
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Truck class.
Packit 1c1d7e
 * \implements Vehicle
Packit 1c1d7e
 */
Packit 1c1d7e
struct Truck
Packit 1c1d7e
{
Packit 1c1d7e
  Vehicle base;    //!< \protected Base class.
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*!
Packit 1c1d7e
 * Main function.
Packit 1c1d7e
 *
Packit 1c1d7e
 * Ref vehicleStart(), objRef(), objUnref().
Packit 1c1d7e
 */
Packit 1c1d7e
int main(void)
Packit 1c1d7e
{
Packit 1c1d7e
  Car c;
Packit 1c1d7e
  vehicleStart((Vehicle*) &c);
Packit 1c1d7e
}
Packit 1c1d7e