Пример #1
0
    public MyFlagOrItems copy()
    {
        MyFlagOrItems tOr = new MyFlagOrItems();

        tOr.mItems = new MyFlagSingleItem[mItems.Length];
        for (int i = 0; i < mItems.Length; ++i)
        {
            tOr.mItems[i] = mItems[i].copy();
        }
        return(tOr);
    }
Пример #2
0
 /// <summary>文字列からFlagItemを生成</summary>
 static public MyFlagItem create(string a)
 {
     if (a == "")
     {
         return(null);
     }
     if (a.StartsWith("<", System.StringComparison.Ordinal))
     {
         MyTag tTag = new MyTag(a);
         if (tTag.mTagName == "and")
         {
             MyFlagAndItems andItem = new MyFlagAndItems();
             andItem.mItems = new MyFlagSingleItem[tTag.mArguments.Length];
             for (int i = 0; i < tTag.mArguments.Length; ++i)
             {
                 andItem.mItems[i] = (MyFlagSingleItem)create(tTag.mArguments[i]);
             }
             return(andItem);
         }
         else if (tTag.mTagName == "or")
         {
             MyFlagOrItems orItem = new MyFlagOrItems();
             orItem.mItems = new MyFlagSingleItem[tTag.mArguments.Length];
             for (int i = 0; i < tTag.mArguments.Length; ++i)
             {
                 orItem.mItems[i] = (MyFlagSingleItem)create(tTag.mArguments[i]);
             }
             return(orItem);
         }
         else
         {
             throw new System.Exception("MyFlagItem : FlagItemの生成失敗「" + a + "」");
         }
     }
     else
     {
         string[] tElements = a.Split(':');
         //bool
         if (tElements[1] == "true" || tElements[1] == "True")
         {
             MyFlagBoolItem bItem = new MyFlagBoolItem();
             bItem.mPath  = tElements[0];
             bItem.mValue = true;
             return(bItem);
         }
         if (tElements[1] == "false" || tElements[1] == "False")
         {
             MyFlagBoolItem bItem = new MyFlagBoolItem();
             bItem.mPath  = tElements[0];
             bItem.mValue = false;
             return(bItem);
         }
         //float
         if (tElements.Length == 3)
         {
             MyFlagFloatItem fItem = new MyFlagFloatItem();
             fItem.mPath    = tElements[0];
             fItem.mValue   = float.Parse(tElements[1]);
             fItem.mCompare = EnumParser.parse <MyFlagFloatItem.Compare>(tElements[2]);
             return(fItem);
         }
         //string
         MyFlagStringItem sItem = new MyFlagStringItem();
         sItem.mPath  = tElements[0];
         sItem.mValue = tElements[1];
         return(sItem);
     }
 }