git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4141 626c5289-ae23-0410-ae9c-e8d60b6d4f22
45 lines
761 B
C++
45 lines
761 B
C++
/* File : example.c */
|
|
|
|
#include "example.h"
|
|
#include <math.h>
|
|
|
|
/* Move the shape to a new location */
|
|
void Shape::move(double dx, double dy) {
|
|
x += dx;
|
|
y += dy;
|
|
}
|
|
|
|
int Shape::nshapes = 0;
|
|
|
|
double Circle::area(void) {
|
|
return M_PI*radius*radius;
|
|
}
|
|
|
|
double Circle::perimeter(void) {
|
|
return 2*M_PI*radius;
|
|
}
|
|
|
|
double Square::area(void) {
|
|
return width*width;
|
|
}
|
|
|
|
double Square::perimeter(void) {
|
|
return 4*width;
|
|
}
|
|
|
|
double do_op(Shape *s, double (Shape::*m)(void)) {
|
|
return (s->*m)();
|
|
}
|
|
|
|
double (Shape::*areapt())(void) {
|
|
return &Shape::area;
|
|
}
|
|
|
|
double (Shape::*perimeterpt())(void) {
|
|
return &Shape::perimeter;
|
|
}
|
|
|
|
/* Member pointer variables */
|
|
double (Shape::*areavar)(void) = &Shape::area;
|
|
double (Shape::*perimetervar)(void) = &Shape::perimeter;
|
|
|