本文整理汇总了C++中parser_free函数的典型用法代码示例。如果您正苦于以下问题:C++ parser_free函数的具体用法?C++ parser_free怎么用?C++ parser_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了parser_free函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parse_section_start
static dbus_bool_t
parse_section_start (BusDesktopFileParser *parser, DBusError *error)
{
int line_end, eol_len;
char *section_name;
_DBUS_ASSERT_ERROR_IS_CLEAR (error);
if (!_dbus_string_find_eol (&parser->data, parser->pos, &line_end, &eol_len))
line_end = parser->len;
if (line_end - parser->pos <= 2 ||
_dbus_string_get_byte (&parser->data, line_end - 1) != ']')
{
report_error (parser, "Invalid syntax for section header", BUS_DESKTOP_PARSE_ERROR_INVALID_SYNTAX, error);
parser_free (parser);
return FALSE;
}
section_name = unescape_string (parser,
&parser->data, parser->pos + 1, line_end - 1,
error);
if (section_name == NULL)
{
parser_free (parser);
return FALSE;
}
if (!is_valid_section_name (section_name))
{
report_error (parser, "Invalid characters in section name", BUS_DESKTOP_PARSE_ERROR_INVALID_CHARS, error);
parser_free (parser);
dbus_free (section_name);
return FALSE;
}
if (open_section (parser, section_name) == NULL)
{
dbus_free (section_name);
parser_free (parser);
BUS_SET_OOM (error);
return FALSE;
}
if (line_end == parser->len)
parser->pos = parser->len;
else
parser->pos = line_end + eol_len;
parser->line_num += 1;
dbus_free (section_name);
return TRUE;
}
示例2: subst_list_eval_funcs__
static void subst_list_eval_funcs__(const subst_list_type * subst_list , buffer_type * buffer) {
parser_type * parser = parser_alloc( "," , "\"\'" , NULL , " \t" , NULL , NULL );
subst_list_eval_funcs____( subst_list , parser , buffer );
parser_free( parser );
}
示例3: config_load_file
int config_load_file(FILE *config_file, struct Config *dest) {
char *rdbuf = malloc(CONFIG_CHUNK_SIZE);
int ret = -1;
xmpp_ctx_t *ctx = xmpp_ctx_new(NULL, NULL);
parser_t *parser = parser_new(ctx,
NULL,
NULL,
config_parse_stanza,
dest);
size_t read_bytes;
do {
read_bytes = fread(rdbuf, 1, CONFIG_CHUNK_SIZE, config_file);
if (!parser_feed(parser, rdbuf, read_bytes)) {
ret = 2;
goto __cleanup__;
}
} while (read_bytes == CONFIG_CHUNK_SIZE);
if (errno != 0) {
ret = 1;
} else {
ret = 0;
}
__cleanup__:
free(rdbuf);
parser_free(parser);
xmpp_ctx_free(ctx);
return ret;
}
示例4: test_message
void
test_message (const struct message *message)
{
parser_init(message->type);
size_t read;
read = parse(message->raw, strlen(message->raw));
if (read != strlen(message->raw)) {
print_error(message->raw, read);
exit(1);
}
read = parse(NULL, 0);
if (read != 0) {
print_error(message->raw, read);
exit(1);
}
if (num_messages != 1) {
printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name);
exit(1);
}
if(!message_eq(0, message)) exit(1);
parser_free();
}
示例5: START_TEST
END_TEST
START_TEST (absolute_multi_step)
{
char *expression = "$.foo.baz..yobble.thingum";
reset_errno();
parser_context *context = make_parser((uint8_t *)expression, strlen(expression));
assert_not_null(context);
assert_noerr();
jsonpath *path = parse(context);
assert_parser_success(expression, context, path, ABSOLUTE_PATH, 5);
assert_root_step(path);
assert_single_name_step(path, 1, "foo");
assert_single_name_step(path, 2, "baz");
assert_recursive_name_step(path, 3, "yobble");
assert_single_name_step(path, 4, "thingum");
assert_no_predicate(path, 1);
assert_no_predicate(path, 2);
assert_no_predicate(path, 3);
assert_no_predicate(path, 4);
path_free(path);
parser_free(context);
}
示例6: config_load
void config_load( )
{
char file_name[512];
PData *pd, *sub;
/* set to defaults */
config_check_dir();
config_reset();
/* load config */
sprintf( file_name, "%s/%s", config.dir_name, CONFIG_FILE_NAME );
if ( ( pd = parser_read_file( "config", file_name ) ) == 0 ) {
fprintf( stderr, "%s\n", parser_get_error() );
return;
}
/* parse config */
parser_get_int( pd, "gametype", &config.gametype );
parser_get_int( pd, "starting_level", &config.starting_level );
if (config.starting_level > 9 || config.starting_level < 0) {
config.starting_level = 0;
}
parser_get_int( pd, "preview", &config.preview );
parser_get_int( pd, "help", &config.help );
parser_get_int( pd, "expert", &config.expert );
parser_get_int( pd, "center_preview", &config.center_preview );
parser_get_int( pd, "holes", &config.holes );
parser_get_int( pd, "rand_holes", &config.rand_holes );
parser_get_int( pd, "send_all", &config.send_all );
parser_get_int( pd, "send_tetris", &config.send_tetris );
if ( parser_get_pdata( pd, "player1", &sub ) )
parse_player( sub, &config.player1 );
if ( parser_get_pdata( pd, "player2", &sub ) )
parse_player( sub, &config.player2 );
if ( parser_get_pdata( pd, "player3", &sub ) )
parse_player( sub, &config.player3 );
parser_get_int( pd, "clear_keystate", &config.clear_keystate );
parser_get_int( pd, "cpu_aggr", &config.cpu_aggr );
parser_get_int( pd, "cpu_delay", &config.cpu_delay );
parser_get_int( pd, "cpu_rot_delay", &config.cpu_rot_delay );
parser_get_int( pd, "sound", &config.sound );
parser_get_int( pd, "volume", &config.volume );
parser_get_int( pd, "transparency", &config.trp );
parser_get_int( pd, "animations", &config.anim );
parser_get_int( pd, "fullscreen", &config.fullscreen );
parser_get_int( pd, "fading", &config.fade );
parser_get_int( pd, "fps", &config.fps );
parser_get_int( pd, "background", &config.bkgnd );
parser_get_int( pd, "static_background", &config.keep_bkgnd );
parser_get_int( pd, "smooth_hori", &config.smooth_hori );
parser_get_int( pd, "hori_delay", &config.hori_delay );
parser_get_int( pd, "vert_delay", &config.vert_delay );
parser_get_int( pd, "pause_key", &config.pause_key );
parser_get_int( pd, "block_by_block", &config.block_by_block );
parser_get_int( pd, "motion_mod", &config.motion_mod );
parser_get_int( pd, "relative_motion", &config.rel_motion );
parser_get_int( pd, "grap_input", &config.grab );
parser_get_int( pd, "invert_mouse", &config.invert );
parser_get_int( pd, "quick_help", &config.quick_help );
parser_get_int( pd, "async_collision_check", &config.async_col_check );
parser_free( &pd );
}
示例7: cartdb_kill
void cartdb_kill()
{
if(cartxml) {
parser_free(cartxml);
parser_verifymemory();
}
cartxml = 0;
}
示例8: parser_fread_alloc_file_content
char * parser_fread_alloc_file_content(const char * filename , const char * quote_set , const char * delete_set , const char * comment_start , const char * comment_end) {
parser_type * parser = parser_alloc( NULL , quote_set , NULL , delete_set , comment_start , comment_end);
char * buffer = util_fread_alloc_file_content( filename , NULL);
parser_strip_buffer( parser , &buffer );
parser_free( parser );
return buffer;
}
示例9: parser_test
/* test the parser and visualize the results */
void parser_test(char* input)
{
cmds* cmd = NULL;
printf("input: %s\n",input);
cmd = parser_parse(input);
printf("result: %s @ %d:%d\n",parser_message,error_line,error_column);
printf("---\n");
parser_print(cmd);
printf("---\n \n");
parser_free(cmd);
}
示例10: parser_read_file
PData* parser_read_file( const char *tree_name, const char *fname )
{
int size;
char magic = 0;
ParserState state = { fname, 0, 1, 0 };
ParserState *st = &state;
PData *top = 0;
/* open file */
if ( ( state.file = fopen( fname, "rb" ) ) == 0 ) {
sprintf( parser_error, tr("%s: file not found"), fname );
return 0;
}
/* create common tree data */
st->ctd = common_tree_data_create(fname);
/* create top level pdata */
top = parser_create_pdata(strdup( tree_name ), 0, st->lineno, st->ctd);
top->entries = list_create( LIST_NO_AUTO_DELETE, LIST_NO_CALLBACK );
/* parse */
FILE_READCHAR( st, st->ch );
magic = st->ch;
if ( magic == '@' ) {
/* get the whole contents -- 1 and CBUFFER_SIZE are switched */
fseek( st->file, 0, SEEK_END ); size = ftell( st->file ) - 2;
if ( size >= CBUFFER_SIZE ) {
fprintf( stderr, tr("%s: file's too big to fit the compact buffer (%dKB)\n"), fname, CBUFFER_SIZE / 1024 );
size = CBUFFER_SIZE - 1;
}
fseek( st->file, 2, SEEK_SET );
_fread( cbuffer, 1, size, st->file );
cbuffer[size] = 0;
/* set indicator to beginning of text */
cbuffer_pos = cbuffer;
/* parse cbuffer */
if ( !parser_read_file_compact( st, top ) ) {
parser_set_parse_error( st, parser_sub_error );
goto failure;
}
}
else {
parser_read_token(st);
if ( !parser_read_file_full( st, top ) ) {
parser_set_parse_error( st, parser_sub_error );
goto failure;
}
}
/* finalize */
fclose( st->file );
return top;
failure:
fclose( st->file );
parser_free( &top );
return 0;
}
示例11: raise_error
/* a long jump. */
static void raise_error(enum parser_errors code)
{
parser_status = code;
parser_message = messages[code];
if (code>=PARSER_INVALID_STATE)
{
error_line=line;
error_column=col;
}
/* cleanup before returning */
parser_free(root);
longjmp(error_env,1);
}
示例12: ecl_util_get_unit_set
ecl_unit_enum ecl_util_get_unit_set(const char * data_file) {
ecl_unit_enum units = ECL_METRIC_UNITS;
parser_type * parser = parser_alloc(" \t\r\n" , "\"\'" , NULL , NULL , "--" , "\n");
FILE * stream = util_fopen(data_file , "r");
if (parser_fseek_string( parser , stream , "FIELD" , true , true)) { /* Seeks case insensitive. */
units = ECL_FIELD_UNITS;
} else if (parser_fseek_string( parser , stream , "LAB" , true , true)) { /* Seeks case insensitive. */
units = ECL_LAB_UNITS;
}
parser_free( parser );
fclose(stream);
return units;
}
示例13: parse_section_start
static gboolean
parse_section_start (AnjutaPluginDescriptionParser *parser, GError **error)
{
gchar *line_end;
gchar *section_name;
line_end = strchr (parser->line, '\n');
if (line_end == NULL)
line_end = parser->line + strlen (parser->line);
if (line_end - parser->line <= 2 ||
line_end[-1] != ']')
{
report_error (parser, "Invalid syntax for section header", ANJUTA_PLUGIN_DESCRIPTION_PARSE_ERROR_INVALID_SYNTAX, error);
parser_free (parser);
return FALSE;
}
section_name = unescape_string (parser->line + 1, line_end - parser->line - 2);
if (section_name == NULL)
{
report_error (parser, "Invalid escaping in section name", ANJUTA_PLUGIN_DESCRIPTION_PARSE_ERROR_INVALID_ESCAPES, error);
parser_free (parser);
return FALSE;
}
open_section (parser, section_name);
parser->line = (line_end) ? line_end + 1 : NULL;
parser->line_nr++;
g_free (section_name);
return TRUE;
}
示例14: parse_section_start
static gboolean
parse_section_start (GnomeThemeFileParser *parser, GError **error)
{
gchar *line_end;
gchar *section_name;
line_end = strchr (parser->line, '\n');
if (line_end == NULL)
line_end = parser->line + strlen (parser->line);
if (line_end - parser->line <= 2 ||
line_end[-1] != ']')
{
report_error (parser, "Invalid syntax for section header", GNOME_THEME_FILE_PARSE_ERROR_INVALID_SYNTAX, error);
parser_free (parser);
return FALSE;
}
section_name = unescape_string (parser->line + 1, line_end - parser->line - 2);
if (section_name == NULL)
{
report_error (parser, "Invalid escaping in section name", GNOME_THEME_FILE_PARSE_ERROR_INVALID_ESCAPES, error);
parser_free (parser);
return FALSE;
}
open_section (parser, section_name);
parser->line = (line_end) ? line_end + 1 : NULL;
parser->line_nr++;
g_free (section_name);
return TRUE;
}
示例15: parser_free
/*
====================================================================
This function frees a PData tree struct.
====================================================================
*/
void parser_free( PData **pdata )
{
PData *entry = 0;
if ( (*pdata) == 0 ) return;
if ( (*pdata)->entries ) {
list_reset( (*pdata)->entries );
while ( ( entry = list_next( (*pdata)->entries ) ) )
parser_free( &entry );
list_delete( (*pdata)->entries );
}
if ( (*pdata)->name ) free( (*pdata)->name );
if ( (*pdata)->values ) list_delete( (*pdata)->values );
common_tree_data_deref((*pdata)->ctd);
free( *pdata ); *pdata = 0;
}