* MapCodeGenerator.cs: Added helper method for generating an attribute
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / XmlMemberMapping.cs
1 // 
2 // System.Xml.Serialization.XmlMemberMapping
3 //
4 // Author:
5 //   Tim Coleman (tim@timcoleman.com)
6 //   Lluis Sanchez Gual (lluis@ximian.com)
7 //
8 // Copyright (C) Tim Coleman, 2002
9 //
10
11 namespace System.Xml.Serialization 
12 {
13         public class XmlMemberMapping {
14
15                 XmlTypeMapMember _mapMember;
16                 string _elementName;
17                 string _memberName;
18                 string _namespace;
19                 string _typeNamespace;
20
21                 internal XmlMemberMapping (string memberName, string defaultNamespace, XmlTypeMapMember mapMem, bool encodedFormat)
22                 {
23                         _mapMember = mapMem;
24                         _memberName = memberName;
25
26                         if (mapMem is XmlTypeMapMemberAnyElement)
27                         {
28                                 XmlTypeMapMemberAnyElement anyelem = (XmlTypeMapMemberAnyElement) mapMem;
29                                 XmlTypeMapElementInfo info = (XmlTypeMapElementInfo) anyelem.ElementInfo[anyelem.ElementInfo.Count-1];
30                                 _elementName = info.ElementName;
31                                 _namespace = info.Namespace;
32                                 if (info.MappedType != null) _typeNamespace = info.MappedType.Namespace;
33                                 else _typeNamespace = "";
34                         }
35                         else if (mapMem is XmlTypeMapMemberElement)
36                         {
37                                 XmlTypeMapElementInfo info = (XmlTypeMapElementInfo) ((XmlTypeMapMemberElement)mapMem).ElementInfo[0];
38                                 _elementName = info.ElementName;
39                                 if (encodedFormat)
40                                 {
41                                         _namespace = defaultNamespace;
42                                         if (info.MappedType != null) _typeNamespace = "";
43                                         else _typeNamespace = info.DataTypeNamespace;
44                                 }
45                                 else
46                                 {
47                                         _namespace = info.Namespace;
48                                         if (info.MappedType != null) _typeNamespace = info.MappedType.Namespace;
49                                         else _typeNamespace = "";
50                                 }
51                         }
52                         else
53                         {
54                                 _elementName = _memberName;
55                                 _namespace = "";
56                         }
57                 }
58
59                 #region Properties
60
61                 public bool Any {
62                         get { return _mapMember is XmlTypeMapMemberAnyElement; }
63                 }
64
65                 public string ElementName {     
66                         get { return _elementName; }
67                 }
68
69                 public string MemberName {      
70                         get { return _memberName; }
71                 }
72
73                 public string Namespace {
74                         get { return _namespace; }
75                 }
76
77                 public string TypeFullName {
78                         get { return _mapMember.TypeData.FullTypeName; }
79                 }
80
81                 public string TypeName {
82                         get { return _mapMember.TypeData.XmlType; }
83                 }
84
85                 public string TypeNamespace {
86                         get { return _typeNamespace; }
87                 }
88
89                 internal XmlTypeMapMember TypeMapMember {
90                         get { return _mapMember; }
91                 }
92
93                 #endregion // Properties
94         }
95 }