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

📄 namednodemap.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"/*================================================================*   NamedNodeMap_getItemNumber*       return the item number of a item in NamedNodeMap.*       Internal to parser only.*   Parameters:*       name: the name of the item to find*   *=================================================================*/unsigned longixmlNamedNodeMap_getItemNumber( IN IXML_NamedNodeMap * nnMap,                                IN char *name ){    IXML_Node *tempNode;    unsigned long returnItemNo = 0;    assert( nnMap != NULL && name != NULL );    if( ( nnMap == NULL ) || ( name == NULL ) ) {        return IXML_INVALID_ITEM_NUMBER;    }    tempNode = nnMap->nodeItem;    while( tempNode != NULL ) {        if( strcmp( name, tempNode->nodeName ) == 0 ) {            return returnItemNo;        }        tempNode = tempNode->nextSibling;        returnItemNo++;    }    return IXML_INVALID_ITEM_NUMBER;}/*================================================================*   NamedNodeMap_init*       Initializes a NamedNodeMap object.*       External function.**=================================================================*/voidixmlNamedNodeMap_init( IN IXML_NamedNodeMap * nnMap ){    assert( nnMap != NULL );    memset( nnMap, 0, sizeof( IXML_NamedNodeMap ) );}/*================================================================*   NamedNodeMap_getNamedItem*       Retrieves a node specified by name.*       External function.**   Parameter:*       name: type nodeName of a node to retrieve.**   Return Value:*       A Node with the specified nodeName, or null if it*       does not identify any node in this map.**=================================================================*/IXML_Node *ixmlNamedNodeMap_getNamedItem( IN IXML_NamedNodeMap * nnMap,                               IN char *name ){    long index;    if( ( nnMap == NULL ) || ( name == NULL ) ) {        return NULL;    }    index = ixmlNamedNodeMap_getItemNumber( nnMap, name );    if( index == IXML_INVALID_ITEM_NUMBER ) {        return NULL;    } else {        return ( ixmlNamedNodeMap_item( nnMap, ( unsigned long )index ) );    }}/*================================================================*   NamedNodeMap_item*       Returns the indexth item in the map. If index is greater than or*       equal to the number of nodes in this map, this returns null.*       External function.**   Parameter:*       index: index into this map.**   Return Value:*       The node at the indexth position in the map, or null if that is*       not a valid index.**=================================================================*/IXML_Node *ixmlNamedNodeMap_item( IN IXML_NamedNodeMap * nnMap,                       IN unsigned long index ){    IXML_Node *tempNode;    unsigned int i;    if( nnMap == NULL ) {        return NULL;    }    if( index > ixmlNamedNodeMap_getLength( nnMap ) - 1 ) {        return NULL;    }    tempNode = nnMap->nodeItem;    for( i = 0; i < index && tempNode != NULL; ++i ) {        tempNode = tempNode->nextSibling;    }    return tempNode;}/*================================================================*   NamedNodeMap_getLength	*       Return the number of Nodes in this map.       *       External function.*   *   Parameters:**=================================================================*/unsigned longixmlNamedNodeMap_getLength( IN IXML_NamedNodeMap * nnMap ){    IXML_Node *tempNode;    unsigned long length = 0;    if( nnMap != NULL ) {        tempNode = nnMap->nodeItem;        for( length = 0; tempNode != NULL; ++length ) {            tempNode = tempNode->nextSibling;        }    }    return length;}/*================================================================*   ixmlNamedNodeMap_free*       frees a NamedNodeMap.*       External function.**=================================================================*/voidixmlNamedNodeMap_free( IXML_NamedNodeMap * nnMap ){    IXML_NamedNodeMap *pNext;    while( nnMap != NULL ) {        pNext = nnMap->next;        free( nnMap );        nnMap = pNext;    }}/*================================================================*   NamedNodeMap_addToNamedNodeMap*       add a node to a NamedNodeMap.*       Internal to parser only.*   Parameters:*       add: the node to add into NamedNodeMap.*   Return:*       IXML_SUCCESS or failure.**=================================================================*/intixmlNamedNodeMap_addToNamedNodeMap( IN IXML_NamedNodeMap ** nnMap,                                    IN IXML_Node * add ){    IXML_NamedNodeMap *traverse = NULL,     *p = NULL;    IXML_NamedNodeMap *newItem = NULL;    if( add == NULL ) {        return IXML_SUCCESS;    }    if( *nnMap == NULL )        // nodelist is empty    {        *nnMap =            ( IXML_NamedNodeMap * ) malloc( sizeof( IXML_NamedNodeMap ) );        if( *nnMap == NULL ) {            return IXML_INSUFFICIENT_MEMORY;        }        ixmlNamedNodeMap_init( *nnMap );    }    if( ( *nnMap )->nodeItem == NULL ) {        ( *nnMap )->nodeItem = add;    } else {        traverse = *nnMap;        p = traverse;        while( traverse != NULL ) {            p = traverse;            traverse = traverse->next;        }        newItem =            ( IXML_NamedNodeMap * ) malloc( sizeof( IXML_NamedNodeMap ) );        if( newItem == NULL ) {            return IXML_INSUFFICIENT_MEMORY;        }        p->next = newItem;        newItem->nodeItem = add;        newItem->next = NULL;    }    return IXML_SUCCESS;}

⌨️ 快捷键说明

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