mirror of
https://github.com/openappsec/openappsec.git
synced 2025-10-01 12:07:43 +03:00
Feb 15th 2023 update
This commit is contained in:
53
external/graphqlparser/c/GraphQLAstVisitor.h
vendored
Normal file
53
external/graphqlparser/c/GraphQLAstVisitor.h
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* Copyright 2019-present, GraphQL Foundation
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "c/GraphQLAst.h"
|
||||
#include "c/GraphQLAstForEachConcreteType.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define TYPEDEFS(type, snake_type) \
|
||||
typedef int (*visit_##snake_type##_func)(const struct GraphQLAst##type *snake_type, void *user_data); \
|
||||
typedef void (*end_visit_##snake_type##_func)(const struct GraphQLAst##type *snake_type, void *user_data);
|
||||
|
||||
FOR_EACH_CONCRETE_TYPE(TYPEDEFS)
|
||||
|
||||
#define FUNC_MEMBER(type, snake_type) \
|
||||
visit_##snake_type##_func visit_##snake_type; \
|
||||
end_visit_##snake_type##_func end_visit_##snake_type;
|
||||
/**
|
||||
* Functions to be called when particular AST nodes are encountered.
|
||||
* visit_* functions are called in pre-order, and may return non-zero to
|
||||
* continue recursing into children (if any), or zero to skip them. end_visit_*
|
||||
* functions are called in post-order. Any particular function may be set to
|
||||
* NULL to indicate that the caller is not interested in the corresponding type
|
||||
* of AST node. (NULL visit_* functions act as though they simply returned
|
||||
* non-zero.)
|
||||
*/
|
||||
struct GraphQLAstVisitorCallbacks {
|
||||
FOR_EACH_CONCRETE_TYPE(FUNC_MEMBER)
|
||||
};
|
||||
|
||||
struct GraphQLAstNode;
|
||||
|
||||
/**
|
||||
* Walk the AST rooted at the given node, issuing callbacks from the given
|
||||
* callbacks struct as appropriate. userData will be passed as the userData
|
||||
* argument to each callback.
|
||||
*/
|
||||
void graphql_node_visit(const struct GraphQLAstNode *node,
|
||||
const struct GraphQLAstVisitorCallbacks *callbacks,
|
||||
void *userData);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user