Skip to content

Commit f09d99f

Browse files
authored
Add type check macros (python#67)
1 parent 99c3bf4 commit f09d99f

File tree

4 files changed

+12
-7
lines changed

4 files changed

+12
-7
lines changed

Include/internal/pycore_interpolation.h

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ extern "C" {
1313

1414
extern PyTypeObject _PyInterpolation_Type;
1515

16+
#define _PyInterpolation_Check(op) PyObject_TypeCheck((op), &_PyInterpolation_Type)
17+
#define _PyInterpolation_CheckExact(op) Py_IS_TYPE((op), &_PyInterpolation_Type)
18+
1619
PyAPI_FUNC(PyObject *) _PyInterpolation_FromStackRefStealOnSuccess(_PyStackRef *values);
1720

1821
extern PyStatus _PyInterpolation_InitTypes(PyInterpreterState *interp);

Include/internal/pycore_template.h

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ extern "C" {
1414
extern PyTypeObject _PyTemplate_Type;
1515
extern PyTypeObject _PyTemplateIter_Type;
1616

17+
#define _PyTemplate_Check(op) PyObject_TypeCheck((op), &_PyTemplate_Type)
18+
#define _PyTemplate_CheckExact(op) Py_IS_TYPE((op), &_PyTemplate_Type)
19+
1720
extern PyObject *_PyTemplate_Concat(PyObject *self, PyObject *other);
1821

1922
PyAPI_FUNC(PyObject *) _PyTemplate_FromValues(PyObject **values, Py_ssize_t n);

Objects/templateobject.c

+5-6
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ template_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
8585
}
8686
last_was_str = 1;
8787
}
88-
else if (PyObject_TypeCheck(item, &_PyInterpolation_Type)) {
88+
else if (_PyInterpolation_Check(item)) {
8989
if (!last_was_str) {
9090
stringslen++;
9191
}
@@ -134,7 +134,7 @@ template_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
134134
}
135135
last_was_str = 1;
136136
}
137-
else if (PyObject_TypeCheck(item, &_PyInterpolation_Type)) {
137+
else if (_PyInterpolation_Check(item)) {
138138
if (!last_was_str) {
139139
PyTuple_SET_ITEM(strings, stringsidx++, &_Py_STR(empty));
140140
}
@@ -397,14 +397,13 @@ template_concat_str_template(templateobject *self, PyObject *other)
397397
PyObject *
398398
_PyTemplate_Concat(PyObject *self, PyObject *other)
399399
{
400-
if (PyObject_TypeCheck(self, &_PyTemplate_Type) &&
401-
PyObject_TypeCheck(other, &_PyTemplate_Type)) {
400+
if (_PyTemplate_Check(self) && _PyTemplate_Check(other)) {
402401
return template_concat_templates((templateobject *) self, (templateobject *) other);
403402
}
404-
else if (PyObject_TypeCheck(self, &_PyTemplate_Type) && PyUnicode_Check(other)) {
403+
else if ((_PyTemplate_Check(self)) && PyUnicode_Check(other)) {
405404
return template_concat_template_str((templateobject *) self, other);
406405
}
407-
else if (PyUnicode_Check(self) && PyObject_TypeCheck(other, &_PyTemplate_Type)) {
406+
else if (PyUnicode_Check(self) && (_PyTemplate_Check(other))) {
408407
return template_concat_str_template((templateobject *) other, self);
409408
}
410409
else {

Objects/unicodeobject.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -11618,7 +11618,7 @@ PyUnicode_Concat(PyObject *left, PyObject *right)
1161811618
return NULL;
1161911619

1162011620
if (!PyUnicode_Check(right)) {
11621-
if (PyObject_TypeCheck(right, &_PyTemplate_Type)) {
11621+
if (_PyTemplate_Check(right)) {
1162211622
// str + tstring is implemented in the tstring type
1162311623
return _PyTemplate_Concat(left, right);
1162411624
}

0 commit comments

Comments
 (0)