Go2Py/cpp_bridge/thirdparty/include/dds/ddsi/ddsi_serdata_pserop.h

79 lines
2.2 KiB
C

/*
* Copyright(c) 2006 to 2021 ZettaScale Technology and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
* v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
#ifndef DDSI_SERDATA_PSEROP_H
#define DDSI_SERDATA_PSEROP_H
#include "dds/ddsi/ddsi_serdata.h"
#include "dds/ddsi/ddsi_sertype.h"
#include "dds/ddsi/ddsi_plist_generic.h"
#include "dds/dds.h"
#if defined (__cplusplus)
extern "C" {
#endif
/* There is an alignment requirement on the raw data (it must be at
offset mod 8 for the conversion to/from a dds_stream to work).
So we define two types: one without any additional padding, and
one where the appropriate amount of padding is inserted */
#define DDSI_SERDATA_PSEROP_PREPAD \
struct ddsi_serdata c; \
void *sample; \
bool keyless; /*cached from topic*/ \
uint32_t pos; \
uint32_t size
#define DDSI_SERDATA_PSEROP_POSTPAD \
uint16_t identifier; \
uint16_t options; \
char data[]
struct ddsi_serdata_pserop_unpadded {
DDSI_SERDATA_PSEROP_PREPAD;
DDSI_SERDATA_PSEROP_POSTPAD;
};
#ifdef __GNUC__
#define DDSI_SERDATA_PSEROP_PAD(n) ((n) % 8)
#else
#define DDSI_SERDATA_PSEROP_PAD(n) (n)
#endif
struct ddsi_serdata_pserop {
DDSI_SERDATA_PSEROP_PREPAD;
char pad[DDSI_SERDATA_PSEROP_PAD (8 - (offsetof (struct ddsi_serdata_pserop_unpadded, data) % 8))];
DDSI_SERDATA_PSEROP_POSTPAD;
};
#undef DDSI_SERDATA_PSEROP_PAD
#undef DDSI_SERDATA_PSEROP_POSTPAD
#undef DDSI_SERDATA_PSEROP_PREPAD
struct ddsi_sertype_pserop {
struct ddsi_sertype c;
uint16_t encoding_format; /* CDR_ENC_FORMAT_(PLAIN|DELIMITED|PL) */
size_t memsize;
size_t nops;
const enum pserop *ops;
size_t nops_key;
const enum pserop *ops_key; /* NULL <=> no key; != NULL <=> 16-byte key at offset 0 */
};
extern DDS_EXPORT const struct ddsi_sertype_ops ddsi_sertype_ops_pserop;
extern DDS_EXPORT const struct ddsi_serdata_ops ddsi_serdata_ops_pserop;
#if defined (__cplusplus)
}
#endif
#endif