WvStreams
|
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- 00002 * 00003 * XPLC - Cross-Platform Lightweight Components 00004 * Copyright (C) 2004, Net Integration Technologies, Inc. 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public License 00008 * as published by the Free Software Foundation; either version 2.1 of 00009 * the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, but 00012 * WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00019 * USA 00020 */ 00021 00022 #include <xplc/utils.h> 00023 #include "catiter.h" 00024 00025 UUID_MAP_BEGIN(CategoryIterator) 00026 UUID_MAP_ENTRY(IObject) 00027 UUID_MAP_ENTRY(ICategoryIterator) 00028 UUID_MAP_END 00029 00030 CategoryIterator::CategoryIterator(ICategory* aCategory, 00031 CategoryEntryNode* aEntries): 00032 category(aCategory), 00033 current(aEntries) { 00034 /* 00035 * Prevent the category from dying, which in turn prevents the 00036 * category manager from dying (which would free the list). 00037 */ 00038 category->addRef(); 00039 } 00040 00041 const UUID& CategoryIterator::getUuid() { 00042 if(current) 00043 return current->entry; 00044 00045 return UUID_null; 00046 } 00047 00048 const char* CategoryIterator::getString() { 00049 if(current) 00050 return current->str; 00051 00052 return 0; 00053 } 00054 00055 void CategoryIterator::next() { 00056 if(current) 00057 current = current->next; 00058 } 00059 00060 bool CategoryIterator::done() { 00061 return current == 0; 00062 } 00063 00064 CategoryIterator::~CategoryIterator() { 00065 category->release(); 00066 } 00067