source: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/IXMLLight.h @ 88

Last change on this file since 88 was 88, checked in by rosiere, 16 years ago

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 2.8 KB
Line 
1#ifndef _XMLLIGHT_H
2#define _XMLLIGHT_H
3
4#include <string>
5#include <map>
6#include "Behavioural/include/ClassicReferenceCounter.h"
7#include "Behavioural/include/XMLLightVector.h"
8
9using std::map;
10using std::basic_string;
11using morpheo::ReferenceCountersUtils::ClassicReferenceCounter;
12
13namespace morpheo {
14        namespace XMLUtils {
15       
16        //*******************************Class Declaration***************************************************//
17
18                enum ETEXT_ENCODING {
19                        ASCII, 
20                        UTF8,
21                        UTF16,
22                        // UTF16_LE,
23                        // UTF16_BE,
24                        UTF32
25                };
26
27
28                // the main interface for XML parsing used a reference counter class to implement ref counting
29
30                template< typename char_type, typename ReferenceCounter = ClassicReferenceCounter> class IXMLLight 
31                        : virtual public ReferenceCounter {
32                protected :
33                        typedef IXMLLight<char_type, ReferenceCounter> XMLLight;
34                        typedef basic_string<char_type> string;
35                public :
36                        // used to fetch XML Nodes contains inside a XMLLight object with the pattern name     
37                        virtual XMLLightVector<XMLLight> getNodes( const string & pattern = "") = 0;
38                        //virtual XMLLight & getFirstNode ( const string & pattern ) = 0 ;
39                        //virtual XMLLight & getRoot ( void ) = 0 ;
40                       
41                        // fetch the name of tne node selected
42                        virtual basic_string<char_type> getName ( void ) = 0 ; 
43                        // fetch the encoding used inside the XML document.
44                        //virtual ETEXT_ENCODING getEncodingForm ( void ) = 0;
45
46                        /*     
47                        virtual string &   getValue ( void ) = 0 ;
48                        virtual string & getValue ( const string & firstNodeName ) = 0 ;
49                        */
50                        virtual bool containsAttribute ( const basic_string<char_type> & attributeName ) = 0 ;
51                       
52                        virtual map<basic_string<char_type>, basic_string<char_type> > getAttributes ( void ) = 0 ; 
53
54                        virtual basic_string<char_type> getAttributeValue ( const basic_string<char_type> & attributeName ) = 0;
55                        virtual basic_string<char_type> getInternalString(void) const = 0 ;                                             
56                        // only instanciated to bring a virtual destructor.
57                        virtual inline ~IXMLLight( void ) = 0 ; 
58                       
59                };
60
61        //*************************************Inline implementation*****************************************//
62
63                // implementation of XMLLight virtual destructor.
64                template<typename char_type,typename ReferenceCounter> IXMLLight<char_type, ReferenceCounter>::~IXMLLight(void) {} 
65
66        //******************************** Typedef of multiple XMLLight Interface**********************//
67
68        // valid with 32 bits computer only . don't forget use of widen to widening string
69
70        typedef IXMLLight<char   , ClassicReferenceCounter> IXMLLightASCII;
71        typedef IXMLLight<wchar_t, ClassicReferenceCounter> IXMLLightUTF8;
72        typedef IXMLLight<wchar_t, ClassicReferenceCounter> IXMLLightUTF16;
73        typedef IXMLLight<wchar_t, ClassicReferenceCounter> IXMLLightUTF32;
74
75
76        } // end of XMLUtils namespace.
77} // end of morpheo namespace.
78
79#endif // _XMLLIGHT_H
Note: See TracBrowser for help on using the repository browser.