EnglishРусский  

   ..

   gentee.c

   gentee.h

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

  1 /******************************************************************************
  2 *
  3 * Copyright (C) 2006, The Gentee Group. All rights reserved. 
  4 * This file is part of the Gentee open source project - http://www.gentee.com. 
  5 * 
  6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT"). 
  7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS 
  8 * ACCEPTANCE OF THE AGREEMENT.
  9 *
 10 * Author: Alexey Krivonogov (gentee)
 11 *
 12 ******************************************************************************/
 13 
 14 #ifndef _GENTEE_
 15 #define _GENTEE_
 16 
 17    #ifdef __cplusplus               
 18       extern "C" {                 
 19    #endif // __cplusplus      
 20 
 21 //--------------------------------------------------------------------------
 22 
 23 #include "../common/str.h"
 24 #include "../vm/vm.h"
 25 #include "../compiler/compile.h"
 26 
 27 /*-----------------------------------------------------------------------------
 28 * Id: setpars D
 29 * 
 30 * Summary: States for gentee_set function.
 31 *
 32 -----------------------------------------------------------------------------*/
 33 
 34 #define GSET_TEMPDIR  0x0001  // Specify the custom temporary directory
 35 #define GSET_PRINT    0x0002  // Specify the custom print function
 36 #define GSET_MESSAGE  0x0003  // Specify the custom message function
 37 #define GSET_EXPORT   0x0004  // Specify the custom export function
 38 #define GSET_ARGS     0x0005  // Specify the command-line arguments
 39 #define GSET_FLAG     0x0006  // Specify flags 
 40 #define GSET_DEBUG    0x0007  // Specify the custom debug function
 41 #define GSET_GETCH    0x0008  // Specify the custom getch function
 42 
 43 /*-----------------------------------------------------------------------------
 44 * Id: ptrpars D
 45 * 
 46 * Summary: States for gentee_ptr function.
 47 *
 48 -----------------------------------------------------------------------------*/
 49 
 50 #define GPTR_GENTEE   0x0001  // Pointer to gentee structure. See $[tgentee].
 51 #define GPTR_VM       0x0002  // Pointer to vm structure
 52 #define GPTR_COMPILE  0x0003  // Pointer to compile structure
 53 #define GPTR_CALL     0x0004  // Pointer to gentee_call function
 54 
 55 /*-----------------------------------------------------------------------------
 56 * Id: geloadflag D
 57 * 
 58 * Summary: Flags for gentee_load function.
 59 *
 60 -----------------------------------------------------------------------------*/
 61 
 62 #define GLOAD_ARGS    0x0001  // Get command line arguments
 63 #define GLOAD_FILE    0x0002  // Read file to load the bytecode. The bytecode /
 64                               // is name of the loading file
 65 #define GLOAD_RUN     0x0004  // Load #lgt(entry) functions and run #lgt(main) /
 66                               // function.
 67 
 68 /*-----------------------------------------------------------------------------
 69 * Id: initflags D
 70 * 
 71 * Summary: Flags for gentee_init and gentee.flags structure.
 72 *
 73 -----------------------------------------------------------------------------*/
 74 
 75 #define G_CONSOLE  0x0001   // Console application.
 76 #define G_SILENT   0x0002   // Don't display any service messages.
 77 #define G_CHARPRN  0x0004   // Print Windows characters.
 78 #define G_ASM      0x0008   // Run-time converting a bytecode to assembler.
 79 #define G_TMPRAND  0x0010   // Random name of t temporary directory.
 80 
 81 /*-----------------------------------------------------------------------------
 82 * Id: getidflag D
 83 * 
 84 * Summary: Flags for gentee_getid
 85 *  
 86 -----------------------------------------------------------------------------*/
 87 
 88 #define GID_ANYOBJ  0x01000000   // Find any object
 89 
 90 /*-----------------------------------------------------------------------------
 91 *
 92 * ID: functype 25.10.06 0.0.A.
 93 * 
 94 * Summary: The function types
 95 *  
 96 -----------------------------------------------------------------------------*/
 97 
 98 typedef uint  (STDCALL* messagefunc)( pmsginfo );
 99 typedef void  (STDCALL* printfunc)( pubyte, uint );
100 typedef uint  (STDCALL* getchfunc)( pubyte, uint );
101 typedef void* (STDCALL* exportfunc)( pubyte );
102 typedef void  (STDCALL* debugfunc)( pstackpos );
103 
104 /*-----------------------------------------------------------------------------
105 ** Id: tgentee T gentee
106 * 
107 * Summary: The main structure of gentee engine.
108 *
109 -----------------------------------------------------------------------------*/
110 
111 typedef struct {
112    uint         flags;      // Flags. $$[initflags]
113    uint         multib;     // 1 if the current page is two-bytes code page
114    uint         tempid;     // The indetifier of the temporary directory.
115    str          tempdir;    // The temporary directory
116    uint         tempfile;   // The handle of the file for locking tempdir
117    printfunc    print;      // The custom print function
118    getchfunc    getch;      // The custom getch and scan function
119    messagefunc  message;    // The custom message function
120    exportfunc   export;     // The custom export function 
121    debugfunc    debug;      // The custom debug function
122    pubyte       args;       // Command -line arguments. arg1 0 arg2 00
123 } gentee, *pgentee;
124 
125 //--------------------------------------------------------------------------
126 
127 extern gentee    _gentee;
128 extern pcompile  _compile;    // The pointer to compile structure
129 
130 //--------------------------------------------------------------------------
131 #ifdef BUILD_DLLRT
132   #undef DLL_EXPORT
133   #define DLL_EXPORT __declspec(dllexport)
134 #endif
135 
136 uint  DLL_EXPORT STDCALL gentee_deinit( void );
137 uint  DLL_EXPORT STDCALL gentee_init( uint flags );
138 uint  DLL_EXPORT STDCALL gentee_set( uint state, pvoid val );
139 pvoid DLL_EXPORT STDCALL gentee_ptr( uint par );
140 uint  DLL_EXPORT STDCALL gentee_load( pubyte bytecode, uint flag );
141 uint  DLL_EXPORT CDECLCALL gentee_call( uint id, puint result, ... );
142 uint  DLL_EXPORT CDECLCALL gentee_getid( pubyte name, uint count, ... );
143 
144 //--------------------------------------------------------------------------
145 
146    #ifdef __cplusplus              
147       }                            
148    #endif // __cplusplus
149 
150 #endif // _GENTEE_
Редактировать