Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/swig4.0/typemaps/ |
Upload File : |
/* ----------------------------------------------------------------------------- * SWIG API. Portion only visible from SWIG * ----------------------------------------------------------------------------- */ /* This file implements the internal macros of the 'SWIG API', which are useful to implement all the SWIG target languages. Basic preprocessor macros: -------------------------- %arg(Arg) Safe argument wrap %str(Arg) Stringify the argument %begin_block Begin an execution block %end_block End an execution block %block(Block) Execute Block as an execution block %define_as(Def, Val) Define 'Def' as 'Val', expanding Def and Val first %ifcplusplus(V1, V2) if C++ Mode; then V1; else V2; fi Casting Operations: ------------------- SWIG provides the following casting macros, which implement the corresponding C++ casting operations: %const_cast(a, Type) const_cast<Type >(a) %static_cast(a, Type) static_cast<Type >(a) %reinterpret_cast(a, Type) reinterpret_cast<Type >(a) %numeric_cast(a, Type) static_cast<Type >(a) %as_voidptr(a) const_cast<void *>(static_cast<const void *>(a)) %as_voidptrptr(a) reinterpret_cast<void **>(a) or their C unsafe versions. In C++ we use the safe version unless SWIG_NO_CPLUSPLUS_CAST is defined Memory allocation: ------------------ These allocation/freeing macros are safe to use in C or C++ and dispatch the proper new/delete/delete[] or free/malloc calls as needed. %new_instance(Type) Allocate a new instance of given Type %new_copy(value,Type) Allocate and initialize a new instance with 'value' %new_array(size,Type) Allocate a new array with given size and Type and zero initialize %new_copy_array(cptr,size,Type) Allocate and initialize a new array from 'cptr' %delete(cptr) Delete an instance %delete_array(cptr) Delete an array Auxiliary loop macros: ---------------------- %formacro(Macro, Args...) or %formacro_1(Macro, Args...) for i in Args do Macro($i) done %formacro_2(Macro2, Args...) for i,j in Args do Macro2($i, $j) done Flags and conditional macros: ----------------------------- %mark_flag(flag) flag := True %evalif(flag,expr) if flag; then expr fi %evalif_2(flag1 flag2,expr) if flag1 and flag2; then expr fi */ /* ----------------------------------------------------------------------------- * Basic preprocessor macros * ----------------------------------------------------------------------------- */ #define %arg(Arg...) Arg #define %str(Arg) `Arg` #ifndef %begin_block # define %begin_block do { #endif #ifndef %end_block # define %end_block } while(0) #endif #define %block(Block...) %begin_block Block; %end_block /* define a new macro */ %define %define_as(Def, Val...)%#define Def Val %enddef /* include C++ or else value */ %define %ifcplusplus(cppval, nocppval) #ifdef __cplusplus cppval #else nocppval #endif %enddef /* insert the SWIGVERSION in the interface and the wrapper code */ #if SWIG_VERSION %insert("header") { %define_as(SWIGVERSION, SWIG_VERSION) %#define SWIG_VERSION SWIGVERSION } #endif /* ----------------------------------------------------------------------------- * Casting operators * ----------------------------------------------------------------------------- */ #if defined(__cplusplus) && !defined(SWIG_NO_CPLUSPLUS_CAST) # define %const_cast(a,Type...) const_cast< Type >(a) # define %static_cast(a,Type...) static_cast< Type >(a) # define %reinterpret_cast(a,Type...) reinterpret_cast< Type >(a) # define %numeric_cast(a,Type...) static_cast< Type >(a) #else /* C case */ # define %const_cast(a,Type...) (Type)(a) # define %static_cast(a,Type...) (Type)(a) # define %reinterpret_cast(a,Type...) (Type)(a) # define %numeric_cast(a,Type...) (Type)(a) #endif /* __cplusplus */ #define %as_voidptr(a) SWIG_as_voidptr(a) #define %as_voidptrptr(a) SWIG_as_voidptrptr(a) %insert("header") { %define_as(SWIG_as_voidptr(a), %const_cast(%static_cast(a,const void *), void *)) %define_as(SWIG_as_voidptrptr(a), ((void)%as_voidptr(*a),%reinterpret_cast(a, void**))) } /* ----------------------------------------------------------------------------- * Allocating/freeing elements * ----------------------------------------------------------------------------- */ #if defined(__cplusplus) # define %new_instance(Type...) (new Type()) # define %new_copy(val,Type...) (new Type(%static_cast(val, const Type&))) # define %new_array(size,Type...) (new Type[size]()) # define %new_copy_array(ptr,size,Type...) %reinterpret_cast(memcpy(new Type[size], ptr, sizeof(Type)*(size)), Type*) # define %delete(cptr) delete cptr # define %delete_array(cptr) delete[] cptr #else /* C case */ # define %new_instance(Type...) (Type *)calloc(1,sizeof(Type)) # define %new_copy(val,Type...) (Type *)memcpy(%new_instance(Type),&val,sizeof(Type)) # define %new_array(size,Type...) (Type *)calloc(size, sizeof(Type)) # define %new_copy_array(ptr,size,Type...) (Type *)memcpy(malloc((size)*sizeof(Type)), ptr, sizeof(Type)*(size)) # define %delete(cptr) free((char*)cptr) # define %delete_array(cptr) free((char*)cptr) #endif /* __cplusplus */ /* ----------------------------------------------------------------------------- * SWIG names and mangling * ----------------------------------------------------------------------------- */ #define %mangle(Type...) #@Type #define %descriptor(Type...) SWIGTYPE_ ## #@Type #define %string_name(Name) "SWIG_" %str(Name) #define %symbol_name(Name, Type...) SWIG_ ## Name ## _ #@Type #define %checkcode(Code) SWIG_TYPECHECK_ ## Code /* ----------------------------------------------------------------------------- * Auxiliary loop macros * ----------------------------------------------------------------------------- */ /* for loop for macro with one argument */ %define %_formacro_1(macro, arg1,...)macro(arg1) #if #__VA_ARGS__ != "__fordone__" %_formacro_1(macro, __VA_ARGS__) #endif %enddef /* for loop for macro with one argument */ %define %formacro_1(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef %define %formacro(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef /* for loop for macro with two arguments */ %define %_formacro_2(macro, arg1, arg2, ...)macro(arg1, arg2) #if #__VA_ARGS__ != "__fordone__" %_formacro_2(macro, __VA_ARGS__) #endif %enddef /* for loop for macro with two arguments */ %define %formacro_2(macro,...)%_formacro_2(macro, __VA_ARGS__, __fordone__)%enddef /* ----------------------------------------------------------------------------- * SWIG flags * ----------------------------------------------------------------------------- */ /* mark a flag, ie, define a macro name but ignore it in the interface. the flag can be later used with %evalif */ %define %mark_flag(x) %define x 1 %enddef %enddef /* %evalif and %evalif_2 are use to evaluate or process an expression if the given predicate is 'true' (1). */ %define %_evalif(_x,_expr) #if _x == 1 _expr #endif %enddef %define %_evalif_2(_x,_y,_expr) #if _x == 1 && _y == 1 _expr #endif %enddef %define %evalif(_x,_expr...) %_evalif(%arg(_x),%arg(_expr)) %enddef %define %evalif_2(_x,_y,_expr...) %_evalif_2(%arg(_x),%arg(_y),%arg(_expr)) %enddef