Change the type of parameter list.

pull/493/head
KmolYuan 2021-12-11 20:26:36 +08:00
parent b7d192129d
commit 35fed04b63
2 changed files with 7 additions and 9 deletions

View File

@ -11,7 +11,6 @@ email: pyslvs@gmail.com
from libc.stdint cimport uint32_t from libc.stdint cimport uint32_t
from libcpp.vector cimport vector from libcpp.vector cimport vector
from libcpp.map cimport map as cmap
cdef extern from "slvs.h" nogil: cdef extern from "slvs.h" nogil:
@ -239,7 +238,7 @@ cdef class SolverSystem:
cdef Slvs_hGroup g cdef Slvs_hGroup g
cdef Slvs_System sys cdef Slvs_System sys
cdef cmap[Slvs_hParam, Slvs_Param] param_list cdef vector[Slvs_Param] param_list
cdef vector[Slvs_Entity] entity_list cdef vector[Slvs_Entity] entity_list
cdef vector[Slvs_Constraint] cons_list cdef vector[Slvs_Constraint] cons_list
cdef vector[Slvs_hConstraint] failed_list cdef vector[Slvs_hConstraint] failed_list

View File

@ -11,7 +11,6 @@ email: pyslvs@gmail.com
from cpython.mem cimport PyMem_Malloc, PyMem_Free from cpython.mem cimport PyMem_Malloc, PyMem_Free
from cpython.object cimport Py_EQ, Py_NE from cpython.object cimport Py_EQ, Py_NE
from libcpp.pair cimport pair
from collections import Counter from collections import Counter
@ -302,9 +301,9 @@ cdef class SolverSystem:
cdef inline void copy_to_sys(self) nogil: cdef inline void copy_to_sys(self) nogil:
"""Copy data from stack into system.""" """Copy data from stack into system."""
cdef int i = 0 cdef int i = 0
cdef pair[Slvs_hParam, Slvs_Param] param cdef Slvs_Param param
for param in self.param_list: for param in self.param_list:
self.sys.param[i] = param.second self.sys.param[i] = param
i += 1 i += 1
i = 0 i = 0
cdef Slvs_Entity entity cdef Slvs_Entity entity
@ -324,7 +323,7 @@ cdef class SolverSystem:
self.cons_list.clear() self.cons_list.clear()
cdef int i cdef int i
for i in range(self.sys.params): for i in range(self.sys.params):
self.param_list[self.sys.param[i].h] = self.sys.param[i] self.param_list.push_back(self.sys.param[i])
for i in range(self.sys.entities): for i in range(self.sys.entities):
self.entity_list.push_back(self.sys.entity[i]) self.entity_list.push_back(self.sys.entity[i])
for i in range(self.sys.constraints): for i in range(self.sys.constraints):
@ -378,7 +377,7 @@ cdef class SolverSystem:
i = 0 i = 0
cdef Slvs_hParam h cdef Slvs_hParam h
for h in p.param_list: for h in p.param_list:
self.param_list[h].val = params[i] self.param_list[h - 1].val = params[i]
i += 1 i += 1
cpdef tuple params(self, Params p): cpdef tuple params(self, Params p):
@ -389,7 +388,7 @@ cdef class SolverSystem:
param_list = [] param_list = []
cdef Slvs_hParam h cdef Slvs_hParam h
for h in p.param_list: for h in p.param_list:
param_list.append(self.param_list[h].val) param_list.append(self.param_list[h - 1].val)
return tuple(param_list) return tuple(param_list)
cpdef int dof(self): cpdef int dof(self):
@ -465,7 +464,7 @@ cdef class SolverSystem:
cdef inline Slvs_hParam new_param(self, double val) nogil: cdef inline Slvs_hParam new_param(self, double val) nogil:
"""Add a parameter.""" """Add a parameter."""
cdef Slvs_hParam h = <Slvs_hParam>self.param_list.size() + 1 cdef Slvs_hParam h = <Slvs_hParam>self.param_list.size() + 1
self.param_list[h] = Slvs_MakeParam(h, self.g, val) self.param_list.push_back(Slvs_MakeParam(h, self.g, val))
return h return h
cdef inline Slvs_hEntity eh(self) nogil: cdef inline Slvs_hEntity eh(self) nogil: