.. _program_listing_file_include_cmb_event.h: Program Listing for File cmb_event.h ==================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/cmb_event.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: c /* * Copyright (c) Asbjørn M. Bonvik 1993-1995, 2025-26. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef CIMBA_CMB_EVENT_H #define CIMBA_CMB_EVENT_H #include #include #include #include extern double cmb_time(void); typedef void (cmb_event_func)(void *subject, void *object); extern void cmb_event_queue_initialize(double start_time); extern void cmb_event_queue_terminate(void); extern void cmb_event_queue_clear(void); extern bool cmb_event_queue_is_empty(void); extern uint64_t cmb_event_queue_count(void); extern uint64_t cmb_event_schedule(cmb_event_func *action, void *subject, void *object, double time, int64_t priority); extern bool cmb_event_execute_next(void); extern void cmb_event_queue_execute(void); extern uint64_t cmb_event_current(void); extern bool cmb_event_is_scheduled(uint64_t handle); extern double cmb_event_time(uint64_t handle); extern int64_t cmb_event_priority(uint64_t handle); extern bool cmb_event_cancel(uint64_t handle); extern bool cmb_event_reschedule(uint64_t handle, double time); extern bool cmb_event_reprioritize(uint64_t handle, int64_t priority); #define CMB_ANY_ACTION ((cmb_event_func *)UINT64_C(0xFFFFFFFFFFFFFFFF)) #define CMB_ANY_SUBJECT ((void *)UINT64_C(0xFFFFFFFFFFFFFFFF)) #define CMB_ANY_OBJECT ((void *)UINT64_C(0xFFFFFFFFFFFFFFFF)) extern uint64_t cmb_event_pattern_find(cmb_event_func *action, const void *subject, const void *object); extern uint64_t cmb_event_pattern_count(cmb_event_func *action, const void *subject, const void *object); extern uint64_t cmb_event_pattern_cancel(cmb_event_func *action, const void *subject, const void *object); typedef const char *(cmb_event_print_formatter)(cmb_event_func *a, const void *s, const void *o); extern void cmb_event_queue_print(FILE *fp, cmb_event_print_formatter *epf); #endif /* CIMBA_CMB_EVENT_H */