File: XMLLoads.h

package info (click to toggle)
sofa-framework 1.0~beta4-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 88,688 kB
  • ctags: 27,205
  • sloc: cpp: 151,126; ansic: 2,387; xml: 581; sh: 417; makefile: 67
file content (125 lines) | stat: -rw-r--r-- 3,428 bytes parent folder | download | duplicates (5)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/***************************************************************************
                          xmlloads.h  -  description
                             -------------------
    begin                : mar mar 4 2003
    copyright            : (C) 2003 by Emmanuel Promayon
    email                : Emmanuel.Promayon@imag.fr
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef XMLLOADS_H
#define XMLLOADS_H

#include "Loads.h"

#include <libxml/parser.h>
#include <libxml/tree.h>

/* old doc
Usage example:
<pre>
// reading
main() {
  XMLLoads data;
  data.xmlRead("toto.lml");
  Loads *l = data.getLoad();
  ...
  cout << l;
}
 
// writing
main() {
  Loads *l= new Loads();
  Translation *t = new Translation();
  t->setUnit(..)
  ...
  cout << l;
}
</pre>
*/

/** (obsolete) Allows to read loads from an XML file (LML)/
 *   
 *  Please use now Loads(std::string) constructor...
 *
 * 
  *@author Emmanuel Promayon
  *
  * $Revision: 51 $
  */
class XMLLoads {
public:

    /** create a list of loads from an LML file.
     * @param fileName the name of the lml file (xml)
     * @param allLoads the pointer to the Loads instance (to store all loads), if null a new one is instanciated
     */
    XMLLoads(std::string fileName, Loads* allLoads);

    /// create an empty list of loads
    XMLLoads();

    /// (obsolete) create a list of loads from an LML file (instanciate a new Loads class object)
    XMLLoads(std::string fileName);

    /// destructor (delete all loads)
    ~XMLLoads();

    /// get the list of loads
    Loads * getLoads();

    /// add a new load to the list (creates one if no loads yet)
    void addLoad(Load *);
    
    /** Read the loads from an LML file.
     *  Uses libxml2.
     */
    void xmlRead(std::string);

protected:

	/** Read a load xml element, from lml file
	 *  Uses xmlNodePtr from libxml2
     */
    bool parseElement(xmlNodePtr elem);

	/** Read a load AppliedTo property, from lml file
	 *  Uses xmlNodePtr from libxml2
	 *  AppliedTo contains the list of atoms on which the load is applied
     */
    void readLoadAppliedTo(xmlNodePtr elem, Load *currentLoad);

	/** Read a load Direction property, from lml file
	 *  Uses xmlNodePtr from libxml2
	 *  Direction contains a 3D vector
     */
    void readLoadDirection(xmlNodePtr elem, Load *currentLoad);

	/** Read a load valueEvent property, from lml file
	 *  Uses xmlNodePtr from libxml2
	 *  valueEvent contains a pair of date/value
     */
    void readLoadValueEvent(xmlNodePtr elem, Load *currentLoad);

	/** Read a load Unit property, from lml file
	 *  Uses xmlNodePtr from libxml2
	 *  Unit contains the unit value of the load
     */
    void readLoadUnit(xmlNodePtr elem, Load *currentLoad);


private:
    Loads *l;

	const char*xmlFile;
};

#endif