chromium/third_party/ipcz/src/ipcz/message_macros/message_versions_declaration_macros.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// no-include-guard-because-multiply-included

// This header is used to emit a Foo_Versions struct for each message Foo. The
// Foo_Versions struct contains parameter metadata for each defined version of a
// message. The structure looks something like this:
//
//     struct Foo_Versions {
//       using ParamsType = Foo_Params;
//
//       struct V0 {
//         using VersionParams = ParamsType::V0;
//         static constexpr internal::ParamMetadata kParams[] = {
//           {offsetof(VersionParams, field1), sizeof(VersionParams::field1),
//            ...},
//           {offsetof(VersionParams, field2), sizeof(VersionParams::field2),
//            ...},
//            ...etc.
//         };
//       };
//       struct V1 {
//         ...
//       };
//     };
//
// This structure is in turn used by message_base_declaration_macros.h to
// generated an aggregated array of version metadata that can be used at runtime
// for message validation.

#define IPCZ_MSG_BEGIN_INTERFACE
#define IPCZ_MSG_END_INTERFACE
#define IPCZ_MSG_ID

#define IPCZ_MSG_BEGIN

#define IPCZ_MSG_END

#define IPCZ_MSG_BEGIN_VERSION
#define IPCZ_MSG_END_VERSION

#define IPCZ_MSG_PARAM
#define IPCZ_MSG_PARAM_ARRAY
#define IPCZ_MSG_PARAM_DRIVER_OBJECT
#define IPCZ_MSG_PARAM_DRIVER_OBJECT_ARRAY