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); }
/// <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); } }