Program Listing for File config_serdes.h#

Return to documentation for file (interfaces\serdes\config_serdes.h)

#ifndef __IDL_GENERATED__CONFIG_SERDES_H__20251008_120459_65__
#define __IDL_GENERATED__CONFIG_SERDES_H__20251008_120459_65__

// Includes...
#include <cstdint>
#include <support/serdes.h>
#include <support/local_service_access.h>
#include <interfaces/com.h>
#include <interfaces/serdes/core_ps_serdes.h>
#include "../config.h"

#include "core_serdes.h"

// Serializer / deserializer namespace
namespace serdes
{
    template <>
    class CSerdes<sdv::XCannotOpenFile>
    {
    public:
        static void CalcSize(const sdv::XCannotOpenFile& rVar, size_t& rnSize)
        {

            // Calculating the size of XCannotOpenFile
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XCannotOpenFile& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XCannotOpenFile>();
            // Serializing members of XCannotOpenFile
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XCannotOpenFile& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XCannotOpenFile>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XCannotOpenFile
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::XFileCorrupt>
    {
    public:
        static void CalcSize(const sdv::XFileCorrupt& rVar, size_t& rnSize)
        {

            // Calculating the size of XFileCorrupt
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XFileCorrupt& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XFileCorrupt>();
            // Serializing members of XFileCorrupt
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XFileCorrupt& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XFileCorrupt>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XFileCorrupt
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::XCannotReadFileTimesOrAttributes>
    {
    public:
        static void CalcSize(const sdv::XCannotReadFileTimesOrAttributes& rVar, size_t& rnSize)
        {

            // Calculating the size of XCannotReadFileTimesOrAttributes
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XCannotReadFileTimesOrAttributes& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XCannotReadFileTimesOrAttributes>();
            // Serializing members of XCannotReadFileTimesOrAttributes
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XCannotReadFileTimesOrAttributes& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XCannotReadFileTimesOrAttributes>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XCannotReadFileTimesOrAttributes
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::XCannotChangeFileTimesOrAttributes>
    {
    public:
        static void CalcSize(const sdv::XCannotChangeFileTimesOrAttributes& rVar, size_t& rnSize)
        {

            // Calculating the size of XCannotChangeFileTimesOrAttributes
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XCannotChangeFileTimesOrAttributes& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XCannotChangeFileTimesOrAttributes>();
            // Serializing members of XCannotChangeFileTimesOrAttributes
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XCannotChangeFileTimesOrAttributes& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XCannotChangeFileTimesOrAttributes>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XCannotChangeFileTimesOrAttributes
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::XCannotCreateDir>
    {
    public:
        static void CalcSize(const sdv::XCannotCreateDir& rVar, size_t& rnSize)
        {

            // Calculating the size of XCannotCreateDir
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XCannotCreateDir& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XCannotCreateDir>();
            // Serializing members of XCannotCreateDir
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XCannotCreateDir& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XCannotCreateDir>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XCannotCreateDir
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::XCannotRemoveDir>
    {
    public:
        static void CalcSize(const sdv::XCannotRemoveDir& rVar, size_t& rnSize)
        {

            // Calculating the size of XCannotRemoveDir
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XCannotRemoveDir& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XCannotRemoveDir>();
            // Serializing members of XCannotRemoveDir
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XCannotRemoveDir& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XCannotRemoveDir>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XCannotRemoveDir
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::XInvalidPath>
    {
    public:
        static void CalcSize(const sdv::XInvalidPath& rVar, size_t& rnSize)
        {

            // Calculating the size of XInvalidPath
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XInvalidPath& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XInvalidPath>();
            // Serializing members of XInvalidPath
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XInvalidPath& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XInvalidPath>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XInvalidPath
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::XDuplicateFile>
    {
    public:
        static void CalcSize(const sdv::XDuplicateFile& rVar, size_t& rnSize)
        {

            // Calculating the size of XDuplicateFile
            sdv::ser_size(rVar.ssFilePath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::XDuplicateFile& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::XDuplicateFile>();
            // Serializing members of XDuplicateFile
            rSerializer << rVar.ssFilePath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::XDuplicateFile& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::XDuplicateFile>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XDuplicateFile
            rDeserializer >> rVar.ssFilePath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::core::EConfigProcessResult>
    {
    public:
        static void CalcSize(const sdv::core::EConfigProcessResult& rVar, size_t& rnSize)
        {

            // Calculating the size of EConfigProcessResult
            sdv::ser_size(static_cast<int32_t>(rVar), rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::core::EConfigProcessResult& rVar)
        {
            // Serializing members of EConfigProcessResult
            rSerializer << static_cast<int32_t>(rVar);
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::core::EConfigProcessResult& rVar)
        {
            // Deserializing members of EConfigProcessResult
            int32_t base = 0;
            rDeserializer >> base;
            rVar = static_cast<sdv::core::EConfigProcessResult>(base);
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::SPackageVersion>
    {
    public:
        static void CalcSize(const sdv::installation::SPackageVersion& rVar, size_t& rnSize)
        {

            // Calculating the size of SPackageVersion
            sdv::ser_size(rVar.uiMajor, rnSize);
            sdv::ser_size(rVar.uiMinor, rnSize);
            sdv::ser_size(rVar.uiPatch, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::SPackageVersion& rVar)
        {
            // Serializing members of SPackageVersion
            rSerializer << rVar.uiMajor;
            rSerializer << rVar.uiMinor;
            rSerializer << rVar.uiPatch;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::SPackageVersion& rVar)
        {
            // Deserializing members of SPackageVersion
            rDeserializer >> rVar.uiMajor;
            rDeserializer >> rVar.uiMinor;
            rDeserializer >> rVar.uiPatch;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::SPackageHeader>
    {
    public:
        static void CalcSize(const sdv::installation::SPackageHeader& rVar, size_t& rnSize)
        {

            // Calculating the size of SPackageHeader
            sdv::ser_size(rVar.eEndian, rnSize);
            sdv::ser_size(rVar.uiReserved, rnSize);
            sdv::ser_size(rVar.uiVersion, rnSize);
            sdv::ser_size(rVar.uiOffset, rnSize);
            for (uint32_t uiIndex_rguiSignature = 0; uiIndex_rguiSignature < 8; uiIndex_rguiSignature++)
            {
                sdv::ser_size(rVar.rguiSignature[uiIndex_rguiSignature], rnSize);
            }
            sdv::ser_size(rVar.uiCreationDate, rnSize);
            sdv::ser_size(rVar.ssManifest, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::SPackageHeader& rVar)
        {
            // Serializing members of SPackageHeader
            rSerializer << rVar.eEndian;
            rSerializer << rVar.uiReserved;
            rSerializer << rVar.uiVersion;
            rSerializer << rVar.uiOffset;
            for (uint32_t uiIndex_rguiSignature = 0; uiIndex_rguiSignature < 8; uiIndex_rguiSignature++)
            {
                rSerializer << rVar.rguiSignature[uiIndex_rguiSignature];
            }
            rSerializer << rVar.uiCreationDate;
            rSerializer << rVar.ssManifest;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::SPackageHeader& rVar)
        {
            // Deserializing members of SPackageHeader
            rDeserializer >> rVar.eEndian;
            rDeserializer >> rVar.uiReserved;
            rDeserializer >> rVar.uiVersion;
            rDeserializer >> rVar.uiOffset;
            for (uint32_t uiIndex_rguiSignature = 0; uiIndex_rguiSignature < 8; uiIndex_rguiSignature++)
            {
                rDeserializer >> rVar.rguiSignature[uiIndex_rguiSignature];
            }
            rDeserializer >> rVar.uiCreationDate;
            rDeserializer >> rVar.ssManifest;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::SPackageHeaderChecksum>
    {
    public:
        static void CalcSize(const sdv::installation::SPackageHeaderChecksum& rVar, size_t& rnSize)
        {

            // Calculating the size of SPackageHeaderChecksum
            sdv::ser_size(rVar.uiChecksum, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::SPackageHeaderChecksum& rVar)
        {
            // Serializing members of SPackageHeaderChecksum
            rSerializer << rVar.uiChecksum;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::SPackageHeaderChecksum& rVar)
        {
            // Deserializing members of SPackageHeaderChecksum
            rDeserializer >> rVar.uiChecksum;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::SPackageFooter>
    {
    public:
        static void CalcSize(const sdv::installation::SPackageFooter& rVar, size_t& rnSize)
        {

            // Calculating the size of SPackageFooter
            sdv::ser_size(rVar.uiChecksum, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::SPackageFooter& rVar)
        {
            // Serializing members of SPackageFooter
            rSerializer << rVar.uiChecksum;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::SPackageFooter& rVar)
        {
            // Deserializing members of SPackageFooter
            rDeserializer >> rVar.uiChecksum;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::SFileDesc>
    {
    public:
        static void CalcSize(const sdv::installation::SFileDesc& rVar, size_t& rnSize)
        {

            // Calculating the size of SFileDesc
            sdv::ser_size(rVar.ssFileName, rnSize);
            sdv::ser_size(rVar.uiCreationDate, rnSize);
            sdv::ser_size(rVar.uiChangeDate, rnSize);
            sdv::ser_size(rVar.bAttrReadonly, rnSize);
            sdv::ser_size(rVar.bAttrExecutable, rnSize);
            sdv::ser_size(rVar.ptrContent, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::SFileDesc& rVar)
        {
            // Serializing members of SFileDesc
            rSerializer << rVar.ssFileName;
            rSerializer << rVar.uiCreationDate;
            rSerializer << rVar.uiChangeDate;
            rSerializer << rVar.bAttrReadonly;
            rSerializer << rVar.bAttrExecutable;
            rSerializer << rVar.ptrContent;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::SFileDesc& rVar)
        {
            // Deserializing members of SFileDesc
            rDeserializer >> rVar.ssFileName;
            rDeserializer >> rVar.uiCreationDate;
            rDeserializer >> rVar.uiChangeDate;
            rDeserializer >> rVar.bAttrReadonly;
            rDeserializer >> rVar.bAttrExecutable;
            rDeserializer >> rVar.ptrContent;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::EPackageBLOBType>
    {
    public:
        static void CalcSize(const sdv::installation::EPackageBLOBType& rVar, size_t& rnSize)
        {

            // Calculating the size of EPackageBLOBType
            sdv::ser_size(static_cast<uint32_t>(rVar), rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::EPackageBLOBType& rVar)
        {
            // Serializing members of EPackageBLOBType
            rSerializer << static_cast<uint32_t>(rVar);
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::EPackageBLOBType& rVar)
        {
            // Deserializing members of EPackageBLOBType
            uint32_t base = 0;
            rDeserializer >> base;
            rVar = static_cast<sdv::installation::EPackageBLOBType>(base);
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::SPackageBLOB>
    {
    public:
        static void CalcSize(const sdv::installation::SPackageBLOB& rVar, size_t& rnSize)
        {

            // Calculating the size of SPackageBLOB
            sdv::ser_size(rVar.get_switch(), rnSize);
            sdv::ser_size(rVar.uiChecksumInit, rnSize);
            sdv::ser_size(rVar.uiBLOBSize, rnSize);

            // Calculating the size of union_0
            switch (rVar.get_switch())
            {
            case sdv::installation::EPackageBLOBType::binary_file:
                sdv::ser_size(rVar.sFileDesc, rnSize);
                break;
            case sdv::installation::EPackageBLOBType::final_entry:
                break;
            }
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::SPackageBLOB& rVar)
        {
            // Serializing members of SPackageBLOB
            rSerializer << rVar.get_switch();
            rSerializer << rVar.uiChecksumInit;
            rSerializer << rVar.uiBLOBSize;

            // Serializing members of union_0
            switch (rVar.get_switch())
            {
            case sdv::installation::EPackageBLOBType::binary_file:
                rSerializer << rVar.sFileDesc;
                break;
            case sdv::installation::EPackageBLOBType::final_entry:
                break;
            }
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::SPackageBLOB& rVar)
        {
            // Deserializing members of SPackageBLOB
            sdv::installation::EPackageBLOBType temp_eBLOBType{};
            rDeserializer >> temp_eBLOBType;
            rVar.switch_to(temp_eBLOBType);
            rDeserializer >> rVar.uiChecksumInit;
            rDeserializer >> rVar.uiBLOBSize;

            // Deserializing members of union_0
            switch (rVar.get_switch())
            {
            case sdv::installation::EPackageBLOBType::binary_file:
                rDeserializer >> rVar.sFileDesc;
                break;
            case sdv::installation::EPackageBLOBType::final_entry:
                break;
            }
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::SPackageBLOBChecksum>
    {
    public:
        static void CalcSize(const sdv::installation::SPackageBLOBChecksum& rVar, size_t& rnSize)
        {

            // Calculating the size of SPackageBLOBChecksum
            sdv::ser_size(rVar.uiChecksum, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::SPackageBLOBChecksum& rVar)
        {
            // Serializing members of SPackageBLOBChecksum
            rSerializer << rVar.uiChecksum;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::SPackageBLOBChecksum& rVar)
        {
            // Deserializing members of SPackageBLOBChecksum
            rDeserializer >> rVar.uiChecksum;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XFailedToCompose>
    {
    public:
        static void CalcSize(const sdv::installation::XFailedToCompose& rVar, size_t& rnSize)
        {

            // Calculating the size of XFailedToCompose
            sdv::ser_size(rVar.ssInstallName, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XFailedToCompose& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XFailedToCompose>();
            // Serializing members of XFailedToCompose
            rSerializer << rVar.ssInstallName;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XFailedToCompose& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XFailedToCompose>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XFailedToCompose
            rDeserializer >> rVar.ssInstallName;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XNoManifest>
    {
    public:
        static void CalcSize([[maybe_unused]] const sdv::installation::XNoManifest& rVar, [[maybe_unused]] size_t& rnSize)
        {

        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, [[maybe_unused]] const sdv::installation::XNoManifest& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XNoManifest>();
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, [[maybe_unused]] sdv::installation::XNoManifest& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XNoManifest>()) throw sdv::ps::XMarshallIntegrity{};
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XInvalidManifest>
    {
    public:
        static void CalcSize([[maybe_unused]] const sdv::installation::XInvalidManifest& rVar, [[maybe_unused]] size_t& rnSize)
        {

        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, [[maybe_unused]] const sdv::installation::XInvalidManifest& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XInvalidManifest>();
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, [[maybe_unused]] sdv::installation::XInvalidManifest& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XInvalidManifest>()) throw sdv::ps::XMarshallIntegrity{};
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XFailedSaveManifest>
    {
    public:
        static void CalcSize(const sdv::installation::XFailedSaveManifest& rVar, size_t& rnSize)
        {

            // Calculating the size of XFailedSaveManifest
            sdv::ser_size(rVar.ssInstallName, rnSize);
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XFailedSaveManifest& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XFailedSaveManifest>();
            // Serializing members of XFailedSaveManifest
            rSerializer << rVar.ssInstallName;
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XFailedSaveManifest& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XFailedSaveManifest>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XFailedSaveManifest
            rDeserializer >> rVar.ssInstallName;
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XFailedManifestCreation>
    {
    public:
        static void CalcSize(const sdv::installation::XFailedManifestCreation& rVar, size_t& rnSize)
        {

            // Calculating the size of XFailedManifestCreation
            sdv::ser_size(rVar.ssInstallName, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XFailedManifestCreation& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XFailedManifestCreation>();
            // Serializing members of XFailedManifestCreation
            rSerializer << rVar.ssInstallName;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XFailedManifestCreation& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XFailedManifestCreation>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XFailedManifestCreation
            rDeserializer >> rVar.ssInstallName;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XDuplicateManifest>
    {
    public:
        static void CalcSize(const sdv::installation::XDuplicateManifest& rVar, size_t& rnSize)
        {

            // Calculating the size of XDuplicateManifest
            sdv::ser_size(rVar.ssInstallName1, rnSize);
            sdv::ser_size(rVar.ssInstallName2, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XDuplicateManifest& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XDuplicateManifest>();
            // Serializing members of XDuplicateManifest
            rSerializer << rVar.ssInstallName1;
            rSerializer << rVar.ssInstallName2;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XDuplicateManifest& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XDuplicateManifest>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XDuplicateManifest
            rDeserializer >> rVar.ssInstallName1;
            rDeserializer >> rVar.ssInstallName2;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XDuplicateInstall>
    {
    public:
        static void CalcSize(const sdv::installation::XDuplicateInstall& rVar, size_t& rnSize)
        {

            // Calculating the size of XDuplicateInstall
            sdv::ser_size(rVar.ssInstallName, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XDuplicateInstall& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XDuplicateInstall>();
            // Serializing members of XDuplicateInstall
            rSerializer << rVar.ssInstallName;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XDuplicateInstall& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XDuplicateInstall>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XDuplicateInstall
            rDeserializer >> rVar.ssInstallName;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XModuleNotFound>
    {
    public:
        static void CalcSize(const sdv::installation::XModuleNotFound& rVar, size_t& rnSize)
        {

            // Calculating the size of XModuleNotFound
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XModuleNotFound& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XModuleNotFound>();
            // Serializing members of XModuleNotFound
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XModuleNotFound& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XModuleNotFound>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XModuleNotFound
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XComponentNotLoadable>
    {
    public:
        static void CalcSize(const sdv::installation::XComponentNotLoadable& rVar, size_t& rnSize)
        {

            // Calculating the size of XComponentNotLoadable
            sdv::ser_size(rVar.seqComponents, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XComponentNotLoadable& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XComponentNotLoadable>();
            // Serializing members of XComponentNotLoadable
            rSerializer << rVar.seqComponents;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XComponentNotLoadable& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XComponentNotLoadable>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XComponentNotLoadable
            rDeserializer >> rVar.seqComponents;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XIncorrectCRC>
    {
    public:
        static void CalcSize([[maybe_unused]] const sdv::installation::XIncorrectCRC& rVar, [[maybe_unused]] size_t& rnSize)
        {

        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, [[maybe_unused]] const sdv::installation::XIncorrectCRC& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XIncorrectCRC>();
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, [[maybe_unused]] sdv::installation::XIncorrectCRC& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XIncorrectCRC>()) throw sdv::ps::XMarshallIntegrity{};
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XIncompatiblePackage>
    {
    public:
        static void CalcSize([[maybe_unused]] const sdv::installation::XIncompatiblePackage& rVar, [[maybe_unused]] size_t& rnSize)
        {

        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, [[maybe_unused]] const sdv::installation::XIncompatiblePackage& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XIncompatiblePackage>();
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, [[maybe_unused]] sdv::installation::XIncompatiblePackage& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XIncompatiblePackage>()) throw sdv::ps::XMarshallIntegrity{};
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XIncorrectPath>
    {
    public:
        static void CalcSize(const sdv::installation::XIncorrectPath& rVar, size_t& rnSize)
        {

            // Calculating the size of XIncorrectPath
            sdv::ser_size(rVar.ssPath, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XIncorrectPath& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XIncorrectPath>();
            // Serializing members of XIncorrectPath
            rSerializer << rVar.ssPath;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XIncorrectPath& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XIncorrectPath>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XIncorrectPath
            rDeserializer >> rVar.ssPath;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XMissingBasePath>
    {
    public:
        static void CalcSize([[maybe_unused]] const sdv::installation::XMissingBasePath& rVar, [[maybe_unused]] size_t& rnSize)
        {

        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, [[maybe_unused]] const sdv::installation::XMissingBasePath& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XMissingBasePath>();
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, [[maybe_unused]] sdv::installation::XMissingBasePath& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XMissingBasePath>()) throw sdv::ps::XMarshallIntegrity{};
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XInstallationNotFound>
    {
    public:
        static void CalcSize(const sdv::installation::XInstallationNotFound& rVar, size_t& rnSize)
        {

            // Calculating the size of XInstallationNotFound
            sdv::ser_size(rVar.ssInstallName, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XInstallationNotFound& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XInstallationNotFound>();
            // Serializing members of XInstallationNotFound
            rSerializer << rVar.ssInstallName;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XInstallationNotFound& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XInstallationNotFound>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XInstallationNotFound
            rDeserializer >> rVar.ssInstallName;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::XUninstallCouldNotUnload>
    {
    public:
        static void CalcSize(const sdv::installation::XUninstallCouldNotUnload& rVar, size_t& rnSize)
        {

            // Calculating the size of XUninstallCouldNotUnload
            sdv::ser_size(rVar.ssInstallName, rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, const sdv::installation::XUninstallCouldNotUnload& rVar)
        {
            rSerializer << sdv::GetExceptionId<sdv::installation::XUninstallCouldNotUnload>();
            // Serializing members of XUninstallCouldNotUnload
            rSerializer << rVar.ssInstallName;
            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::XUninstallCouldNotUnload& rVar)
        {
            sdv::exception_id idLocal = 0ull;
            rDeserializer >> idLocal;
            if (idLocal != sdv::GetExceptionId<sdv::installation::XUninstallCouldNotUnload>()) throw sdv::ps::XMarshallIntegrity{};
            // Deserializing members of XUninstallCouldNotUnload
            rDeserializer >> rVar.ssInstallName;
            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::installation::IAppInstall*>
    {
    public:
        static void CalcSize([[maybe_unused]] sdv::installation::IAppInstall* pInterface, size_t& rnSize)
        {
            sdv::ser_size(sdv::interface_id(), rnSize);
            sdv::ser_size(sdv::ps::TMarshallID(), rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, sdv::installation::IAppInstall* pInterface)
        {
            // Get interface to the component isolation service.
            auto ptrComControl = sdv::core::GetObject("CommunicationControl");
            if (!ptrComControl) throw sdv::ps::XMarshallNotInitialized{};
            sdv::ps::IMarshallAccess* pMarshallAccess = ptrComControl.GetInterface<sdv::ps::IMarshallAccess>();
            if (!pMarshallAccess) throw sdv::ps::XMarshallNotInitialized{};

            // Serialize the interface ID first
            rSerializer << sdv::GetInterfaceId<sdv::installation::IAppInstall>();

            // Create and serialize a stub object for the interface.
            sdv::ps::TMarshallID tStubID = pMarshallAccess->GetStub(pInterface);
            rSerializer << tStubID;

            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::installation::IAppInstall*& rpInterface)
        {
            // Get interface to the component isolation service.
            auto ptrComControl = sdv::core::GetObject("CommunicationControl");
            if (!ptrComControl) throw sdv::ps::XMarshallNotInitialized{};
            sdv::ps::IMarshallAccess* pMarshallAccess = ptrComControl.GetInterface<sdv::ps::IMarshallAccess>();
            if (!pMarshallAccess) throw sdv::ps::XMarshallNotInitialized{};

            // Get the interface ID
            sdv::interface_id id = 0;
            rDeserializer >> id;

            // Get the stub ID
            sdv::ps::TMarshallID tStubID{};
            rDeserializer >> tStubID;

            // Create the proxy
            rpInterface = pMarshallAccess->GetProxy(tStubID, id).get<sdv::installation::IAppInstall>();

            return rDeserializer;
        }
    };

    template <>
    class CSerdes<sdv::helper::IModuleManifestHelper*>
    {
    public:
        static void CalcSize([[maybe_unused]] sdv::helper::IModuleManifestHelper* pInterface, size_t& rnSize)
        {
            sdv::ser_size(sdv::interface_id(), rnSize);
            sdv::ser_size(sdv::ps::TMarshallID(), rnSize);
        }

        template <sdv::EEndian eTargetEndianess, typename TCRC>
        static sdv::serializer<eTargetEndianess, TCRC>& Serialize(sdv::serializer<eTargetEndianess, TCRC>& rSerializer, sdv::helper::IModuleManifestHelper* pInterface)
        {
            // Get interface to the component isolation service.
            auto ptrComControl = sdv::core::GetObject("CommunicationControl");
            if (!ptrComControl) throw sdv::ps::XMarshallNotInitialized{};
            sdv::ps::IMarshallAccess* pMarshallAccess = ptrComControl.GetInterface<sdv::ps::IMarshallAccess>();
            if (!pMarshallAccess) throw sdv::ps::XMarshallNotInitialized{};

            // Serialize the interface ID first
            rSerializer << sdv::GetInterfaceId<sdv::helper::IModuleManifestHelper>();

            // Create and serialize a stub object for the interface.
            sdv::ps::TMarshallID tStubID = pMarshallAccess->GetStub(pInterface);
            rSerializer << tStubID;

            return rSerializer;
        }

        template <sdv::EEndian eSourceEndianess, typename TCRC>
        static sdv::deserializer<eSourceEndianess, TCRC>& Deserialize(sdv::deserializer<eSourceEndianess, TCRC>& rDeserializer, sdv::helper::IModuleManifestHelper*& rpInterface)
        {
            // Get interface to the component isolation service.
            auto ptrComControl = sdv::core::GetObject("CommunicationControl");
            if (!ptrComControl) throw sdv::ps::XMarshallNotInitialized{};
            sdv::ps::IMarshallAccess* pMarshallAccess = ptrComControl.GetInterface<sdv::ps::IMarshallAccess>();
            if (!pMarshallAccess) throw sdv::ps::XMarshallNotInitialized{};

            // Get the interface ID
            sdv::interface_id id = 0;
            rDeserializer >> id;

            // Get the stub ID
            sdv::ps::TMarshallID tStubID{};
            rDeserializer >> tStubID;

            // Create the proxy
            rpInterface = pMarshallAccess->GetProxy(tStubID, id).get<sdv::helper::IModuleManifestHelper>();

            return rDeserializer;
        }
    };
} // serdes namespace

#endif // !defined(__IDL_GENERATED__CONFIG_SERDES_H__20251008_120459_75__)