summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Romani <fromani@gmail.com>2014-07-06 14:07:11 +0200
committerSebastian Dröge <sebastian@centricular.com>2023-04-12 19:47:42 +0300
commit6f8d15a8ae678db1a4a3cf763b649dd88af54884 (patch)
tree09845ea7c55722edf29784da68cbe2a78dec950d
parent67422b7b3c960981f14d0cd3df56a200f772b454 (diff)
downloadorc-6f8d15a8ae678db1a4a3cf763b649dd88af54884.tar.gz
parser: extract initialization function
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/30>
-rw-r--r--orc/orcparse.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/orc/orcparse.c b/orc/orcparse.c
index 3276e7b..d44f09f 100644
--- a/orc/orcparse.c
+++ b/orc/orcparse.c
@@ -47,6 +47,7 @@ static OrcParseError * orc_parse_error_new (const char *source, int line_number,
static void orc_parse_error_free (OrcParseError *error);
static void orc_parse_splat_error (OrcParseError **errors, int n_errors, char **log);
+static void orc_parse_init (OrcParser *parser, const char *code, int enable_errors);
static void orc_parse_get_line (OrcParser *parser);
static void orc_parse_sanity_check (OrcParser *parser, OrcProgram *program);
@@ -54,6 +55,7 @@ static OrcStaticOpcode * orc_parse_find_opcode (OrcParser *parser, const char *o
static int opcode_n_args (OrcStaticOpcode *opcode);
static int opcode_arg_size (OrcStaticOpcode *opcode, int arg);
+
const char *
orc_parse_get_init_function (OrcProgram *program)
{
@@ -93,15 +95,9 @@ orc_parse_code (const char *code, OrcProgram ***programs, int *n_programs,
{
OrcParser _parser;
OrcParser *parser = &_parser;
+ int enable_errors = (errors && n_errors);
- memset (parser, 0, sizeof(*parser));
-
- parser->code = code;
- parser->code_length = strlen (code);
- parser->line_number = 0;
- parser->p = code;
- parser->opcode_set = orc_opcode_set_get ("sys");
- parser->enable_errors = (errors && n_errors);
+ orc_parse_init (parser, code, enable_errors);
while (parser->p[0] != 0) {
char *p;
@@ -443,6 +439,19 @@ orc_parse_code (const char *code, OrcProgram ***programs, int *n_programs,
}
static void
+orc_parse_init (OrcParser *parser, const char *code, int enable_errors)
+{
+ memset (parser, 0, sizeof(*parser));
+
+ parser->code = code;
+ parser->code_length = strlen (code);
+ parser->line_number = 0;
+ parser->p = code;
+ parser->opcode_set = orc_opcode_set_get ("sys");
+ parser->enable_errors = enable_errors;
+}
+
+static void
orc_parse_splat_error (OrcParseError **errors, int n_errors, char **log)
{
int i;