1+ # ctypes_wrapper.py
12import ctypes
2- import deterministic_gaussian_sampling .type_wrapper .python_variant as python_variant
3+ from typing import TYPE_CHECKING
4+
5+ # avoid importing python_variant at top-level to break circular imports
6+ # (only import it inside functions when needed)
37
48class GslMinimizerResultCTypes (ctypes .Structure ):
59 _fields_ = [
6- ("initalStepSize" , ctypes .c_double ), # initialStepSize
7- ("stepTolerance" , ctypes .c_double ), # stepTolerance
8- ("lastXtolAbs" , ctypes .c_double ), # lastXtolAbs
9- ("lastXtolRel" , ctypes .c_double ), # lastFtolRel
10- ("lastFtolAbs" , ctypes .c_double ), # lastFtolAbs
11- ("lastFtolRel" , ctypes .c_double ), # lastFtolRel
12- ("lastGtol" , ctypes .c_double ), # lastGtol
13- ("xtolAbs" , ctypes .c_double ), # xtolAbs
14- ("xtolRel" , ctypes .c_double ), # xtolRel
15- ("ftolAbs" , ctypes .c_double ), # ftolAbs
16- ("ftolRel" , ctypes .c_double ), # ftolRel
17- ("gtol" , ctypes .c_double ), # gtol
18- ("iterations" , ctypes .c_size_t ), # iterations
19- ("maxIterations" , ctypes .c_size_t ), # maxIterations
20- ("elapsedTimeMicro" , ctypes .c_size_t ), # elapsedTimeMicro
10+ ("initalStepSize" , ctypes .c_double ),
11+ ("stepTolerance" , ctypes .c_double ),
12+ ("lastXtolAbs" , ctypes .c_double ),
13+ ("lastXtolRel" , ctypes .c_double ),
14+ ("lastFtolAbs" , ctypes .c_double ),
15+ ("lastFtolRel" , ctypes .c_double ),
16+ ("lastGtol" , ctypes .c_double ),
17+ ("xtolAbs" , ctypes .c_double ),
18+ ("xtolRel" , ctypes .c_double ),
19+ ("ftolAbs" , ctypes .c_double ),
20+ ("ftolRel" , ctypes .c_double ),
21+ ("gtol" , ctypes .c_double ),
22+ ("iterations" , ctypes .c_size_t ),
23+ ("maxIterations" , ctypes .c_size_t ),
24+ ("elapsedTimeMicro" , ctypes .c_size_t ),
2125 ]
2226
2327 @staticmethod
24- def from_py_type (pyT : python_variant .GslMinimizerResultPy ) -> GslMinimizerResultCTypes :
28+ def from_py_type (pyT : "deterministic_gaussian_sampling.type_wrapper.python_variant.GslMinimizerResultPy" ) -> "GslMinimizerResultCTypes" :
29+ # local import to avoid circular import at module import time
30+ import deterministic_gaussian_sampling .type_wrapper .python_variant as python_variant # noqa: F401
2531 return GslMinimizerResultCTypes (
26- ctypes .c_double (pyT .initalStepSize ), # initialStepSize
27- ctypes .c_double (pyT .stepTolerance ), # stepTolerance
28- ctypes .c_double (pyT .lastXtolAbs ), # lastXtolAbs
29- ctypes .c_double (pyT .lastXtolRel ), # lastFtolRel
30- ctypes .c_double (pyT .lastFtolAbs ), # lastFtolAbs
31- ctypes .c_double (pyT .lastFtolRel ), # lastFtolRel
32- ctypes .c_double (pyT .lastGtol ), # lastGtol
33- ctypes .c_double (pyT .xtolAbs ), # xtolAbs
34- ctypes .c_double (pyT .xtolRel ), # xtolRel
35- ctypes .c_double (pyT .ftolAbs ), # ftolAbs
36- ctypes .c_double (pyT .ftolRel ), # ftolRel
37- ctypes .c_double (pyT .gtol ), # gtol
38- ctypes .c_size_t (pyT .iterations ), # iterations
39- ctypes .c_size_t (pyT .maxIterations ), # maxIterations
40- ctypes .c_size_t (pyT .elapsedTimeMicro ) # elapsedTimeMicro
32+ ctypes .c_double (pyT .initalStepSize ),
33+ ctypes .c_double (pyT .stepTolerance ),
34+ ctypes .c_double (pyT .lastXtolAbs ),
35+ ctypes .c_double (pyT .lastXtolRel ),
36+ ctypes .c_double (pyT .lastFtolAbs ),
37+ ctypes .c_double (pyT .lastFtolRel ),
38+ ctypes .c_double (pyT .lastGtol ),
39+ ctypes .c_double (pyT .xtolAbs ),
40+ ctypes .c_double (pyT .xtolRel ),
41+ ctypes .c_double (pyT .ftolAbs ),
42+ ctypes .c_double (pyT .ftolRel ),
43+ ctypes .c_double (pyT .gtol ),
44+ ctypes .c_size_t (pyT .iterations ),
45+ ctypes .c_size_t (pyT .maxIterations ),
46+ ctypes .c_size_t (pyT .elapsedTimeMicro ),
4147 )
42-
43- def to_py_type (self ) -> python_variant .GslMinimizerResultPy :
48+
49+ def to_py_type (self ):
50+ # local import to avoid circular import at module import time
51+ import deterministic_gaussian_sampling .type_wrapper .python_variant as python_variant
4452 return python_variant .GslMinimizerResultPy (
45- float (self .initalStepSize ), # initialStepSize
46- float (self .stepTolerance ), # stepTolerance
47- float (self .lastXtolAbs ), # lastXtolAbs
48- float (self .lastXtolRel ), # lastFtolRel
49- float (self .lastFtolAbs ), # lastFtolAbs
50- float (self .lastFtolRel ), # lastFtolRel
51- float (self .lastGtol ), # lastGtol
52- float (self .xtolAbs ), # xtolAbs
53- float (self .xtolRel ), # xtolRel
54- float (self .ftolAbs ), # ftolAbs
55- float (self .ftolRel ), # ftolRel
56- float (self .gtol ), # gtol
57- int (self .iterations ), # iterations
58- int (self .maxIterations ), # maxIterations
59- int (self .elapsedTimeMicro ) # elapsedTimeMicro
53+ float (self .initalStepSize ),
54+ float (self .stepTolerance ),
55+ float (self .lastXtolAbs ),
56+ float (self .lastXtolRel ),
57+ float (self .lastFtolAbs ),
58+ float (self .lastFtolRel ),
59+ float (self .lastGtol ),
60+ float (self .xtolAbs ),
61+ float (self .xtolRel ),
62+ float (self .ftolAbs ),
63+ float (self .ftolRel ),
64+ float (self .gtol ),
65+ int (self .iterations ),
66+ int (self .maxIterations ),
67+ int (self .elapsedTimeMicro ),
6068 )
6169
70+
6271class ApproximateOptionsCTypes (ctypes .Structure ):
6372 _fields_ = [
64- ("xtolAbs" , ctypes .c_double ), # xtolAbs
65- ("xtolRel" , ctypes .c_double ), # xtolRel
66- ("ftolAbs" , ctypes .c_double ), # ftolAbs
67- ("ftolRel" , ctypes .c_double ), # ftolRel
68- ("gtol" , ctypes .c_double ), # gtol
69- ("initialX" , ctypes .c_bool ), # intialX
70- ("maxIterations" , ctypes .c_size_t ), # maxIterations
71- ("verbose" , ctypes .c_bool ), # verbose
73+ ("xtolAbs" , ctypes .c_double ),
74+ ("xtolRel" , ctypes .c_double ),
75+ ("ftolAbs" , ctypes .c_double ),
76+ ("ftolRel" , ctypes .c_double ),
77+ ("gtol" , ctypes .c_double ),
78+ ("initialX" , ctypes .c_bool ),
79+ ("maxIterations" , ctypes .c_size_t ),
80+ ("verbose" , ctypes .c_bool ),
7281 ]
7382
7483 @staticmethod
75- def from_py_type (pyT : python_variant .ApproximateOptionsPy ) -> ApproximateOptionsCTypes :
84+ def from_py_type (pyT : "deterministic_gaussian_sampling.type_wrapper.python_variant.ApproximateOptionsPy" ) -> "ApproximateOptionsCTypes" :
85+ # local import
86+ import deterministic_gaussian_sampling .type_wrapper .python_variant as python_variant # noqa: F401
7687 return ApproximateOptionsCTypes (
77- ctypes .c_double (pyT .xtolAbs ), # xtolAbs
78- ctypes .c_double (pyT .xtolRel ), # xtolRel
79- ctypes .c_double (pyT .ftolAbs ), # ftolAbs
80- ctypes .c_double (pyT .ftolRel ), # ftolRel
81- ctypes .c_double (pyT .gtol ), # gtol
82- ctypes .c_bool (pyT .initialX ), # intialX
83- ctypes .c_size_t (pyT .maxIterations ), # maxIteration
84- ctypes .c_bool (pyT .verbose ) # verbose
88+ ctypes .c_double (pyT .xtolAbs ),
89+ ctypes .c_double (pyT .xtolRel ),
90+ ctypes .c_double (pyT .ftolAbs ),
91+ ctypes .c_double (pyT .ftolRel ),
92+ ctypes .c_double (pyT .gtol ),
93+ ctypes .c_bool (pyT .initialX ),
94+ ctypes .c_size_t (pyT .maxIterations ),
95+ ctypes .c_bool (pyT .verbose ),
8596 )
86-
87- def to_py_type (self ) -> python_variant .ApproximateOptionsPy :
97+
98+ def to_py_type (self ):
99+ import deterministic_gaussian_sampling .type_wrapper .python_variant as python_variant
88100 return python_variant .ApproximateOptionsPy (
89- float (self .xtolAbs ), # xtolAbs
90- float (self .xtolRel ), # xtolRel
91- float (self .ftolAbs ), # ftolAbs
92- float (self .ftolRel ), # ftolRel
93- float (self .gtol ), # gtol
94- bool (self .initialX ), # intialX
95- int (self .maxIterations ), # maxIteration
96- bool (self .verbose ) # verbose
101+ float (self .xtolAbs ),
102+ float (self .xtolRel ),
103+ float (self .ftolAbs ),
104+ float (self .ftolRel ),
105+ float (self .gtol ),
106+ bool (self .initialX ),
107+ int (self .maxIterations ),
108+ bool (self .verbose ),
97109 )
98110
111+
99112wXCallbackCTypes = ctypes .CFUNCTYPE (
100- None , # return
101- ctypes .POINTER (ctypes .c_double ), # x
102- ctypes .POINTER (ctypes .c_double ), # res
103- ctypes .c_size_t , # L
104- ctypes .c_size_t # N
113+ None ,
114+ ctypes .POINTER (ctypes .c_double ),
115+ ctypes .POINTER (ctypes .c_double ),
116+ ctypes .c_size_t ,
117+ ctypes .c_size_t ,
105118)
106- wXDCallbackCTypes = wXCallbackCTypes
119+ wXDCallbackCTypes = wXCallbackCTypes
0 commit comments