Skip to content

Commit 87cb7cb

Browse files
committed
Add sonyflake_next_py shortcut
1 parent d7a794f commit 87cb7cb

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

src/sonyflake_turbo/sonyflake.c

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,27 @@ PyObject *sonyflake_next_n(struct sonyflake_state *self, Py_ssize_t n, struct so
310310
return out;
311311
}
312312

313+
PyObject *sonyflake_next_py(struct sonyflake_state *self, PyObject *args, struct sonyflake_next_sleep_info *sleep_info) {
314+
Py_ssize_t n = 0;
315+
316+
if (args) {
317+
if (!PyArg_ParseTuple(args, "n", &n)) {
318+
return NULL;
319+
}
320+
321+
if (n <= 0) {
322+
PyErr_SetString(PyExc_ValueError, "n must be positive");
323+
return NULL;
324+
}
325+
}
326+
327+
if (n > 0) {
328+
return sonyflake_next_n(self, n, sleep_info);
329+
}
330+
331+
return sonyflake_next(self, sleep_info);
332+
}
333+
313334
static PyObject *sonyflake_repr(struct sonyflake_state *self) {
314335
PyObject *s, *args_list = PyList_New(self->machine_ids_len + 1);
315336

@@ -363,27 +384,13 @@ static PyObject *sonyflake_repr(struct sonyflake_state *self) {
363384
static PyObject *sonyflake_iternext(struct sonyflake_state *self) {
364385
struct sonyflake_next_sleep_info sleep_info;
365386

366-
PyObject *sonyflake_id = sonyflake_next(self, &sleep_info);
367-
368-
return sonyflake_sleep(sonyflake_id, &sleep_info);
387+
return sonyflake_sleep(sonyflake_next_py(self, NULL, &sleep_info), &sleep_info);
369388
}
370389

371390
static PyObject *sonyflake_call(struct sonyflake_state *self, PyObject *args) {
372-
Py_ssize_t n = 0;
373-
374-
if (!PyArg_ParseTuple(args, "n", &n)) {
375-
return NULL;
376-
}
377-
378-
if (n <= 0) {
379-
PyErr_SetString(PyExc_ValueError, "n must be positive");
380-
return NULL;
381-
}
382-
383391
struct sonyflake_next_sleep_info sleep_info;
384-
PyObject *sonyflake_ids = sonyflake_next_n(self, n, &sleep_info);
385392

386-
return sonyflake_sleep(sonyflake_ids, &sleep_info);
393+
return sonyflake_sleep(sonyflake_next_py(self, args, &sleep_info), &sleep_info);
387394
}
388395

389396
PyDoc_STRVAR(sonyflake_doc,

src/sonyflake_turbo/sonyflake.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,10 @@ static inline void sub_diff(struct timespec *a, const struct timespec *b) {
6868
}
6969
}
7070

71+
static inline double timespec_to_double(const struct timespec *ts) {
72+
return ((double) ts->tv_sec) + ((double) ts->tv_nsec) / 1000000000.0;
73+
}
74+
7175
PyObject *sonyflake_next(struct sonyflake_state *self, struct sonyflake_next_sleep_info *sleep_info);
7276
PyObject *sonyflake_next_n(struct sonyflake_state *self, Py_ssize_t n, struct sonyflake_next_sleep_info *sleep_info);
77+
PyObject *sonyflake_next_py(struct sonyflake_state *self, PyObject *args, struct sonyflake_next_sleep_info *sleep_info);

0 commit comments

Comments
 (0)