⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodelist.c

📁 Upnp开发包文件
💻 C
字号:
/////////////////////////////////////////////////////////////////////////////// Copyright (c) 2000-2003 Intel Corporation // All rights reserved. //// Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: //// * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither name of Intel Corporation nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission.// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE./////////////////////////////////////////////////////////////////////////////#include "ixmlparser.h"/*================================================================*   ixmlNodeList_init*       initializes a nodelist *       External function.**=================================================================*/voidixmlNodeList_init( IXML_NodeList * nList ){    assert( nList != NULL );    memset( nList, 0, sizeof( IXML_NodeList ) );}/*================================================================*   ixmlNodeList_item*       Returns the indexth item in the collection. If index is greater*       than or equal to the number of nodes in the list, this returns *       null.*       External function.**=================================================================*/IXML_Node *ixmlNodeList_item( IXML_NodeList * nList,                   unsigned long index ){    IXML_NodeList *next;    unsigned int i;    // if the list ptr is NULL    if( nList == NULL ) {        return NULL;    }    // if index is more than list length    if( index > ixmlNodeList_length( nList ) - 1 ) {        return NULL;    }    next = nList;    for( i = 0; i < index && next != NULL; ++i ) {        next = next->next;    }    return next->nodeItem;}/*================================================================*   ixmlNodeList_addToNodeList*       Add a node to nodelist*       Internal to parser only.**=================================================================*/intixmlNodeList_addToNodeList( IN IXML_NodeList ** nList,                            IN IXML_Node * add ){    IXML_NodeList *traverse,     *p = NULL;    IXML_NodeList *newListItem;    assert( add != NULL );    if( add == NULL ) {        return IXML_FAILED;    }    if( *nList == NULL )        // nodelist is empty    {        *nList = ( IXML_NodeList * ) malloc( sizeof( IXML_NodeList ) );        if( *nList == NULL ) {            return IXML_INSUFFICIENT_MEMORY;        }        ixmlNodeList_init( *nList );    }    if( ( *nList )->nodeItem == NULL ) {        ( *nList )->nodeItem = add;    } else {        traverse = *nList;        while( traverse != NULL ) {            p = traverse;            traverse = traverse->next;        }        newListItem =            ( IXML_NodeList * ) malloc( sizeof( IXML_NodeList ) );        if( newListItem == NULL ) {            return IXML_INSUFFICIENT_MEMORY;        }        p->next = newListItem;        newListItem->nodeItem = add;        newListItem->next = NULL;    }    return IXML_SUCCESS;}/*================================================================*   ixmlNodeList_length*       Returns the number of nodes in the list.  The range of valid*       child node indices is 0 to length-1 inclusive.*       External function.       **=================================================================*/unsigned longixmlNodeList_length( IN IXML_NodeList * nList ){    IXML_NodeList *list;    unsigned long length = 0;    list = nList;    while( list != NULL ) {        ++length;        list = list->next;    }    return length;}/*================================================================*   ixmlNodeList_free*       frees a nodeList*       External function*       *=================================================================*/voidixmlNodeList_free( IN IXML_NodeList * nList ){    IXML_NodeList *next;    while( nList != NULL ) {        next = nList->next;        free( nList );        nList = next;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -