nsgenbind
Loading...
Searching...
No Matches
Classes | Functions | Variables
nsgenbind-ast.c File Reference
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <stdarg.h>
#include "utils.h"
#include "nsgenbind-ast.h"
#include "options.h"

Go to the source code of this file.

Classes

struct  genbind_node
 

Functions

void nsgenbind_restart (FILE *)
 
int nsgenbind_parse (char *filename, struct genbind_node **genbind_ast)
 
struct genbind_nodegenbind_node_prepend (struct genbind_node *list, struct genbind_node *inst)
 
struct genbind_nodegenbind_node_add (struct genbind_node *node, struct genbind_node *list)
 
char * genbind_strapp (char *a, char *b)
 
struct genbind_nodegenbind_node_link (struct genbind_node *tgt, struct genbind_node *src)
 
struct genbind_nodegenbind_new_node (enum genbind_node_type type, struct genbind_node *l, void *r)
 
struct genbind_nodegenbind_new_number_node (enum genbind_node_type type, struct genbind_node *l, int number)
 
int genbind_node_foreach_type (struct genbind_node *node, enum genbind_node_type type, genbind_callback_t *cb, void *ctx)
 
int genbind_node_enumerate_type (struct genbind_node *node, enum genbind_node_type type)
 
struct genbind_nodegenbind_node_find (struct genbind_node *node, struct genbind_node *prev, genbind_callback_t *cb, void *ctx)
 
struct genbind_nodegenbind_node_find_type (struct genbind_node *node, struct genbind_node *prev, enum genbind_node_type type)
 
struct genbind_nodegenbind_node_find_type_ident (struct genbind_node *node, struct genbind_node *prev, enum genbind_node_type type, const char *ident)
 
struct genbind_nodegenbind_node_find_method (struct genbind_node *node, struct genbind_node *prev, enum genbind_method_type methodtype)
 
struct genbind_nodegenbind_node_find_method_ident (struct genbind_node *node, struct genbind_node *prev, enum genbind_method_type nodetype, const char *ident)
 
int genbind_cmp_node_type (struct genbind_node *node, void *ctx)
 
char * genbind_node_gettext (struct genbind_node *node)
 
struct genbind_nodegenbind_node_getnode (struct genbind_node *node)
 
int * genbind_node_getint (struct genbind_node *node)
 
int genbind_dump_ast (struct genbind_node *node)
 
FILE * genbindopen (const char *filename)
 
int genbind_parsefile (char *infilename, struct genbind_node **ast)
 
int genbind_fprintf (FILE *stream, const char *format,...)
 

Variables

int nsgenbind_debug
 
int nsgenbind__flex_debug
 

Function Documentation

◆ genbind_cmp_node_type()

int genbind_cmp_node_type ( struct genbind_node node,
void *  ctx 
)

Definition at line 341 of file nsgenbind-ast.c.

◆ genbind_dump_ast()

int genbind_dump_ast ( struct genbind_node node)

Dump the binding AST to file

If the debug flag has been set this causes the binding AST to be written to a binding-ast output file

Parameters
nodeNode of the tree to start dumping from (usually tree root)
Returns
0 on sucess or non zero on faliure and error message printed.

Definition at line 496 of file nsgenbind-ast.c.

◆ genbind_fprintf()

int genbind_fprintf ( FILE *  stream,
const char *  format,
  ... 
)

Definition at line 621 of file nsgenbind-ast.c.

◆ genbind_new_node()

struct genbind_node * genbind_new_node ( enum genbind_node_type  type,
struct genbind_node l,
void *  r 
)

create a new node with value from pointer

Definition at line 125 of file nsgenbind-ast.c.

◆ genbind_new_number_node()

struct genbind_node * genbind_new_number_node ( enum genbind_node_type  type,
struct genbind_node l,
int  number 
)

create a new number node

Create a node with of number type

Definition at line 136 of file nsgenbind-ast.c.

◆ genbind_node_add()

struct genbind_node * genbind_node_add ( struct genbind_node node,
struct genbind_node list 
)

Definition at line 73 of file nsgenbind-ast.c.

◆ genbind_node_enumerate_type()

int genbind_node_enumerate_type ( struct genbind_node node,
enum genbind_node_type  type 
)

count how many nodes of a specified type.

Enumerate how many nodes of the specified type there are by performing a depth first search for nodes of the given type and counting the number of results.

Parameters
nodeThe node to start the search from
nodetypeThe type of node to count
Returns
The number of nodes found.

Definition at line 183 of file nsgenbind-ast.c.

◆ genbind_node_find()

struct genbind_node * genbind_node_find ( struct genbind_node node,
struct genbind_node prev,
genbind_callback_t cb,
void *  ctx 
)

Depth first left hand search using user provided comparison

Parameters
nodeThe node to start the search from
prevThe node at which to stop the search, either NULL to search the full tree depth (initial search) or the result of a previous search to continue.
cbComparison callback
ctxContext for callback

Definition at line 196 of file nsgenbind-ast.c.

◆ genbind_node_find_method()

struct genbind_node * genbind_node_find_method ( struct genbind_node node,
struct genbind_node prev,
enum genbind_method_type  methodtype 
)

Find a method node of a given method type

Parameters
nodeA node of type GENBIND_NODE_TYPE_CLASS to search for methods.
prevThe node at which to stop the search, either NULL to search the full tree depth (initial search) or the result of a previous search to continue.
methodtypeThe type of method to find.
Returns
A node of type GENBIND_NODE_TYPE_METHOD on success or NULL on faliure

Definition at line 279 of file nsgenbind-ast.c.

◆ genbind_node_find_method_ident()

struct genbind_node * genbind_node_find_method_ident ( struct genbind_node node,
struct genbind_node prev,
enum genbind_method_type  methodtype,
const char *  ident 
)

Find a method node of a given method type and identifier

Parameters
nodeA node of type GENBIND_NODE_TYPE_CLASS to search for methods.
prevThe node at which to stop the search, either NULL to search the full tree depth (initial search) or the result of a previous search to continue.
methodtypeThe type of method to find.
identThe identifier to search for
Returns
A node of type GENBIND_NODE_TYPE_METHOD on success or NULL on faliure

Definition at line 312 of file nsgenbind-ast.c.

◆ genbind_node_find_type()

struct genbind_node * genbind_node_find_type ( struct genbind_node node,
struct genbind_node prev,
enum genbind_node_type  nodetype 
)

Depth first left hand search returning nodes of the specified type

Parameters
nodeThe node to start the search from
prevThe node at which to stop the search, either NULL to search the full tree depth (initial search) or the result of a previous search to continue.
nodetypeThe type of node to seach for
Returns
The found node or NULL for no nodes.

Definition at line 223 of file nsgenbind-ast.c.

◆ genbind_node_find_type_ident()

struct genbind_node * genbind_node_find_type_ident ( struct genbind_node node,
struct genbind_node prev,
enum genbind_node_type  nodetype,
const char *  ident 
)

Depth first left hand search returning nodes of the specified type with an ident child node with matching text

Parameters
nodeThe node to start the search from
prevThe node at which to stop the search, either NULL to search the full tree depth (initial search) or the result of a previous search to continue.
nodetypeThe type of node to seach for
identThe text to match the ident child node to

Definition at line 235 of file nsgenbind-ast.c.

◆ genbind_node_foreach_type()

int genbind_node_foreach_type ( struct genbind_node node,
enum genbind_node_type  type,
genbind_callback_t cb,
void *  ctx 
)

Iterate all nodes of a certian type from a node with a callback.

Depth first search for nodes of the given type calling the callback with context.

Parameters
nodeThe node to start the search from.

Definition at line 151 of file nsgenbind-ast.c.

◆ genbind_node_getint()

int * genbind_node_getint ( struct genbind_node node)

get a nodes integer value

Parameters
nodeThe nodes to get integer from
Returns
pointer to the node value or NULL if the node is not of type int or is empty.

Definition at line 389 of file nsgenbind-ast.c.

◆ genbind_node_getnode()

struct genbind_node * genbind_node_getnode ( struct genbind_node node)

get a nodes node list content

Parameters
nodeThe nodes to get node list from
Returns
pointer to the node list or NULL if the node does not contain a list

Definition at line 367 of file nsgenbind-ast.c.

◆ genbind_node_gettext()

char * genbind_node_gettext ( struct genbind_node node)

get a nodes text content

Parameters
nodeThe nodes to get text from
Returns
pointer to the node text or NULL if the node is not of type text or is empty.

Definition at line 348 of file nsgenbind-ast.c.

◆ genbind_node_link()

struct genbind_node * genbind_node_link ( struct genbind_node tgt,
struct genbind_node src 
)

Definition at line 117 of file nsgenbind-ast.c.

◆ genbind_node_prepend()

struct genbind_node * genbind_node_prepend ( struct genbind_node list,
struct genbind_node inst 
)

Definition at line 48 of file nsgenbind-ast.c.

◆ genbind_parsefile()

int genbind_parsefile ( char *  infilename,
struct genbind_node **  ast 
)

Definition at line 584 of file nsgenbind-ast.c.

◆ genbind_strapp()

char * genbind_strapp ( char *  a,
char *  b 
)

Definition at line 104 of file nsgenbind-ast.c.

◆ genbindopen()

FILE * genbindopen ( const char *  filename)

Definition at line 517 of file nsgenbind-ast.c.

◆ nsgenbind_parse()

int nsgenbind_parse ( char *  filename,
struct genbind_node **  genbind_ast 
)
extern

◆ nsgenbind_restart()

void nsgenbind_restart ( FILE *  )
extern

Variable Documentation

◆ nsgenbind__flex_debug

int nsgenbind__flex_debug
extern

◆ nsgenbind_debug

int nsgenbind_debug
extern