mirror of
https://github.com/boostorg/python.git
synced 2026-01-21 17:12:22 +00:00
* Made Cygwin archiving reliable, even when the user supplies a path with backslashes ---------------------------------------------------------------------- Modified Files: tools/build/gcc-tools.jam tools/build/new/boost-build.jam boost/python/detail/config.hpp libs/python/build/Jamfile libs/python/example/do_it_yourself_convts.cpp libs/python/example/dvect.cpp libs/python/example/example1.cpp libs/python/example/getting_started1.cpp libs/python/example/getting_started2.cpp libs/python/example/ivect.cpp libs/python/example/nested.cpp libs/python/example/noncopyable_export.cpp libs/python/example/noncopyable_import.cpp libs/python/example/pickle1.cpp libs/python/example/pickle2.cpp libs/python/example/pickle3.cpp libs/python/example/richcmp1.cpp libs/python/example/richcmp2.cpp libs/python/example/richcmp3.cpp libs/python/example/rwgk1.cpp libs/python/example/simple_vector.cpp libs/python/test/comprehensive.cpp Added Files: libs/python/example/rwgk2.cpp libs/python/example/rwgk3.cpp ---------------------------------------------------------------------- [SVN r11705]
51 lines
1.4 KiB
C++
51 lines
1.4 KiB
C++
#include <iostream>
|
|
#include <string>
|
|
|
|
namespace { // Avoid cluttering the global namespace.
|
|
|
|
// A friendly class.
|
|
class world
|
|
{
|
|
private:
|
|
std::string country;
|
|
public:
|
|
world(const std::string& country) { this->country = country; }
|
|
std::string greet() const { return "Hello from " + country + "!"; }
|
|
};
|
|
|
|
// A function taking a world object as an argument.
|
|
std::string invite(const world& w) {
|
|
return w.greet() + " Please come soon!";
|
|
}
|
|
}
|
|
|
|
#include <py_cpp/class_wrapper.h>
|
|
|
|
// Python requires an exported function called init<module-name> in every
|
|
// extension module. This is where we build the module contents.
|
|
BOOST_PYTHON_MODULE_INIT(example2)
|
|
{
|
|
// Create an object representing this extension module.
|
|
py::Module this_module("example2");
|
|
|
|
// Create the Python type object for our extension class.
|
|
py::ClassWrapper<world> world_class(this_module, "world");
|
|
|
|
// Add the __init__ function.
|
|
world_class.def(py::Constructor<std::string>());
|
|
// Add a regular member function.
|
|
world_class.def(&world::greet, "greet");
|
|
|
|
// Add invite() as a regular function to the module.
|
|
this_module.def(invite, "invite");
|
|
|
|
// Even better, invite() can also be made a member of world_class!!!
|
|
world_class.def(invite, "invite");
|
|
}
|
|
|
|
// Win32 DLL boilerplate
|
|
#if defined(_WIN32)
|
|
#include <windows.h>
|
|
extern "C" BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID) { return 1; }
|
|
#endif // _WIN32
|