use byref() instead of pointer() to pass pointers to ctypes objects to C

This commit is contained in:
Axel Kohlmeyer
2025-02-03 22:18:17 -05:00
parent 87dae19019
commit a01ac8c907

View File

@ -20,7 +20,7 @@ import os
import sys import sys
from ctypes import CDLL, POINTER, RTLD_GLOBAL, CFUNCTYPE, py_object, byref, cast, sizeof, \ from ctypes import CDLL, POINTER, RTLD_GLOBAL, CFUNCTYPE, py_object, byref, cast, sizeof, \
create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, c_char, \ create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, c_char, \
pythonapi, pointer pythonapi
from os.path import dirname, abspath, join from os.path import dirname, abspath, join
from inspect import getsourcefile from inspect import getsourcefile
@ -897,9 +897,8 @@ class lammps(object):
box_change = c_int() box_change = c_int()
with ExceptionCheck(self): with ExceptionCheck(self):
self.lib.lammps_extract_box(self.lmp,boxlo,boxhi, self.lib.lammps_extract_box(self.lmp, boxlo, boxhi, byref(xy), byref(yz), byref(xz),
byref(xy),byref(yz),byref(xz), periodicity, byref(box_change))
periodicity,byref(box_change))
boxlo = boxlo[:3] boxlo = boxlo[:3]
boxhi = boxhi[:3] boxhi = boxhi[:3]
@ -1235,7 +1234,7 @@ class lammps(object):
""" """
tag = self.c_tagint(id) tag = self.c_tagint(id)
return self.lib.lammps_map_atom(self.lmp, pointer(tag)) return self.lib.lammps_map_atom(self.lmp, byref(tag))
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# extract per-atom info datatype # extract per-atom info datatype
@ -1607,14 +1606,14 @@ class lammps(object):
def addstep_compute(self, nextstep): def addstep_compute(self, nextstep):
with ExceptionCheck(self): with ExceptionCheck(self):
nextstep = self.c_bigint(nextstep) nextstep = self.c_bigint(nextstep)
return self.lib.lammps_addstep_compute(self.lmp, POINTER(nextstep)) return self.lib.lammps_addstep_compute(self.lmp, byref(nextstep))
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
def addstep_compute_all(self, nextstep): def addstep_compute_all(self, nextstep):
with ExceptionCheck(self): with ExceptionCheck(self):
nextstep = self.c_bigint(nextstep) nextstep = self.c_bigint(nextstep)
return self.lib.lammps_addstep_compute_all(self.lmp, POINTER(nextstep)) return self.lib.lammps_addstep_compute_all(self.lmp, byref(nextstep))
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
@ -2004,7 +2003,7 @@ class lammps(object):
""" """
flags = (c_int*3)() flags = (c_int*3)()
self.lib.lammps_decode_image_flags(image,byref(flags)) self.lib.lammps_decode_image_flags(image, byref(flags))
return [int(i) for i in flags] return [int(i) for i in flags]
@ -2699,7 +2698,8 @@ class lammps(object):
c_iatom = c_int() c_iatom = c_int()
c_numneigh = c_int() c_numneigh = c_int()
c_neighbors = POINTER(c_int)() c_neighbors = POINTER(c_int)()
self.lib.lammps_neighlist_element_neighbors(self.lmp, idx, element, byref(c_iatom), byref(c_numneigh), byref(c_neighbors)) self.lib.lammps_neighlist_element_neighbors(self.lmp, idx, element, byref(c_iatom),
byref(c_numneigh), byref(c_neighbors))
return c_iatom.value, c_numneigh.value, c_neighbors return c_iatom.value, c_numneigh.value, c_neighbors
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------