Exemple #1
0
        public static string MakeIndexObjectCode(NativeRPC.IndexerInfo idx)
        {
            //FRPC_TestRPC ^ RPCGet_Child0(PackageWriter ^ pkg);
            //{
            //    pkg->PushStack(0);
            //    return mChild0;
            //}
            string strCall      = "";
            string strArgSerial = "";

            for (int i = 0; i < idx.Parameters.Count; i++)
            {
                strCall      += "," + idx.Parameters[i].TypeName + " " + idx.Parameters[i].Name;
                strArgSerial += TabStr + TabStr + "pkg.Write(" + idx.Parameters[i].Name + ");" + EndLine;
            }
            string strOut = "";

            strOut += TabStr + "public H_" + idx.TypeName + " HIndex(RPC.PackageWriter pkg" + strCall + ")" + EndLine;
            strOut += TabStr + "{" + EndLine;
            strOut += TabStr + TabStr + "pkg.PushStack(11+" + idx.Index + ");" + EndLine;
            strOut += strArgSerial;
            strOut += TabStr + TabStr + "return " + idx.TypeNamespace + ".H_" + idx.TypeName + ".smInstance;" + EndLine;
            strOut += TabStr + "}" + EndLine;
            return(strOut);
        }
Exemple #2
0
        public static string MakeIndexerExecuterCode(NativeRPC.IndexerInfo idx)
        {
            //struct HIndex_0xad111111 : public CppRPC::RPCIndexerExecuter
            //{
            //    virtual CppRPC::RPCObject* Execute(CppRPC::RPCObject* obj, CppRPC::PackageProxy& pkg)
            //    {
            //        CppRPC::RPCObject* host = (CppRPC::RPCObject*)obj;

            //        System::Guid Index;
            //        pkg.Read(Index);
            //        return host->RPCIndexer(Index);
            //    }
            //}
            string strOut = "";

            strOut += "struct HIndex_" + idx.GetIndexerHashCode() + ": public CppRPC::RPCIndexerExecuter" + EndLine;
            strOut += "{" + EndLine;
            strOut += TabStr + "static HIndex_" + idx.GetIndexerHashCode() + "* Instance(){ static " + "HIndex_" + idx.GetIndexerHashCode() + " obj; return &obj; }" + EndLine;
            strOut += TabStr + "virtual CppRPC::RPCObject* Execute(CppRPC::RPCObject* obj,CppRPC::PackageProxy& pkg)" + EndLine;
            strOut += TabStr + "{" + EndLine;
            strOut += TabStr + TabStr + CSharp2CppType(idx.HostClass.FullName) + "* host = (" + CSharp2CppType(idx.HostClass.FullName) + "*)obj;" + EndLine;

            string strCall = "";

            for (int i = 0; i < idx.Parameters.Count; i++)
            {
                strOut += TabStr + TabStr + CSharp2CppType(idx.Parameters[i].TypeName) + " " + idx.Parameters[i].Name + ";" + EndLine;
                strOut += TabStr + TabStr + "pkg.Read(" + idx.Parameters[i].Name + ");" + EndLine;

                if (i == idx.Parameters.Count - 1)
                {
                    strCall += idx.Parameters[i].Name;
                }
                else
                {
                    strCall += idx.Parameters[i].Name + ",";
                }
            }

            strOut += TabStr + TabStr + "return host->RPCIndexer(" + strCall + ");" + EndLine;

            strOut += TabStr + "}" + EndLine;
            strOut += "};" + EndLine;
            return(strOut);
        }