Show using C++ wrapper API for the "class" example

This almost exactly mirrors the existing C examples, but modify both
examples slightly to make their output show which language is used.
This commit is contained in:
Vadim Zeitlin 2021-11-18 23:56:39 +01:00
commit 7cbbfab198
3 changed files with 50 additions and 3 deletions

View file

@ -5,10 +5,16 @@ CXXSRCS = example.cxx
TARGET = example
INTERFACE = example.i
check: build
check_c: build
$(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' RUNME_EXT=c c_run
check_cxx: build
$(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' RUNME_EXT=cxx c_run
check: check_c check_cxx
build:
$(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' CXXSRCS='$(CXXSRCS)' \
SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \

View file

@ -3,7 +3,7 @@
#include "example_wrap.h"
int main(int argc, char **argv) {
printf("Creating some objects:\n");
printf("Creating some objects from C:\n");
Circle* c = Circle_new(10);
printf(" Created circle\n");
Square* s = Square_new(10);
@ -37,7 +37,7 @@ int main(int argc, char **argv) {
Circle_delete(c);
printf("%d shapes remain\n", Shape_nshapes_get());
printf("Goodbye\n");
printf("Goodbye from C\n");
return 0;
}

View file

@ -0,0 +1,41 @@
#include <iostream>
#include "example_wrap.h"
int main(int argc, char **argv) {
{ // Block containing the Circle and Square objects.
std::cout << "Creating some objects from C++:\n";
example::Circle c(10);
std::cout << " Created circle\n";
example::Square s(10);
std::cout << " Created square\n";
std::cout << "\nA total of " << example::Shape::nshapes() << " shapes were created\n";
c.x(20);
c.y(30);
example::Shape& shape = s;
shape.x(-10);
shape.y(5);
std::cout << "\nHere is their current positions:\n";
std::cout << " Circle = (" << c.x() << " " << c.y() << ")\n";
std::cout << " Square = (" << s.x() << " " << s.y() << ")\n";
std::cout << "\nHere are some properties of the shapes:\n";
example::Shape* shapes[] = {&c, &s};
for (int i = 0; i < 2; i++) {
std::cout << " " << (i ? "Square" : "Circle") << "\n";
std::cout << " area = " << shapes[i]->area() << "\n";
std::cout << " perimeter = " << shapes[i]->perimeter() << "\n";
}
std::cout << "\nGuess I'll clean up now\n";
}
std::cout << example::Shape::nshapes() << " shapes remain\n";
std::cout << "Goodbye from C++\n";
return 0;
}