Nuitka
The Python compiler
Loading...
Searching...
No Matches
operations_binary_mult.h
1// Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
3/* WARNING, this code is GENERATED. Modify the template HelperOperationBinary.c.j2 instead! */
4
5/* This file is included from another C file, help IDEs to still parse it on its own. */
6#ifdef __IDE_ONLY__
7#include "nuitka/prelude.h"
8#endif
9
10/* C helpers for type specialized "*" (MULT) operations */
11
12#if PYTHON_VERSION < 0x300
13/* Code referring to "INT" corresponds to Python2 'int' and "INT" to Python2 'int'. */
14extern PyObject *BINARY_OPERATION_MULT_OBJECT_INT_INT(PyObject *operand1, PyObject *operand2);
15#endif
16
17#if PYTHON_VERSION < 0x300
18/* Code referring to "OBJECT" corresponds to any Python object and "INT" to Python2 'int'. */
19extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operand2);
20#endif
21
22#if PYTHON_VERSION < 0x300
23/* Code referring to "INT" corresponds to Python2 'int' and "OBJECT" to any Python object. */
24extern PyObject *BINARY_OPERATION_MULT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operand2);
25#endif
26
27#if PYTHON_VERSION < 0x300
28/* Code referring to "INT" corresponds to Python2 'int' and "INT" to Python2 'int'. */
29extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_INT_INT(PyObject *operand1, PyObject *operand2);
30#endif
31
32#if PYTHON_VERSION < 0x300
33/* Code referring to "OBJECT" corresponds to any Python object and "INT" to Python2 'int'. */
34extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *operand2);
35#endif
36
37#if PYTHON_VERSION < 0x300
38/* Code referring to "INT" corresponds to Python2 'int' and "OBJECT" to any Python object. */
39extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *operand2);
40#endif
41
42/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "LONG" to Python2 'long', Python3 'int'. */
43extern PyObject *BINARY_OPERATION_MULT_OBJECT_LONG_LONG(PyObject *operand1, PyObject *operand2);
44
45/* Code referring to "OBJECT" corresponds to any Python object and "LONG" to Python2 'long', Python3 'int'. */
46extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *operand2);
47
48/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "OBJECT" to any Python object. */
49extern PyObject *BINARY_OPERATION_MULT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *operand2);
50
51/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "LONG" to Python2 'long', Python3 'int'. */
52extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_LONG_LONG(PyObject *operand1, PyObject *operand2);
53
54/* Code referring to "OBJECT" corresponds to any Python object and "LONG" to Python2 'long', Python3 'int'. */
55extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *operand2);
56
57/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "OBJECT" to any Python object. */
58extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *operand2);
59
60/* Code referring to "FLOAT" corresponds to Python 'float' and "FLOAT" to Python 'float'. */
61extern PyObject *BINARY_OPERATION_MULT_OBJECT_FLOAT_FLOAT(PyObject *operand1, PyObject *operand2);
62
63/* Code referring to "OBJECT" corresponds to any Python object and "FLOAT" to Python 'float'. */
64extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *operand2);
65
66/* Code referring to "FLOAT" corresponds to Python 'float' and "OBJECT" to any Python object. */
67extern PyObject *BINARY_OPERATION_MULT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *operand2);
68
69/* Code referring to "FLOAT" corresponds to Python 'float' and "FLOAT" to Python 'float'. */
70extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_FLOAT_FLOAT(PyObject *operand1, PyObject *operand2);
71
72/* Code referring to "OBJECT" corresponds to any Python object and "FLOAT" to Python 'float'. */
73extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *operand2);
74
75/* Code referring to "FLOAT" corresponds to Python 'float' and "OBJECT" to any Python object. */
76extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *operand2);
77
78/* Code referring to "FLOAT" corresponds to Python 'float' and "LONG" to Python2 'long', Python3 'int'. */
79extern PyObject *BINARY_OPERATION_MULT_OBJECT_FLOAT_LONG(PyObject *operand1, PyObject *operand2);
80
81/* Code referring to "FLOAT" corresponds to Python 'float' and "LONG" to Python2 'long', Python3 'int'. */
82extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_FLOAT_LONG(PyObject *operand1, PyObject *operand2);
83
84#if PYTHON_VERSION < 0x300
85/* Code referring to "FLOAT" corresponds to Python 'float' and "INT" to Python2 'int'. */
86extern PyObject *BINARY_OPERATION_MULT_OBJECT_FLOAT_INT(PyObject *operand1, PyObject *operand2);
87#endif
88
89#if PYTHON_VERSION < 0x300
90/* Code referring to "FLOAT" corresponds to Python 'float' and "INT" to Python2 'int'. */
91extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_FLOAT_INT(PyObject *operand1, PyObject *operand2);
92#endif
93
94#if PYTHON_VERSION < 0x300
95/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "INT" to Python2 'int'. */
96extern PyObject *BINARY_OPERATION_MULT_OBJECT_LONG_INT(PyObject *operand1, PyObject *operand2);
97#endif
98
99#if PYTHON_VERSION < 0x300
100/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "INT" to Python2 'int'. */
101extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_LONG_INT(PyObject *operand1, PyObject *operand2);
102#endif
103
104#if PYTHON_VERSION < 0x300
105/* Code referring to "INT" corresponds to Python2 'int' and "CLONG" to C platform long value. */
106extern PyObject *BINARY_OPERATION_MULT_OBJECT_INT_CLONG(PyObject *operand1, long operand2);
107#endif
108
109#if PYTHON_VERSION < 0x300
110/* Code referring to "INT" corresponds to Python2 'int' and "CLONG" to C platform long value. */
111extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_INT_CLONG(PyObject *operand1, long operand2);
112#endif
113
114/* Code referring to "FLOAT" corresponds to Python 'float' and "CFLOAT" to C platform float value. */
115extern PyObject *BINARY_OPERATION_MULT_OBJECT_FLOAT_CFLOAT(PyObject *operand1, double operand2);
116
117/* Code referring to "FLOAT" corresponds to Python 'float' and "CFLOAT" to C platform float value. */
118extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_FLOAT_CFLOAT(PyObject *operand1, double operand2);
119
120#if PYTHON_VERSION < 0x300
121/* Code referring to "STR" corresponds to Python2 'str' and "INT" to Python2 'int'. */
122extern PyObject *BINARY_OPERATION_MULT_OBJECT_STR_INT(PyObject *operand1, PyObject *operand2);
123#endif
124
125#if PYTHON_VERSION < 0x300
126/* Code referring to "INT" corresponds to Python2 'int' and "STR" to Python2 'str'. */
127extern PyObject *BINARY_OPERATION_MULT_OBJECT_INT_STR(PyObject *operand1, PyObject *operand2);
128#endif
129
130#if PYTHON_VERSION < 0x300
131/* Code referring to "UNICODE" corresponds to Python2 'unicode', Python3 'str' and "INT" to Python2 'int'. */
132extern PyObject *BINARY_OPERATION_MULT_OBJECT_UNICODE_INT(PyObject *operand1, PyObject *operand2);
133#endif
134
135#if PYTHON_VERSION < 0x300
136/* Code referring to "INT" corresponds to Python2 'int' and "UNICODE" to Python2 'unicode', Python3 'str'. */
137extern PyObject *BINARY_OPERATION_MULT_OBJECT_INT_UNICODE(PyObject *operand1, PyObject *operand2);
138#endif
139
140#if PYTHON_VERSION < 0x300
141/* Code referring to "TUPLE" corresponds to Python 'tuple' and "INT" to Python2 'int'. */
142extern PyObject *BINARY_OPERATION_MULT_OBJECT_TUPLE_INT(PyObject *operand1, PyObject *operand2);
143#endif
144
145#if PYTHON_VERSION < 0x300
146/* Code referring to "INT" corresponds to Python2 'int' and "TUPLE" to Python 'tuple'. */
147extern PyObject *BINARY_OPERATION_MULT_OBJECT_INT_TUPLE(PyObject *operand1, PyObject *operand2);
148#endif
149
150#if PYTHON_VERSION < 0x300
151/* Code referring to "LIST" corresponds to Python 'list' and "INT" to Python2 'int'. */
152extern PyObject *BINARY_OPERATION_MULT_OBJECT_LIST_INT(PyObject *operand1, PyObject *operand2);
153#endif
154
155#if PYTHON_VERSION < 0x300
156/* Code referring to "INT" corresponds to Python2 'int' and "LIST" to Python 'list'. */
157extern PyObject *BINARY_OPERATION_MULT_OBJECT_INT_LIST(PyObject *operand1, PyObject *operand2);
158#endif
159
160/* Code referring to "UNICODE" corresponds to Python2 'unicode', Python3 'str' and "LONG" to Python2 'long', Python3
161 * 'int'. */
162extern PyObject *BINARY_OPERATION_MULT_OBJECT_UNICODE_LONG(PyObject *operand1, PyObject *operand2);
163
164/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "UNICODE" to Python2 'unicode', Python3
165 * 'str'. */
166extern PyObject *BINARY_OPERATION_MULT_OBJECT_LONG_UNICODE(PyObject *operand1, PyObject *operand2);
167
168#if PYTHON_VERSION >= 0x300
169/* Code referring to "BYTES" corresponds to Python3 'bytes' and "LONG" to Python2 'long', Python3 'int'. */
170extern PyObject *BINARY_OPERATION_MULT_OBJECT_BYTES_LONG(PyObject *operand1, PyObject *operand2);
171#endif
172
173#if PYTHON_VERSION >= 0x300
174/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "BYTES" to Python3 'bytes'. */
175extern PyObject *BINARY_OPERATION_MULT_OBJECT_LONG_BYTES(PyObject *operand1, PyObject *operand2);
176#endif
177
178/* Code referring to "TUPLE" corresponds to Python 'tuple' and "LONG" to Python2 'long', Python3 'int'. */
179extern PyObject *BINARY_OPERATION_MULT_OBJECT_TUPLE_LONG(PyObject *operand1, PyObject *operand2);
180
181/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "TUPLE" to Python 'tuple'. */
182extern PyObject *BINARY_OPERATION_MULT_OBJECT_LONG_TUPLE(PyObject *operand1, PyObject *operand2);
183
184/* Code referring to "LIST" corresponds to Python 'list' and "LONG" to Python2 'long', Python3 'int'. */
185extern PyObject *BINARY_OPERATION_MULT_OBJECT_LIST_LONG(PyObject *operand1, PyObject *operand2);
186
187/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "LIST" to Python 'list'. */
188extern PyObject *BINARY_OPERATION_MULT_OBJECT_LONG_LIST(PyObject *operand1, PyObject *operand2);
189
190#if PYTHON_VERSION < 0x300
191/* Code referring to "OBJECT" corresponds to any Python object and "STR" to Python2 'str'. */
192extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operand2);
193#endif
194
195#if PYTHON_VERSION < 0x300
196/* Code referring to "STR" corresponds to Python2 'str' and "OBJECT" to any Python object. */
197extern PyObject *BINARY_OPERATION_MULT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operand2);
198#endif
199
200/* Code referring to "OBJECT" corresponds to any Python object and "UNICODE" to Python2 'unicode', Python3 'str'. */
201extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *operand2);
202
203/* Code referring to "UNICODE" corresponds to Python2 'unicode', Python3 'str' and "OBJECT" to any Python object. */
204extern PyObject *BINARY_OPERATION_MULT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *operand2);
205
206#if PYTHON_VERSION >= 0x300
207/* Code referring to "OBJECT" corresponds to any Python object and "BYTES" to Python3 'bytes'. */
208extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *operand2);
209#endif
210
211#if PYTHON_VERSION >= 0x300
212/* Code referring to "BYTES" corresponds to Python3 'bytes' and "OBJECT" to any Python object. */
213extern PyObject *BINARY_OPERATION_MULT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *operand2);
214#endif
215
216/* Code referring to "OBJECT" corresponds to any Python object and "TUPLE" to Python 'tuple'. */
217extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *operand2);
218
219/* Code referring to "TUPLE" corresponds to Python 'tuple' and "OBJECT" to any Python object. */
220extern PyObject *BINARY_OPERATION_MULT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *operand2);
221
222/* Code referring to "OBJECT" corresponds to any Python object and "LIST" to Python 'list'. */
223extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *operand2);
224
225/* Code referring to "LIST" corresponds to Python 'list' and "OBJECT" to any Python object. */
226extern PyObject *BINARY_OPERATION_MULT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *operand2);
227
228/* Code referring to "OBJECT" corresponds to any Python object and "OBJECT" to any Python object. */
229extern PyObject *BINARY_OPERATION_MULT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *operand2);
230
231/* Code referring to "OBJECT" corresponds to any Python object and "OBJECT" to any Python object. */
232extern nuitka_bool BINARY_OPERATION_MULT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *operand2);
233
234// Part of "Nuitka", an optimizing Python compiler that is compatible and
235// integrates with CPython, but also works on its own.
236//
237// Licensed under the Apache License, Version 2.0 (the "License");
238// you may not use this file except in compliance with the License.
239// You may obtain a copy of the License at
240//
241// http://www.apache.org/licenses/LICENSE-2.0
242//
243// Unless required by applicable law or agreed to in writing, software
244// distributed under the License is distributed on an "AS IS" BASIS,
245// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
246// See the License for the specific language governing permissions and
247// limitations under the License.