/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: proto/metadata.proto */

#ifndef PROTOBUF_C_proto_2fmetadata_2eproto__INCLUDED
#define PROTOBUF_C_proto_2fmetadata_2eproto__INCLUDED

#include <protobuf-c/protobuf-c.h>

PROTOBUF_C__BEGIN_DECLS

#if PROTOBUF_C_VERSION_NUMBER < 1000000
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
#endif


typedef struct _TopTracks TopTracks;
typedef struct _ActivityPeriod ActivityPeriod;
typedef struct _Artist Artist;
typedef struct _AlbumGroup AlbumGroup;
typedef struct _Date Date;
typedef struct _Album Album;
typedef struct _Track Track;
typedef struct _Image Image;
typedef struct _ImageGroup ImageGroup;
typedef struct _Biography Biography;
typedef struct _Disc Disc;
typedef struct _Copyright Copyright;
typedef struct _Restriction Restriction;
typedef struct _Availability Availability;
typedef struct _SalePeriod SalePeriod;
typedef struct _ExternalId ExternalId;
typedef struct _AudioFile AudioFile;
typedef struct _VideoFile VideoFile;
typedef struct _Show Show;
typedef struct _Episode Episode;
typedef struct _Category Category;
typedef struct _OriginalAudio OriginalAudio;


/* --- enums --- */

typedef enum _Album__Type {
  ALBUM__TYPE__ALBUM = 1,
  ALBUM__TYPE__SINGLE = 2,
  ALBUM__TYPE__COMPILATION = 3,
  ALBUM__TYPE__EP = 4
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(ALBUM__TYPE)
} Album__Type;
typedef enum _Image__Size {
  IMAGE__SIZE__DEFAULT = 0,
  IMAGE__SIZE__SMALL = 1,
  IMAGE__SIZE__LARGE = 2,
  IMAGE__SIZE__XLARGE = 3
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(IMAGE__SIZE)
} Image__Size;
typedef enum _Copyright__Type {
  COPYRIGHT__TYPE__P = 0,
  COPYRIGHT__TYPE__C = 1
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(COPYRIGHT__TYPE)
} Copyright__Type;
typedef enum _Restriction__Catalogue {
  RESTRICTION__CATALOGUE__AD = 0,
  RESTRICTION__CATALOGUE__SUBSCRIPTION = 1,
  RESTRICTION__CATALOGUE__CATALOGUE_ALL = 2,
  RESTRICTION__CATALOGUE__SHUFFLE = 3,
  RESTRICTION__CATALOGUE__COMMERCIAL = 4
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RESTRICTION__CATALOGUE)
} Restriction__Catalogue;
typedef enum _Restriction__Type {
  RESTRICTION__TYPE__STREAMING = 0
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RESTRICTION__TYPE)
} Restriction__Type;
typedef enum _AudioFile__Format {
  AUDIO_FILE__FORMAT__OGG_VORBIS_96 = 0,
  AUDIO_FILE__FORMAT__OGG_VORBIS_160 = 1,
  AUDIO_FILE__FORMAT__OGG_VORBIS_320 = 2,
  AUDIO_FILE__FORMAT__MP3_256 = 3,
  AUDIO_FILE__FORMAT__MP3_320 = 4,
  AUDIO_FILE__FORMAT__MP3_160 = 5,
  AUDIO_FILE__FORMAT__MP3_96 = 6,
  AUDIO_FILE__FORMAT__MP3_160_ENC = 7,
  /*
   * v4 
   * AAC_24 = 0x8;
   * AAC_48 = 0x9;
   */
  AUDIO_FILE__FORMAT__MP4_128_DUAL = 8,
  AUDIO_FILE__FORMAT__OTHER3 = 9,
  AUDIO_FILE__FORMAT__AAC_160 = 10,
  AUDIO_FILE__FORMAT__AAC_320 = 11,
  AUDIO_FILE__FORMAT__MP4_128 = 12,
  AUDIO_FILE__FORMAT__OTHER5 = 13
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(AUDIO_FILE__FORMAT)
} AudioFile__Format;
typedef enum _Show__MediaType {
  SHOW__MEDIA_TYPE__MIXED = 0,
  SHOW__MEDIA_TYPE__AUDIO = 1,
  SHOW__MEDIA_TYPE__VIDEO = 2
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SHOW__MEDIA_TYPE)
} Show__MediaType;
typedef enum _Show__ConsumptionOrder {
  SHOW__CONSUMPTION_ORDER__SEQUENTIAL = 1,
  SHOW__CONSUMPTION_ORDER__EPISODIC = 2,
  SHOW__CONSUMPTION_ORDER__RECENT = 3
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SHOW__CONSUMPTION_ORDER)
} Show__ConsumptionOrder;
typedef enum _Show__PassthroughEnum {
  SHOW__PASSTHROUGH_ENUM__UNKNOWN = 0,
  SHOW__PASSTHROUGH_ENUM__NONE = 1,
  SHOW__PASSTHROUGH_ENUM__ALLOWED = 2
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SHOW__PASSTHROUGH_ENUM)
} Show__PassthroughEnum;

/* --- messages --- */

struct  _TopTracks
{
  ProtobufCMessage base;
  char *country;
  size_t n_track;
  Track **track;
};
#define TOP_TRACKS__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&top_tracks__descriptor) \
    , NULL, 0,NULL }


struct  _ActivityPeriod
{
  ProtobufCMessage base;
  protobuf_c_boolean has_start_year;
  int32_t start_year;
  protobuf_c_boolean has_end_year;
  int32_t end_year;
  protobuf_c_boolean has_decade;
  int32_t decade;
};
#define ACTIVITY_PERIOD__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&activity_period__descriptor) \
    , 0, 0, 0, 0, 0, 0 }


struct  _Artist
{
  ProtobufCMessage base;
  protobuf_c_boolean has_gid;
  ProtobufCBinaryData gid;
  char *name;
  protobuf_c_boolean has_popularity;
  int32_t popularity;
  size_t n_top_track;
  TopTracks **top_track;
  size_t n_album_group;
  AlbumGroup **album_group;
  size_t n_single_group;
  AlbumGroup **single_group;
  size_t n_compilation_group;
  AlbumGroup **compilation_group;
  size_t n_appears_on_group;
  AlbumGroup **appears_on_group;
  size_t n_genre;
  char **genre;
  size_t n_external_id;
  ExternalId **external_id;
  size_t n_portrait;
  Image **portrait;
  size_t n_biography;
  Biography **biography;
  size_t n_activity_period;
  ActivityPeriod **activity_period;
  size_t n_restriction;
  Restriction **restriction;
  size_t n_related;
  Artist **related;
  protobuf_c_boolean has_is_portrait_album_cover;
  protobuf_c_boolean is_portrait_album_cover;
  ImageGroup *portrait_group;
};
#define ARTIST__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&artist__descriptor) \
    , 0, {0,NULL}, NULL, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0, NULL }


struct  _AlbumGroup
{
  ProtobufCMessage base;
  size_t n_album;
  Album **album;
};
#define ALBUM_GROUP__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&album_group__descriptor) \
    , 0,NULL }


struct  _Date
{
  ProtobufCMessage base;
  protobuf_c_boolean has_year;
  int32_t year;
  protobuf_c_boolean has_month;
  int32_t month;
  protobuf_c_boolean has_day;
  int32_t day;
  protobuf_c_boolean has_hour;
  int32_t hour;
  protobuf_c_boolean has_minute;
  int32_t minute;
};
#define DATE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&date__descriptor) \
    , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }


struct  _Album
{
  ProtobufCMessage base;
  protobuf_c_boolean has_gid;
  ProtobufCBinaryData gid;
  char *name;
  size_t n_artist;
  Artist **artist;
  protobuf_c_boolean has_typ;
  Album__Type typ;
  char *label;
  Date *date;
  protobuf_c_boolean has_popularity;
  int32_t popularity;
  size_t n_genre;
  char **genre;
  size_t n_cover;
  Image **cover;
  size_t n_external_id;
  ExternalId **external_id;
  size_t n_disc;
  Disc **disc;
  size_t n_review;
  char **review;
  size_t n_copyright;
  Copyright **copyright;
  size_t n_restriction;
  Restriction **restriction;
  size_t n_related;
  Album **related;
  size_t n_sale_period;
  SalePeriod **sale_period;
  ImageGroup *cover_group;
};
#define ALBUM__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&album__descriptor) \
    , 0, {0,NULL}, NULL, 0,NULL, 0, ALBUM__TYPE__ALBUM, NULL, NULL, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, NULL }


struct  _Track
{
  ProtobufCMessage base;
  protobuf_c_boolean has_gid;
  ProtobufCBinaryData gid;
  char *name;
  Album *album;
  size_t n_artist;
  Artist **artist;
  protobuf_c_boolean has_number;
  int32_t number;
  protobuf_c_boolean has_disc_number;
  int32_t disc_number;
  protobuf_c_boolean has_duration;
  int32_t duration;
  protobuf_c_boolean has_popularity;
  int32_t popularity;
  protobuf_c_boolean has_explicit_;
  protobuf_c_boolean explicit_;
  size_t n_external_id;
  ExternalId **external_id;
  size_t n_restriction;
  Restriction **restriction;
  size_t n_file;
  AudioFile **file;
  size_t n_alternative;
  Track **alternative;
  size_t n_sale_period;
  SalePeriod **sale_period;
  size_t n_preview;
  AudioFile **preview;
};
#define TRACK__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&track__descriptor) \
    , 0, {0,NULL}, NULL, NULL, 0,NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL }


struct  _Image
{
  ProtobufCMessage base;
  protobuf_c_boolean has_file_id;
  ProtobufCBinaryData file_id;
  protobuf_c_boolean has_size;
  Image__Size size;
  protobuf_c_boolean has_width;
  int32_t width;
  protobuf_c_boolean has_height;
  int32_t height;
};
#define IMAGE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&image__descriptor) \
    , 0, {0,NULL}, 0, IMAGE__SIZE__DEFAULT, 0, 0, 0, 0 }


struct  _ImageGroup
{
  ProtobufCMessage base;
  size_t n_image;
  Image **image;
};
#define IMAGE_GROUP__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&image_group__descriptor) \
    , 0,NULL }


struct  _Biography
{
  ProtobufCMessage base;
  char *text;
  size_t n_portrait;
  Image **portrait;
  size_t n_portrait_group;
  ImageGroup **portrait_group;
};
#define BIOGRAPHY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&biography__descriptor) \
    , NULL, 0,NULL, 0,NULL }


struct  _Disc
{
  ProtobufCMessage base;
  protobuf_c_boolean has_number;
  int32_t number;
  char *name;
  size_t n_track;
  Track **track;
};
#define DISC__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&disc__descriptor) \
    , 0, 0, NULL, 0,NULL }


struct  _Copyright
{
  ProtobufCMessage base;
  protobuf_c_boolean has_typ;
  Copyright__Type typ;
  char *text;
};
#define COPYRIGHT__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&copyright__descriptor) \
    , 0, COPYRIGHT__TYPE__P, NULL }


struct  _Restriction
{
  ProtobufCMessage base;
  size_t n_catalogue;
  Restriction__Catalogue *catalogue;
  char *countries_allowed;
  char *countries_forbidden;
  protobuf_c_boolean has_typ;
  Restriction__Type typ;
  size_t n_catalogue_str;
  char **catalogue_str;
};
#define RESTRICTION__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&restriction__descriptor) \
    , 0,NULL, NULL, NULL, 0, RESTRICTION__TYPE__STREAMING, 0,NULL }


struct  _Availability
{
  ProtobufCMessage base;
  size_t n_catalogue_str;
  char **catalogue_str;
  Date *start;
};
#define AVAILABILITY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&availability__descriptor) \
    , 0,NULL, NULL }


struct  _SalePeriod
{
  ProtobufCMessage base;
  size_t n_restriction;
  Restriction **restriction;
  Date *start;
  Date *end;
};
#define SALE_PERIOD__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&sale_period__descriptor) \
    , 0,NULL, NULL, NULL }


struct  _ExternalId
{
  ProtobufCMessage base;
  char *typ;
  char *id;
};
#define EXTERNAL_ID__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&external_id__descriptor) \
    , NULL, NULL }


struct  _AudioFile
{
  ProtobufCMessage base;
  protobuf_c_boolean has_file_id;
  ProtobufCBinaryData file_id;
  protobuf_c_boolean has_format;
  AudioFile__Format format;
};
#define AUDIO_FILE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&audio_file__descriptor) \
    , 0, {0,NULL}, 0, AUDIO_FILE__FORMAT__OGG_VORBIS_96 }


struct  _VideoFile
{
  ProtobufCMessage base;
  protobuf_c_boolean has_file_id;
  ProtobufCBinaryData file_id;
};
#define VIDEO_FILE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&video_file__descriptor) \
    , 0, {0,NULL} }


/*
 * Podcast Protos
 */
struct  _Show
{
  ProtobufCMessage base;
  protobuf_c_boolean has_gid;
  ProtobufCBinaryData gid;
  char *name;
  char *description;
  protobuf_c_boolean has_deprecated_popularity;
  int32_t deprecated_popularity;
  char *publisher;
  char *language;
  protobuf_c_boolean has_explicit_;
  protobuf_c_boolean explicit_;
  ImageGroup *covers;
  size_t n_episode;
  Episode **episode;
  size_t n_copyright;
  Copyright **copyright;
  size_t n_restriction;
  Restriction **restriction;
  size_t n_keyword;
  char **keyword;
  protobuf_c_boolean has_media_type;
  Show__MediaType media_type;
  protobuf_c_boolean has_consumption_order;
  Show__ConsumptionOrder consumption_order;
  protobuf_c_boolean has_interpret_restriction_using_geoip;
  protobuf_c_boolean interpret_restriction_using_geoip;
  size_t n_availability;
  Availability **availability;
  char *country_of_origin;
  size_t n_categories;
  Category **categories;
  protobuf_c_boolean has_passthrough;
  Show__PassthroughEnum passthrough;
};
#define SHOW__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&show__descriptor) \
    , 0, {0,NULL}, NULL, NULL, 0, 0, NULL, NULL, 0, 0, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, SHOW__MEDIA_TYPE__MIXED, 0, SHOW__CONSUMPTION_ORDER__SEQUENTIAL, 0, 0, 0,NULL, NULL, 0,NULL, 0, SHOW__PASSTHROUGH_ENUM__UNKNOWN }


struct  _Episode
{
  ProtobufCMessage base;
  protobuf_c_boolean has_gid;
  ProtobufCBinaryData gid;
  char *name;
  protobuf_c_boolean has_duration;
  int32_t duration;
  protobuf_c_boolean has_popularity;
  int32_t popularity;
  size_t n_file;
  AudioFile **file;
  char *description;
  protobuf_c_boolean has_number;
  int32_t number;
  Date *publish_time;
  protobuf_c_boolean has_deprecated_popularity;
  int32_t deprecated_popularity;
  ImageGroup *covers;
  char *language;
  protobuf_c_boolean has_explicit_;
  protobuf_c_boolean explicit_;
  Show *show;
  size_t n_video;
  VideoFile **video;
  size_t n_video_preview;
  VideoFile **video_preview;
  size_t n_audio_preview;
  AudioFile **audio_preview;
  size_t n_restriction;
  Restriction **restriction;
  ImageGroup *freeze_frame;
  size_t n_keyword;
  char **keyword;
  /*
   * Order of these two flags might be wrong! 
   */
  protobuf_c_boolean has_suppress_monetization;
  protobuf_c_boolean suppress_monetization;
  protobuf_c_boolean has_interpret_restriction_using_geoip;
  protobuf_c_boolean interpret_restriction_using_geoip;
  protobuf_c_boolean has_allow_background_playback;
  protobuf_c_boolean allow_background_playback;
  size_t n_availability;
  Availability **availability;
  char *external_url;
  OriginalAudio *original_audio;
};
#define EPISODE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&episode__descriptor) \
    , 0, {0,NULL}, NULL, 0, 0, 0, 0, 0,NULL, NULL, 0, 0, NULL, 0, 0, NULL, NULL, 0, 0, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, 0, 0, 0, 0, 0, 0, 0,NULL, NULL, NULL }


struct  _Category
{
  ProtobufCMessage base;
  char *name;
  size_t n_subcategories;
  Category **subcategories;
};
#define CATEGORY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&category__descriptor) \
    , NULL, 0,NULL }


struct  _OriginalAudio
{
  ProtobufCMessage base;
  protobuf_c_boolean has_uuid;
  ProtobufCBinaryData uuid;
};
#define ORIGINAL_AUDIO__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&original_audio__descriptor) \
    , 0, {0,NULL} }


/* TopTracks methods */
void   top_tracks__init
                     (TopTracks         *message);
size_t top_tracks__get_packed_size
                     (const TopTracks   *message);
size_t top_tracks__pack
                     (const TopTracks   *message,
                      uint8_t             *out);
size_t top_tracks__pack_to_buffer
                     (const TopTracks   *message,
                      ProtobufCBuffer     *buffer);
TopTracks *
       top_tracks__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   top_tracks__free_unpacked
                     (TopTracks *message,
                      ProtobufCAllocator *allocator);
/* ActivityPeriod methods */
void   activity_period__init
                     (ActivityPeriod         *message);
size_t activity_period__get_packed_size
                     (const ActivityPeriod   *message);
size_t activity_period__pack
                     (const ActivityPeriod   *message,
                      uint8_t             *out);
size_t activity_period__pack_to_buffer
                     (const ActivityPeriod   *message,
                      ProtobufCBuffer     *buffer);
ActivityPeriod *
       activity_period__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   activity_period__free_unpacked
                     (ActivityPeriod *message,
                      ProtobufCAllocator *allocator);
/* Artist methods */
void   artist__init
                     (Artist         *message);
size_t artist__get_packed_size
                     (const Artist   *message);
size_t artist__pack
                     (const Artist   *message,
                      uint8_t             *out);
size_t artist__pack_to_buffer
                     (const Artist   *message,
                      ProtobufCBuffer     *buffer);
Artist *
       artist__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   artist__free_unpacked
                     (Artist *message,
                      ProtobufCAllocator *allocator);
/* AlbumGroup methods */
void   album_group__init
                     (AlbumGroup         *message);
size_t album_group__get_packed_size
                     (const AlbumGroup   *message);
size_t album_group__pack
                     (const AlbumGroup   *message,
                      uint8_t             *out);
size_t album_group__pack_to_buffer
                     (const AlbumGroup   *message,
                      ProtobufCBuffer     *buffer);
AlbumGroup *
       album_group__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   album_group__free_unpacked
                     (AlbumGroup *message,
                      ProtobufCAllocator *allocator);
/* Date methods */
void   date__init
                     (Date         *message);
size_t date__get_packed_size
                     (const Date   *message);
size_t date__pack
                     (const Date   *message,
                      uint8_t             *out);
size_t date__pack_to_buffer
                     (const Date   *message,
                      ProtobufCBuffer     *buffer);
Date *
       date__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   date__free_unpacked
                     (Date *message,
                      ProtobufCAllocator *allocator);
/* Album methods */
void   album__init
                     (Album         *message);
size_t album__get_packed_size
                     (const Album   *message);
size_t album__pack
                     (const Album   *message,
                      uint8_t             *out);
size_t album__pack_to_buffer
                     (const Album   *message,
                      ProtobufCBuffer     *buffer);
Album *
       album__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   album__free_unpacked
                     (Album *message,
                      ProtobufCAllocator *allocator);
/* Track methods */
void   track__init
                     (Track         *message);
size_t track__get_packed_size
                     (const Track   *message);
size_t track__pack
                     (const Track   *message,
                      uint8_t             *out);
size_t track__pack_to_buffer
                     (const Track   *message,
                      ProtobufCBuffer     *buffer);
Track *
       track__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   track__free_unpacked
                     (Track *message,
                      ProtobufCAllocator *allocator);
/* Image methods */
void   image__init
                     (Image         *message);
size_t image__get_packed_size
                     (const Image   *message);
size_t image__pack
                     (const Image   *message,
                      uint8_t             *out);
size_t image__pack_to_buffer
                     (const Image   *message,
                      ProtobufCBuffer     *buffer);
Image *
       image__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   image__free_unpacked
                     (Image *message,
                      ProtobufCAllocator *allocator);
/* ImageGroup methods */
void   image_group__init
                     (ImageGroup         *message);
size_t image_group__get_packed_size
                     (const ImageGroup   *message);
size_t image_group__pack
                     (const ImageGroup   *message,
                      uint8_t             *out);
size_t image_group__pack_to_buffer
                     (const ImageGroup   *message,
                      ProtobufCBuffer     *buffer);
ImageGroup *
       image_group__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   image_group__free_unpacked
                     (ImageGroup *message,
                      ProtobufCAllocator *allocator);
/* Biography methods */
void   biography__init
                     (Biography         *message);
size_t biography__get_packed_size
                     (const Biography   *message);
size_t biography__pack
                     (const Biography   *message,
                      uint8_t             *out);
size_t biography__pack_to_buffer
                     (const Biography   *message,
                      ProtobufCBuffer     *buffer);
Biography *
       biography__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   biography__free_unpacked
                     (Biography *message,
                      ProtobufCAllocator *allocator);
/* Disc methods */
void   disc__init
                     (Disc         *message);
size_t disc__get_packed_size
                     (const Disc   *message);
size_t disc__pack
                     (const Disc   *message,
                      uint8_t             *out);
size_t disc__pack_to_buffer
                     (const Disc   *message,
                      ProtobufCBuffer     *buffer);
Disc *
       disc__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   disc__free_unpacked
                     (Disc *message,
                      ProtobufCAllocator *allocator);
/* Copyright methods */
void   copyright__init
                     (Copyright         *message);
size_t copyright__get_packed_size
                     (const Copyright   *message);
size_t copyright__pack
                     (const Copyright   *message,
                      uint8_t             *out);
size_t copyright__pack_to_buffer
                     (const Copyright   *message,
                      ProtobufCBuffer     *buffer);
Copyright *
       copyright__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   copyright__free_unpacked
                     (Copyright *message,
                      ProtobufCAllocator *allocator);
/* Restriction methods */
void   restriction__init
                     (Restriction         *message);
size_t restriction__get_packed_size
                     (const Restriction   *message);
size_t restriction__pack
                     (const Restriction   *message,
                      uint8_t             *out);
size_t restriction__pack_to_buffer
                     (const Restriction   *message,
                      ProtobufCBuffer     *buffer);
Restriction *
       restriction__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   restriction__free_unpacked
                     (Restriction *message,
                      ProtobufCAllocator *allocator);
/* Availability methods */
void   availability__init
                     (Availability         *message);
size_t availability__get_packed_size
                     (const Availability   *message);
size_t availability__pack
                     (const Availability   *message,
                      uint8_t             *out);
size_t availability__pack_to_buffer
                     (const Availability   *message,
                      ProtobufCBuffer     *buffer);
Availability *
       availability__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   availability__free_unpacked
                     (Availability *message,
                      ProtobufCAllocator *allocator);
/* SalePeriod methods */
void   sale_period__init
                     (SalePeriod         *message);
size_t sale_period__get_packed_size
                     (const SalePeriod   *message);
size_t sale_period__pack
                     (const SalePeriod   *message,
                      uint8_t             *out);
size_t sale_period__pack_to_buffer
                     (const SalePeriod   *message,
                      ProtobufCBuffer     *buffer);
SalePeriod *
       sale_period__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   sale_period__free_unpacked
                     (SalePeriod *message,
                      ProtobufCAllocator *allocator);
/* ExternalId methods */
void   external_id__init
                     (ExternalId         *message);
size_t external_id__get_packed_size
                     (const ExternalId   *message);
size_t external_id__pack
                     (const ExternalId   *message,
                      uint8_t             *out);
size_t external_id__pack_to_buffer
                     (const ExternalId   *message,
                      ProtobufCBuffer     *buffer);
ExternalId *
       external_id__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   external_id__free_unpacked
                     (ExternalId *message,
                      ProtobufCAllocator *allocator);
/* AudioFile methods */
void   audio_file__init
                     (AudioFile         *message);
size_t audio_file__get_packed_size
                     (const AudioFile   *message);
size_t audio_file__pack
                     (const AudioFile   *message,
                      uint8_t             *out);
size_t audio_file__pack_to_buffer
                     (const AudioFile   *message,
                      ProtobufCBuffer     *buffer);
AudioFile *
       audio_file__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   audio_file__free_unpacked
                     (AudioFile *message,
                      ProtobufCAllocator *allocator);
/* VideoFile methods */
void   video_file__init
                     (VideoFile         *message);
size_t video_file__get_packed_size
                     (const VideoFile   *message);
size_t video_file__pack
                     (const VideoFile   *message,
                      uint8_t             *out);
size_t video_file__pack_to_buffer
                     (const VideoFile   *message,
                      ProtobufCBuffer     *buffer);
VideoFile *
       video_file__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   video_file__free_unpacked
                     (VideoFile *message,
                      ProtobufCAllocator *allocator);
/* Show methods */
void   show__init
                     (Show         *message);
size_t show__get_packed_size
                     (const Show   *message);
size_t show__pack
                     (const Show   *message,
                      uint8_t             *out);
size_t show__pack_to_buffer
                     (const Show   *message,
                      ProtobufCBuffer     *buffer);
Show *
       show__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   show__free_unpacked
                     (Show *message,
                      ProtobufCAllocator *allocator);
/* Episode methods */
void   episode__init
                     (Episode         *message);
size_t episode__get_packed_size
                     (const Episode   *message);
size_t episode__pack
                     (const Episode   *message,
                      uint8_t             *out);
size_t episode__pack_to_buffer
                     (const Episode   *message,
                      ProtobufCBuffer     *buffer);
Episode *
       episode__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   episode__free_unpacked
                     (Episode *message,
                      ProtobufCAllocator *allocator);
/* Category methods */
void   category__init
                     (Category         *message);
size_t category__get_packed_size
                     (const Category   *message);
size_t category__pack
                     (const Category   *message,
                      uint8_t             *out);
size_t category__pack_to_buffer
                     (const Category   *message,
                      ProtobufCBuffer     *buffer);
Category *
       category__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   category__free_unpacked
                     (Category *message,
                      ProtobufCAllocator *allocator);
/* OriginalAudio methods */
void   original_audio__init
                     (OriginalAudio         *message);
size_t original_audio__get_packed_size
                     (const OriginalAudio   *message);
size_t original_audio__pack
                     (const OriginalAudio   *message,
                      uint8_t             *out);
size_t original_audio__pack_to_buffer
                     (const OriginalAudio   *message,
                      ProtobufCBuffer     *buffer);
OriginalAudio *
       original_audio__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   original_audio__free_unpacked
                     (OriginalAudio *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*TopTracks_Closure)
                 (const TopTracks *message,
                  void *closure_data);
typedef void (*ActivityPeriod_Closure)
                 (const ActivityPeriod *message,
                  void *closure_data);
typedef void (*Artist_Closure)
                 (const Artist *message,
                  void *closure_data);
typedef void (*AlbumGroup_Closure)
                 (const AlbumGroup *message,
                  void *closure_data);
typedef void (*Date_Closure)
                 (const Date *message,
                  void *closure_data);
typedef void (*Album_Closure)
                 (const Album *message,
                  void *closure_data);
typedef void (*Track_Closure)
                 (const Track *message,
                  void *closure_data);
typedef void (*Image_Closure)
                 (const Image *message,
                  void *closure_data);
typedef void (*ImageGroup_Closure)
                 (const ImageGroup *message,
                  void *closure_data);
typedef void (*Biography_Closure)
                 (const Biography *message,
                  void *closure_data);
typedef void (*Disc_Closure)
                 (const Disc *message,
                  void *closure_data);
typedef void (*Copyright_Closure)
                 (const Copyright *message,
                  void *closure_data);
typedef void (*Restriction_Closure)
                 (const Restriction *message,
                  void *closure_data);
typedef void (*Availability_Closure)
                 (const Availability *message,
                  void *closure_data);
typedef void (*SalePeriod_Closure)
                 (const SalePeriod *message,
                  void *closure_data);
typedef void (*ExternalId_Closure)
                 (const ExternalId *message,
                  void *closure_data);
typedef void (*AudioFile_Closure)
                 (const AudioFile *message,
                  void *closure_data);
typedef void (*VideoFile_Closure)
                 (const VideoFile *message,
                  void *closure_data);
typedef void (*Show_Closure)
                 (const Show *message,
                  void *closure_data);
typedef void (*Episode_Closure)
                 (const Episode *message,
                  void *closure_data);
typedef void (*Category_Closure)
                 (const Category *message,
                  void *closure_data);
typedef void (*OriginalAudio_Closure)
                 (const OriginalAudio *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCMessageDescriptor top_tracks__descriptor;
extern const ProtobufCMessageDescriptor activity_period__descriptor;
extern const ProtobufCMessageDescriptor artist__descriptor;
extern const ProtobufCMessageDescriptor album_group__descriptor;
extern const ProtobufCMessageDescriptor date__descriptor;
extern const ProtobufCMessageDescriptor album__descriptor;
extern const ProtobufCEnumDescriptor    album__type__descriptor;
extern const ProtobufCMessageDescriptor track__descriptor;
extern const ProtobufCMessageDescriptor image__descriptor;
extern const ProtobufCEnumDescriptor    image__size__descriptor;
extern const ProtobufCMessageDescriptor image_group__descriptor;
extern const ProtobufCMessageDescriptor biography__descriptor;
extern const ProtobufCMessageDescriptor disc__descriptor;
extern const ProtobufCMessageDescriptor copyright__descriptor;
extern const ProtobufCEnumDescriptor    copyright__type__descriptor;
extern const ProtobufCMessageDescriptor restriction__descriptor;
extern const ProtobufCEnumDescriptor    restriction__catalogue__descriptor;
extern const ProtobufCEnumDescriptor    restriction__type__descriptor;
extern const ProtobufCMessageDescriptor availability__descriptor;
extern const ProtobufCMessageDescriptor sale_period__descriptor;
extern const ProtobufCMessageDescriptor external_id__descriptor;
extern const ProtobufCMessageDescriptor audio_file__descriptor;
extern const ProtobufCEnumDescriptor    audio_file__format__descriptor;
extern const ProtobufCMessageDescriptor video_file__descriptor;
extern const ProtobufCMessageDescriptor show__descriptor;
extern const ProtobufCEnumDescriptor    show__media_type__descriptor;
extern const ProtobufCEnumDescriptor    show__consumption_order__descriptor;
extern const ProtobufCEnumDescriptor    show__passthrough_enum__descriptor;
extern const ProtobufCMessageDescriptor episode__descriptor;
extern const ProtobufCMessageDescriptor category__descriptor;
extern const ProtobufCMessageDescriptor original_audio__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_proto_2fmetadata_2eproto__INCLUDED */
