Re: [Python-Dev] Using argument clinic to replace timemodule.c:parse_time_t_args()
Yes, I meant in the definition of the convertor class. You can fix c_default in converter_init. On Jan 21, 2014 7:19 PM, Nikolaus Rath <Nikolaus@rath.org> wrote:
Larry Hastings <larry@hastings.org> writes:
A comment on your approach so far: I'm very much against giving "default" a default value in the constructor.
You mean in the definition of the custom converter class?
I realize that hack saves you having to say "= NULL" in a lot of places. But explicit is better than implicit, and we're going to read these signatures a lot more often than we write them, and I want Clinic signatures to be easy to read at first glance. [....] All is not lost! What follows is rough pseudo-C code, hopefully you can take it from here.
typedef struct { int set; time_t when; } clinic_time_t; #define DEFAULT_CLINIC_TIME_T {0, 0}
[...]
/*[python input] class clinic_time_t_converter(CConverter): type = 'clinic_time_t' converter = 'parse_clinic_time_t' c_default = 'DEFAULT_CLINIC_TIME_T' [python start generated code]*/ /*[python end generated code: checksum=...]*/
Now you can use clinic_time_t. Parameters declared clinic_time_t can be required, or they can be optional; if they're optional give them a default value of None.
That doesn't work. If the default value is declared for the function rather than in the converter definition, it overwrites the C default:
/*[clinic input] time.gmtime
seconds: clinic_time_t=None / */
gives:
static PyObject * time_gmtime(PyModuleDef *module, PyObject *args) { PyObject *return_value = NULL; clinic_time_t seconds = Py_None;
if (!PyArg_ParseTuple(args, "|O&:gmtime", parse_clinic_time_t, &seconds)) goto exit; return_value = time_gmtime_impl(module, seconds);
so the default for seconds is now Py_None instead of DEFAULT_CLINIC_TIME_T'.
Best, Nikolaus
-- Encrypted emails preferred. PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C
»Time flies like an arrow, fruit flies like a Banana.« _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/larry%40hastings.org
participants (1)
-
Larry Hastings