Beispiel #1
0
        private bool hasClass(string className, int depth)
        {
            if (depth >= 256)
            {
                return(false);
            }
            string val;

            if ((depth == 0) && (defaultClassName == className))
            {
                return(true);
            }
            if (!dict.TryGetValue("class", out val))
            {
                return(false);
            }
            foreach (string cname in StringUtil.SplitCommand(val))
            {
                if (cname == className)
                {
                    return(true);
                }
                CascadedAttribute xclass = getClass(cname);
                if ((xclass != null) && xclass.hasClass(className, depth + 1))
                {
                    return(true);
                }
            }
            return(false);
        }
Beispiel #2
0
 /// <summary>
 ///   コンストラクタ
 /// </summary>
 /// <param name="elem">属性を読み取るXML要素</param>
 /// <param name="parent_">親の属性管理機構</param>
 /// <param name="childClassKey_">子のクラス属性を探すときの付加キーワード</param>
 public CascadedAttribute(XmlElement elem, CascadedAttribute parent_ = null, string childClassKey_ = "")
 {
     parent           = parent_;
     defaultClassName = elem.Name;
     childClassKey    = childClassKey_;
     load(elem);
 }
Beispiel #3
0
        /// <summary>
        ///   指定クラス名の属性定義を返す
        /// </summary>
        /// <remarks>
        ///   <para>
        ///     指定名のクラスが無いときはthisを返します。
        ///   </para>
        /// </remarks>
        public CascadedAttribute GetClass(string classname)
        {
            if (parent == null)
            {
                return(this);
            }
            CascadedAttribute attr = parent.getClass(classname);

            return((attr == null)?this:attr);
        }
Beispiel #4
0
 private void loadClass(XmlElement elem)
 {
     // クラス定義を取り込む
     foreach (XmlNode node in elem.ChildNodes)
     {
         if ((node.NodeType == XmlNodeType.Element) && ((node.Name == "class") || (node.Name == "default")))
         {
             CascadedAttribute classAttr = CreateChild((XmlElement)node);
             string            className = (node.Name == "default")?"default":classAttr.Name;
             if (!String.IsNullOrEmpty(className))
             {
                 classDict[className] = classAttr;
             }
         }
     }
 }