diff options
| author | mingodad <mingodad@gmail.com> | 2013-01-11 00:04:38 +0000 |
|---|---|---|
| committer | mingodad <mingodad@gmail.com> | 2013-01-11 00:04:38 +0000 |
| commit | 59e18aee0e509a3ca75dbe6f909e18c1d17893d1 (patch) | |
| tree | 1ee20b231505273a1b1ba678b67c6c9e5812a414 /libtcc.h | |
| parent | 0a8c7d143eb0dcae15db9b61feb7b93228645d5f (diff) | |
| download | tinycc-59e18aee0e509a3ca75dbe6f909e18c1d17893d1.tar.gz tinycc-59e18aee0e509a3ca75dbe6f909e18c1d17893d1.tar.bz2 | |
Added what I call virtual io to tinycc this way we can make a monolitic executable or library that contains all needed to compile programs, truly tinycc portable.
Tested under linux exec the "mk-it" shell script and you'll end up with a portable tinycc executable that doesn't depend on anything else.
Diffstat (limited to 'libtcc.h')
| -rw-r--r-- | libtcc.h | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -13,6 +13,28 @@ struct TCCState; typedef struct TCCState TCCState; +struct vio_module_t; + +typedef struct vio_fd { + int fd; + void *vio_udata; + struct vio_module_t *vio_module; +} vio_fd; + +#define CALL_VIO_OPEN_FIRST 0x01 +#define CALL_VIO_OPEN_LAST 0x02 + +typedef struct vio_module_t { + void *user_data; + struct TCCState *tcc_state; + int call_vio_open_flags; /*CALL_VIO_OPEN_FIRST, CALL_VIO_OPEN_LAST, one or both */ + int (*vio_open)(vio_fd *fd, const char *fn, int oflag) ; + off_t (*vio_lseek)(vio_fd fd, off_t offset, int whence); + size_t (*vio_read)(vio_fd fd, void *buf, size_t bytes); + int (*vio_close)(vio_fd *fd); +} vio_module_t; + + /* create a new TCC compilation context */ LIBTCCAPI TCCState *tcc_new(void); @@ -32,6 +54,9 @@ LIBTCCAPI int tcc_set_warning(TCCState *s, const char *warning_name, int value); /* set linker option */ LIBTCCAPI const char * tcc_set_linker(TCCState *s, char *option, int multi); +/* set virtual io module */ +LIBTCCAPI void tcc_set_vio_module(TCCState *s, vio_module_t *vio_module); + /*****************************/ /* preprocessor */ @@ -58,6 +83,10 @@ LIBTCCAPI int tcc_add_file(TCCState *s, const char *filename); error. */ LIBTCCAPI int tcc_compile_string(TCCState *s, const char *buf); +/* compile a string containing a C source. Return non zero if + error. Can associate a name with string for errors. */ +int tcc_compile_named_string(TCCState *s, const char *buf, const char *strname); + /*****************************/ /* linking commands */ |
