OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
+
+#include <stdbool.h>
+#include <stdarg.h>
#include "php_psi.h"
#include "builtin.h"
#include "parser.h"
#include "cpp.h"
-#include <stdarg.h>
-
HashTable psi_builtins;
static bool has_include(struct psi_cpp *cpp, struct psi_token *target, struct psi_plist **args, struct psi_plist **res);
static bool has_include_next(struct psi_cpp *cpp, struct psi_token *target, struct psi_plist **args, struct psi_plist **res);
+static bool has_feature(struct psi_cpp *cpp, struct psi_token *target, struct psi_plist **args, struct psi_plist **res);
static bool builtin_constant_p(struct psi_cpp *cpp, struct psi_token *target, struct psi_plist **args, struct psi_plist **res);
static bool COUNTER__(struct psi_cpp *cpp, struct psi_token *target, struct psi_plist **args, struct psi_plist **res);
}
}
+PHP_MINIT_FUNCTION(psi_builtin);
PHP_MINIT_FUNCTION(psi_builtin)
{
#define PSI_BUILTIN(builtin, ...) do { \
zend_hash_init(&psi_builtins, 0, NULL, free_builtin, 1);
PSI_BUILTIN(has_include, PSI_T_CPP_HEADER);
PSI_BUILTIN(has_include_next, PSI_T_CPP_HEADER);
+ PSI_BUILTIN(has_feature, PSI_T_NAME);
PSI_BUILTIN(builtin_constant_p, PSI_T_NAME);
+
PSI_BUILTIN(COUNTER__, -1);
return SUCCESS;
}
+PHP_MSHUTDOWN_FUNCTION(psi_builtin);
PHP_MSHUTDOWN_FUNCTION(psi_builtin)
{
zend_hash_destroy(&psi_builtins);
return false;
}
+static bool has_feature(struct psi_cpp *cpp, struct psi_token *target,
+ struct psi_plist **args, struct psi_plist **res_ptr)
+{
+ return false;
+}
+
static bool builtin_constant_p(struct psi_cpp *cpp, struct psi_token *target,
struct psi_plist **args, struct psi_plist **res_ptr)
{
return true;
}
+
+#ifdef __APPLE__
+#include <libkern/OSByteOrder.h>
+# define bswap_16(u) _OSSwapInt16(u)
+# define bswap_32(u) _OSSwapInt32(u)
+# define bswap_64(u) _OSSwapInt64(u)
+#elif defined(__FreeBSD__)
+# include <sys/endian.h>
+# define bswap_16(u) bswap16(u)
+# define bswap_32(u) bswap32(u)
+# define bswap_64(u) bswap64(u)
+#elif defined(__OpenBSD__)
+# include <sys/types.h>
+# define bswap_16(u) swap16(u)
+# define bswap_32(u) swap32(u)
+# define bswap_64(u) swap64(u)
+#elif defined(__NetBSD__)
+# include <sys/types.h>
+# include <machine/bswap.h>
+# define bswap_16(u) bswap16(u)
+# define bswap_32(u) bswap32(u)
+# define bswap_64(u) bswap64(u)
+#else
+# include <byteswap.h>
+#endif
+
+uint16_t psi_swap16(uint16_t u)
+{
+ return bswap_16(u);
+}
+
+uint32_t psi_swap32(uint32_t u)
+{
+ return bswap_32(u);
+}
+
+uint64_t psi_swap64(uint64_t u)
+{
+ return bswap_64(u);
+}