📄 namednodemap.c
字号:
/////////////////////////////////////////////////////////////////////////////// Copyright (c) 2000 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./////////////////////////////////////////////////////////////////////////////// $Revision: 1.1.2.6 $// $Date: 2004/08/16 03:17:47 $#include "../../inc/tools/config.h"#if EXCLUDE_DOM == 0#include "../../inc/upnpdom/NamedNodeMap.h"#include "../../inc/upnpdom/Node.h"#include "../../inc/upnpdom/NodeAct.h"struct strNode *NamedNodeMap_getNamedItem(NamedNodeMap *pNamedNodeMap, char *name){ long index; index=NamedNodeMap_getItemNumber(pNamedNodeMap, name); if(index== -1) { struct strNode *ReturnNode; ReturnNode = (struct strNode *) malloc(sizeof(struct strNode) + 1); if(!ReturnNode) {DBGONLY(UpnpPrintf(UPNP_CRITICAL,DOM,__FILE__,__LINE__,"Insuffecient memory\n");)} ReturnNode->nact=NULL; ReturnNode->ownerNode=ReturnNode; return ReturnNode; } else return(NamedNodeMap_item(pNamedNodeMap, (unsigned long)index));}long NamedNodeMap_getItemNumber(NamedNodeMap *pNamedNodeMap, char *name){ struct strNodeAct *n; unsigned int returnItemNo=0; n=pNamedNodeMap->ofWho->nact->FirstAttr; while(n!=NULL) { if(!strcmp(name, n->NA_NodeName)) return returnItemNo; n = n->NextSibling; returnItemNo++; } return -1;}struct strNode *NamedNodeMap_item(NamedNodeMap *pNamedNodeMap, unsigned long index){ unsigned int i; struct strNodeAct *n; struct strNode *ReturnNode;// Node ReturnNode; if(index > NamedNodeMap_getLength(pNamedNodeMap)-1) { ReturnNode = (struct strNode *) malloc (sizeof(struct strNode) + 1); if(!ReturnNode) {DBGONLY(UpnpPrintf(UPNP_CRITICAL,DOM,__FILE__,__LINE__,"Insuffecient memory\n");)} ReturnNode->nact=NULL; ReturnNode->ownerNode=ReturnNode; return ReturnNode; } n=pNamedNodeMap->ofWho->nact->FirstAttr; for(i=0; i<index && n!=NULL; ++i) n = n->NextSibling; ReturnNode = (struct strNode *) malloc (sizeof(struct strNode) + 1); if(!ReturnNode) {DBGONLY(UpnpPrintf(UPNP_CRITICAL,DOM,__FILE__,__LINE__,"Insuffecient memory\n");)} ReturnNode->ownerNode=ReturnNode; ReturnNode->nact = n; n->RefCount++; return ReturnNode;}unsigned long NamedNodeMap_getLength(NamedNodeMap *pNamedNodeMap){ struct strNodeAct *n; unsigned long length=0; n=pNamedNodeMap->ofWho->nact->FirstAttr; for(length=0; n!=NULL; ++length, n=n->NextSibling); return length;}void NamedNodeMap_deleteNamedNodeMap(NamedNodeMap *pNamedNodeMap){ free(pNamedNodeMap->ownerNamedNodeMap);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -