Welcome to mirror list, hosted at ThFree Co, Russian Federation.

SchemaDeclBase.cs « Schema « Xml « System « System.Xml « referencesource « class « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 65c11d09ccd8f5531dee73ae9e05c97a9a8a34d5 (plain)
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
126
127
//------------------------------------------------------------------------------
// <copyright file="SchemaDeclBase.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright> 
// <owner current="true" primary="true">[....]</owner>                                                               
//------------------------------------------------------------------------------

namespace System.Xml.Schema {

    using System.Collections.Generic;
    using System.Diagnostics;

    internal abstract class SchemaDeclBase {
        internal enum Use {
            Default,
            Required,
            Implied,
            Fixed,
            RequiredFixed
        };

        protected XmlQualifiedName  name = XmlQualifiedName.Empty;
        protected string            prefix;
        protected bool isDeclaredInExternal = false;
        protected Use               presence;     // the presence, such as fixed, implied, etc

#if !SILVERLIGHT
        protected XmlSchemaType     schemaType;
        protected XmlSchemaDatatype datatype;

        protected string            defaultValueRaw;       // default value in its original form
        protected object            defaultValueTyped;       

        protected long               maxLength; // dt:maxLength
        protected long               minLength; // dt:minLength

        protected List<string> values;    // array of values for enumerated and notation types
#endif

        protected SchemaDeclBase(XmlQualifiedName name, string prefix) {
            this.name = name;
            this.prefix = prefix;
#if !SILVERLIGHT
            maxLength = -1;
            minLength = -1;
#endif
        }

#if !SILVERLIGHT
        protected SchemaDeclBase() {
        }
#endif

        internal XmlQualifiedName Name {
            get { return name;}
            set { name = value;}
        }

        internal string Prefix {
            get { return(prefix == null) ? string.Empty : prefix;}
            set { prefix = value;}
        }

        internal bool IsDeclaredInExternal {
            get { return isDeclaredInExternal;}
            set { isDeclaredInExternal = value;}
        }

        internal Use Presence {
            get { return presence; }
            set { presence = value; }
        }

#if !SILVERLIGHT
        internal long MaxLength {
            get { return maxLength;}
            set { maxLength = value;}
        }

        internal long MinLength {
            get { return minLength;}
            set { minLength = value;}
        }

        internal XmlSchemaType SchemaType {
            get { return schemaType;}
            set { schemaType = value;}
        }

        internal XmlSchemaDatatype Datatype {
            get { return datatype;}
            set { datatype = value;}
        }

        internal void AddValue(string value) {
            if (values == null) {
                values = new List<string>();
            }
            values.Add(value);
        }

        internal List<string> Values {
            get { return values; }
            set { values = value; }
        }

        internal string DefaultValueRaw {
            get { return(defaultValueRaw != null) ? defaultValueRaw : string.Empty;}
            set { defaultValueRaw = value;}
        }

        internal object DefaultValueTyped {
            get { return defaultValueTyped;}
            set { defaultValueTyped = value;}
        }

        internal bool CheckEnumeration(object pVal) {
            return (datatype.TokenizedType != XmlTokenizedType.NOTATION && datatype.TokenizedType != XmlTokenizedType.ENUMERATION) || values.Contains(pVal.ToString());
        }

        internal bool CheckValue(Object pVal) {
            return (presence != Use.Fixed && presence != Use.RequiredFixed) || (defaultValueTyped != null && datatype.IsEqual(pVal, defaultValueTyped));
        }
#endif
    };

}