initial commit
This commit is contained in:
186
tools/vision/LDV/LDG.H
Normal file
186
tools/vision/LDV/LDG.H
Normal file
@@ -0,0 +1,186 @@
|
||||
/*
|
||||
* LDG : Gem Dynamical Libraries
|
||||
* Copyright (c) 1997-2004 Olivier Landemarre, Dominique Bereziat & Arnaud Bercegeay
|
||||
*
|
||||
* Header file of LDG devel library, should be included after the AES header
|
||||
*
|
||||
* Current version is 2.31
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: ldg.h 102 2012-10-04 22:31:16Z vriviere $
|
||||
*/
|
||||
|
||||
#ifndef __LDG__
|
||||
#define __LDG__
|
||||
|
||||
|
||||
#ifdef __PUREC__
|
||||
#define CDECL cdecl
|
||||
#else
|
||||
#include <compiler.h>
|
||||
#define CDECL __CDECL
|
||||
#endif
|
||||
|
||||
#ifdef __GEMLIB__
|
||||
#define ldg_global aes_global
|
||||
#else
|
||||
#ifdef __PUREC__ /* For Pure C users using PCGEMLIB */
|
||||
#define ldg_global _GemParBlk.global
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define LDG_QUIT 0x4C4A /* ldg->client : a lib discharged */
|
||||
#define LDG_LOST_LIB 0x4C4D /* ldg->client : a lib lost */
|
||||
#define LDG_COOKIE 0x4C44474DL /* 'LDGM' */
|
||||
#define PATHLEN 128
|
||||
|
||||
/*
|
||||
* Data structures
|
||||
*/
|
||||
|
||||
typedef struct entrie {
|
||||
char *name; /* Function name */
|
||||
char *info; /* Describe the prototype of the function */
|
||||
void *func; /* Function address */
|
||||
} PROC;
|
||||
|
||||
/*
|
||||
* The LDG-library descriptor (private)
|
||||
*/
|
||||
|
||||
typedef struct ldg {
|
||||
long magic; /* magic number ('LDGM') */
|
||||
short vers; /* library version */
|
||||
short id; /* AES-id of launcher */
|
||||
short num; /* count of avalaible functions */
|
||||
PROC *list; /* pointer to the functions list */
|
||||
char *infos; /* describe the library */
|
||||
void *baspag; /* basepage of library */
|
||||
/* from version 0.99 */
|
||||
unsigned short flags; /* library flags ( shared, resident, locked) */
|
||||
/* from version 0.99c */
|
||||
void (*close)(void); /* fonction launched by ldg_term() */
|
||||
/* from version 1.00 */
|
||||
short vers_ldg; /* LDG-protocol version */
|
||||
char path[PATHLEN]; /* real path of the lib */
|
||||
long user_ext; /* own library extension */
|
||||
long addr_ext; /* for future extension */
|
||||
} LDG;
|
||||
|
||||
/*
|
||||
* The LDG cookie
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
short version; /* The cookie number version */
|
||||
char path[PATHLEN]; /* Path of LDG-libraries */
|
||||
short garbage; /* The garbage collector time */
|
||||
short idle; /* Obsolet : for backward compatibility */
|
||||
|
||||
LDG* CDECL (*ldg_open) ( const char *lib, short *gl);
|
||||
/* Open a library */
|
||||
short CDECL (*ldg_close) ( LDG *ldg, short *gl);
|
||||
/* Close a library */
|
||||
void* CDECL (*ldg_find) ( char *fnc, LDG *ldg);
|
||||
/* Find a function in a library */
|
||||
LDG* CDECL (*ldg_open_ev)( char *lib, short *gl, void (*)(short*));
|
||||
/* Obsolet : for backward compatibility */
|
||||
short error; /* Last error occuring */
|
||||
void CDECL (*ldg_garbage)( short *gl);
|
||||
/* Release unused libs */
|
||||
void CDECL (*ldg_reset)( short *gl);
|
||||
/* Release all libs */
|
||||
void* internal; /* Reserved */
|
||||
short CDECL (*ldg_libpath)( char *, short *global);
|
||||
/* Find the path of a library */
|
||||
} LDG_INFOS;
|
||||
|
||||
/*
|
||||
* This structure is used by ldg_init() to initiate the
|
||||
* the LDG-protocol inside a LDG-library.
|
||||
*/
|
||||
|
||||
typedef struct ldglib {
|
||||
short vers; /* library version */
|
||||
short num; /* count of avalaible functions */
|
||||
PROC *list; /* pointer to the functions list */
|
||||
char *infos; /* description of the lib */
|
||||
unsigned short flags; /* library flags (shared, locked, resident) */
|
||||
void (*close)(void); /* function executed by ldg_term()*/
|
||||
long user_ext; /* own library extension */
|
||||
} LDGLIB;
|
||||
|
||||
/* value of the 'flag' field */
|
||||
#define LDG_NOT_SHARED 0x1 /* the library is unshareable */
|
||||
#define LDG_LOCKED 0x2 /* the library is locked */
|
||||
#define LDG_RESIDENT 0x4 /* the library is memory resident */
|
||||
#define LDG_STDCALL 0x100 /* a2/d2 are not scratch register - private */
|
||||
|
||||
/* Errors returned by ldg_error() */
|
||||
#define LDG_LIB_FULLED -1
|
||||
#define LDG_APP_FULLED -2
|
||||
#define LDG_ERR_EXEC -3
|
||||
#define LDG_BAD_FORMAT -4
|
||||
#define LDG_LIB_LOCKED -6
|
||||
#define LDG_NO_MANAGER -7
|
||||
#define LDG_NOT_FOUND -8
|
||||
#define LDG_BAD_LIB LDG_BAD_FORMAT
|
||||
#define LDG_NO_MEMORY -9
|
||||
#define LDG_TIME_IDLE -10
|
||||
#define LDG_NO_TSR -11
|
||||
#define LDG_BAD_TSR -12
|
||||
#define LDG_NO_FUNC -13
|
||||
|
||||
/* Client functions */
|
||||
LDG* ldg_open ( const char *name, short *gl);
|
||||
short ldg_close ( LDG *lib, short *gl);
|
||||
short ldg_error ( void);
|
||||
void* ldg_find ( char *name, LDG *ldg);
|
||||
short ldg_libpath ( char *path, short *gl);
|
||||
|
||||
/* Server functions */
|
||||
int ldg_init ( LDGLIB *libldg);
|
||||
char *ldg_getpath ( void);
|
||||
|
||||
/* Diverse functions */
|
||||
int ldg_cookie ( long, long *);
|
||||
void ldg_debug ( char *, ...);
|
||||
void* ldg_Malloc ( long size);
|
||||
void* ldg_Calloc ( long count,long size);
|
||||
int ldg_Free ( void *memory);
|
||||
void* ldg_Realloc ( void *oldblk, long oldsize, long newsize);
|
||||
#ifndef __mcoldfire__
|
||||
void ldg_cpush ( void);
|
||||
#endif
|
||||
long CDECL ldg_callback( void *f, ...);
|
||||
|
||||
/* For backward compatibility */
|
||||
#define ldg_exec(a,b) ldg_open( b, ldg_global)
|
||||
#define ldg_exec_evnt(a,b,c) ldg_open( b, ldg_global)
|
||||
#define ldg_term(a,b) ldg_close( b, ldg_global)
|
||||
#define ldg_libexec_evnt(a,b,c) ldg_open( a, b)
|
||||
#define ldg_libexec(a,b) ldg_open( a, b)
|
||||
#define ldg_libterm(a,b) ldg_close( a,b)
|
||||
|
||||
/* C-library version (currently 1.20) */
|
||||
struct _ldg_version {
|
||||
char *name;
|
||||
short num;
|
||||
};
|
||||
|
||||
extern struct _ldg_version ldg_version;
|
||||
|
||||
#endif /* __LDG__ */
|
||||
Reference in New Issue
Block a user