示例#1
0
 public void AddFunc(LuaFuncDescriptor pFunc)
 {
     if (this.PackageFuncs == null)
     {
         this.PackageFuncs = new Hashtable();
     }
     this.PackageFuncs.Add(pFunc.getFuncName(), pFunc);
 }
 public void AddFunc(LuaFuncDescriptor pFunc)
 {
     if (this.PackageFuncs == null)
     {
         this.PackageFuncs = new Hashtable();
     }
     this.PackageFuncs.Add(pFunc.getFuncName(), pFunc);
 }
示例#3
0
 public static void registerLuaFunctions(string strPackage, object pTarget, string strPkgDoc)
 {
     if (((pLuaVM != null) && (pLuaFuncs != null)) && (pLuaPackages != null))
     {
         LuaPackageDescriptor descriptor = null;
         if (strPackage != null)
         {
             pLuaVM.DoString(strPackage + " = {}");
             descriptor = new LuaPackageDescriptor(strPackage, strPkgDoc);
         }
         Type type = pTarget.GetType();
         foreach (MethodInfo info in type.GetMethods())
         {
             foreach (Attribute attribute in Attribute.GetCustomAttributes(info))
             {
                 if (attribute.GetType() == typeof(AttrLuaFunc))
                 {
                     AttrLuaFunc func = (AttrLuaFunc)attribute;
                     ArrayList strParams = new ArrayList();
                     ArrayList strParamDocs = new ArrayList();
                     string strFuncName = func.getFuncName();
                     string strFuncDoc = func.getFuncDoc();
                     string[] strArray = func.getFuncParams();
                     ParameterInfo[] parameters = info.GetParameters();
                     if ((strArray != null) && (parameters.Length != strArray.Length))
                     {
                         Console.WriteLine(string.Concat(new object[] { "Function ", info.Name, " (exported as ", strFuncName, ") argument number mismatch. Declared ", strArray.Length, " but requires ", parameters.Length, "." }));
                         break;
                     }
                     for (int i = 0; i < parameters.Length; i++)
                     {
                         strParams.Add(parameters[i].Name);
                         strParamDocs.Add(strArray[i]);
                     }
                     LuaFuncDescriptor pFunc = new LuaFuncDescriptor(strFuncName, strFuncDoc, strParams, strParamDocs);
                     if (descriptor != null)
                     {
                         descriptor.AddFunc(pFunc);
                         pLuaVM.RegisterFunction(strPackage + strFuncName, pTarget, info);
                         pLuaVM.DoString(strPackage + "." + strFuncName + " = " + strPackage + strFuncName);
                         pLuaVM.DoString(strPackage + strFuncName + " = nil");
                     }
                     else
                     {
                         pLuaFuncs.Add(strFuncName, pFunc);
                         pLuaVM.RegisterFunction(strFuncName, pTarget, info);
                     }
                 }
             }
         }
         if (descriptor != null)
         {
             pLuaPackages.Add(strPackage, descriptor);
         }
     }
 }