ffi: improve support for functions returning arrays
[m6w6/ext-psi] / php_psi_posix.h.in
index 4cd316c9cf4292760c34548e451b737ce90a8efb..bc2d356556fa583323783dab7d661423ff7cf576 100644 (file)
@@ -1,6 +1,29 @@
+/*******************************************************************************
+ Copyright (c) 2016, Michael Wallner <mike@php.net>.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+     * Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*******************************************************************************/
+
 /* generated by configure */
-#ifndef PSI_POSIX_H
-#define PSI_POSIX_H
 
 #include "php_psi_stdinc.h"
 
@@ -10,87 +33,37 @@ static struct psi_std_type {
        const char *type_name;
        const char *alias;
 } psi_std_types[] = {
-       {PSI_T_INT8, "int8_t", NULL},
-       {PSI_T_INT16, "int16_t", NULL},
-       {PSI_T_INT32, "int32_t", NULL},
-       {PSI_T_INT64, "int64_t", NULL},
-       {PSI_T_UINT8, "uint8_t", NULL},
-       {PSI_T_UINT16, "uint16_t", NULL},
-       {PSI_T_UINT32, "uint32_t", NULL},
-       {PSI_T_UINT64, "uint64_t", NULL},
 @PSI_STDTYPES@
        {0}
 };
 #endif
 
-#ifdef PSI_PREDEF_TYPES
-static struct psi_predef_type {
-       token_t type_tag;
-       const char *type_name;
-       const char *alias;
-} psi_predef_types[] = {
-@PSI_TYPES@
-       {0}
-};
-#endif
-
-#ifdef PSI_PREDEF_COMPOSITES
-static struct psi_predef_composite {
-       token_t type_tag;
-       const char *type_name;
-       const char *var_name;
-       size_t offset;
-       size_t size;
-       size_t pointer_level;
-       size_t array_size;
-} psi_predef_composites[] = {
-@PSI_COMPOSITES@
-       {0}
-};
-#endif
-
 #ifdef PSI_PREDEF_CONSTS
 static struct psi_predef_const {
        token_t type_tag;
        const char *type_name;
        const char *var_name;
-       const char *val_text;
-       token_t val_type_tag;
+       impl_val value;
 } psi_predef_consts[] = {
 @PSI_CONSTS@
        {0}
 };
 #endif
 
-#ifdef PSI_PREDEF_DECLS
-static struct psi_predef_decl {
-       enum {
-               DECL_KIND_STD,
-               DECL_KIND_VARARG,
-               DECL_KIND_FUNCTOR
-       } kind;
-       token_t type_tag;
-       const char *type_name;
-       const char *var_name;
-       size_t pointer_level;
-       size_t array_size;
-} psi_predef_decls[] = {
-@PSI_DECLS@
-       {0}
-};
-#endif
-
 #ifdef PSI_FUNC_REDIRS
-@PSI_MACROS@
-
 typedef void (*psi_func_ptr)();
 static struct psi_func_redir {
        const char *name;
        psi_func_ptr func;
 } psi_func_redirs[] = {
-@PSI_REDIRS@
+       /* needed from libc_nonshared.a */
+       {"fstat", (psi_func_ptr) fstat},
+       {"fstatat", (psi_func_ptr) fstatat},
+       {"lstat", (psi_func_ptr) lstat},
+       {"mknod", (psi_func_ptr) mknod},
+       {"mknodat", (psi_func_ptr) mknodat},
+       {"stat", (psi_func_ptr) stat},
        {0}
 };
 #endif
 
-#endif