コード例 #1
0
ファイル: parse.c プロジェクト: craigbarnes/lua-gumbo
static void push_node(lua_State *L, const GumboNode *node) {
    luaL_checkstack(L, 10, "Unable to allocate Lua stack space");
    switch (node->type) {
    case GUMBO_NODE_ELEMENT: {
        const GumboElement *element = &node->v.element;
        lua_createtable(L, 0, 7);
        set_tag(L, element);
        set_sourcepos(L, element->start_pos);
        if (node->parse_flags != GUMBO_INSERTION_NORMAL) {
            set_integer(L, "parseFlags", node->parse_flags);
        }
        set_attributes(L, &element->attributes);
        set_children(L, &element->children, 1);
        setmetatable(L, Element);
        return;
    }
    case GUMBO_NODE_TEMPLATE: {
        const GumboElement *element = &node->v.element;
        lua_createtable(L, 0, 8);
        set_literal(L, "localName", "template");
        set_sourcepos(L, element->start_pos);
        set_attributes(L, &element->attributes);
        lua_createtable(L, 0, 0);
        setmetatable(L, NodeList);
        lua_setfield(L, -2, "childNodes");
        lua_createtable(L, 0, 1);
        set_children(L, &element->children, 1);
        setmetatable(L, DocumentFragment);
        lua_setfield(L, -2, "content");
        setmetatable(L, Element);
        return;
    }
    case GUMBO_NODE_TEXT:
        create_text_node(L, &node->v.text, Text);
        return;
    case GUMBO_NODE_WHITESPACE:
        create_text_node(L, &node->v.text, Text);
        set_literal(L, "type", "whitespace");
        return;
    case GUMBO_NODE_COMMENT:
        create_text_node(L, &node->v.text, Comment);
        return;
    case GUMBO_NODE_CDATA:
        create_text_node(L, &node->v.text, Text);
        set_literal(L, "type", "cdata");
        return;
    default:
        luaL_error(L, "GumboNodeType value out of bounds: %d", node->type);
        return;
    }
}
コード例 #2
0
ファイル: revision.c プロジェクト: Inkdit/git
int prepare_revision_walk(struct rev_info *revs)
{
	int nr = revs->pending.nr;
	struct object_array_entry *e, *list;

	e = list = revs->pending.objects;
	revs->pending.nr = 0;
	revs->pending.alloc = 0;
	revs->pending.objects = NULL;
	while (--nr >= 0) {
		struct commit *commit = handle_commit(revs, e->item, e->name);
		if (commit) {
			if (!(commit->object.flags & SEEN)) {
				commit->object.flags |= SEEN;
				insert_by_date(commit, &revs->commits);
			}
		}
		e++;
	}
	free(list);

	if (revs->no_walk)
		return 0;
	if (revs->limited)
		if (limit_list(revs) < 0)
			return -1;
	if (revs->topo_order)
		sort_in_topological_order(&revs->commits, revs->lifo);
	if (revs->simplify_merges)
		simplify_merges(revs);
	if (revs->children.name)
		set_children(revs);
	return 0;
}
コード例 #3
0
ファイル: tree_compare.c プロジェクト: wrpaape/algorithms
struct BTree *init_tree5(void)
{
	struct BTreeNode *nodes[5];

	init_nodes(&nodes[0], 5);

	set_children(nodes[0], nodes[1], nodes[2]);
	set_children(nodes[1], nodes[3], nodes[4]);
	set_children(nodes[2], NULL,	 NULL);
	set_children(nodes[3], NULL,	 NULL);
	set_children(nodes[4], NULL,	 NULL);

	return build_tree("Binary Tree 5",
			  "        ┌────── 0 ──────┐\n"
			  "┌────── 1 ──────┐       2\n"
			  "3               4",
			  "5", "3", nodes[0]);
}
コード例 #4
0
ファイル: parse.c プロジェクト: craigbarnes/lua-gumbo
static int push_document(lua_State *L) {
    const GumboDocument *document = lua_touserdata(L, 1);
    lua_createtable(L, 0, 4);
    if (document->has_doctype) {
        set_integer(L, "quirksModeEnum", document->doc_type_quirks_mode);
        set_children(L, &document->children, 2);
        lua_getfield(L, -1, "childNodes");
        lua_createtable(L, 0, 3); // doctype
        set_string(L, "name", document->name);
        set_string(L, "publicId", document->public_identifier);
        set_string(L, "systemId", document->system_identifier);
        setmetatable(L, DocumentType);
        lua_rawseti(L, -2, 1); // childNodes[1] = doctype
        lua_pop(L, 1);
    } else {
        set_children(L, &document->children, 1);
    }
    setmetatable(L, Document);
    return 1;
}
コード例 #5
0
 expr_ptr insert_child( expr_ptr node_to_insert, Lexer & lex, Lexer::token_type & token )
 {
     auto curr_ptr = node_to_insert;
     if( curr_ptr ){
         for( size_t i = 0; i != curr_ptr->num_children(); ++i ){
             update_current_token( lex, token );
             node_to_insert = convert_token_to_expression( token );
             curr_ptr->set_children( i, insert_child( node_to_insert, lex, token ) );
         }
     }
     return curr_ptr;
 }
コード例 #6
0
void QObjectBrowserControl::set_object(QObject *obj_in) {
    if (m_obj) {
        disconnect(m_obj,SIGNAL(destroyed()),this,SLOT(on_object_destroyed()));
    }
    m_obj=obj_in;

    clear();

    if (!m_obj) return;

    connect(m_obj,SIGNAL(destroyed()),this,SLOT(on_object_destroyed()));

    const QMetaObject *metaobj=m_obj->metaObject();
    if (!metaobj) return;
    ui->class_name->setText(metaobj->className());
    if (metaobj->superClass())
        ui->base_class_name->setText(metaobj->superClass()->className());
    else
        ui->base_class_name->setText("");

    if (m_obj->parent())
        ui->parent_button->setEnabled(true);
    else
        ui->parent_button->setEnabled(false);
    if ((m_obj->parent())&&(m_obj->parent()->metaObject()))
        ui->parent_class_name->setText(m_obj->parent()->metaObject()->className());
    else
        ui->parent_class_name->setText("");

    set_children();
    set_properties();
    set_signals();
    set_slots();
    set_methods();

    emit object_changed(m_obj);
}
コード例 #7
0
ファイル: tree_compare.c プロジェクト: wrpaape/algorithms
struct BTree *init_tree7(void)
{
	struct BTreeNode *nodes[6];

	init_nodes(&nodes[0], 6ul);

	set_children(nodes[0], nodes[2], nodes[1]);
	set_children(nodes[1], nodes[4], nodes[3]);
	set_children(nodes[2], NULL,	 NULL);
	set_children(nodes[3], NULL,	 NULL);
	set_children(nodes[4], NULL,	 nodes[5]);
	set_children(nodes[5], NULL,	 NULL);

	return build_tree("Binary Tree 7",
			  "        ┌────── 0 ──────┐\n"
			  "        2       ┌────── 1 ──────┐\n"
			  "                4 ──────┐       3\n"
			  "                        5",
			  "6", "4", nodes[0]);
}
コード例 #8
0
ファイル: tree_compare.c プロジェクト: wrpaape/algorithms
struct BTree *init_tree2(void)
{
	struct BTreeNode *nodes[6];

	init_nodes(&nodes[0], 6ul);

	set_children(nodes[0], nodes[2], nodes[1]);
	set_children(nodes[1], NULL,	 NULL);
	set_children(nodes[2], nodes[3], nodes[4]);
	set_children(nodes[3], NULL,	 NULL);
	set_children(nodes[4], nodes[5], NULL);
	set_children(nodes[5], NULL,	 NULL);

	return build_tree("Binary Tree 2",
			  "        ┌────── 0 ──────┐\n"
			  "┌────── 2 ──────┐       1\n"
			  "3       ┌────── 4\n"
			  "        5",
			  "6", "4", nodes[0]);
}
コード例 #9
0
ファイル: code_node.cpp プロジェクト: dzharkov/huffman
code_node::code_node(code_node* l, code_node* r) {
    init();
    set_children(l, r);
}