diff --git a/python/cplumed.pxd b/python/cplumed.pxd index ab4be063531513f7b179664550566329b51f5915..5450a008dbf27d79e80d9271fe37e78261a617d2 100644 --- a/python/cplumed.pxd +++ b/python/cplumed.pxd @@ -22,9 +22,11 @@ # # This create cython wrappers to the main bits of the PLUMED libraray # -cdef extern from "Plumed.h" : - ctypedef struct plumed: - pass - plumed plumed_create() - void plumed_cmd(plumed p, const char*key, const void*val) except + - void plumed_finalize(plumed p) except + + +cdef extern from "Plumed.h" namespace "PLMD": + cdef cppclass Plumed: + Plumed() except + + void cmd(const char*key, const void*val) except + + void cmd(const char*key) except + + + diff --git a/python/plumed.pyx b/python/plumed.pyx index f35d16bddbb4a19301379b8946191c0b5fff64dd..032764a2faab8046a27fe6a644b92a85d1a65731 100644 --- a/python/plumed.pyx +++ b/python/plumed.pyx @@ -29,25 +29,20 @@ import numpy as np cimport numpy as np cdef class Plumed: - cdef cplumed.plumed c_plumed + cdef cplumed.Plumed c_plumed def __cinit__(self): - self.c_plumed = cplumed.plumed_create() #new cplumed.Plumed() cdef int pres = 8 - cplumed.plumed_cmd(self.c_plumed, "setRealPrecision", <void*>&pres ) - def __dealloc__(self): - cplumed.plumed_finalize(self.c_plumed) - + self.c_plumed.cmd( "setRealPrecision", <void*>&pres ) def cmd_ndarray_real(self, ckey, val): cdef double [:] abuffer = val.ravel() - cplumed.plumed_cmd(self.c_plumed, ckey, <void*>&abuffer[0]) + self.c_plumed.cmd( ckey, <void*>&abuffer[0]) def cmd_ndarray_int(self, ckey, val): cdef long [:] abuffer = val.ravel() - cplumed.plumed_cmd(self.c_plumed, ckey, <void*>&abuffer[0]) + self.c_plumed.cmd( ckey, <void*>&abuffer[0]) cdef cmd_float(self, ckey, double val ): - cplumed.plumed_cmd(self.c_plumed, ckey, <void*>&val ) + self.c_plumed.cmd( ckey, <void*>&val ) cdef cmd_int(self, ckey, int val): - cplumed.plumed_cmd(self.c_plumed, ckey, <void*>&val) - + self.c_plumed.cmd( ckey, <void*>&val) def cmd( self, key, val=None ): cdef bytes py_bytes = key.encode() cdef char* ckey = py_bytes @@ -55,7 +50,7 @@ cdef class Plumed: cdef np.int_t[:] ibuffer cdef np.float64_t[:] dbuffer if val is None : - cplumed.plumed_cmd( self.c_plumed, ckey, NULL ) + self.c_plumed.cmd( ckey, NULL ) elif isinstance(val, (int,long) ): if key=="getDataRank" : raise ValueError("when using cmd with getDataRank option value must a size one ndarray") @@ -74,6 +69,6 @@ cdef class Plumed: elif isinstance(val, basestring ) : py_bytes = val.encode() cval = py_bytes - cplumed.plumed_cmd( self.c_plumed, ckey, <void*>cval ) + self.c_plumed.cmd( ckey, <void*>cval ) else : raise ValueError("Unknown value type ({})".format(str(type(val))))