00001 #pragma once
00002 #ifndef SEAP_COMMAND_H
00003 #define SEAP_COMMAND_H
00004
00005 #include <stdint.h>
00006 #include <stdarg.h>
00007 #include <seap-debug.h>
00008 #include <sexp-types.h>
00009 #include <seap-types.h>
00010
00011 typedef SEXP_t * (*SEAP_cmdfn_t) (SEXP_t *, void *);
00012
00013 typedef uint16_t SEAP_cmdcode_t;
00014 typedef uint16_t SEAP_cmdid_t;
00015 typedef uint8_t SEAP_cmdtype_t;
00016
00017 #define SEAP_CMDTYPE_SYNC 1
00018 #define SEAP_CMDTYPE_ASYNC 2
00019
00020 #define SEAP_CMDREG_LOCAL 0x00000001
00021 #define SEAP_CMDREG_USEARG 0x00000002
00022 #define SEAP_CMDREG_THREAD 0x00000004
00023
00024 int SEAP_cmd_register (SEAP_CTX_t *ctx, SEAP_cmdcode_t code, uint32_t flags, SEAP_cmdfn_t func, ...);
00025 int SEAP_cmd_unregister (SEAP_CTX_t *ctx, SEAP_cmdcode_t code);
00026
00027 SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
00028 int sd,
00029 uint32_t flags,
00030 SEAP_cmdcode_t code,
00031 SEXP_t *args,
00032 SEAP_cmdtype_t type,
00033 SEAP_cmdfn_t func,
00034 void *funcarg);
00035
00036 #endif