//
// Automatically generated by ipdlc.
// Edit at your own risk
//


#include "mozilla/ipc/URIUtils.h"
#include "mozilla/dom/PURLClassifierInfo.h"

#include "ipc/IPCMessageUtils.h"
#include "ipc/IPCMessageUtilsSpecializations.h"
#include "nsIFile.h"
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/ProtocolMessageUtils.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/ipc/ShmemMessageUtils.h"
#include "mozilla/ipc/TaintingIPCUtils.h"


//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct ClassifierInfo|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::ClassifierInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).list());
    // Sentinel = 'list'
    (aWriter)->WriteSentinel(71893437);
    IPC::WriteParam(aWriter, (aVar).provider());
    // Sentinel = 'provider'
    (aWriter)->WriteSentinel(261751660);
    IPC::WriteParam(aWriter, (aVar).fullhash());
    // Sentinel = 'fullhash'
    (aWriter)->WriteSentinel(253756248);
}

auto ParamTraits<::mozilla::dom::ClassifierInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___list = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___list) {
        aReader->FatalError("Error deserializing 'list' (nsCString) member of 'ClassifierInfo'");
        return {};

    }
    auto& _list = *maybe___list;
    // Sentinel = 'list'
    if ((!((aReader)->ReadSentinel(71893437)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'list' (nsCString) member of 'ClassifierInfo'");
        return {};
    }
    auto maybe___provider = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___provider) {
        aReader->FatalError("Error deserializing 'provider' (nsCString) member of 'ClassifierInfo'");
        return {};

    }
    auto& _provider = *maybe___provider;
    // Sentinel = 'provider'
    if ((!((aReader)->ReadSentinel(261751660)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'provider' (nsCString) member of 'ClassifierInfo'");
        return {};
    }
    auto maybe___fullhash = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___fullhash) {
        aReader->FatalError("Error deserializing 'fullhash' (nsCString) member of 'ClassifierInfo'");
        return {};

    }
    auto& _fullhash = *maybe___fullhash;
    // Sentinel = 'fullhash'
    if ((!((aReader)->ReadSentinel(253756248)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'fullhash' (nsCString) member of 'ClassifierInfo'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_list),
            std::move(_provider),
            std::move(_fullhash)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct URLClassifierLocalResult|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::URLClassifierLocalResult>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).uri());
    // Sentinel = 'uri'
    (aWriter)->WriteSentinel(45023569);
    IPC::WriteParam(aWriter, (aVar).featureName());
    // Sentinel = 'featureName'
    (aWriter)->WriteSentinel(450495598);
    IPC::WriteParam(aWriter, (aVar).matchingList());
    // Sentinel = 'matchingList'
    (aWriter)->WriteSentinel(533791976);
}

auto ParamTraits<::mozilla::dom::URLClassifierLocalResult>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___uri = IPC::ReadParam<RefPtr<::nsIURI>>(aReader);
    if (!maybe___uri) {
        aReader->FatalError("Error deserializing 'uri' (nsIURI) member of 'URLClassifierLocalResult'");
        return {};

    }
    auto& _uri = *maybe___uri;
    // Sentinel = 'uri'
    if ((!((aReader)->ReadSentinel(45023569)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'uri' (nsIURI) member of 'URLClassifierLocalResult'");
        return {};
    }
    auto maybe___featureName = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___featureName) {
        aReader->FatalError("Error deserializing 'featureName' (nsCString) member of 'URLClassifierLocalResult'");
        return {};

    }
    auto& _featureName = *maybe___featureName;
    // Sentinel = 'featureName'
    if ((!((aReader)->ReadSentinel(450495598)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'featureName' (nsCString) member of 'URLClassifierLocalResult'");
        return {};
    }
    auto maybe___matchingList = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___matchingList) {
        aReader->FatalError("Error deserializing 'matchingList' (nsCString) member of 'URLClassifierLocalResult'");
        return {};

    }
    auto& _matchingList = *maybe___matchingList;
    // Sentinel = 'matchingList'
    if ((!((aReader)->ReadSentinel(533791976)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'matchingList' (nsCString) member of 'URLClassifierLocalResult'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_uri),
            std::move(_featureName),
            std::move(_matchingList)};
    return result__;
}

} // namespace IPC
