1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
/* -*- mode: c++ -*-
*/
/*
GIFT, a flexible content based image retrieval system.
Copyright (C) 1998, 1999, 2000, 2001, 2002, CUI University of Geneva
Copyright (C) 2003, 2004 Bayreuth University
2005 Bamberg University
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _CATTRIBUTELIST
#define _CATTRIBUTELIST
#include "libMRML/include/uses-declarations.h"
#include <map>
#include <list>
#include <string>
#include "libMRML/include/CMagic.h"
//#define _PRINTOUTS_AL
/** a simple class destined to contain attribute-value pairs in an
easily accessible fashion */
class CAttributeList:public map<string,pair<char*,char*> >,public CMagic{
public:
/** */
void check()const;
/** Get the keys of all attributes in this list*/
list<string> getKeys()const;
/** */
typedef map<string,pair<char*,char*> > CBase;
/** from expat */
CAttributeList(const char* const * const inAttributeList);
/** from other c++ */
CAttributeList(const list<pair <string,string> >& inAttributes);
/** copy constructor */
CAttributeList(const CAttributeList& inList);
/** finding in this*/
const_iterator find(string inString)const;
/** adding an attribute */
void add(const string& inFirst,
const string& inSecond);
/** adding an attribute for integers using the function for strings */
void add(const string& inAttribute,long inValue);
/** adding an attribute for doubles using using the function for strings */
void add(const string& inAttribute,double inValue);
/** reading an attribute for booleans using stringReadAttribute
it supports several pairs:
yes/no
true/false
y/n
*/
pair<bool,bool> boolReadAttribute(const string& inAttribute)const;
/** reading an attribute for integers using stringReadAttribute */
pair<bool,long> longReadAttribute(const string& inAttribute)const;
/** reading an attribute for doubles using stringReadAttribute */
pair<bool,double> doubleReadAttribute(const string& inAttribute)const;
/** reading an attribute for strings
All the attribute functions implement a primitive version
of inheritance: We look also at the parents of this, if we
do not find a given attribute in this.
this is virtual in order to plug in other methods of inheritance
*/
virtual pair<bool,string> stringReadAttribute(const string& inAttribute)const;
/** Outputting a string to XML
*/
void toXML(string& outString)const;
/** the destructor
in the case of char* as content it deletes the arrays of char.
*/
~CAttributeList();
};
#endif
|