Esempio n. 1
0
        /// <summary>
        /// システムに登録する
        /// </summary>
        /// <param name="dic"></param>
        /// <param name="globalVar"></param>
        public void RegisterToSystem(NakoTokenDic dic, NakoVariableManager globalVar)
        {
            // --- 関数
            // Tokenizer に登録
            for (int i = 0; i < FuncList.Count; i++)
            {
                NakoAPIFunc call = FuncList[i];
                if (!dic.ContainsKey(call.name))
                {
                    dic.Add(call.name, NakoTokenType.FUNCTION_NAME);
                }
                else
                {
                    dic[call.name] = NakoTokenType.FUNCTION_NAME;
                }
            }

            // NakoVariables に登録
            for (int i = 0; i < FuncList.Count; i++)
            {
                NakoVariable var = new NakoVariable();
                var.SetBody(i, NakoVarType.SystemFunc);
                NakoAPIFunc call = FuncList[i];
                globalVar.SetVar(call.name, var);
            }

            // --- 変数
            foreach (string name in VarList.Keys)
            {
                NakoVariable var = new NakoVariable();
                var.SetBodyAutoType(VarList[name]);
                globalVar.SetVar(name, var);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 関数をシステムに追加する
        /// </summary>
        /// <param name="name">関数の名前</param>
        /// <param name="argdef">引数の定義</param>
        /// <param name="resultType">関数の戻り値</param>
        /// <param name="f">実際に処理を行うC#のdelegate</param>
        /// <param name="desc">関数の説明</param>
        /// <param name="kana">命令のよみがな</param>
        protected void addFunc(string name, string argdef, NakoVarType resultType, SysCallDelegate f, string desc, string kana)
        {
            name = NakoToken.TrimOkurigana(name);
            NakoAPIFunc s = new NakoAPIFunc(name, argdef, resultType, f);

            NakoAPIFuncBank.Instance.AddFunc(s);
        }
Esempio n. 3
0
 /// <summary>
 /// 関数を追加
 /// </summary>
 /// <param name="name"></param>
 /// <param name="argdef"></param>
 /// <param name="resultType"></param>
 /// <param name="f"></param>
 /// <param name="desc"></param>
 /// <param name="kana"></param>
 public void AddFunc(string name, string argdef, NakoVarType resultType, NakoPlugin.SysCallDelegate f, string desc, string kana)
 {
     name = NakoToken.TrimOkurigana(name);
     NakoAPIFunc s = new NakoAPIFunc(name, argdef, resultType, f);
     s.PluginInstance = PluginInstance;
     this.AddFuncToList(s);
 }
Esempio n. 4
0
        /// <summary>
        /// 関数を追加
        /// </summary>
        /// <param name="name"></param>
        /// <param name="argdef"></param>
        /// <param name="resultType"></param>
        /// <param name="f"></param>
        /// <param name="desc"></param>
        /// <param name="kana"></param>
        public void AddFunc(string name, string argdef, NakoVarType resultType, NakoPlugin.SysCallDelegate f, string desc, string kana)
        {
            name = NakoToken.TrimOkurigana(name);
            NakoAPIFunc s = new NakoAPIFunc(name, argdef, resultType, f);

            s.PluginInstance = PluginInstance;
            this.AddFuncToList(s);
        }
Esempio n. 5
0
        private object _getFunctionFurigana(INakoFuncCallInfo info)
        {
            string       funcName = info.StackPopAsString();
            NakoVariable v        = new NakoVariable();
            NakoAPIFunc  f        = NakoAPIFuncBank.Instance.FuncList.Find((obj) => (obj.name == funcName));

            v.SetBodyAutoType(f.kana);
            return(v);
        }
Esempio n. 6
0
 /// <summary>
 /// 関数をシステムに追加する
 /// </summary>
 /// <param name="name">関数の名前</param>
 /// <param name="argdef">引数の定義</param>
 /// <param name="resultType">関数の戻り値</param>
 /// <param name="f">実際に処理を行うC#のdelegate</param>
 /// <param name="desc">関数の説明</param>
 /// <param name="kana">命令のよみがな</param>
 protected void addFunc(string name, string argdef, NakoVarType resultType, SysCallDelegate f, string desc, string kana)
 {
     name = NakoToken.TrimOkurigana(name);
     NakoAPIFunc s = new NakoAPIFunc(name, argdef, resultType, f);
     NakoAPIFuncBank.Instance.AddFunc(s);
 }
Esempio n. 7
0
 private void AddFuncToList(NakoAPIFunc s)
 {
     FuncList.Add(s);
     s.varNo = FuncList.Count - 1;
 }
Esempio n. 8
0
 private void AddFuncToList(NakoAPIFunc s)
 {
     FuncList.Add(s);
     s.varNo = FuncList.Count - 1;
 }