Beispiel #1
0
        //────────────────────────────────────────

        /// <summary>
        /// 新しいインスタンスを作ります。
        /// </summary>
        /// <param name="log_Reports"></param>
        /// <returns></returns>
        public Expr_LeafString NewInstance(
            Conf_String parent_Expression,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl();

            log_Method.BeginMethod(Info_Syntax.Name_Library, this, "NewInstance", log_Reports);

            //
            //
            //
            //

            Expr_LeafStringImpl result = new Expr_LeafStringImpl(null, parent_Expression);

            result.SetString(
                this.sHumanInput,
                log_Reports
                );

            //
            //
            log_Method.EndMethod(log_Reports);
            return(result);
        }
Beispiel #2
0
        //────────────────────────────────────────

        /// <summary>
        ///
        /// </summary>
        /// <param name="name">引数名</param>
        /// <param name="value">その値</param>
        /// <param name="cElm">引数のコンフィグ</param>
        /// <param name="eParent">親Expr</param>
        /// <param name="isRequired"></param>
        /// <param name="log_Reports"></param>
        /// <returns></returns>
        public bool TryGetValue2(
            PmName name,
            out Expr_String value,
            Conf_String cElm,
            Expr_String eParent,
            bool isRequired,
            Log_Reports log_Reports
            )
        {
            bool isHit = false;

            string s;//コントロール名

            this.TryGetValue(name, out s, isRequired, log_Reports);

            if (log_Reports.Successful)
            {
                value = new Expr_LeafStringImpl(s, eParent, cElm);
                isHit = true;
            }
            else
            {
                value = null;
            }

            return(isHit);
        }
Beispiel #3
0
        //────────────────────────────────────────

        /// <summary>
        /// 文字列を、子要素として追加。
        /// </summary>
        /// <param name="contents"></param>
        /// <param name="s_ParentNode"></param>
        /// <param name="log_Reports"></param>
        public void AppendTextNode(
            string contents,
            Conf_String parent_Conf,
            Log_Reports log_Reports
            )
        {
            Expr_LeafStringImpl eChild = new Expr_LeafStringImpl(null, parent_Conf);

            eChild.SetString(contents, log_Reports);

            this.ChildNodes.Add(eChild, log_Reports);
        }
Beispiel #4
0
        //────────────────────────────────────────

        /// <summary>
        /// 文字列を、子要素として追加。
        /// </summary>
        /// <param name="humaninput"></param>
        /// <param name="cParent"></param>
        /// <param name="log_Reports"></param>
        public void AppendTextNode(
            string humaninput,
            Conf_String cParent,
            Log_Reports log_Reports
            )
        {
            Expr_LeafStringImpl eAtom = new Expr_LeafStringImpl(null, cParent);

            eAtom.SetString(
                humaninput,
                log_Reports
                );

            this.ChildNodes.Add(
                eAtom,
                log_Reports
                );
        }
Beispiel #5
0
        //────────────────────────────────────────

        /// <summary>
        ///
        /// </summary>
        /// <param name="e_Result">検索結果。</param>
        /// <param name="name"></param>
        /// <param name="bRequired"></param>
        /// <param name="hits"></param>
        /// <param name="log_Reports"></param>
        /// <returns>検索結果が1件以上あれば真。</returns>
        public bool TrySelect(
            out Expr_String out_eResult,
            string name,
            EnumHitcount hits,
            Log_Reports log_Reports//bug:ヌルのことがある?
            )
        {
            Log_Method log_Method = new Log_MethodImpl();

            log_Method.BeginMethod(Info_Syntax.Name_Library, this, "TrySelect", log_Reports);
            //

            bool isHit;

            if (this.map.ContainsKey(name))
            {
                // ヒット。
                out_eResult = this.map[name];
                isHit       = true;
            }
            else
            {
                // 一致なし。
                isHit = false;

                if (Utility_Hitcount.IsError_IfNoHit(hits, log_Reports))
                {
                    //エラーにする。
                    out_eResult = null;
                    goto gt_Error_NotFoundOne;
                }
                else
                {
                    // 該当しないキーを指定され、値を取得できなかったが、エラー報告しない。
                    Conf_String parent_Conf = new Conf_StringImpl("!ハードコーディング_NStringDictionaryImpl#Get", null);
                    out_eResult = new Expr_LeafStringImpl(null, parent_Conf);
                }
            }

            goto gt_EndMethod;
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_NotFoundOne:
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー141!", log_Method);

                Log_TextIndented s = new Log_TextIndentedImpl();
                s.Append("指定された名前[");
                s.Append(name);
                s.Append("]は、“EDic(連想配列)”の中にありませんでした。");
                s.Newline();

                s.Append("┌────────┐キー一覧(個数=[");
                s.Append(this.map.Count);
                s.Append("])");
                s.Newline();
                foreach (string sKey in this.map.Keys)
                {
                    s.Append("[");
                    s.Append(sKey);
                    s.Append("]");
                    s.Newline();
                }
                s.Append("└────────┘");
                s.Newline();

                // ヒント

                if (null != this.Owner_Conf)
                {
                    s.Append("◆オーナー情報1");
                    s.Newline();
                    this.Owner_Conf.ToText_Content(s);
                }

                if (0 < this.map.Count)
                {
                    foreach (Expr_String eItem in this.map.Values)
                    {
                        Expr_String eParent = eItem.Parent;
                        if (null != eParent)//親要素が設定されていないことがある。
                        {
                            // 最初の1個。
                            s.Append("◆最初の要素の親の情報。");
                            s.Newline();
                            eParent.ToText_Snapshot(s);
                        }
                        break;
                    }
                }

                //
                // オーナーの情報。
                if (null != this.owner_Conf)//オーナー要素が設定されていないことがある。
                {
                    s.Newline();
                    s.Newline();
                    s.Append("◆オーナー情報2。");
                    s.Newline();
                    this.owner_Conf.ToText_Locationbreadcrumbs(s);
                }


                r.Message = s.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return(isHit);
        }