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 #define SEAP_EXEC_LOCAL 0x01
00054 #define SEAP_EXEC_LONLY 0x02
00055 #define SEAP_EXEC_GFIRST 0x04
00056 #define SEAP_EXEC_THREAD 0x08
00057 #define SEAP_EXEC_WQUEUE 0x10
00058 #define SEAP_EXEC_RECV 0x20
00059
00060 SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
00061 int sd,
00062 uint32_t flags,
00063 SEAP_cmdcode_t code,
00064 SEXP_t *args,
00065 SEAP_cmdtype_t type,
00066 SEAP_cmdfn_t func,
00067 void *funcarg);
00068
00069 #ifdef __cplusplus
00070 }
00071 #endif
00072
00073 #endif