bindings/python/rips.cpp
author Dmitriy Morozov <dmitriy@mrzv.org>
Mon, 13 Apr 2009 20:38:46 -0700
branchdev
changeset 127 406c6cc00b9c
parent 126 3c3e77ac43d2
child 128 a5fd0c2a1c88
permissions -rw-r--r--
Changes in Python Bindings: * the exposed C++ simplex has Empty data * Python Simplex constructor with data as well as data-based comparison functions are implemented in pure Python

#include <topology/rips.h>
#include <boost/python.hpp>
#include "python-rips.h"            // defines RipsWithDistances

#include <iostream>

namespace bp = boost::python;

/* Various wrappers for exposing Rips to Python */
// Constructor from distances
boost::shared_ptr<RipsWithDistances>        init_from_distances(bp::object distances)
{ 
    boost::shared_ptr<RipsWithDistances>    p(new RipsWithDistances(distances));
    return p;
}

void export_rips()
{
    bp::class_<RipsWithDistances>("Rips", bp::no_init)
        .def("__init__",            make_constructor(&init_from_distances))
        .def("generate",            &RipsWithDistances::generate)
        .def("generate",            &RipsWithDistances::generate_candidates)
        .def("vertex_cofaces",      &RipsWithDistances::vertex_cofaces)
        .def("vertex_cofaces",      &RipsWithDistances::vertex_cofaces_candidate)
        .def("edge_cofaces",        &RipsWithDistances::edge_cofaces)
        .def("edge_cofaces",        &RipsWithDistances::edge_cofaces_candidates)

        .def("cmp",                 &RipsWithDistances::cmp)
        .def("cmp",                 &RipsWithDistances::cmp_native)
        .def("eval",                &RipsWithDistances::eval)
        .def("eval",                &RipsWithDistances::eval_native)
    ;
}