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 <sexp-types.h>
00030 #include <seap-types.h>
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036 typedef SEXP_t * (*SEAP_cmdfn_t) (SEXP_t *, void *);
00037
00038 typedef uint16_t SEAP_cmdcode_t;
00039 typedef uint16_t SEAP_cmdid_t;
00040 typedef uint8_t SEAP_cmdtype_t;
00041
00042 #define SEAP_CMDTYPE_SYNC 1
00043 #define SEAP_CMDTYPE_ASYNC 2
00044
00045 #define SEAP_CMDREG_LOCAL 0x00000001
00046 #define SEAP_CMDREG_USEARG 0x00000002
00047 #define SEAP_CMDREG_THREAD 0x00000004
00048
00049 int SEAP_cmd_register (SEAP_CTX_t *ctx, SEAP_cmdcode_t code, uint32_t flags, SEAP_cmdfn_t func, ...);
00050 int SEAP_cmd_unregister (SEAP_CTX_t *ctx, SEAP_cmdcode_t code);
00051
00052 #define SEAP_EXEC_LOCAL 0x01
00053 #define SEAP_EXEC_LONLY 0x02
00054 #define SEAP_EXEC_GFIRST 0x04
00055 #define SEAP_EXEC_THREAD 0x08
00056 #define SEAP_EXEC_WQUEUE 0x10
00057 #define SEAP_EXEC_RECV 0x20
00058
00059 SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
00060 int sd,
00061 uint32_t flags,
00062 SEAP_cmdcode_t code,
00063 SEXP_t *args,
00064 SEAP_cmdtype_t type,
00065 SEAP_cmdfn_t func,
00066 void *funcarg);
00067
00068 #ifdef __cplusplus
00069 }
00070 #endif
00071
00072 #endif