@@ -47,16 +47,23 @@ cdef Obj make_gap_list(sage_list) except NULL:
47
47
48
48
The list of the elements in ``a`` as a Gap ``Obj``.
49
49
"""
50
- cdef GapElement l = libgap.eval( ' [] ' )
50
+ cdef Obj l
51
51
cdef GapElement elem
52
- for x in sage_list:
53
- if not isinstance (x, GapElement):
54
- elem = < GapElement> libgap(x)
55
- else :
56
- elem = < GapElement> x
52
+ cdef int i
53
+ try :
54
+ GAP_Enter()
55
+ l = GAP_NewPlist(0 )
57
56
58
- AddList(l.value, elem.value)
59
- return l.value
57
+ for i, x in enumerate (sage_list):
58
+ if not isinstance (x, GapElement):
59
+ elem = < GapElement> libgap(x)
60
+ else :
61
+ elem = < GapElement> x
62
+
63
+ GAP_AssList(l, i + 1 , elem.value)
64
+ return l
65
+ finally :
66
+ GAP_Leave()
60
67
61
68
62
69
cdef Obj make_gap_matrix(sage_list, gap_ring) except NULL :
@@ -77,22 +84,30 @@ cdef Obj make_gap_matrix(sage_list, gap_ring) except NULL:
77
84
78
85
The list of the elements in ``sage_list`` as a Gap ``Obj``.
79
86
"""
80
- cdef GapElement l = libgap.eval( ' [] ' )
87
+ cdef Obj l
81
88
cdef GapElement elem
82
89
cdef GapElement one
90
+ cdef int i
83
91
if gap_ring is not None :
84
92
one = < GapElement> gap_ring.One()
85
93
else :
86
94
one = < GapElement> libgap(1 )
87
- for x in sage_list:
88
- if not isinstance (x, GapElement):
89
- elem = < GapElement> libgap(x)
90
- elem = elem * one
91
- else :
92
- elem = < GapElement> x
93
95
94
- AddList(l.value, elem.value)
95
- return l.value
96
+ try :
97
+ GAP_Enter()
98
+ l = GAP_NewPlist(0 )
99
+
100
+ for i, x in enumerate (sage_list):
101
+ if not isinstance (x, GapElement):
102
+ elem = < GapElement> libgap(x)
103
+ elem = elem * one
104
+ else :
105
+ elem = < GapElement> x
106
+
107
+ GAP_AssList(l, i + 1 , elem.value)
108
+ return l
109
+ finally :
110
+ GAP_Leave()
96
111
97
112
98
113
cdef char * capture_stdout(Obj func, Obj obj):
0 commit comments