feat(assessment): auto comprehensive assessment - rules engine from college scoring standard, per-semester stats, manual overrides, word export
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#ifndef _Py_HAVE_SLOTS_H
|
||||
#define _Py_HAVE_SLOTS_H
|
||||
|
||||
typedef void (*_Py_funcptr_t)(void);
|
||||
|
||||
struct PySlot {
|
||||
uint16_t sl_id;
|
||||
uint16_t sl_flags;
|
||||
_Py_ANONYMOUS union {
|
||||
uint32_t sl_reserved; // must be 0
|
||||
};
|
||||
_Py_ANONYMOUS union {
|
||||
void *sl_ptr;
|
||||
_Py_funcptr_t sl_func;
|
||||
Py_ssize_t sl_size;
|
||||
int64_t sl_int64;
|
||||
uint64_t sl_uint64;
|
||||
};
|
||||
};
|
||||
|
||||
#define PySlot_OPTIONAL 0x0001
|
||||
#define PySlot_STATIC 0x0002
|
||||
#define PySlot_INTPTR 0x0004
|
||||
|
||||
#define Py_slot_invalid 0xffff
|
||||
|
||||
#define PySlot_DATA(NAME, VALUE) \
|
||||
{.sl_id=(NAME), .sl_flags=PySlot_INTPTR, .sl_ptr=(void*)(VALUE)}
|
||||
|
||||
#define PySlot_FUNC(NAME, VALUE) \
|
||||
{.sl_id=(NAME), .sl_func=(_Py_funcptr_t)(VALUE)}
|
||||
|
||||
#define PySlot_SIZE(NAME, VALUE) \
|
||||
{.sl_id=(NAME), .sl_size=(Py_ssize_t)(VALUE)}
|
||||
|
||||
#define PySlot_INT64(NAME, VALUE) \
|
||||
{.sl_id=(NAME), .sl_int64=(int64_t)(VALUE)}
|
||||
|
||||
#define PySlot_UINT64(NAME, VALUE) \
|
||||
{.sl_id=(NAME), .sl_uint64=(uint64_t)(VALUE)}
|
||||
|
||||
#define PySlot_STATIC_DATA(NAME, VALUE) \
|
||||
{.sl_id=(NAME), .sl_flags=PySlot_STATIC, .sl_ptr=(VALUE)}
|
||||
|
||||
#define PySlot_END {0}
|
||||
|
||||
|
||||
// Macros without designated initializers (for C++11 and below):
|
||||
|
||||
#define PySlot_PTR(NAME, VALUE) \
|
||||
{(NAME), PySlot_INTPTR, {0}, {(void*)(VALUE)}}
|
||||
|
||||
#define PySlot_PTR_STATIC(NAME, VALUE) \
|
||||
{(NAME), PySlot_INTPTR | PySlot_STATIC, {0}, {(void*)(VALUE)}}
|
||||
|
||||
#endif // _Py_HAVE_SLOTS_H
|
||||
Reference in New Issue
Block a user