DYT/Tool/matlab/include/mclbase.h
2024-11-22 23:19:31 +08:00

182 lines
4.3 KiB
C

/*
* PUBLISHed header for libmclbase, the mclbase library.
*
* Copyright 1984-2016 The MathWorks, Inc.
*/
#if defined(_MSC_VER)
# pragma once
#endif
#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 3))
# pragma once
#endif
#ifndef mclbase_published_api_h
#define mclbase_published_api_h
/* SWIG can't see these definitions, which are stored in package.h, so we
duplicate them here. */
#ifdef _MSC_VER
#define DLL_EXPORT_SYM __declspec(dllexport)
#define DLL_IMPORT_SYM __declspec(dllimport)
#elif __GNUC__ >= 4
#define DLL_EXPORT_SYM __attribute__ ((visibility("default")))
#define DLL_IMPORT_SYM __attribute__ ((visibility("default")))
#else
#define DLL_EXPORT_SYM
#define DLL_IMPORT_SYM
#endif
#ifndef EXTERN_C
# ifdef __cplusplus
# define EXTERN_C extern "C"
# else
# define EXTERN_C extern
# endif
#endif
#ifndef LIBMWMCLBASE_API
# define LIBMWMCLBASE_API DLL_IMPORT_SYM
#endif
#ifndef LIBMWMCLBASE_API_EXTERN_C
# define LIBMWMCLBASE_API_EXTERN_C EXTERN_C LIBMWMCLBASE_API
#endif
LIBMWMCLBASE_API_EXTERN_C void mclSetLastErrIdAndMsg(const char* newid, const char* newmsg);
LIBMWMCLBASE_API_EXTERN_C const char* mclGetLastErrorMessage();
/* Get stack trace string when error happens
*/
LIBMWMCLBASE_API_EXTERN_C int mclGetStackTrace(char*** stack);
/* Free the stack trace string allocated earlier
*/
LIBMWMCLBASE_API_EXTERN_C int mclFreeStackTrace(char*** stack, int nStackDepth);
#include <stdarg.h>
#include <string.h>
#include <wchar.h>
#include "tmwtypes.h"
/* Use cases for mcl runtime libraries.
* Used to configure MVM use.
*/
#define mclUndefined 0
#define mclNoMvm 1
#define mclStandaloneApp 2
#define mclStandaloneContainer 3
#define mclJavaBuilder 4
#define mclMcc 5
#define mclClient 6
#define mclWebAppServer 7
/* C-compatible definition of MVM ID type. */
typedef long MVMID_t;
LIBMWMCLBASE_API_EXTERN_C void mclAcquireMutex(void);
LIBMWMCLBASE_API_EXTERN_C void mclReleaseMutex(void);
LIBMWMCLBASE_API_EXTERN_C bool mclIsMCRInitialized();
LIBMWMCLBASE_API_EXTERN_C bool mclIsJVMEnabled();
LIBMWMCLBASE_API_EXTERN_C const char* mclGetLogFileName();
LIBMWMCLBASE_API_EXTERN_C bool mclIsNoDisplaySet();
LIBMWMCLBASE_API_EXTERN_C bool mclInitializeApplication(const char** options, size_t count);
LIBMWMCLBASE_API_EXTERN_C bool mclTerminateApplication(void);
LIBMWMCLBASE_API_EXTERN_C bool mclIsMcc();
typedef int (*mclOutputHandlerFcn)(const char *s);
#include <string.h>
/* Extract the path from a file name specified by either absolute or
* relative path. For example:
*
* /home/foo/bar.exe -> /home/foo
* ./bar.exe -> <full path to cwd>/bar.exe
* bar.exe -> <empty string>
*
* Returns a pointer to the memory passed in by the caller.
*/
LIBMWMCLBASE_API_EXTERN_C void separatePathName(const char *fullname, char *buf, size_t bufLen);
typedef void* HMCRINSTANCE;
LIBMWMCLBASE_API_EXTERN_C bool mclFreeStrArray(char **array, size_t elements);
#include "matrix.h"
LIBMWMCLBASE_API_EXTERN_C void mclFreeArrayList(int nargs, mxArray** ppxArgs);
LIBMWMCLBASE_API_EXTERN_C mxArray *mclCreateCellArrayFromArrayList(int narray, mxArray *parray[]);
LIBMWMCLBASE_API_EXTERN_C mxArray* mclCreateSharedCopy(mxArray* px);
LIBMWMCLBASE_API_EXTERN_C mxArray* mclCreateEmptyArray(void);
LIBMWMCLBASE_API_EXTERN_C mxArray* mclCreateSimpleFunctionHandle(mxFunctionPtr fcn);
LIBMWMCLBASE_API_EXTERN_C mxArray* mclMxSerialize(mxArray * pa);
LIBMWMCLBASE_API_EXTERN_C mxArray* mclMxDeserialize(const void* ps, size_t len);
LIBMWMCLBASE_API_EXTERN_C void mclSetInterleavedCompatibility(bool bInterleavedCompatibility);
LIBMWMCLBASE_API_EXTERN_C bool mclIsInterleavedCompatibility();
/* Main functions passed to mclRunMain must be of this type. This typedef
* must be placed OUTSIDE of an extern "C" block to ensure that it has the
* right linkage in the automatically generated MCLMCRRT proxy API. See
* mclmcrrt/GenLibProxyAPI.pl for more details.
*/
typedef int (*mclMainFcnType)(int, const char **);
LIBMWMCLBASE_API_EXTERN_C int mclRunMain(mclMainFcnType run_main,
int argc,
const char **argv);
LIBMWMCLBASE_API_EXTERN_C void mclCFRunLoopRun();
LIBMWMCLBASE_API_EXTERN_C void mclCFRunLoopStop();
LIBMWMCLBASE_API_EXTERN_C bool mclIsCFRunLoopReady();
#endif /* mclbase_h */