From 7cbbfab198e203f6a4fd167639ccf087fcb3a2ce Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 18 Nov 2021 23:56:39 +0100 Subject: [PATCH] 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. --- Examples/c/class/Makefile | 8 +++++++- Examples/c/class/runme.c | 4 ++-- Examples/c/class/runme.cxx | 41 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 Examples/c/class/runme.cxx diff --git a/Examples/c/class/Makefile b/Examples/c/class/Makefile index 7104242cc..b031415ad 100644 --- a/Examples/c/class/Makefile +++ b/Examples/c/class/Makefile @@ -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)' \ diff --git a/Examples/c/class/runme.c b/Examples/c/class/runme.c index fd7da2a5a..f7f463031 100644 --- a/Examples/c/class/runme.c +++ b/Examples/c/class/runme.c @@ -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; } diff --git a/Examples/c/class/runme.cxx b/Examples/c/class/runme.cxx new file mode 100644 index 000000000..c7994c7ff --- /dev/null +++ b/Examples/c/class/runme.cxx @@ -0,0 +1,41 @@ +#include + +#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; +}