7 #ifndef __LIBNANYC_NANY_C_H__ 8 #define __LIBNANYC_NANY_C_H__ 13 #if defined(_WIN32) || defined(__CYGWIN__) 15 # define LIBNANYC_VISIBILITY_EXPORT __attribute__ ((dllexport)) 16 # define LIBNANYC_VISIBILITY_IMPORT __attribute__ ((dllimport)) 18 # define LIBNANYC_VISIBILITY_EXPORT __declspec(dllexport) 19 # define LIBNANYC_VISIBILITY_IMPORT __declspec(dllimport) 22 # define LIBNANYC_VISIBILITY_EXPORT __attribute__((visibility("default"))) 23 # define LIBNANYC_VISIBILITY_IMPORT __attribute__((visibility("default"))) 26 #if defined(_DLL) && !defined(LIBNANYC_DLL_EXPORT) 27 # define LIBNANYC_DLL_EXPORT 34 #if defined(LIBNANYC_DLL_EXPORT) 35 # define NY_EXPORT LIBNANYC_VISIBILITY_EXPORT 37 # define NY_EXPORT LIBNANYC_VISIBILITY_IMPORT 57 NY_EXPORT
void nylib_print_info_for_bugreport();
65 NY_EXPORT
char* nylib_get_info_for_bugreport(uint32_t* length);
68 NY_EXPORT
const char* nylib_website_url();
78 NY_EXPORT uint32_t nylib_get_version(uint32_t* major, uint32_t* minor, uint32_t* patch);
81 NY_EXPORT
const char* nylib_version();
83 NY_EXPORT
const char* nylib_version_metadata();
85 NY_EXPORT
const char* nylib_version_prerelease();
98 NY_EXPORT
int nylib_check_compatible_version(uint32_t major, uint32_t minor);
108 #ifndef LIBNANYC_NYBOOL_T 109 #define LIBNANYC_NYBOOL_T 111 typedef enum nybool_t {nyfalse = 0, nytrue} nybool_t;
115 #ifndef LIBNANYC_NYANYSTR_T 116 #define LIBNANYC_NYANYSTR_T 124 static inline nyanystr_t nyanystr(
const char*
const text) {
125 nyanystr_t s = {((text) ? (uint32_t) strlen(text) : 0), text};
130 static inline nyanystr_t nyanystr_ex(
const char*
const text, uint32_t len) {
137 uint32_t len = src->size;
138 const char* srcstr = src->c_str;
139 char* str = (
char*) malloc(
sizeof(
char) * (len + 1));
140 memcpy(str, srcstr, len);
183 nyt_count = nyt_f64 + 1,
212 nyv_count = nyv_published + 1,
217 typedef struct nythread_t nythread_t;
219 typedef struct nyproject_t nyproject_t;
221 typedef struct nytarget_t nytarget_t;
223 typedef struct nysource_t nysource_t;
225 typedef struct nybuild_t nybuild_t;
227 typedef struct nyprogram_t nyprogram_t;
229 typedef struct nythread_t nytctx_t;
253 void* (*reallocate)(
struct nyallocator_t*,
void* ptr,
size_t oldsize,
size_t newsize);
275 NY_EXPORT
void nany_memalloc_set_with_limit(
nyallocator_t*,
size_t limit);
285 typedef enum nyconsole_output_t {
295 typedef enum nycolor_t {
321 nyc_count = nyc_lightblue + 1
327 void (*write_stdout)(
void*,
const char* text,
size_t length);
329 void (*write_stderr)(
void*,
const char* text,
size_t length);
331 void (*flush)(
void*, nyconsole_output_t);
333 void (*set_color)(
void*, nyconsole_output_t, nycolor_t);
335 nybool_t (*has_color)(
void*, nyconsole_output_t);
345 NY_EXPORT
void nyconsole_cf_set_stdcout(
nyconsole_t*);
362 void (*on_target_added)(nyproject_t*, nytarget_t*,
const char* name, uint32_t len);
364 void (*on_target_removed)(nyproject_t*, nytarget_t*,
const char* name, uint32_t len);
378 NY_EXPORT nyproject_t* nyproject_create(
const nyproject_cf_t* cf);
384 NY_EXPORT
void nyproject_ref(nyproject_t* project);
390 NY_EXPORT
void nyproject_unref(nyproject_t* project);
397 NY_EXPORT nybool_t nyproject_add_source_from_file(nyproject_t*,
const char* filename);
399 NY_EXPORT nybool_t nyproject_add_source_from_file_n(nyproject_t*,
const char* filename,
size_t);
402 NY_EXPORT nybool_t nyproject_add_source(nyproject_t*,
const char* text);
404 NY_EXPORT nybool_t nyproject_add_source_n(nyproject_t*,
const char* text,
size_t);
408 NY_EXPORT
void nyproject_lock(
const nyproject_t*);
410 NY_EXPORT
void nyproject_unlock(
const nyproject_t*);
412 NY_EXPORT nybool_t nyproject_trylock(
const nyproject_t*);
441 void (*on_unittest)(
void* userdata,
const char* mod, uint32_t mlen,
const char* name, uint32_t nlen);
444 nybool_t (*on_query)(
const nyproject_t*);
446 void (*on_begin)(
const nyproject_t*, nybuild_t*);
449 nybool_t (*on_progress)(
const nyproject_t*, nybuild_t*,
const char* id,
const char* element,
452 nybool_t (*on_binding_discovery)(nybuild_t*,
const char* name, uint32_t size);
455 void (*on_end)(
const nyproject_t*, nybuild_t*, nybool_t success);
456 void (*on_error_file_eacces)(
const nyproject_t*, nybuild_t*,
const char* filename, uint32_t length);
465 NY_EXPORT nybuild_t* nybuild_prepare(nyproject_t*,
const nybuild_cf_t*);
470 NY_EXPORT nybool_t nybuild(nybuild_t*);
478 NY_EXPORT
void nybuild_print_report_to_console(nybuild_t* build, nybool_t print_header);
484 NY_EXPORT
void nybuild_ref(nybuild_t* build);
489 NY_EXPORT
void nybuild_unref(nybuild_t* build);
492 NY_EXPORT
void nybuild_cf_init(
nybuild_cf_t* cf,
const nyproject_t* project);
504 typedef enum nyio_type_t {
512 typedef enum nyio_err_t {
529 typedef enum nyio_automout_flag_t {
531 nyioaf_all = (uint32_t) - 1,
535 nyioaf_root = (1 << 0),
537 nyioaf_tmp = (1 << 1),
539 nyioaf_home = (1 << 2),
541 nyioaf_users = (1 << 3),
543 nyio_automout_flag_t;
549 typedef nybool_t (*nyio_opened_files_it_t)(
const char* vpath, uint32_t len,
const char* localpath,
556 typedef struct nyio_iterator_t nyio_iterator_t;
573 nyio_type_t (*statex)(
nyio_adapter_t*,
const char* path, uint32_t len, uint64_t* size, int64_t* modified);
577 uint64_t (*file_read)(
void*,
void* buffer, uint64_t bufsize);
579 uint64_t (*file_write)(
void*,
const void* buffer, uint64_t bufsize);
582 nybool_t readm, nybool_t writem, nybool_t appendm, nybool_t truncm);
584 void (*file_close)(
void*);
586 nybool_t (*file_eof)(
void*);
589 nyio_err_t (*file_seek)(
void*, uint64_t offset);
591 nyio_err_t (*file_seek_from_end)(
void*, int64_t offset);
593 nyio_err_t (*file_seek_cur)(
void*, int64_t offset);
595 uint64_t (*file_tell)(
void*);
598 void (*file_flush)(
void*);
601 uint64_t (*file_size)(nyio_adapter_t*,
const char* path, uint32_t len);
603 nyio_err_t (*file_erase)(nyio_adapter_t*,
const char* path, uint32_t len);
605 nyio_err_t (*file_exists)(nyio_adapter_t*,
const char* path, uint32_t len);
607 nyio_err_t (*file_resize)(nyio_adapter_t*,
const char* path, uint32_t len, uint64_t newsize);
610 nyio_err_t (*file_get_contents)(nyio_adapter_t*,
char** content, uint64_t* size, uint64_t* capacity,
611 const char* path, uint32_t len);
613 nyio_err_t (*file_set_contents)(nyio_adapter_t*,
const char* path, uint32_t len,
const char* content,
616 nyio_err_t (*file_append_contents)(nyio_adapter_t*,
const char* path, uint32_t len,
const char* content,
621 nyio_err_t (*folder_create)(nyio_adapter_t*,
const char* path, uint32_t len);
623 nyio_err_t (*folder_erase)(nyio_adapter_t*,
const char* path, uint32_t len);
625 nyio_err_t (*folder_clear)(nyio_adapter_t*,
const char* path, uint32_t len);
627 uint64_t (*folder_size)(nyio_adapter_t*,
const char* path, uint32_t len);
629 nyio_err_t (*folder_exists)(nyio_adapter_t*,
const char* path, uint32_t len);
632 nyio_iterator_t* (*folder_iterate)(nyio_adapter_t*,
const char* path, uint32_t len,
633 nybool_t recursive, nybool_t files, nybool_t folders);
635 nyio_iterator_t* (*folder_next)(nyio_iterator_t*);
637 const char* (*folder_iterator_fullpath)(nyio_adapter_t*, nyio_iterator_t*);
639 const char* (*folder_iterator_name)(nyio_iterator_t*);
641 uint64_t (*folder_iterator_size)(nyio_iterator_t*);
643 nyio_type_t (*folder_iterator_type)(nyio_iterator_t*);
645 void (*folder_iterator_close)(nyio_iterator_t*);
648 void (*clone)(nyio_adapter_t* parent, nyio_adapter_t* dst);
650 void (*release)(nyio_adapter_t*);
656 nyio_err_t (*on_mount_query)(nyprogram_t*, nytctx_t*,
const char* url,
const char* path, uint32_t len);
658 nyio_err_t (*on_adapter_create)(nyprogram_t*, nytctx_t*,
nyio_adapter_t**,
const char* url,
659 nyio_adapter_t* parent);
671 const char* localfolder,
size_t len);
708 nybool_t (*on_execute)(nyprogram_t*);
714 nybool_t (*on_thread_create)(nyprogram_t*, nytctx_t*, nythread_t* parent,
const char* name, uint32_t size);
719 void (*on_thread_destroy)(nyprogram_t*, nythread_t*);
727 void (*on_terminate)(
const nyprogram_t*, nybool_t error,
int exitcode);
757 NY_EXPORT nyprogram_t* nyprogram_prepare(nybuild_t* build,
const nyprogram_cf_t* cf);
768 NY_EXPORT
int nyprogram_main(nyprogram_t* program, uint32_t argc,
const char** argv);
775 NY_EXPORT
void nyprogram_ref(nyprogram_t* program);
780 NY_EXPORT
void nyprogram_unref(nyprogram_t* program);
798 nybool_t nyprint_ast_from_file(
const char* filename,
int fd, nybool_t unixcolors);
805 NY_EXPORT nybool_t nyprint_ast_from_file_n(
const char* filename,
size_t length,
int fd, nybool_t unixcolors);
813 NY_EXPORT nybool_t nyprint_ast_from_memory(
const char* content,
int fd, nybool_t unixcolors);
820 NY_EXPORT nybool_t nyprint_ast_from_memory_n(
const char* content,
size_t length,
int fd,
821 nybool_t unixcolors);
829 NY_EXPORT nybool_t nytry_parse_file(
const char*
const filename);
837 NY_EXPORT nybool_t nytry_parse_file_n(
const char* filename,
size_t length);
849 NY_EXPORT nyvisibility_t nycstring_to_visibility(
const char*
const text);
855 NY_EXPORT nyvisibility_t nycstring_to_visibility_n(
const char*
const text,
size_t length);
858 NY_EXPORT
const char* nyvisibility_to_cstring(nyvisibility_t);
867 NY_EXPORT nytype_t nycstring_to_type(
const char*
const text);
875 NY_EXPORT nytype_t nycstring_to_type_n(
const char*
const text,
size_t length);
878 NY_EXPORT
const char* nytype_to_cstring(nytype_t);
881 NY_EXPORT uint32_t nytype_sizeof(nytype_t);
919 NY_EXPORT
int nyrun(
const nyrun_cf_t* cf,
const char* source, uint32_t argc,
const char** argv);
931 NY_EXPORT
int nyrun_n(
const nyrun_cf_t* cf,
const char* source,
size_t length, uint32_t argc,
944 NY_EXPORT
int nyrun_file(
const nyrun_cf_t* cf,
const char* file, uint32_t argc,
const char** argv);
956 NY_EXPORT
int nyrun_file_n(
const nyrun_cf_t* cf,
const char* file,
size_t length, uint32_t argc,
959 NY_EXPORT
int nyrun_filelist(
const nyrun_cf_t* cf,
const char** files, uint32_t file_count, uint32_t argc,
nybool_t(* create_st)(struct nyallocator_t *, const struct nyallocator_cf_t *)
Definition: nany.h:242
void(* on_internal_abort)(struct nyallocator_t *)
Definition: nany.h:263
nybool_t warnings_into_errors
Definition: nany.h:430
const char * filename
Definition: nany.h:684
nyallocator_t allocator
Definition: nany.h:360
void * userdata
Definition: nany.h:438
void(* on_not_enough_memory)(struct nyallocator_t *, nybool_t limit_reached)
Definition: nany.h:244
const char * atom
Definition: nany.h:682
Adapter for a filesystem.
Definition: nany.h:564
nyallocator_t allocator
Definition: nany.h:700
uint32_t atom_size
Definition: nany.h:686
nyanystr_t entrypoint
Definition: nany.h:432
nybool_t ignore_atoms
Definition: nany.h:435
nyprogram_cf_t program
Definition: nany.h:899
nyio_cf_t io
Definition: nany.h:730
nyallocator_t allocator
Definition: nany.h:891
nyprogram_t * program
Definition: nany.h:743
size_t limit_mem_size
Definition: nany.h:259
nyconsole_t console
Definition: nany.h:893
void(* release)(struct nyallocator_t *)
Definition: nany.h:265
nybool_t verbose
Definition: nany.h:901
nybool_t with_nsl_unittests
Definition: nany.h:366
nyconsole_t * console
Definition: nany.h:747
Definition: std.io.cpp:13
void * invalid_fd
Definition: nany.h:568
nyconsole_t console
Definition: nany.h:427
nytctx_t * tctx
Definition: nany.h:745
nybool_t(* create_mt)(struct nyallocator_t *, const struct nyallocator_cf_t *)
Definition: nany.h:240
nyallocator_t * allocator
Definition: nany.h:741
volatile size_t reserved_mem0
Definition: nany.h:257
nybuild_cf_t build
Definition: nany.h:897
uint32_t automount_flags
Definition: nany.h:663
nyproject_cf_t project
Definition: nany.h:895
nyconsole_t console
Definition: nany.h:702
uint32_t filename_size
Definition: nany.h:688
nyallocator_t allocator
Definition: nany.h:425
uint32_t line
Definition: nany.h:690
uint32_t column
Definition: nany.h:692
void(* deallocate)(struct nyallocator_t *, void *ptr, size_t)
Definition: nany.h:255
nyanystr_t entrypoint
Definition: nany.h:733