00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024 #ifndef SEAP_COMMAND_H
00025 #define SEAP_COMMAND_H
00026
00027 #include <stdint.h>
00028 #include <stdarg.h>
00029 #include <seap-debug.h>
00030 #include <sexp-types.h>
00031 #include <seap-types.h>
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00037 typedef SEXP_t * (*SEAP_cmdfn_t) (SEXP_t *, void *);
00038
00039 typedef uint16_t SEAP_cmdcode_t;
00040 typedef uint16_t SEAP_cmdid_t;
00041 typedef uint8_t SEAP_cmdtype_t;
00042
00043 #define SEAP_CMDTYPE_SYNC 1
00044 #define SEAP_CMDTYPE_ASYNC 2
00045
00046 #define SEAP_CMDREG_LOCAL 0x00000001
00047 #define SEAP_CMDREG_USEARG 0x00000002
00048 #define SEAP_CMDREG_THREAD 0x00000004
00049
00050 int SEAP_cmd_register (SEAP_CTX_t *ctx, SEAP_cmdcode_t code, uint32_t flags, SEAP_cmdfn_t func, ...);
00051 int SEAP_cmd_unregister (SEAP_CTX_t *ctx, SEAP_cmdcode_t code);
00052
00053 SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
00054 int sd,
00055 uint32_t flags,
00056 SEAP_cmdcode_t code,
00057 SEXP_t *args,
00058 SEAP_cmdtype_t type,
00059 SEAP_cmdfn_t func,
00060 void *funcarg);
00061
00062 #ifdef __cplusplus
00063 }
00064 #endif
00065
00066 #endif