Пример #1
0
static void JSNode_finalize(JSObjectRef object)
{
    Node* node = JSObjectGetPrivate(object);
    ASSERT(node);

    Node_deref(node);
}
Пример #2
0
extern void NodeList_deref(NodeList* nodeList)
{
    if (--nodeList->refCount == 0) {
        Node_deref(nodeList->parentNode);
        free(nodeList);
    }
}
Пример #3
0
void Node_replaceChild(Node* node, Node* newChild, Node* oldChild)
{
    /* Linear search from tail -- good enough for our purposes here */
    NodeLink* current;
    for (current = node->childNodesTail; current; current = current->prev) {
        if (current->node == oldChild) {
            Node_deref(current->node);
            current->node = newChild;
        }
    }
}
Пример #4
0
void Node_removeChild(Node* node, Node* child)
{
    /* Linear search from tail -- good enough for our purposes here */
    NodeLink* current;
    NodeLink** currentHandle;
    for (currentHandle = &node->childNodesTail, current = *currentHandle; current; currentHandle = &current->prev, current = *currentHandle) {
        if (current->node == child) {
            Node_deref(current->node);
            *currentHandle = current->prev;
            free(current);
            break;
        }
    }
}