mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-09-29 19:24:25 +03:00
msvc: use the vectorcall calling convention
This requires declaring external interfaces with the cdecl calling convention.
This commit is contained in:
16
src/alloc.c
16
src/alloc.c
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Intel Corporation
|
||||
* Copyright (c) 2015-2017, Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -67,7 +67,7 @@ hs_free_t normalise_free(hs_free_t f) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_set_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
hs_error_t HS_CDECL hs_set_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
hs_set_database_allocator(allocfunc, freefunc);
|
||||
hs_set_misc_allocator(allocfunc, freefunc);
|
||||
hs_set_stream_allocator(allocfunc, freefunc);
|
||||
@@ -77,7 +77,8 @@ hs_error_t hs_set_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_set_database_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
hs_error_t HS_CDECL hs_set_database_allocator(hs_alloc_t allocfunc,
|
||||
hs_free_t freefunc) {
|
||||
hs_database_alloc = normalise_alloc(allocfunc);
|
||||
hs_database_free = normalise_free(freefunc);
|
||||
|
||||
@@ -85,7 +86,8 @@ hs_error_t hs_set_database_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_set_misc_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
hs_error_t HS_CDECL hs_set_misc_allocator(hs_alloc_t allocfunc,
|
||||
hs_free_t freefunc) {
|
||||
hs_misc_alloc = normalise_alloc(allocfunc);
|
||||
hs_misc_free = normalise_free(freefunc);
|
||||
|
||||
@@ -93,7 +95,8 @@ hs_error_t hs_set_misc_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_set_scratch_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
hs_error_t HS_CDECL hs_set_scratch_allocator(hs_alloc_t allocfunc,
|
||||
hs_free_t freefunc) {
|
||||
hs_scratch_alloc = normalise_alloc(allocfunc);
|
||||
hs_scratch_free = normalise_free(freefunc);
|
||||
|
||||
@@ -101,7 +104,8 @@ hs_error_t hs_set_scratch_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_set_stream_allocator(hs_alloc_t allocfunc, hs_free_t freefunc) {
|
||||
hs_error_t HS_CDECL hs_set_stream_allocator(hs_alloc_t allocfunc,
|
||||
hs_free_t freefunc) {
|
||||
hs_stream_alloc = normalise_alloc(allocfunc);
|
||||
hs_stream_free = normalise_free(freefunc);
|
||||
|
||||
|
@@ -49,7 +49,7 @@ int db_correctly_aligned(const void *db) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_free_database(hs_database_t *db) {
|
||||
hs_error_t HS_CDECL hs_free_database(hs_database_t *db) {
|
||||
if (db && db->magic != HS_DB_MAGIC) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -59,8 +59,8 @@ hs_error_t hs_free_database(hs_database_t *db) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_serialize_database(const hs_database_t *db, char **bytes,
|
||||
size_t *serialized_length) {
|
||||
hs_error_t HS_CDECL hs_serialize_database(const hs_database_t *db, char **bytes,
|
||||
size_t *serialized_length) {
|
||||
if (!db || !bytes || !serialized_length) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -196,8 +196,9 @@ void db_copy_bytecode(const char *serialized, hs_database_t *db) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_deserialize_database_at(const char *bytes, const size_t length,
|
||||
hs_database_t *db) {
|
||||
hs_error_t HS_CDECL hs_deserialize_database_at(const char *bytes,
|
||||
const size_t length,
|
||||
hs_database_t *db) {
|
||||
if (!bytes || !db) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -238,8 +239,9 @@ hs_error_t hs_deserialize_database_at(const char *bytes, const size_t length,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_deserialize_database(const char *bytes, const size_t length,
|
||||
hs_database_t **db) {
|
||||
hs_error_t HS_CDECL hs_deserialize_database(const char *bytes,
|
||||
const size_t length,
|
||||
hs_database_t **db) {
|
||||
if (!bytes || !db) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -287,7 +289,7 @@ hs_error_t hs_deserialize_database(const char *bytes, const size_t length,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_database_size(const hs_database_t *db, size_t *size) {
|
||||
hs_error_t HS_CDECL hs_database_size(const hs_database_t *db, size_t *size) {
|
||||
if (!size) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -302,8 +304,9 @@ hs_error_t hs_database_size(const hs_database_t *db, size_t *size) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_serialized_database_size(const char *bytes, const size_t length,
|
||||
size_t *size) {
|
||||
hs_error_t HS_CDECL hs_serialized_database_size(const char *bytes,
|
||||
const size_t length,
|
||||
size_t *size) {
|
||||
// Decode and check the header
|
||||
hs_database_t header;
|
||||
hs_error_t ret = db_decode_header(&bytes, length, &header);
|
||||
@@ -417,8 +420,8 @@ hs_error_t print_database_string(char **s, u32 version, const platform_t plat,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_serialized_database_info(const char *bytes, size_t length,
|
||||
char **info) {
|
||||
hs_error_t HS_CDECL hs_serialized_database_info(const char *bytes,
|
||||
size_t length, char **info) {
|
||||
if (!info) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -437,7 +440,7 @@ hs_error_t hs_serialized_database_info(const char *bytes, size_t length,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_database_info(const hs_database_t *db, char **info) {
|
||||
hs_error_t HS_CDECL hs_database_info(const hs_database_t *db, char **info) {
|
||||
if (!info) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
|
52
src/hs.cpp
52
src/hs.cpp
@@ -279,9 +279,10 @@ hs_compile_multi_int(const char *const *expressions, const unsigned *flags,
|
||||
} // namespace ue2
|
||||
|
||||
extern "C" HS_PUBLIC_API
|
||||
hs_error_t hs_compile(const char *expression, unsigned flags, unsigned mode,
|
||||
const hs_platform_info_t *platform, hs_database_t **db,
|
||||
hs_compile_error_t **error) {
|
||||
hs_error_t HS_CDECL hs_compile(const char *expression, unsigned flags,
|
||||
unsigned mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db, hs_compile_error_t **error) {
|
||||
if (expression == nullptr) {
|
||||
*db = nullptr;
|
||||
*error = generateCompileError("Invalid parameter: expression is NULL",
|
||||
@@ -297,24 +298,25 @@ hs_error_t hs_compile(const char *expression, unsigned flags, unsigned mode,
|
||||
}
|
||||
|
||||
extern "C" HS_PUBLIC_API
|
||||
hs_error_t hs_compile_multi(const char * const *expressions,
|
||||
const unsigned *flags, const unsigned *ids,
|
||||
unsigned elements, unsigned mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db, hs_compile_error_t **error) {
|
||||
hs_error_t HS_CDECL hs_compile_multi(const char *const *expressions,
|
||||
const unsigned *flags, const unsigned *ids,
|
||||
unsigned elements, unsigned mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db,
|
||||
hs_compile_error_t **error) {
|
||||
const hs_expr_ext * const *ext = nullptr; // unused for this call.
|
||||
return hs_compile_multi_int(expressions, flags, ids, ext, elements, mode,
|
||||
platform, db, error, Grey());
|
||||
}
|
||||
|
||||
extern "C" HS_PUBLIC_API
|
||||
hs_error_t hs_compile_ext_multi(const char * const *expressions,
|
||||
const unsigned *flags, const unsigned *ids,
|
||||
const hs_expr_ext * const *ext,
|
||||
unsigned elements, unsigned mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db,
|
||||
hs_compile_error_t **error) {
|
||||
hs_error_t HS_CDECL hs_compile_ext_multi(const char * const *expressions,
|
||||
const unsigned *flags, const unsigned *ids,
|
||||
const hs_expr_ext * const *ext,
|
||||
unsigned elements, unsigned mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db,
|
||||
hs_compile_error_t **error) {
|
||||
return hs_compile_multi_int(expressions, flags, ids, ext, elements, mode,
|
||||
platform, db, error, Grey());
|
||||
}
|
||||
@@ -419,24 +421,26 @@ hs_error_t hs_expression_info_int(const char *expression, unsigned int flags,
|
||||
}
|
||||
|
||||
extern "C" HS_PUBLIC_API
|
||||
hs_error_t hs_expression_info(const char *expression, unsigned int flags,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error) {
|
||||
hs_error_t HS_CDECL hs_expression_info(const char *expression,
|
||||
unsigned int flags,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error) {
|
||||
return hs_expression_info_int(expression, flags, nullptr, HS_MODE_BLOCK,
|
||||
info, error);
|
||||
}
|
||||
|
||||
extern "C" HS_PUBLIC_API
|
||||
hs_error_t hs_expression_ext_info(const char *expression, unsigned int flags,
|
||||
const hs_expr_ext_t *ext,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error) {
|
||||
hs_error_t HS_CDECL hs_expression_ext_info(const char *expression,
|
||||
unsigned int flags,
|
||||
const hs_expr_ext_t *ext,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error) {
|
||||
return hs_expression_info_int(expression, flags, ext, HS_MODE_BLOCK, info,
|
||||
error);
|
||||
}
|
||||
|
||||
extern "C" HS_PUBLIC_API
|
||||
hs_error_t hs_populate_platform(hs_platform_info_t *platform) {
|
||||
hs_error_t HS_CDECL hs_populate_platform(hs_platform_info_t *platform) {
|
||||
if (!platform) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -450,7 +454,7 @@ hs_error_t hs_populate_platform(hs_platform_info_t *platform) {
|
||||
}
|
||||
|
||||
extern "C" HS_PUBLIC_API
|
||||
hs_error_t hs_free_compile_error(hs_compile_error_t *error) {
|
||||
hs_error_t HS_CDECL hs_free_compile_error(hs_compile_error_t *error) {
|
||||
#if defined(FAT_RUNTIME)
|
||||
if (!check_ssse3()) {
|
||||
return HS_ARCH_ERROR;
|
||||
|
@@ -29,6 +29,11 @@
|
||||
#ifndef HS_COMMON_H_
|
||||
#define HS_COMMON_H_
|
||||
|
||||
#if defined(_WIN32)
|
||||
#define HS_CDECL __cdecl
|
||||
#else
|
||||
#define HS_CDECL
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
|
||||
/**
|
||||
@@ -76,7 +81,7 @@ typedef int hs_error_t;
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_free_database(hs_database_t *db);
|
||||
hs_error_t HS_CDECL hs_free_database(hs_database_t *db);
|
||||
|
||||
/**
|
||||
* Serialize a pattern database to a stream of bytes.
|
||||
@@ -100,8 +105,8 @@ hs_error_t hs_free_database(hs_database_t *db);
|
||||
* @ref HS_SUCCESS on success, @ref HS_NOMEM if the byte array cannot be
|
||||
* allocated, other values may be returned if errors are detected.
|
||||
*/
|
||||
hs_error_t hs_serialize_database(const hs_database_t *db, char **bytes,
|
||||
size_t *length);
|
||||
hs_error_t HS_CDECL hs_serialize_database(const hs_database_t *db, char **bytes,
|
||||
size_t *length);
|
||||
|
||||
/**
|
||||
* Reconstruct a pattern database from a stream of bytes previously generated
|
||||
@@ -129,8 +134,9 @@ hs_error_t hs_serialize_database(const hs_database_t *db, char **bytes,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_deserialize_database(const char *bytes, const size_t length,
|
||||
hs_database_t **db);
|
||||
hs_error_t HS_CDECL hs_deserialize_database(const char *bytes,
|
||||
const size_t length,
|
||||
hs_database_t **db);
|
||||
|
||||
/**
|
||||
* Reconstruct a pattern database from a stream of bytes previously generated
|
||||
@@ -160,8 +166,9 @@ hs_error_t hs_deserialize_database(const char *bytes, const size_t length,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_deserialize_database_at(const char *bytes, const size_t length,
|
||||
hs_database_t *db);
|
||||
hs_error_t HS_CDECL hs_deserialize_database_at(const char *bytes,
|
||||
const size_t length,
|
||||
hs_database_t *db);
|
||||
|
||||
/**
|
||||
* Provides the size of the stream state allocated by a single stream opened
|
||||
@@ -177,7 +184,8 @@ hs_error_t hs_deserialize_database_at(const char *bytes, const size_t length,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_stream_size(const hs_database_t *database, size_t *stream_size);
|
||||
hs_error_t HS_CDECL hs_stream_size(const hs_database_t *database,
|
||||
size_t *stream_size);
|
||||
|
||||
/**
|
||||
* Provides the size of the given database in bytes.
|
||||
@@ -192,8 +200,8 @@ hs_error_t hs_stream_size(const hs_database_t *database, size_t *stream_size);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_database_size(const hs_database_t *database,
|
||||
size_t *database_size);
|
||||
hs_error_t HS_CDECL hs_database_size(const hs_database_t *database,
|
||||
size_t *database_size);
|
||||
|
||||
/**
|
||||
* Utility function for reporting the size that would be required by a
|
||||
@@ -219,8 +227,9 @@ hs_error_t hs_database_size(const hs_database_t *database,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_serialized_database_size(const char *bytes, const size_t length,
|
||||
size_t *deserialized_size);
|
||||
hs_error_t HS_CDECL hs_serialized_database_size(const char *bytes,
|
||||
const size_t length,
|
||||
size_t *deserialized_size);
|
||||
|
||||
/**
|
||||
* Utility function providing information about a database.
|
||||
@@ -237,7 +246,8 @@ hs_error_t hs_serialized_database_size(const char *bytes, const size_t length,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_database_info(const hs_database_t *database, char **info);
|
||||
hs_error_t HS_CDECL hs_database_info(const hs_database_t *database,
|
||||
char **info);
|
||||
|
||||
/**
|
||||
* Utility function providing information about a serialized database.
|
||||
@@ -258,8 +268,8 @@ hs_error_t hs_database_info(const hs_database_t *database, char **info);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_serialized_database_info(const char *bytes, size_t length,
|
||||
char **info);
|
||||
hs_error_t HS_CDECL hs_serialized_database_info(const char *bytes,
|
||||
size_t length, char **info);
|
||||
|
||||
/**
|
||||
* The type of the callback function that will be used by Hyperscan to allocate
|
||||
@@ -275,7 +285,7 @@ hs_error_t hs_serialized_database_info(const char *bytes, size_t length,
|
||||
* @return
|
||||
* A pointer to the region of memory allocated, or NULL on error.
|
||||
*/
|
||||
typedef void *(*hs_alloc_t)(size_t size);
|
||||
typedef void *(HS_CDECL *hs_alloc_t)(size_t size);
|
||||
|
||||
/**
|
||||
* The type of the callback function that will be used by Hyperscan to free
|
||||
@@ -284,7 +294,7 @@ typedef void *(*hs_alloc_t)(size_t size);
|
||||
* @param ptr
|
||||
* The region of memory to be freed.
|
||||
*/
|
||||
typedef void (*hs_free_t)(void *ptr);
|
||||
typedef void (HS_CDECL *hs_free_t)(void *ptr);
|
||||
|
||||
/**
|
||||
* Set the allocate and free functions used by Hyperscan for allocating
|
||||
@@ -312,7 +322,8 @@ typedef void (*hs_free_t)(void *ptr);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_set_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
hs_error_t HS_CDECL hs_set_allocator(hs_alloc_t alloc_func,
|
||||
hs_free_t free_func);
|
||||
|
||||
/**
|
||||
* Set the allocate and free functions used by Hyperscan for allocating memory
|
||||
@@ -344,8 +355,8 @@ hs_error_t hs_set_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_set_database_allocator(hs_alloc_t alloc_func,
|
||||
hs_free_t free_func);
|
||||
hs_error_t HS_CDECL hs_set_database_allocator(hs_alloc_t alloc_func,
|
||||
hs_free_t free_func);
|
||||
|
||||
/**
|
||||
* Set the allocate and free functions used by Hyperscan for allocating memory
|
||||
@@ -371,7 +382,8 @@ hs_error_t hs_set_database_allocator(hs_alloc_t alloc_func,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_set_misc_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
hs_error_t HS_CDECL hs_set_misc_allocator(hs_alloc_t alloc_func,
|
||||
hs_free_t free_func);
|
||||
|
||||
/**
|
||||
* Set the allocate and free functions used by Hyperscan for allocating memory
|
||||
@@ -397,7 +409,8 @@ hs_error_t hs_set_misc_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_set_scratch_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
hs_error_t HS_CDECL hs_set_scratch_allocator(hs_alloc_t alloc_func,
|
||||
hs_free_t free_func);
|
||||
|
||||
/**
|
||||
* Set the allocate and free functions used by Hyperscan for allocating memory
|
||||
@@ -423,7 +436,8 @@ hs_error_t hs_set_scratch_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_set_stream_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
hs_error_t HS_CDECL hs_set_stream_allocator(hs_alloc_t alloc_func,
|
||||
hs_free_t free_func);
|
||||
|
||||
/**
|
||||
* Utility function for identifying this release version.
|
||||
@@ -433,7 +447,7 @@ hs_error_t hs_set_stream_allocator(hs_alloc_t alloc_func, hs_free_t free_func);
|
||||
* date of the build. It is allocated statically, so it does not need to
|
||||
* be freed by the caller.
|
||||
*/
|
||||
const char *hs_version(void);
|
||||
const char * HS_CDECL hs_version(void);
|
||||
|
||||
/**
|
||||
* Utility function to test the current system architecture.
|
||||
@@ -450,7 +464,7 @@ const char *hs_version(void);
|
||||
* @ref HS_SUCCESS on success, @ref HS_ARCH_ERROR if system does not
|
||||
* support Hyperscan.
|
||||
*/
|
||||
hs_error_t hs_valid_platform(void);
|
||||
hs_error_t HS_CDECL hs_valid_platform(void);
|
||||
|
||||
/**
|
||||
* @defgroup HS_ERROR hs_error_t values
|
||||
|
@@ -333,9 +333,10 @@ typedef struct hs_expr_ext {
|
||||
* HS_COMPILER_ERROR on failure, with details provided in the error
|
||||
* parameter.
|
||||
*/
|
||||
hs_error_t hs_compile(const char *expression, unsigned int flags,
|
||||
unsigned int mode, const hs_platform_info_t *platform,
|
||||
hs_database_t **db, hs_compile_error_t **error);
|
||||
hs_error_t HS_CDECL hs_compile(const char *expression, unsigned int flags,
|
||||
unsigned int mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db, hs_compile_error_t **error);
|
||||
|
||||
/**
|
||||
* The multiple regular expression compiler.
|
||||
@@ -411,11 +412,13 @@ hs_error_t hs_compile(const char *expression, unsigned int flags,
|
||||
* parameter.
|
||||
*
|
||||
*/
|
||||
hs_error_t hs_compile_multi(const char *const *expressions,
|
||||
const unsigned int *flags, const unsigned int *ids,
|
||||
unsigned int elements, unsigned int mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db, hs_compile_error_t **error);
|
||||
hs_error_t HS_CDECL hs_compile_multi(const char *const *expressions,
|
||||
const unsigned int *flags,
|
||||
const unsigned int *ids,
|
||||
unsigned int elements, unsigned int mode,
|
||||
const hs_platform_info_t *platform,
|
||||
hs_database_t **db,
|
||||
hs_compile_error_t **error);
|
||||
|
||||
/**
|
||||
* The multiple regular expression compiler with extended parameter support.
|
||||
@@ -496,7 +499,7 @@ hs_error_t hs_compile_multi(const char *const *expressions,
|
||||
* parameter.
|
||||
*
|
||||
*/
|
||||
hs_error_t hs_compile_ext_multi(const char *const *expressions,
|
||||
hs_error_t HS_CDECL hs_compile_ext_multi(const char *const *expressions,
|
||||
const unsigned int *flags,
|
||||
const unsigned int *ids,
|
||||
const hs_expr_ext_t *const *ext,
|
||||
@@ -515,7 +518,7 @@ hs_error_t hs_compile_ext_multi(const char *const *expressions,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_free_compile_error(hs_compile_error_t *error);
|
||||
hs_error_t HS_CDECL hs_free_compile_error(hs_compile_error_t *error);
|
||||
|
||||
/**
|
||||
* Utility function providing information about a regular expression. The
|
||||
@@ -563,9 +566,10 @@ hs_error_t hs_free_compile_error(hs_compile_error_t *error);
|
||||
* HS_COMPILER_ERROR on failure, with details provided in the error
|
||||
* parameter.
|
||||
*/
|
||||
hs_error_t hs_expression_info(const char *expression, unsigned int flags,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error);
|
||||
hs_error_t HS_CDECL hs_expression_info(const char *expression,
|
||||
unsigned int flags,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error);
|
||||
|
||||
/**
|
||||
* Utility function providing information about a regular expression, with
|
||||
@@ -618,10 +622,11 @@ hs_error_t hs_expression_info(const char *expression, unsigned int flags,
|
||||
* HS_COMPILER_ERROR on failure, with details provided in the error
|
||||
* parameter.
|
||||
*/
|
||||
hs_error_t hs_expression_ext_info(const char *expression, unsigned int flags,
|
||||
const hs_expr_ext_t *ext,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error);
|
||||
hs_error_t HS_CDECL hs_expression_ext_info(const char *expression,
|
||||
unsigned int flags,
|
||||
const hs_expr_ext_t *ext,
|
||||
hs_expr_info_t **info,
|
||||
hs_compile_error_t **error);
|
||||
|
||||
/**
|
||||
* Populates the platform information based on the current host.
|
||||
@@ -633,7 +638,7 @@ hs_error_t hs_expression_ext_info(const char *expression, unsigned int flags,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_populate_platform(hs_platform_info_t *platform);
|
||||
hs_error_t HS_CDECL hs_populate_platform(hs_platform_info_t *platform);
|
||||
|
||||
/**
|
||||
* @defgroup HS_PATTERN_FLAG Pattern flags
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Intel Corporation
|
||||
* Copyright (c) 2015-2017, Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -145,8 +145,8 @@ typedef int (*match_event_handler)(unsigned int id,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_open_stream(const hs_database_t *db, unsigned int flags,
|
||||
hs_stream_t **stream);
|
||||
hs_error_t HS_CDECL hs_open_stream(const hs_database_t *db, unsigned int flags,
|
||||
hs_stream_t **stream);
|
||||
|
||||
/**
|
||||
* Write data to be scanned to the opened stream.
|
||||
@@ -185,10 +185,10 @@ hs_error_t hs_open_stream(const hs_database_t *db, unsigned int flags,
|
||||
* match callback indicated that scanning should stop; other values on
|
||||
* error.
|
||||
*/
|
||||
hs_error_t hs_scan_stream(hs_stream_t *id, const char *data,
|
||||
unsigned int length, unsigned int flags,
|
||||
hs_scratch_t *scratch, match_event_handler onEvent,
|
||||
void *ctxt);
|
||||
hs_error_t HS_CDECL hs_scan_stream(hs_stream_t *id, const char *data,
|
||||
unsigned int length, unsigned int flags,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *ctxt);
|
||||
|
||||
/**
|
||||
* Close a stream.
|
||||
@@ -223,8 +223,8 @@ hs_error_t hs_scan_stream(hs_stream_t *id, const char *data,
|
||||
* @return
|
||||
* Returns @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_close_stream(hs_stream_t *id, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *ctxt);
|
||||
hs_error_t HS_CDECL hs_close_stream(hs_stream_t *id, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *ctxt);
|
||||
|
||||
/**
|
||||
* Reset a stream to an initial state.
|
||||
@@ -264,9 +264,9 @@ hs_error_t hs_close_stream(hs_stream_t *id, hs_scratch_t *scratch,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_reset_stream(hs_stream_t *id, unsigned int flags,
|
||||
hs_scratch_t *scratch, match_event_handler onEvent,
|
||||
void *context);
|
||||
hs_error_t HS_CDECL hs_reset_stream(hs_stream_t *id, unsigned int flags,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context);
|
||||
|
||||
/**
|
||||
* Duplicate the given stream. The new stream will have the same state as the
|
||||
@@ -282,7 +282,8 @@ hs_error_t hs_reset_stream(hs_stream_t *id, unsigned int flags,
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_copy_stream(hs_stream_t **to_id, const hs_stream_t *from_id);
|
||||
hs_error_t HS_CDECL hs_copy_stream(hs_stream_t **to_id,
|
||||
const hs_stream_t *from_id);
|
||||
|
||||
/**
|
||||
* Duplicate the given 'from' stream state onto the 'to' stream. The 'to' stream
|
||||
@@ -314,11 +315,11 @@ hs_error_t hs_copy_stream(hs_stream_t **to_id, const hs_stream_t *from_id);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_reset_and_copy_stream(hs_stream_t *to_id,
|
||||
const hs_stream_t *from_id,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent,
|
||||
void *context);
|
||||
hs_error_t HS_CDECL hs_reset_and_copy_stream(hs_stream_t *to_id,
|
||||
const hs_stream_t *from_id,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent,
|
||||
void *context);
|
||||
|
||||
/**
|
||||
* The block (non-streaming) regular expression scanner.
|
||||
@@ -355,10 +356,10 @@ hs_error_t hs_reset_and_copy_stream(hs_stream_t *to_id,
|
||||
* match callback indicated that scanning should stop; other values on
|
||||
* error.
|
||||
*/
|
||||
hs_error_t hs_scan(const hs_database_t *db, const char *data,
|
||||
unsigned int length, unsigned int flags,
|
||||
hs_scratch_t *scratch, match_event_handler onEvent,
|
||||
void *context);
|
||||
hs_error_t HS_CDECL hs_scan(const hs_database_t *db, const char *data,
|
||||
unsigned int length, unsigned int flags,
|
||||
hs_scratch_t *scratch, match_event_handler onEvent,
|
||||
void *context);
|
||||
|
||||
/**
|
||||
* The vectored regular expression scanner.
|
||||
@@ -398,10 +399,12 @@ hs_error_t hs_scan(const hs_database_t *db, const char *data,
|
||||
* Returns @ref HS_SUCCESS on success; @ref HS_SCAN_TERMINATED if the match
|
||||
* callback indicated that scanning should stop; other values on error.
|
||||
*/
|
||||
hs_error_t hs_scan_vector(const hs_database_t *db, const char *const *data,
|
||||
const unsigned int *length, unsigned int count,
|
||||
unsigned int flags, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context);
|
||||
hs_error_t HS_CDECL hs_scan_vector(const hs_database_t *db,
|
||||
const char *const *data,
|
||||
const unsigned int *length,
|
||||
unsigned int count, unsigned int flags,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context);
|
||||
|
||||
/**
|
||||
* Allocate a "scratch" space for use by Hyperscan.
|
||||
@@ -429,7 +432,8 @@ hs_error_t hs_scan_vector(const hs_database_t *db, const char *const *data,
|
||||
* allocation fails. Other errors may be returned if invalid parameters
|
||||
* are specified.
|
||||
*/
|
||||
hs_error_t hs_alloc_scratch(const hs_database_t *db, hs_scratch_t **scratch);
|
||||
hs_error_t HS_CDECL hs_alloc_scratch(const hs_database_t *db,
|
||||
hs_scratch_t **scratch);
|
||||
|
||||
/**
|
||||
* Allocate a scratch space that is a clone of an existing scratch space.
|
||||
@@ -449,7 +453,8 @@ hs_error_t hs_alloc_scratch(const hs_database_t *db, hs_scratch_t **scratch);
|
||||
* @ref HS_SUCCESS on success; @ref HS_NOMEM if the allocation fails.
|
||||
* Other errors may be returned if invalid parameters are specified.
|
||||
*/
|
||||
hs_error_t hs_clone_scratch(const hs_scratch_t *src, hs_scratch_t **dest);
|
||||
hs_error_t HS_CDECL hs_clone_scratch(const hs_scratch_t *src,
|
||||
hs_scratch_t **dest);
|
||||
|
||||
/**
|
||||
* Provides the size of the given scratch space.
|
||||
@@ -465,7 +470,8 @@ hs_error_t hs_clone_scratch(const hs_scratch_t *src, hs_scratch_t **dest);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_scratch_size(const hs_scratch_t *scratch, size_t *scratch_size);
|
||||
hs_error_t HS_CDECL hs_scratch_size(const hs_scratch_t *scratch,
|
||||
size_t *scratch_size);
|
||||
|
||||
/**
|
||||
* Free a scratch block previously allocated by @ref hs_alloc_scratch() or @ref
|
||||
@@ -480,7 +486,7 @@ hs_error_t hs_scratch_size(const hs_scratch_t *scratch, size_t *scratch_size);
|
||||
* @return
|
||||
* @ref HS_SUCCESS on success, other values on failure.
|
||||
*/
|
||||
hs_error_t hs_free_scratch(hs_scratch_t *scratch);
|
||||
hs_error_t HS_CDECL hs_free_scratch(hs_scratch_t *scratch);
|
||||
|
||||
/**
|
||||
* Callback 'from' return value, indicating that the start of this match was
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Intel Corporation
|
||||
* Copyright (c) 2016-2017, Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -30,7 +30,7 @@
|
||||
#include "util/cpuid_flags.h"
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_valid_platform(void) {
|
||||
hs_error_t HS_CDECL hs_valid_platform(void) {
|
||||
/* Hyperscan requires SSSE3, anything else is a bonus */
|
||||
if (check_ssse3()) {
|
||||
return HS_SUCCESS;
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Intel Corporation
|
||||
* Copyright (c) 2015-2017, Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -31,6 +31,6 @@
|
||||
#include "hs_version.h"
|
||||
|
||||
HS_PUBLIC_API
|
||||
const char *hs_version(void) {
|
||||
const char * HS_CDECL hs_version(void) {
|
||||
return HS_VERSION_STRING;
|
||||
}
|
||||
|
@@ -311,9 +311,10 @@ void runSmallWriteEngine(const struct SmallWriteEngine *smwr,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_scan(const hs_database_t *db, const char *data, unsigned length,
|
||||
unsigned flags, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *userCtx) {
|
||||
hs_error_t HS_CDECL hs_scan(const hs_database_t *db, const char *data,
|
||||
unsigned length, unsigned flags,
|
||||
hs_scratch_t *scratch, match_event_handler onEvent,
|
||||
void *userCtx) {
|
||||
if (unlikely(!scratch || !data)) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -503,8 +504,9 @@ void init_stream(struct hs_stream *s, const struct RoseEngine *rose,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_open_stream(const hs_database_t *db, UNUSED unsigned flags,
|
||||
hs_stream_t **stream) {
|
||||
hs_error_t HS_CDECL hs_open_stream(const hs_database_t *db,
|
||||
UNUSED unsigned flags,
|
||||
hs_stream_t **stream) {
|
||||
if (unlikely(!stream)) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -656,7 +658,8 @@ void report_eod_matches(hs_stream_t *id, hs_scratch_t *scratch,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_copy_stream(hs_stream_t **to_id, const hs_stream_t *from_id) {
|
||||
hs_error_t HS_CDECL hs_copy_stream(hs_stream_t **to_id,
|
||||
const hs_stream_t *from_id) {
|
||||
if (!to_id) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -683,11 +686,11 @@ hs_error_t hs_copy_stream(hs_stream_t **to_id, const hs_stream_t *from_id) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_reset_and_copy_stream(hs_stream_t *to_id,
|
||||
const hs_stream_t *from_id,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent,
|
||||
void *context) {
|
||||
hs_error_t HS_CDECL hs_reset_and_copy_stream(hs_stream_t *to_id,
|
||||
const hs_stream_t *from_id,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent,
|
||||
void *context) {
|
||||
if (!from_id || !from_id->rose) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -906,9 +909,10 @@ hs_error_t hs_scan_stream_internal(hs_stream_t *id, const char *data,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_scan_stream(hs_stream_t *id, const char *data, unsigned length,
|
||||
unsigned flags, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context) {
|
||||
hs_error_t HS_CDECL hs_scan_stream(hs_stream_t *id, const char *data,
|
||||
unsigned length, unsigned flags,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context) {
|
||||
if (unlikely(!id || !scratch || !data ||
|
||||
!validScratch(id->rose, scratch))) {
|
||||
return HS_INVALID;
|
||||
@@ -924,8 +928,9 @@ hs_error_t hs_scan_stream(hs_stream_t *id, const char *data, unsigned length,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_close_stream(hs_stream_t *id, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context) {
|
||||
hs_error_t HS_CDECL hs_close_stream(hs_stream_t *id, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent,
|
||||
void *context) {
|
||||
if (!id) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -947,9 +952,10 @@ hs_error_t hs_close_stream(hs_stream_t *id, hs_scratch_t *scratch,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_reset_stream(hs_stream_t *id, UNUSED unsigned int flags,
|
||||
hs_scratch_t *scratch, match_event_handler onEvent,
|
||||
void *context) {
|
||||
hs_error_t HS_CDECL hs_reset_stream(hs_stream_t *id, UNUSED unsigned int flags,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent,
|
||||
void *context) {
|
||||
if (!id) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -972,7 +978,8 @@ hs_error_t hs_reset_stream(hs_stream_t *id, UNUSED unsigned int flags,
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_stream_size(const hs_database_t *db, size_t *stream_size) {
|
||||
hs_error_t HS_CDECL hs_stream_size(const hs_database_t *db,
|
||||
size_t *stream_size) {
|
||||
if (!stream_size) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -1019,10 +1026,13 @@ void dumpData(const char *data, size_t len) {
|
||||
#endif
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_scan_vector(const hs_database_t *db, const char * const * data,
|
||||
const unsigned int *length, unsigned int count,
|
||||
UNUSED unsigned int flags, hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context) {
|
||||
hs_error_t HS_CDECL hs_scan_vector(const hs_database_t *db,
|
||||
const char * const * data,
|
||||
const unsigned int *length,
|
||||
unsigned int count,
|
||||
UNUSED unsigned int flags,
|
||||
hs_scratch_t *scratch,
|
||||
match_event_handler onEvent, void *context) {
|
||||
if (unlikely(!scratch || !data || !length)) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015-2016, Intel Corporation
|
||||
* Copyright (c) 2015-2017, Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -240,7 +240,8 @@ hs_error_t alloc_scratch(const hs_scratch_t *proto, hs_scratch_t **scratch) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_alloc_scratch(const hs_database_t *db, hs_scratch_t **scratch) {
|
||||
hs_error_t HS_CDECL hs_alloc_scratch(const hs_database_t *db,
|
||||
hs_scratch_t **scratch) {
|
||||
if (!db || !scratch) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -385,7 +386,8 @@ hs_error_t hs_alloc_scratch(const hs_database_t *db, hs_scratch_t **scratch) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_clone_scratch(const hs_scratch_t *src, hs_scratch_t **dest) {
|
||||
hs_error_t HS_CDECL hs_clone_scratch(const hs_scratch_t *src,
|
||||
hs_scratch_t **dest) {
|
||||
if (!dest || !src || !ISALIGNED_CL(src) || src->magic != SCRATCH_MAGIC) {
|
||||
return HS_INVALID;
|
||||
}
|
||||
@@ -402,7 +404,7 @@ hs_error_t hs_clone_scratch(const hs_scratch_t *src, hs_scratch_t **dest) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_free_scratch(hs_scratch_t *scratch) {
|
||||
hs_error_t HS_CDECL hs_free_scratch(hs_scratch_t *scratch) {
|
||||
if (scratch) {
|
||||
/* has to be aligned before we can do anything with it */
|
||||
if (!ISALIGNED_CL(scratch)) {
|
||||
@@ -426,7 +428,7 @@ hs_error_t hs_free_scratch(hs_scratch_t *scratch) {
|
||||
}
|
||||
|
||||
HS_PUBLIC_API
|
||||
hs_error_t hs_scratch_size(const hs_scratch_t *scratch, size_t *size) {
|
||||
hs_error_t HS_CDECL hs_scratch_size(const hs_scratch_t *scratch, size_t *size) {
|
||||
if (!size || !scratch || !ISALIGNED_CL(scratch) ||
|
||||
scratch->magic != SCRATCH_MAGIC) {
|
||||
return HS_INVALID;
|
||||
|
Reference in New Issue
Block a user