Exemple #1
0
        public string toCPkgFunctionDefinitionString()
        {
            string tempText = toCPkgFunctionPrototypeString();

            tempText = tempText.Replace("XPLAT_DLL_API", "");
            string startText = tempText.Substring(0, tempText.IndexOf("packStructPtr);\n") + ("packStructPtr)").Length);
            string endText   = tempText.Substring(tempText.IndexOf("packStructPtr);\n") + ("packStructPtr);\n").Length);

            endText = endText.Substring(0, endText.Length - 2);

            // Package Function Definition
            startText += "\n{\n";
            startText += "\t// Initialize pointer to start of packet area in output buffer\n\txplatAPI_Data->outPackBuffPtr = xplatAPI_Data->outputPacket;\n\t// Package bytes and increment pointer\n";
            int          PacketOffset       = 0;
            XPlatAutoGEN packXPlatAutoGEN   = new XPlatAutoGEN(4);
            XPlatAutoGEN unpackXPlatAutoGEN = new XPlatAutoGEN(4);

            foreach (imsSerialParamData SPD in PacketSPDs)
            {
                if (LinkedCommSystem.SystemIsBigEndian)
                {
                    packXPlatAutoGEN.AddLineTokens(SPD.toCPackFuncDefString(ref PacketOffset, "BIG"));
                }
                else
                {
                    packXPlatAutoGEN.AddLineTokens(SPD.toCPackFuncDefString(ref PacketOffset, "little"));
                }
            }
            packXPlatAutoGEN.AlignColumnsInputTokens();
            startText += packXPlatAutoGEN.ReturnOutputLines() + "}\n";

            // Unpack Function Definition
            endText     += "\n{\n";
            endText     += "\t// Initialize pointer to start of packet area in input buffer\n\txplatAPI_Data->inPackBuffPtr = xplatAPI_Data->inputPacket;\n\t// UnPack bytes and increment pointer\n";
            endText     += "\tswitch(xplatAPI_Data->inputBuffer[HDRPCKOFFSETINDEX])\n\t{\n";
            PacketOffset = 0;
            foreach (imsSerialParamData SPD in PacketSPDs)
            {
                if (LinkedCommSystem.SystemIsBigEndian)
                {
                    unpackXPlatAutoGEN.AddLineTokens(SPD.toCUnPackFuncDefString(ref PacketOffset, "BIG"));
                }
                else
                {
                    unpackXPlatAutoGEN.AddLineTokens(SPD.toCUnPackFuncDefString(ref PacketOffset, "little"));
                }
            }
            unpackXPlatAutoGEN.AlignColumnsInputTokens();
            endText += unpackXPlatAutoGEN.ReturnOutputLines() + "\n\t\tdefault:break;\n\t}\n}\n";

            return(startText + endText);
        }