Exemplo n.º 1
0
void pf_list_move_list(PF_List *lst1, PF_List *lst2) {
    Node *curr = lst1->tail->next;
    while(curr != lst1->head) {
        pf_list_remove(lst1, curr);
        //printf("current list\n");
        //pf_list_print(lst1);
        
        //clone node
        //move next pointer
        //add clone to lst2
        //destroy node in memory
        Node* copy = node_clone(curr);
        node_destroy(curr);
        curr = NULL;
        curr = copy->next;
        //check to see if there is a duplicate
        //if there is a duplicate then choose the node with the lowest fscore
        Node *existing = pf_list_remove(lst2, copy);
        if(existing != NULL) {
            if(copy->F < existing->F) {
                pf_list_add(lst2, copy);
            } else {
                pf_list_add(lst2, existing);
            }
        } else {
            pf_list_add(lst2, copy);
        }
        
        //printf("open list\n");
        //pf_list_print(lst2);

        //TODO reference to tail points to lst2 after added 
    }
}
Exemplo n.º 2
0
static HRESULT WINAPI unknode_cloneNode(
    IXMLDOMNode *iface,
    VARIANT_BOOL pbool, IXMLDOMNode** outNode)
{
    unknode *This = unknode_from_IXMLDOMNode( iface );
    return node_clone(&This->node, pbool, outNode );
}
Exemplo n.º 3
0
static HRESULT WINAPI domtext_cloneNode(
    IXMLDOMText *iface,
    VARIANT_BOOL deep, IXMLDOMNode** outNode)
{
    domtext *This = impl_from_IXMLDOMText( iface );
    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
    return node_clone( &This->node, deep, outNode );
}
Exemplo n.º 4
0
static HRESULT WINAPI domcdata_cloneNode(
    IXMLDOMCDATASection *iface,
    VARIANT_BOOL deep, IXMLDOMNode** outNode)
{
    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
    return node_clone( &This->node, deep, outNode );
}
Exemplo n.º 5
0
Arquivo: pi.c Projeto: mikekap/wine
static HRESULT WINAPI dom_pi_cloneNode(
    IXMLDOMProcessingInstruction *iface,
    VARIANT_BOOL deep, IXMLDOMNode** outNode)
{
    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
    return node_clone( &This->node, deep, outNode );
}
Exemplo n.º 6
0
static HRESULT WINAPI entityref_cloneNode(
    IXMLDOMEntityReference *iface,
    VARIANT_BOOL deep, IXMLDOMNode** outNode)
{
    entityref *This = impl_from_IXMLDOMEntityReference( iface );
    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
    return node_clone( &This->node, deep, outNode );
}
Exemplo n.º 7
0
static tree_node_base*
node_clone(tree_node_base* node, tree_node_base* parent, size_t node_size,
	   dict_key_datum_clone_func clone_func)
{
    if (!node)
	return NULL;
    tree_node_base* clone = MALLOC(node_size);
    if (!clone)
	return NULL;
    memcpy(clone, node, node_size);
    if (clone_func)
	clone_func(&clone->key, &clone->datum);
    clone->parent = parent;
    clone->llink = node_clone(node->llink, clone, node_size, clone_func);
    clone->rlink = node_clone(node->rlink, clone, node_size, clone_func);
    return clone;
}
Exemplo n.º 8
0
void*
tree_clone(void* tree, size_t tree_size, size_t node_size,
	   dict_key_datum_clone_func clone_func)
{
    ASSERT(tree_size >= sizeof(tree_base));
    ASSERT(node_size >= sizeof(tree_node_base));

    tree_base* clone = MALLOC(tree_size);
    if (clone) {
	memcpy(clone, tree, tree_size);
	clone->root = node_clone(((tree_base*)tree)->root, NULL, node_size,
				 clone_func);
    }
    return clone;
}