Program Listing for File CPDJE_Judge.h
↰ Return to documentation for file (include\judge\CPDJE_Judge.h)
#pragma once
#include "CPDJE_Input.h"
#include "CPDJE_interface.h"
#include "PDJE_EXPORT_SETTER.hpp"
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct PDJE_JudgeHandleV1 PDJE_JudgeHandleV1;
typedef enum PDJE_JudgeResultV1 {
PDJE_JUDGE_RESULT_OK_V1 = 0,
PDJE_JUDGE_RESULT_INVALID_ARGUMENT_V1 = 1,
PDJE_JUDGE_RESULT_INVALID_STATE_V1 = 2,
PDJE_JUDGE_RESULT_OUT_OF_RANGE_V1 = 3,
PDJE_JUDGE_RESULT_INTERNAL_ERROR_V1 = 4
} PDJE_JudgeResultV1;
typedef enum PDJE_JudgeStartStatusV1 {
PDJE_JUDGE_START_STATUS_OK_V1 = 0,
PDJE_JUDGE_START_STATUS_CORE_LINE_MISSING_V1 = 1,
PDJE_JUDGE_START_STATUS_INPUT_LINE_MISSING_V1 = 2,
PDJE_JUDGE_START_STATUS_EVENT_RULE_EMPTY_V1 = 3,
PDJE_JUDGE_START_STATUS_INPUT_RULE_EMPTY_V1 = 4,
PDJE_JUDGE_START_STATUS_NOTE_OBJECT_MISSING_V1 = 5
} PDJE_JudgeStartStatusV1;
typedef struct PDJE_JudgeStringViewV1 {
const char *data;
size_t size;
} PDJE_JudgeStringViewV1;
typedef struct PDJE_JudgeUsedEventV1 {
uint64_t rail_id;
int pressed;
int is_late;
uint64_t diff_microsecond;
} PDJE_JudgeUsedEventV1;
typedef struct PDJE_JudgeMissedNoteV1 {
uint64_t rail_id;
PDJE_JudgeStringViewV1 type;
uint16_t detail;
PDJE_JudgeStringViewV1 first;
PDJE_JudgeStringViewV1 second;
PDJE_JudgeStringViewV1 third;
uint64_t microsecond;
int used;
int is_down;
} PDJE_JudgeMissedNoteV1;
typedef void(PDJE_CALL *PDJE_JudgeUsedCallbackV1)(
const PDJE_JudgeUsedEventV1 *event,
void *user_data);
typedef void(PDJE_CALL *PDJE_JudgeMissedCallbackV1)(
const PDJE_JudgeMissedNoteV1 *notes,
size_t note_count,
void *user_data);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_create_v1(PDJE_JudgeHandleV1 **out_judge);
PDJE_API void PDJE_CALL
pdje_judge_destroy_v1(PDJE_JudgeHandleV1 *judge);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_attach_engine_v1(PDJE_JudgeHandleV1 *judge,
PDJE_EngineHandleV1 *engine);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_attach_input_v1(PDJE_JudgeHandleV1 *judge, PDJE_InputHandleV1 *input);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_set_event_rule_v1(PDJE_JudgeHandleV1 *judge,
uint64_t miss_range_microsecond,
uint64_t use_range_microsecond);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_add_input_rail_v1(PDJE_JudgeHandleV1 *judge,
const PDJE_InputDeviceListHandleV1 *devices,
size_t device_index,
uint16_t device_key_mask,
int64_t offset_microsecond,
uint64_t match_rail);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_add_midi_rail_v1(PDJE_JudgeHandleV1 *judge,
const PDJE_MidiDeviceListHandleV1 *midi_devices,
size_t midi_index,
uint64_t match_rail,
uint8_t type,
uint8_t channel,
uint8_t position,
int64_t offset_microsecond);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_add_note_object_v1(PDJE_JudgeHandleV1 *judge,
const char *note_type,
uint16_t note_detail,
const char *first_arg,
const char *second_arg,
const char *third_arg,
uint64_t y_axis,
uint64_t y_axis_2,
uint64_t rail_id);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_set_used_callback_v1(PDJE_JudgeHandleV1 *judge,
PDJE_JudgeUsedCallbackV1 callback,
void *user_data);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_set_missed_callback_v1(PDJE_JudgeHandleV1 *judge,
PDJE_JudgeMissedCallbackV1 callback,
void *user_data);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_set_callback_intervals_v1(
PDJE_JudgeHandleV1 *judge,
uint64_t used_event_sleep_millisecond,
uint64_t missed_event_sleep_millisecond);
PDJE_API PDJE_JudgeResultV1 PDJE_CALL
pdje_judge_start_v1(PDJE_JudgeHandleV1 *judge,
PDJE_JudgeStartStatusV1 *out_status);
PDJE_API void PDJE_CALL
pdje_judge_end_v1(PDJE_JudgeHandleV1 *judge);
#ifdef __cplusplus
}
#endif