File: CAttributeList.h

package info (click to toggle)
gnuift 0.1.14%2Bds-1
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 5,632 kB
  • ctags: 2,973
  • sloc: cpp: 15,867; sh: 8,281; ansic: 1,812; perl: 1,007; php: 651; makefile: 483; lisp: 344
file content (88 lines) | stat: -rw-r--r-- 3,273 bytes parent folder | download
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