#ifndef PYPB_MESSAGE_H__
#define PYPB_MESSAGE_H__
#include <stdbool.h>
#include "python/protobuf.h"
#include "upb/reflection/message.h"
void PyUpb_Message_CacheDelete(PyObject* _self, const upb_FieldDef* f);
void PyUpb_Message_SetConcreteSubobj(PyObject* _self, const upb_FieldDef* f,
upb_MessageValue subobj);
PyObject* PyUpb_Message_Get(upb_Message* u_msg, const upb_MessageDef* m,
PyObject* arena);
bool PyUpb_Message_Verify(PyObject* self);
upb_Message* PyUpb_Message_GetIfReified(PyObject* _self);
const upb_MessageDef* PyUpb_Message_GetMsgdef(PyObject* self);
PyObject* PyUpb_Message_MergeFrom(PyObject* self, PyObject* arg);
PyObject* PyUpb_Message_MergeFromString(PyObject* self, PyObject* arg);
PyObject* PyUpb_Message_SerializeToString(PyObject* self, PyObject* args,
PyObject* kwargs);
PyObject* PyUpb_Message_SerializePartialToString(PyObject* self, PyObject* args,
PyObject* kwargs);
int PyUpb_Message_InitAttributes(PyObject* _self, PyObject* args,
PyObject* kwargs);
const upb_FieldDef* PyUpb_Message_GetExtensionDef(PyObject* _self,
PyObject* key);
void PyUpb_Message_DoClearField(PyObject* _self, const upb_FieldDef* f);
void PyUpb_Message_ClearExtensionDict(PyObject* _self);
PyObject* PyUpb_Message_GetFieldValue(PyObject* _self,
const upb_FieldDef* field);
int PyUpb_Message_SetFieldValue(PyObject* _self, const upb_FieldDef* field,
PyObject* value, PyObject* exc);
PyObject* PyUpb_MessageMeta_DoCreateClass(PyObject* py_descriptor,
const char* name, PyObject* dict);
int PyUpb_Message_GetVersion(PyObject* _self);
bool PyUpb_InitMessage(PyObject* m);
#endif