/// <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); } }
/// <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); }
/// <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); }
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); }
private void AddFuncToList(NakoAPIFunc s) { FuncList.Add(s); s.varNo = FuncList.Count - 1; }