您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ yaml_parser_parse函数代码示例

51自学网 2021-06-03 11:54:30
  C++
这篇教程C++ yaml_parser_parse函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中yaml_parser_parse函数的典型用法代码示例。如果您正苦于以下问题:C++ yaml_parser_parse函数的具体用法?C++ yaml_parser_parse怎么用?C++ yaml_parser_parse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了yaml_parser_parse函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: yaml_parser_load_document

static intyaml_parser_load_document(yaml_parser_t *parser, yaml_event_t *first_event){    yaml_event_t event;    assert(first_event->type == YAML_DOCUMENT_START_EVENT);                        /* DOCUMENT-START is expected. */    parser->document->version_directive        = first_event->data.document_start.version_directive;    parser->document->tag_directives.start        = first_event->data.document_start.tag_directives.start;    parser->document->tag_directives.end        = first_event->data.document_start.tag_directives.end;    parser->document->start_implicit        = first_event->data.document_start.implicit;    parser->document->start_mark = first_event->start_mark;    if (!yaml_parser_parse(parser, &event)) return 0;    if (!yaml_parser_load_node(parser, &event)) return 0;    if (!yaml_parser_parse(parser, &event)) return 0;    assert(event.type == YAML_DOCUMENT_END_EVENT);                        /* DOCUMENT-END is expected. */    parser->document->end_implicit = event.data.document_end.implicit;    parser->document->end_mark = event.end_mark;    return 1;}
开发者ID:gregsimon,项目名称:ftk,代码行数:31,


示例2: yaml_parser_parse

void Region::parse(yaml_parser_t* parser){	yaml_event_t ekey;	yaml_event_t eval;	do {		/* parse key */		yaml_parser_parse(parser, &ekey) || yaml_error(parser);		if ( ekey.type == YAML_MAPPING_END_EVENT ){			/* finished */			break;		} else if ( ekey.type != YAML_SCALAR_EVENT ){			/* malformed yaml */			fprintf(stderr, "YAML dict key must be string/n");			abort();		}		/* Parse value */		yaml_parser_parse(parser, &eval) || yaml_error(parser);		/* delegate parsing of value */		const std::string key = std::string((const char*)ekey.data.scalar.value, ekey.data.scalar.length);		const std::string val = std::string((const char*)eval.data.scalar.value, eval.data.scalar.length);		this->set(key, val);	} while ( true );}
开发者ID:ext,项目名称:frobnicator,代码行数:27,


示例3: yaml_parser_load_sequence

static intyaml_parser_load_sequence(yaml_parser_t *parser, yaml_event_t *first_event){    yaml_event_t event;    yaml_node_t node;    struct {        yaml_node_item_t *start;        yaml_node_item_t *end;        yaml_node_item_t *top;    } items = { NULL, NULL, NULL };    int index, item_index;    yaml_char_t *tag = first_event->data.sequence_start.tag;    if (!STACK_LIMIT(parser, parser->document->nodes, INT_MAX-1)) goto error;    if (!tag || strcmp((char *)tag, "!") == 0) {        yaml_free(tag);        tag = yaml_strdup((yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG);        if (!tag) goto error;    }    if (!STACK_INIT(parser, items, INITIAL_STACK_SIZE)) goto error;    SEQUENCE_NODE_INIT(node, tag, items.start, items.end,            first_event->data.sequence_start.style,            first_event->start_mark, first_event->end_mark);    if (!PUSH(parser, parser->document->nodes, node)) goto error;    index = (int)(parser->document->nodes.top - parser->document->nodes.start);    if (!yaml_parser_register_anchor(parser, index,                first_event->data.sequence_start.anchor)) return 0;    if (!yaml_parser_parse(parser, &event)) return 0;    while (event.type != YAML_SEQUENCE_END_EVENT) {        if (!STACK_LIMIT(parser,                    parser->document->nodes.start[index-1].data.sequence.items,                    INT_MAX-1)) return 0;        item_index = yaml_parser_load_node(parser, &event);        if (!item_index) return 0;        if (!PUSH(parser,                    parser->document->nodes.start[index-1].data.sequence.items,                    item_index)) return 0;        if (!yaml_parser_parse(parser, &event)) return 0;    }    parser->document->nodes.start[index-1].end_mark = event.end_mark;    return index;error:    yaml_free(tag);    yaml_free(first_event->data.sequence_start.anchor);    return 0;}
开发者ID:gregsimon,项目名称:ftk,代码行数:57,


示例4: yaml_parser_load_mapping

static intyaml_parser_load_mapping(yaml_parser_t *parser, yaml_event_t *first_event){    yaml_event_t event;    yaml_node_t node;    struct {        yaml_node_pair_t *start;        yaml_node_pair_t *end;        yaml_node_pair_t *top;    } pairs = { NULL, NULL, NULL };    int index;    yaml_node_pair_t pair;    yaml_char_t *tag = first_event->data.mapping_start.tag;    if (!tag || strcmp((char *)tag, "!") == 0) {        yaml_free(tag);        tag = yaml_strdup((yaml_char_t *)YAML_DEFAULT_MAPPING_TAG);        if (!tag) goto error;    }    if (!STACK_INIT(parser, pairs, INITIAL_STACK_SIZE)) goto error;    MAPPING_NODE_INIT(node, tag, pairs.start, pairs.end,            first_event->data.mapping_start.style,            first_event->start_mark, first_event->end_mark);    if (!PUSH(parser, parser->document->nodes, node)) goto error;    index = (int) (parser->document->nodes.top - parser->document->nodes.start);    if (!yaml_parser_register_anchor(parser, index,                first_event->data.mapping_start.anchor)) return 0;    if (!yaml_parser_parse(parser, &event)) return 0;    while (event.type != YAML_MAPPING_END_EVENT) {        pair.key = yaml_parser_load_node(parser, &event);        if (!pair.key) return 0;        if (!yaml_parser_parse(parser, &event)) return 0;        pair.value = yaml_parser_load_node(parser, &event);        if (!pair.value) return 0;        if (!PUSH(parser,                    parser->document->nodes.start[index-1].data.mapping.pairs,                    pair)) return 0;        if (!yaml_parser_parse(parser, &event)) return 0;    }    parser->document->nodes.start[index-1].end_mark = event.end_mark;    return index;error:    yaml_free(tag);    yaml_free(first_event->data.mapping_start.anchor);    return 0;}
开发者ID:11liju,项目名称:Potatso,代码行数:56,


示例5: eol_config_parse_tier

void eol_config_parse_tier(yaml_parser_t *parser, eolKeychain *chain){  int done = 0;  eolLine last_key;  eolKeychain *next = NULL;  yaml_event_t event;  /* First element must be a variable, or we'll change states to SEQ */  int state = KEY;  eol_line_cpy(last_key,"");  do  {    yaml_parser_parse(parser, &event);    switch(event.type)    {      case YAML_SCALAR_EVENT:        if (state == KEY)        {          /* new key, hold on to it until we get a value as well */          eol_line_cpy(last_key,(char *)event.data.scalar.value);        }        else        {          /* state is VAL or SEQ */          /* TODO data type logic should go here */          next = eol_keychain_new_string((char *)event.data.scalar.value);          eol_keychain_hash_insert(chain,last_key,next);        }        state ^= VAL; /* Toggles KEY/VAL, avoids touching SEQ */        break;      case YAML_SEQUENCE_START_EVENT:        next = eol_keychain_new_list();        eol_keychain_hash_insert(chain,last_key,                                 next);        eol_config_parse_sequence(parser, next);        break;      case YAML_MAPPING_START_EVENT:        if (strlen(last_key) == 0)break;/*first level is implied hash.*/        next = eol_keychain_new_hash();        eol_keychain_hash_insert(chain,last_key,next);        state ^= VAL;        eol_config_parse_tier(parser, next);        break;      case YAML_MAPPING_END_EVENT:      case YAML_STREAM_END_EVENT:      case YAML_SEQUENCE_END_EVENT:        done = 1;        /* terminate the while loop, see below */        break;      default:        fprintf(stderr,"eol_config_parse_tier: unhandled event/n");    }    if(parser->error != YAML_NO_ERROR)    {      fprintf(stderr,"eol_config_parse_tier: error/n");      return;    }    yaml_event_delete(&event);  }  while (!done);}
开发者ID:engineerOfLies,项目名称:eol_keyring,代码行数:60,


示例6: config_parse_mapping

int config_parse_mapping(yaml_parser_t *parser, monikor_config_dict_t *dict) {  yaml_event_t ev;  monikor_config_dict_t *elm = NULL;  while (42) {    if (!yaml_parser_parse(parser, &ev))      return 1;    if (ev.type == YAML_MAPPING_END_EVENT) {      yaml_event_delete(&ev);      return 0;    }    switch(ev.type) {      case YAML_SCALAR_EVENT:        if (elm) {          elm->next = monikor_config_dict_new();          elm = elm->next;        } else {          elm = dict;        }        if (config_parse_key(parser, (char *)ev.data.scalar.value, elm)) {          printf("bad return from parse_key/n");          return 1;        }        break;      default:        printf("error in parse_mapping, event %d/n", ev.type);        return 1;        break;    }    yaml_event_delete(&ev);  }}
开发者ID:quanta-computing,项目名称:quanta-agent,代码行数:34,


示例7: eol_config_parse_sequence

void eol_config_parse_sequence(yaml_parser_t *parser, eolKeychain *chain){  int done = 0;  eolKeychain *next = NULL;  yaml_event_t event;  /* First element must be a variable, or we'll change states to SEQ */  int state = KEY;  do  {    yaml_parser_parse(parser, &event);    switch(event.type)    {      case YAML_MAPPING_START_EVENT:        next = eol_keychain_new_hash();        eol_keychain_list_append(chain,next);        state ^= VAL;        eol_config_parse_tier(parser, next);        break;      case YAML_SEQUENCE_END_EVENT:      case YAML_MAPPING_END_EVENT:      case YAML_STREAM_END_EVENT:        done = 1;        /* terminate the while loop, see below */        break;      default:        fprintf(stderr,"eol_config_parse_sequence: unhandled event/n");    }    if(parser->error != YAML_NO_ERROR)    {      fprintf(stderr,"eol_config_parse_sequence: unhandled event/n");      return;    }    yaml_event_delete(&event);  }while (!done);}
开发者ID:engineerOfLies,项目名称:eol_keyring,代码行数:35,


示例8: yaml_parser_load

yaml_parser_load(yaml_parser_t *parser, yaml_document_t *document){    yaml_event_t event;    assert(parser);     /* Non-NULL parser object is expected. */    assert(document);   /* Non-NULL document object is expected. */    memset(document, 0, sizeof(yaml_document_t));    if (!STACK_INIT(parser, document->nodes, INITIAL_STACK_SIZE))        goto error;    if (!parser->stream_start_produced) {        if (!yaml_parser_parse(parser, &event)) goto error;        assert(event.type == YAML_STREAM_START_EVENT);                        /* STREAM-START is expected. */    }    if (parser->stream_end_produced) {        return 1;    }    if (!yaml_parser_parse(parser, &event)) goto error;    if (event.type == YAML_STREAM_END_EVENT) {        return 1;    }    if (!STACK_INIT(parser, parser->aliases, INITIAL_STACK_SIZE))        goto error;    parser->document = document;    if (!yaml_parser_load_document(parser, &event)) goto error;    yaml_parser_delete_aliases(parser);    parser->document = NULL;    return 1;error:    yaml_parser_delete_aliases(parser);    yaml_document_delete(document);    parser->document = NULL;    return 0;}
开发者ID:gregsimon,项目名称:ftk,代码行数:46,


示例9: GetEvent

void GetEvent(ctr_yaml_context *ctx){	if (!yaml_parser_parse(&ctx->parser, &ctx->event)){		ctx->error = YAML_API_ERROR;		return;	}	CheckEvent(ctx);}
开发者ID:44670,项目名称:Project_CTR,代码行数:8,


示例10: GetNextEvent

void YamlHelper::GetNextEvent(bool bInMap /*= false*/){	if (!yaml_parser_parse(&m_parser, &m_newEvent))	{		//printf("Parser error %d/n", m_parser.error);		throw std::string("Parser error");	}}
开发者ID:Ramon-Zarat,项目名称:AppleWin,代码行数:8,


示例11: main

int main (    int     argc,    char    *argv []){    FILE *fh = fopen("/etc/cpanel/ea4/php.conf", "r");    if( !fh )        fh = fopen("/etc/apache2/conf.d/php.conf.yaml", "r");    yaml_parser_t parser;    yaml_event_t  event;   /* New variable */    /* Initialize parser */    if(!yaml_parser_initialize(&parser))        fputs("Failed to initialize parser!/n", stderr);    if(fh == NULL)        fputs("Failed to open file!/n", stderr);    /* Set input file */    yaml_parser_set_input_file(&parser, fh);    /* START new code */    do {        if (!yaml_parser_parse(&parser, &event)) {            printf("Parser error %d/n", parser.error);            exit(EXIT_FAILURE);        }        switch(event.type)        {         case YAML_NO_EVENT: puts("No event!"); break;        /* Stream start/end */        case YAML_STREAM_START_EVENT: puts("STREAM START"); break;        case YAML_STREAM_END_EVENT:   puts("STREAM END");   break;        /* Block delimeters */        case YAML_DOCUMENT_START_EVENT: puts("<b>Start Document</b>"); break;        case YAML_DOCUMENT_END_EVENT:   puts("<b>End Document</b>");   break;        case YAML_SEQUENCE_START_EVENT: puts("<b>Start Sequence</b>"); break;        case YAML_SEQUENCE_END_EVENT:   puts("<b>End Sequence</b>");   break;        case YAML_MAPPING_START_EVENT:  puts("<b>Start Mapping</b>");  break;        case YAML_MAPPING_END_EVENT:    puts("<b>End Mapping</b>");    break;        /* Data */        case YAML_ALIAS_EVENT:  printf("Got alias (anchor %s)/n", event.data.alias.anchor); break;        case YAML_SCALAR_EVENT: printf("Got scalar (value %s)/n", event.data.scalar.value); break;        }        if(event.type != YAML_STREAM_END_EVENT)        yaml_event_delete(&event);    } while (event.type != YAML_STREAM_END_EVENT);    yaml_event_delete(&event);    /* END new code */    /* Cleanup */    yaml_parser_delete(&parser);    fclose(fh);    return 0;}
开发者ID:CpanelInc,项目名称:php-cli,代码行数:58,


示例12: yaml_parser_parse

Sprite* Sprite::from_yaml(yaml_parser_t* parser, const Sprite* base){	Sprite* sprite = Game::create_sprite(base);	yaml_event_t event;	yaml_event_t evalue;	yaml_parser_parse(parser, &event) || yaml_error(parser);	if ( event.type != YAML_MAPPING_START_EVENT ){		fprintf(stderr, "Sprite expected a mapping at line %lu:%lu/n",		        parser->mark.line+1, parser->mark.column+1);		abort();	}	do {		yaml_parser_parse(parser, &event) || yaml_error(parser);		if ( event.type == YAML_MAPPING_END_EVENT ){			/* All elements has been consumed */			return sprite;		} else if ( event.type != YAML_SCALAR_EVENT ){			/* For this purpose only strings are allowed as keys */			fprintf(stderr, "YAML dict key must be string at line %lu:%lu/n",			        parser->mark.line+1, parser->mark.column+1);			abort();		}		const std::string key((const char*)event.data.scalar.value, event.data.scalar.length);		if ( key == "texture" ){			yaml_parser_parse(parser, &evalue) || yaml_error(parser);			const std::string texture((const char*)evalue.data.scalar.value, evalue.data.scalar.length);			sprite->load_texture(texture);		} else if ( key == "offset" ){			sprite->set_offset(Vector2f::from_yaml(parser));		} else if ( key == "scale" ){			sprite->set_scale(Vector2f::from_yaml(parser) * Vector2f(Game::tile_width(), Game::tile_height()));		} else {			/* warning only */			fprintf(stderr, "Unhandled key `%s'/n", key.c_str());		}	} while (1);}
开发者ID:ext,项目名称:frobnicator,代码行数:44,


示例13: while

YamlNode_t *moloch_rules_parse_yaml(char *filename, YamlNode_t *parent, yaml_parser_t *parser, gboolean sequence) {    char *key = NULL;    YamlNode_t *node;    int done = 0;    while (!done) {        yaml_event_t event;        if (!yaml_parser_parse(parser, &event))            LOGEXIT("%s:%zu - Parse error '%s'", filename, parser->problem_mark.line, parser->problem);#ifdef RULES_DEBUG        LOG("%s %d", yaml_names[event.type], event.type);#endif        switch(event.type) {        case YAML_NO_EVENT:            done = 1;            break;        case YAML_SCALAR_EVENT:#ifdef RULES_DEBUG            LOG("SCALAR_EVENT: %s => %s", key, event.data.scalar.value);#endif            if (sequence) {                moloch_rules_add_node(parent, g_strdup((gchar *)event.data.scalar.value), YAML_NODE_SEQUENCE_VALUE);            } else if (key) {                moloch_rules_add_node(parent, key, g_strdup((gchar *)event.data.scalar.value));                key = NULL;            } else {                key = g_strdup((gchar *)event.data.scalar.value);            }            break;        case YAML_SEQUENCE_START_EVENT:        case YAML_MAPPING_START_EVENT:            if (parent == NULL) {                parent = node = moloch_rules_add_node(NULL, g_strdup("root"), NULL);            } else {                node = moloch_rules_add_node(parent, key, NULL);            }            key = NULL;            if (moloch_rules_parse_yaml(filename, node, parser, event.type == YAML_SEQUENCE_START_EVENT) == NULL)                return NULL;            break;        case YAML_MAPPING_END_EVENT:        case YAML_SEQUENCE_END_EVENT:            done = 1;        default: ;        }        yaml_event_delete(&event);    }    return parent;}
开发者ID:pstray,项目名称:moloch,代码行数:56,


示例14: processYAMLStream

SEXPprocessYAMLStream(yaml_parser_t *parser, int simplify, SEXP nullValue, int simplifyWithNames,  cetype_t charEncoding){    SEXP ans = R_NilValue;    int done = 0;    yaml_event_t event;    while (!done) {      	         /* Get the next event. */	if (!yaml_parser_parse(parser, &event)) {	    return(NULL);	}	fprintf(stderr, "type -> %d/n", (int) event.type);	         /*  Process the event */	switch(event.type) {	case YAML_STREAM_START_EVENT:	    break;	case YAML_STREAM_END_EVENT:	    break;	case YAML_DOCUMENT_START_EVENT:	    break;	case YAML_DOCUMENT_END_EVENT:	    break;	case YAML_ALIAS_EVENT:	    break;	case YAML_SCALAR_EVENT:	    break;	case YAML_SEQUENCE_START_EVENT:	    break;	case YAML_SEQUENCE_END_EVENT:	    break;	case YAML_MAPPING_START_EVENT:	    break;	case YAML_MAPPING_END_EVENT:	    break;	case YAML_NO_EVENT:	    break;	}	/* Are we finished? */	done = (event.type == YAML_STREAM_END_EVENT);	/* The application is responsible for destroying the event object. */	yaml_event_delete(&event);    }    ans = R_NilValue;    return(ans);}
开发者ID:duncantl,项目名称:RYAML,代码行数:55,


示例15: YamlSequence

YamlSequence *YamlDocument::ParseYamlSequence(){	YamlSequence * ret = new YamlSequence();	yaml_event_delete(&event);	do{		yaml_parser_parse(&parser, &event);		switch(event.type)		{		case YAML_SEQUENCE_START_EVENT:			{				YamlSequence *v;				v = ParseYamlSequence();				ret->appendValue(reinterpret_cast<YamlNode *>(v));			}			break;		case YAML_SEQUENCE_END_EVENT:			break;		case YAML_MAPPING_START_EVENT:			{				YamlMapping *v;				v=ParseYamlMapping();				ret->appendValue(reinterpret_cast<YamlNode *>(v));			}			break;		case YAML_MAPPING_END_EVENT:			break;		case YAML_SCALAR_EVENT:			{				YamlScalar *v = new YamlScalar((char *)event.data.scalar.value );				ret->appendValue(reinterpret_cast<YamlNode *>(v));			}			break;		case YAML_NO_EVENT:			break;		case YAML_ALIAS_EVENT:			break;		default:			std::cerr << "FORMAT ERROR in Sequence." << std::endl;			break;		}		if(event.type != YAML_SEQUENCE_END_EVENT){			yaml_event_delete(&event);		}	}while(event.type !=  YAML_SEQUENCE_END_EVENT);	yaml_event_delete(&event);	return ret;}
开发者ID:s15mh218,项目名称:openrtm_tutorial,代码行数:54,


示例16: PetscParseLayerYAML

PetscErrorCode PetscParseLayerYAML(yaml_parser_t *parser,int *lvl){  yaml_event_t    event;  int             storage = VAR; /* mapping cannot start with VAL definition w/o VAR key */  char            key[PETSC_MAX_PATH_LEN],option[PETSC_MAX_PATH_LEN],prefix[PETSC_MAX_PATH_LEN];  PetscErrorCode  ierr;  PetscFunctionBegin;  ierr = PetscSNPrintf(option,PETSC_MAX_PATH_LEN,"%s"," ");CHKERRQ(ierr);  do {    yaml_parser_parse(parser,&event);    /* Parse value either as a new leaf in the mapping */    /*  or as a leaf value (one of them, in case it's a sequence) */    switch (event.type) {      case YAML_SCALAR_EVENT:        if (storage) {          ierr = PetscSNPrintf(option,PETSC_MAX_PATH_LEN,"-%s %s",key,(char*)event.data.scalar.value);CHKERRQ(ierr);          ierr = PetscOptionsInsertString(option);CHKERRQ(ierr);        } else {          ierr = PetscStrncpy(key,(char*)event.data.scalar.value,event.data.scalar.length+1);CHKERRQ(ierr);        }        storage ^= VAL;           /* Flip VAR/VAL switch for the next event */        break;      case YAML_SEQUENCE_START_EVENT:        /* Sequence - all the following scalars will be appended to the last_leaf */        storage = SEQ;        SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP ,"Unable to open YAML option file: sequences not supported");        yaml_event_delete(&event);        break;      case YAML_SEQUENCE_END_EVENT:        storage = VAR;        yaml_event_delete(&event);        break;      case YAML_MAPPING_START_EVENT:        ierr = PetscSNPrintf(prefix,PETSC_MAX_PATH_LEN,"%s_",key);CHKERRQ(ierr);        if (*lvl > 0) {          ierr = PetscOptionsPrefixPush(prefix);CHKERRQ(ierr);        }        (*lvl)++;        ierr = PetscParseLayerYAML(parser,lvl);CHKERRQ(ierr);        (*lvl)--;        if (*lvl > 0) {          ierr = PetscOptionsPrefixPop();CHKERRQ(ierr);        }        storage ^= VAL;           /* Flip VAR/VAL, w/o touching SEQ */        yaml_event_delete(&event);        break;      default:        break;    }  }  while ((event.type != YAML_MAPPING_END_EVENT) && (event.type != YAML_STREAM_END_EVENT));  PetscFunctionReturn(0);}
开发者ID:fengyuqi,项目名称:petsc,代码行数:54,


示例17: YamlNode

YamlNode *YamlDocument::ParseYamlDoc(){	YamlNode *root = new YamlNode();	yaml_event_delete(&event);	do{		yaml_parser_parse(&parser, &event);		switch(event.type){		case YAML_STREAM_END_EVENT:		case YAML_DOCUMENT_END_EVENT:			return root;		case YAML_SEQUENCE_START_EVENT:			{				YamlSequence *v;				v = ParseYamlSequence();				root->addChild(reinterpret_cast<YamlNode *>(v));			}			break;		case YAML_SEQUENCE_END_EVENT:			break;		case YAML_MAPPING_START_EVENT:			{				YamlMapping *v;				v=ParseYamlMapping();				root->addChild(reinterpret_cast<YamlNode *>(v));			}			break;		case YAML_MAPPING_END_EVENT:			break;		case YAML_SCALAR_EVENT:			{				YamlScalar *v = new YamlScalar((char *)event.data.scalar.value );				root->addChild(reinterpret_cast<YamlNode *>(v));			}			break;		default:			std::cout << "FORMAT ERROR" << std::endl;			break;		}		if(event.type != YAML_DOCUMENT_END_EVENT){			yaml_event_delete(&event);		}	}while(event.type != YAML_DOCUMENT_END_EVENT);	yaml_event_delete(&event);	return root;}
开发者ID:s15mh218,项目名称:openrtm_tutorial,代码行数:52,


示例18: load_node

/* * This is the main function for dumping any node. */SV *load_node(perl_yaml_loader_t *loader){    /* Get the next parser event */    if (!yaml_parser_parse(&loader->parser, &loader->event))        goto load_error;    /* Return NULL when we hit the end of a scope */    if (loader->event.type == YAML_DOCUMENT_END_EVENT ||        loader->event.type == YAML_MAPPING_END_EVENT ||        loader->event.type == YAML_SEQUENCE_END_EVENT) return NULL;    /* Handle loading a mapping */    if (loader->event.type == YAML_MAPPING_START_EVENT) {        SV *hash_ref;        char *tag = (char *)loader->event.data.mapping_start.tag;        /* Handle mapping tagged as a Perl hard reference */        if (tag && strEQ(tag, TAG_PERL_REF))            return load_scalar_ref(loader);                /* Handle mapping tagged as a Perl typeglob */        if (tag && strEQ(tag, TAG_PERL_GLOB))            return load_glob(loader);        /* Load the mapping into a hash ref and return it */        return load_mapping(loader, NULL);    }    /* Handle loading a sequence into an array */    if (loader->event.type == YAML_SEQUENCE_START_EVENT)        return load_sequence(loader);    /* Handle loading a scalar */    if (loader->event.type == YAML_SCALAR_EVENT)        return load_scalar(loader);    /* Handle loading an alias node */    if (loader->event.type == YAML_ALIAS_EVENT)        return load_alias(loader);    /* Some kind of error occurred */    if (loader->event.type == YAML_NO_EVENT)        croak(loader_error_msg(loader, NULL));    croak(ERRMSG "Invalid event '%d' at top level", (int) loader->event.type);load_error:    croak(loader_error_msg(loader, NULL));}
开发者ID:tokuhirom,项目名称:yaml-libyaml-pm,代码行数:53,


示例19: event_iter

static intevent_iter (lua_State *L){   lyaml_parser *parser = (lyaml_parser *)lua_touserdata(L, lua_upvalueindex(1));   char *str;   parser_delete_event (parser);   if (yaml_parser_parse (&parser->parser, &parser->event) != 1)   {      parser_generate_error_message (parser);      return lua_error (L);   }   parser->validevent = 1;   lua_newtable    (L);   lua_pushliteral (L, "type");   switch (parser->event.type)   {      /* First the simple events, generated right here... */#define MENTRY(_s)		/      case YAML_##_s##_EVENT: parser_push_eventtable (parser, #_s, 0); break         MENTRY( STREAM_END	);         MENTRY( SEQUENCE_END   );         MENTRY( MAPPING_END	);#undef MENTRY      /* ...then the complex events, generated by a function call. */#define MENTRY(_s)		/      case YAML_##_s##_EVENT: parse_##_s (parser); break         MENTRY( STREAM_START	);         MENTRY( DOCUMENT_START	);         MENTRY( DOCUMENT_END	);         MENTRY( ALIAS		);         MENTRY( SCALAR		);         MENTRY( SEQUENCE_START	);         MENTRY( MAPPING_START	);#undef MENTRY      case YAML_NO_EVENT:         lua_pushnil (L);         break;      default:         lua_pushfstring  (L, "invalid event %d", parser->event.type);         return lua_error (L);   }   return 1;}
开发者ID:GUI,项目名称:lyaml,代码行数:50,


示例20: wb_expect_sequence

static boolwb_expect_sequence(wb_config_parser_state *state){	bool result = true;	if (!yaml_parser_parse(&(state->parser), &(state->event)))	{		state->done = true;		return true;	}	if (state->event.type != YAML_SEQUENCE_START_EVENT)		result = false;	yaml_event_delete(&(state->event));	return result;}
开发者ID:cybertec-postgresql,项目名称:walbouncer,代码行数:15,


示例21: parse_payload

/** * Parse a (possibly base64 encoded) payload and set it on * the `req`. * * It is assumed that the `parser` has just encountered a * YAML_SCALAR_EVENT whose value was either "payload" or * "payload64", and the next event will be a YAML_SCALAR_EVENT * representing the payload itself. * * Return 1 on error or 0 on success. */int parse_payload(yaml_parser_t* parser, yaml_event_t* event, request* req){    char* payload;    unsigned long rawlength;    yaml_event_t payload_event;    if (!yaml_parser_parse(parser, &payload_event))        return 1;    payload = (char *)payload_event.data.scalar.value;    // printf("raw payload: '%s'/n", payload_event.data.scalar.value);    rawlength = strlen(payload);    if (0 == strncmp("payload64", (const char*)event->data.scalar.value, 9)) {        unsigned long payload_length;        if (rawlength < 0 || rawlength % 4 != 0) {            fprintf(stderr, "base64-encoded POST payload length must be a positive multiple of 4 (was %lu)", rawlength);            yaml_event_delete(&payload_event);            return 1;        }        payload_length = rawlength / 4 * 3;        if (payload[rawlength - 1] == '=')            payload_length--;        if (payload[rawlength - 2] == '=')            payload_length--;        if (!(req->payload = malloc(sizeof(char) * (payload_length + 1)))) {            yaml_event_delete(&payload_event);            return 1;        }        req->payload[payload_length] = '/0';        base64_decodestate state;        base64_init_decodestate(&state);        base64_decode_block((const char*)payload_event.data.scalar.value, rawlength, req->payload, &state);        req->payload_length = payload_length;    } else {        if (!(req->payload = malloc(sizeof(char) * (rawlength + 1)))) {            yaml_event_delete(&payload_event);            return 1;        }        strcpy(req->payload, (const char*)payload_event.data.scalar.value);        req->payload_length = rawlength;    }    return 0;}
开发者ID:fijal,项目名称:wideload,代码行数:59,


示例22: conf_event_next

static rstatus_tconf_event_next(struct conf *cf){    int rv;    ASSERT(cf->valid_parser && !cf->valid_event);    rv = yaml_parser_parse(&cf->parser, &cf->event);    if (!rv) {        log_error("conf: failed (err %d) to get next event", cf->parser.error);        return NC_ERROR;    }    cf->valid_event = 1;    return NC_OK;}
开发者ID:adityashanbhag,项目名称:twemproxy,代码行数:16,


示例23: wb_read_string

static char*wb_read_string(wb_config_parser_state *state){	char *result;	if (!yaml_parser_parse(&(state->parser), &(state->event)))	{		state->done = true;		return 0;	}	if (state->event.type != YAML_SCALAR_EVENT)		error("Unexpected event type while parsing YAML");	else		result = wb_str_value(state);	yaml_event_delete(&(state->event));	return result;}
开发者ID:cybertec-postgresql,项目名称:walbouncer,代码行数:17,


示例24: fopen

boolYamlDocument::load(char *fname){		FILE *fh = fopen(fname, "rb");	if(fh == NULL){		std::cerr << "Fail to open file: " << fname <<  std::endl;		return false;	}	if(!yaml_parser_initialize(&parser)){		std::cerr << "Fail to initialize parser." << std::endl;		fclose(fh);		return false;	}	yaml_parser_set_input_file(&parser, fh);	do{		yaml_parser_parse(&parser, &event);		switch(event.type){		case YAML_STREAM_START_EVENT:			break;		case YAML_STREAM_END_EVENT:			break;		case YAML_DOCUMENT_START_EVENT:			root = ParseYamlDoc();			break;		case YAML_DOCUMENT_END_EVENT:			break;		default:			std::cerr << "YAML Format error." << std::endl;			break;		}		if(event.type != YAML_STREAM_END_EVENT){	  		yaml_event_delete(&event);		}	}while(event.type != YAML_STREAM_END_EVENT);	yaml_event_delete(&event);	yaml_parser_delete(&parser);	fclose(fh);	return (root != NULL);}
开发者ID:s15mh218,项目名称:openrtm_tutorial,代码行数:46,


示例25: wb_read_int

static intwb_read_int(wb_config_parser_state *state){	int result;	if (!yaml_parser_parse(&(state->parser), &(state->event)))	{		state->done = true;		return 0;	}	if (state->event.type != YAML_SCALAR_EVENT)		error("Unexpected event type while parsing YAML");	else		if (!wb_int_value(state, &result))			error("Invalid format for integer: '%s'", wb_str_value(state));	yaml_event_delete(&(state->event));	return result;}
开发者ID:cybertec-postgresql,项目名称:walbouncer,代码行数:18,


示例26: wb_expect_mapping_file

static boolwb_expect_mapping_file(wb_config_parser_state *state){	bool keep_scanning = true;	bool result = true;	while (keep_scanning)	{		if (!yaml_parser_parse(&(state->parser), &(state->event)))		{			state->done = true;			return true;		}		keep_scanning = (state->event.type == YAML_STREAM_START_EVENT ||						 state->event.type == YAML_DOCUMENT_START_EVENT);		result = (state->event.type == YAML_MAPPING_START_EVENT);		yaml_event_delete(&(state->event));	}	return result;}
开发者ID:cybertec-postgresql,项目名称:walbouncer,代码行数:19,


示例27: yaml_next_event

static boolyaml_next_event(rb_yaml_parser_t *parser){    if (NIL_P(parser->input)) {	rb_raise(rb_eRuntimeError, "input needed");    }    if (parser->event_valid) {	yaml_event_delete(&parser->event);	parser->event_valid = false;    }    if (yaml_parser_parse(&parser->parser, &parser->event) == 0) {	rb_exc_raise(rb_yaml_parser_generate_error(&parser->parser));	parser->event_valid = false;    }    else {	parser->event_valid = true;    }    return parser->event_valid;}
开发者ID:alloy,项目名称:MacRuby,代码行数:19,


示例28: wb_read_key

static char*wb_read_key(wb_config_parser_state *state){	char *result;	if (!yaml_parser_parse(&(state->parser), &(state->event)))	{		state->done = true;		return NULL;	}	if (state->event.type == YAML_MAPPING_END_EVENT)		result = NULL;	else if (state->event.type != YAML_SCALAR_EVENT)		error("Unexpected event type %d while parsing YAML", state->event.type);	else		result = wb_str_value(state);	yaml_event_delete(&(state->event));	return result;}
开发者ID:cybertec-postgresql,项目名称:walbouncer,代码行数:19,


示例29: wb_sequence_of_mappings

static boolwb_sequence_of_mappings(wb_config_parser_state *state){	bool result;	if (!yaml_parser_parse(&(state->parser), &(state->event)))	{		state->done = true;		return true;	}	if (state->event.type == YAML_MAPPING_START_EVENT)		result = true;	else if (state->event.type == YAML_SEQUENCE_END_EVENT)		result = false;	else		error("Items of sequence must be mappings, %d", state->event.type );	//log_debug2("Sequence of mappings, with %d, result %d", state->event.type, result);	yaml_event_delete(&(state->event));	return result;}
开发者ID:cybertec-postgresql,项目名称:walbouncer,代码行数:20,


示例30: wb_read_list_of_string

static voidwb_read_list_of_string(wb_config_parser_state *state, char ***list, int *n){	bool done = false;	if (!wb_expect_sequence(state))		error("Expecting a sequence of strings");	*n = 0;	while (!done)	{		if (!yaml_parser_parse(&(state->parser), &(state->event)))		{			state->done = true;			return;		}		if (state->event.type == YAML_SCALAR_EVENT)		{			if (*n)			{				*n += 1;				*list = rewballoc(*list, sizeof(char**)*(*n));			}			else			{				*n = 1;				*list = wballoc(sizeof(char**));			}			(*list)[*n-1] = wb_str_value(state);		}		else if (state->event.type == YAML_SEQUENCE_END_EVENT)		{			done = true;		}		else			error("Invalid value for a list of strings");		yaml_event_delete(&(state->event));	}}
开发者ID:cybertec-postgresql,项目名称:walbouncer,代码行数:40,



注:本文中的yaml_parser_parse函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ yaml_strdup函数代码示例
C++ yaml_parser_delete函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。