diff --git a/specs-code/discord/one-specs.h b/specs-code/discord/one-specs.h index 343895b10..40fb331e6 100644 --- a/specs-code/discord/one-specs.h +++ b/specs-code/discord/one-specs.h @@ -915,6 +915,79 @@ struct discord_role; * @see https://discord.com/developers/docs/topics/permissions#role-object-role-tags-structure */ struct discord_role_tags; +/* This file is generated from specs/discord/stage-instance.endpoints-params.json, Please don't edit it. */ + +/* defined at specs/discord/stage-instance.endpoints-params.json:8:22 */ +/** + * @brief Create Stage Instance + * + */ +struct discord_create_stage_instance_params; + +/* defined at specs/discord/stage-instance.endpoints-params.json:19:22 */ +/** + * @brief Modify Stage Instance + * + */ +struct discord_modify_stage_instance_params; +/* This file is generated from specs/discord/stage-instance.json, Please don't edit it. */ + + + +/* defined at specs/discord/stage-instance.json:17:22 */ +/** + * @brief Stage Instance Structure + * + */ +struct discord_stage_instance; +/* This file is generated from specs/discord/sticker.endpoints-params.json, Please don't edit it. */ + +/* defined at specs/discord/sticker.endpoints-params.json:8:22 */ +/** + * @brief List Nitro Sticker Packs + * + */ +struct discord_list_nitro_sticker_packs_response; + +/* defined at specs/discord/sticker.endpoints-params.json:17:22 */ +/** + * @brief Create Guild Sticker + * + */ +struct discord_create_guild_sticker_params; + +/* defined at specs/discord/sticker.endpoints-params.json:29:22 */ +/** + * @brief Modify Guild Sticker + * + */ +struct discord_modify_guild_sticker_params; +/* This file is generated from specs/discord/sticker.json, Please don't edit it. */ + + + + + +/* defined at specs/discord/sticker.json:28:22 */ +/** + * @brief Sticker Structure + * + */ +struct discord_sticker; + +/* defined at specs/discord/sticker.json:47:22 */ +/** + * @brief Sticker Item Structure + * + */ +struct discord_sticker_item; + +/* defined at specs/discord/sticker.json:57:22 */ +/** + * @brief Sticker Pack Structure + * + */ +struct discord_sticker_pack; /* This file is generated from specs/discord/user.endpoints-params.json, Please don't edit it. */ /* defined at specs/discord/user.endpoints-params.json:9:22 */ @@ -2177,6 +2250,95 @@ extern void discord_bitwise_permission_flags_list_from_json_v(char *str, size_t extern void discord_bitwise_permission_flags_list_from_json(char *str, size_t len, enum discord_bitwise_permission_flags ***p); extern size_t discord_bitwise_permission_flags_list_to_json_v(char *str, size_t len, void *p); extern size_t discord_bitwise_permission_flags_list_to_json(char *str, size_t len, enum discord_bitwise_permission_flags **p); +/* This file is generated from specs/discord/stage-instance.endpoints-params.json, Please don't edit it. */ +/* This file is generated from specs/discord/stage-instance.json, Please don't edit it. */ + + +/* Privacy Level */ +/* defined at specs/discord/stage-instance.json:5:5 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * :code:`char* discord_stage_instance_privacy_level_print(enum discord_stage_instance_privacy_level code)` + * * :code:`enum discord_stage_instance_privacy_level discord_stage_instance_privacy_level_eval(char *code_as_str)` + * @endverbatim + */ +enum discord_stage_instance_privacy_level { + DISCORD_STAGE_INSTANCE_PUBLIC = 1, /**< The Stage instance is visible publicly, such as on Stage Discovery. */ + DISCORD_STAGE_INSTANCE_GUILD_ONLY = 2, /**< The Stage instance is visible to only guild members. */ +}; +extern char* discord_stage_instance_privacy_level_print(enum discord_stage_instance_privacy_level); +extern enum discord_stage_instance_privacy_level discord_stage_instance_privacy_level_eval(char*); +extern void discord_stage_instance_privacy_level_list_free_v(void **p); +extern void discord_stage_instance_privacy_level_list_free(enum discord_stage_instance_privacy_level **p); +extern void discord_stage_instance_privacy_level_list_from_json_v(char *str, size_t len, void *p); +extern void discord_stage_instance_privacy_level_list_from_json(char *str, size_t len, enum discord_stage_instance_privacy_level ***p); +extern size_t discord_stage_instance_privacy_level_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_stage_instance_privacy_level_list_to_json(char *str, size_t len, enum discord_stage_instance_privacy_level **p); +/* This file is generated from specs/discord/sticker.endpoints-params.json, Please don't edit it. */ +/* This file is generated from specs/discord/sticker.json, Please don't edit it. */ + + +/* Sticker Types */ +/* defined at specs/discord/sticker.json:5:5 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * :code:`char* discord_sticker_types_print(enum discord_sticker_types code)` + * * :code:`enum discord_sticker_types discord_sticker_types_eval(char *code_as_str)` + * @endverbatim + */ +enum discord_sticker_types { + DISCORD_STICKER_STANDARD = 1, /**< an official sticker in a pack, part of Nitro or in a removed purchasable pack */ + DISCORD_STICKER_GUILD = 2, /**< a sticker uploaded to a Boosted guild for the guild's members */ +}; +extern char* discord_sticker_types_print(enum discord_sticker_types); +extern enum discord_sticker_types discord_sticker_types_eval(char*); +extern void discord_sticker_types_list_free_v(void **p); +extern void discord_sticker_types_list_free(enum discord_sticker_types **p); +extern void discord_sticker_types_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_types_list_from_json(char *str, size_t len, enum discord_sticker_types ***p); +extern size_t discord_sticker_types_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_types_list_to_json(char *str, size_t len, enum discord_sticker_types **p); + + +/* Sticker Format Types */ +/* defined at specs/discord/sticker.json:15:5 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * :code:`char* discord_sticker_format_types_print(enum discord_sticker_format_types code)` + * * :code:`enum discord_sticker_format_types discord_sticker_format_types_eval(char *code_as_str)` + * @endverbatim + */ +enum discord_sticker_format_types { + DISCORD_STICKER_PNG = 1, + DISCORD_STICKER_APNG = 2, + DISCORD_STICKER_LOTTIE = 3, +}; +extern char* discord_sticker_format_types_print(enum discord_sticker_format_types); +extern enum discord_sticker_format_types discord_sticker_format_types_eval(char*); +extern void discord_sticker_format_types_list_free_v(void **p); +extern void discord_sticker_format_types_list_free(enum discord_sticker_format_types **p); +extern void discord_sticker_format_types_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_format_types_list_from_json(char *str, size_t len, enum discord_sticker_format_types ***p); +extern size_t discord_sticker_format_types_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_format_types_list_to_json(char *str, size_t len, enum discord_sticker_format_types **p); /* This file is generated from specs/discord/user.endpoints-params.json, Please don't edit it. */ /* This file is generated from specs/discord/user.json, Please don't edit it. */ @@ -8532,6 +8694,450 @@ struct discord_role_tags { '{ "name": "premium_subscriber", "type":{ "base":"int" }}' */ int premium_subscriber; +}; +/* This file is generated from specs/discord/stage-instance.endpoints-params.json, Please don't edit it. */ + +/* Create Stage Instance */ +/* defined at specs/discord/stage-instance.endpoints-params.json:8:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_create_stage_instance_params_init(struct discord_create_stage_instance_params *)` + * * Cleanup: + + * * :code:`void discord_create_stage_instance_params_cleanup(struct discord_create_stage_instance_params *)` + * * :code:`void discord_create_stage_instance_params_list_free(struct discord_create_stage_instance_params **)` + * * JSON Decoder: + + * * :code:`void discord_create_stage_instance_params_from_json(char *rbuf, size_t len, struct discord_create_stage_instance_params **)` + * * :code:`void discord_create_stage_instance_params_list_from_json(char *rbuf, size_t len, struct discord_create_stage_instance_params ***)` + * * JSON Encoder: + + * * :code:`void discord_create_stage_instance_params_to_json(char *wbuf, size_t len, struct discord_create_stage_instance_params *)` + * * :code:`void discord_create_stage_instance_params_list_to_json(char *wbuf, size_t len, struct discord_create_stage_instance_params **)` + * @endverbatim + */ +struct discord_create_stage_instance_params { + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + u64_snowflake_t channel_id; /**< The id of the Stage channel */ + + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + char *topic; /**< The topic of the Stage instance (1-120 characters) */ + + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + enum discord_stage_instance_privacy_level privacy_level; + +}; + +/* Modify Stage Instance */ +/* defined at specs/discord/stage-instance.endpoints-params.json:19:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_modify_stage_instance_params_init(struct discord_modify_stage_instance_params *)` + * * Cleanup: + + * * :code:`void discord_modify_stage_instance_params_cleanup(struct discord_modify_stage_instance_params *)` + * * :code:`void discord_modify_stage_instance_params_list_free(struct discord_modify_stage_instance_params **)` + * * JSON Decoder: + + * * :code:`void discord_modify_stage_instance_params_from_json(char *rbuf, size_t len, struct discord_modify_stage_instance_params **)` + * * :code:`void discord_modify_stage_instance_params_list_from_json(char *rbuf, size_t len, struct discord_modify_stage_instance_params ***)` + * * JSON Encoder: + + * * :code:`void discord_modify_stage_instance_params_to_json(char *wbuf, size_t len, struct discord_modify_stage_instance_params *)` + * * :code:`void discord_modify_stage_instance_params_list_to_json(char *wbuf, size_t len, struct discord_modify_stage_instance_params **)` + * @endverbatim + */ +struct discord_modify_stage_instance_params { + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + char *topic; /**< The topic of the Stage instance (1-120 characters) */ + + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + enum discord_stage_instance_privacy_level privacy_level; + +}; +/* This file is generated from specs/discord/stage-instance.json, Please don't edit it. */ + + + +/* Stage Instance Structure */ +/* defined at specs/discord/stage-instance.json:17:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_stage_instance_init(struct discord_stage_instance *)` + * * Cleanup: + + * * :code:`void discord_stage_instance_cleanup(struct discord_stage_instance *)` + * * :code:`void discord_stage_instance_list_free(struct discord_stage_instance **)` + * * JSON Decoder: + + * * :code:`void discord_stage_instance_from_json(char *rbuf, size_t len, struct discord_stage_instance **)` + * * :code:`void discord_stage_instance_list_from_json(char *rbuf, size_t len, struct discord_stage_instance ***)` + * * JSON Encoder: + + * * :code:`void discord_stage_instance_to_json(char *wbuf, size_t len, struct discord_stage_instance *)` + * * :code:`void discord_stage_instance_list_to_json(char *wbuf, size_t len, struct discord_stage_instance **)` + * @endverbatim + */ +struct discord_stage_instance { + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + u64_snowflake_t id; /**< The id of this Stage instance */ + + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + u64_snowflake_t guild_id; /**< The guild id of the associated Stage channel */ + + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + u64_snowflake_t channel_id; /**< The id of the associated Stage channel */ + + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + char *topic; /**< The topic of the Stage instance (1-120 characters) */ + + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + enum discord_stage_instance_privacy_level privacy_level; /**< The privacy level of the Stage instance */ + + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + bool discoverable_disabled; + +}; +/* This file is generated from specs/discord/sticker.endpoints-params.json, Please don't edit it. */ + +/* List Nitro Sticker Packs */ +/* defined at specs/discord/sticker.endpoints-params.json:8:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_list_nitro_sticker_packs_response_init(struct discord_list_nitro_sticker_packs_response *)` + * * Cleanup: + + * * :code:`void discord_list_nitro_sticker_packs_response_cleanup(struct discord_list_nitro_sticker_packs_response *)` + * * :code:`void discord_list_nitro_sticker_packs_response_list_free(struct discord_list_nitro_sticker_packs_response **)` + * * JSON Decoder: + + * * :code:`void discord_list_nitro_sticker_packs_response_from_json(char *rbuf, size_t len, struct discord_list_nitro_sticker_packs_response **)` + * * :code:`void discord_list_nitro_sticker_packs_response_list_from_json(char *rbuf, size_t len, struct discord_list_nitro_sticker_packs_response ***)` + * * JSON Encoder: + + * * :code:`void discord_list_nitro_sticker_packs_response_to_json(char *wbuf, size_t len, struct discord_list_nitro_sticker_packs_response *)` + * * :code:`void discord_list_nitro_sticker_packs_response_list_to_json(char *wbuf, size_t len, struct discord_list_nitro_sticker_packs_response **)` + * @endverbatim + */ +struct discord_list_nitro_sticker_packs_response { + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + struct discord_sticker_pack **sticker_packs; /**< array of sticker pack objects */ + +}; + +/* Create Guild Sticker */ +/* defined at specs/discord/sticker.endpoints-params.json:17:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_create_guild_sticker_params_init(struct discord_create_guild_sticker_params *)` + * * Cleanup: + + * * :code:`void discord_create_guild_sticker_params_cleanup(struct discord_create_guild_sticker_params *)` + * * :code:`void discord_create_guild_sticker_params_list_free(struct discord_create_guild_sticker_params **)` + * * JSON Decoder: + + * * :code:`void discord_create_guild_sticker_params_from_json(char *rbuf, size_t len, struct discord_create_guild_sticker_params **)` + * * :code:`void discord_create_guild_sticker_params_list_from_json(char *rbuf, size_t len, struct discord_create_guild_sticker_params ***)` + * * JSON Encoder: + + * * :code:`void discord_create_guild_sticker_params_to_json(char *wbuf, size_t len, struct discord_create_guild_sticker_params *)` + * * :code:`void discord_create_guild_sticker_params_list_to_json(char *wbuf, size_t len, struct discord_create_guild_sticker_params **)` + * @endverbatim + */ +struct discord_create_guild_sticker_params { + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + char *name; /**< name of the sticker (2-30 characters) */ + + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + char *description; /**< description of the sticker (empty or 2-100 characters) */ + + /* specs/discord/sticker.endpoints-params.json:22:18 + '{"name":"file", "type":{ "base":"struct discord_file", "dec":"*" }, "loc":"multipart", "comment":"the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB"}' */ + struct discord_file *file; /**< the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB */ + + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + char *tags; /**< autocomplete/suggestion tags for the sticker (max 200 characters) */ + +}; + +/* Modify Guild Sticker */ +/* defined at specs/discord/sticker.endpoints-params.json:29:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_modify_guild_sticker_params_init(struct discord_modify_guild_sticker_params *)` + * * Cleanup: + + * * :code:`void discord_modify_guild_sticker_params_cleanup(struct discord_modify_guild_sticker_params *)` + * * :code:`void discord_modify_guild_sticker_params_list_free(struct discord_modify_guild_sticker_params **)` + * * JSON Decoder: + + * * :code:`void discord_modify_guild_sticker_params_from_json(char *rbuf, size_t len, struct discord_modify_guild_sticker_params **)` + * * :code:`void discord_modify_guild_sticker_params_list_from_json(char *rbuf, size_t len, struct discord_modify_guild_sticker_params ***)` + * * JSON Encoder: + + * * :code:`void discord_modify_guild_sticker_params_to_json(char *wbuf, size_t len, struct discord_modify_guild_sticker_params *)` + * * :code:`void discord_modify_guild_sticker_params_list_to_json(char *wbuf, size_t len, struct discord_modify_guild_sticker_params **)` + * @endverbatim + */ +struct discord_modify_guild_sticker_params { + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + char *name; /**< name of the sticker (2-30 characters) */ + + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + char *description; /**< description of the sticker (empty or 2-100 characters) */ + + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + char *tags; /**< autocomplete/suggestion tags for the sticker (max 200 characters) */ + +}; +/* This file is generated from specs/discord/sticker.json, Please don't edit it. */ + + + + + +/* Sticker Structure */ +/* defined at specs/discord/sticker.json:28:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_sticker_init(struct discord_sticker *)` + * * Cleanup: + + * * :code:`void discord_sticker_cleanup(struct discord_sticker *)` + * * :code:`void discord_sticker_list_free(struct discord_sticker **)` + * * JSON Decoder: + + * * :code:`void discord_sticker_from_json(char *rbuf, size_t len, struct discord_sticker **)` + * * :code:`void discord_sticker_list_from_json(char *rbuf, size_t len, struct discord_sticker ***)` + * * JSON Encoder: + + * * :code:`void discord_sticker_to_json(char *wbuf, size_t len, struct discord_sticker *)` + * * :code:`void discord_sticker_list_to_json(char *wbuf, size_t len, struct discord_sticker **)` + * @endverbatim + */ +struct discord_sticker { + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + u64_snowflake_t id; /**< id of the sticker */ + + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + u64_snowflake_t pack_id; /**< for standard stickers, id of the pack the sticker is from */ + + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + char *name; /**< name of the sticker */ + + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + char *description; /**< description of the sticker */ + + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + char *tags; /**< autocomplete/suggestion tags for the sticker (max 200 characters) */ + + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + char *asset; /**< Deprecated previously the sticker asset hash, now an empty string */ + + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + enum discord_sticker_types type; /**< type of sticker */ + + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + enum discord_sticker_format_types format_type; /**< type of sticker format */ + + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + bool available; /**< whether this guild sticker can be used, may be false due to loss of Server Boosts */ + + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + u64_snowflake_t guild_id; /**< id of the guild that owns this sticker */ + + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + struct discord_user *user; /**< the user that uploaded the guild sticker */ + + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + int sort_value; /**< the standard sticker's sort order within its pack */ + +}; + +/* Sticker Item Structure */ +/* defined at specs/discord/sticker.json:47:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_sticker_item_init(struct discord_sticker_item *)` + * * Cleanup: + + * * :code:`void discord_sticker_item_cleanup(struct discord_sticker_item *)` + * * :code:`void discord_sticker_item_list_free(struct discord_sticker_item **)` + * * JSON Decoder: + + * * :code:`void discord_sticker_item_from_json(char *rbuf, size_t len, struct discord_sticker_item **)` + * * :code:`void discord_sticker_item_list_from_json(char *rbuf, size_t len, struct discord_sticker_item ***)` + * * JSON Encoder: + + * * :code:`void discord_sticker_item_to_json(char *wbuf, size_t len, struct discord_sticker_item *)` + * * :code:`void discord_sticker_item_list_to_json(char *wbuf, size_t len, struct discord_sticker_item **)` + * @endverbatim + */ +struct discord_sticker_item { + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + u64_snowflake_t id; /**< id of the sticker */ + + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + char *name; /**< name of the sticker */ + + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + enum discord_sticker_format_types format_type; /**< type of sticker format */ + +}; + +/* Sticker Pack Structure */ +/* defined at specs/discord/sticker.json:57:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_sticker_pack_init(struct discord_sticker_pack *)` + * * Cleanup: + + * * :code:`void discord_sticker_pack_cleanup(struct discord_sticker_pack *)` + * * :code:`void discord_sticker_pack_list_free(struct discord_sticker_pack **)` + * * JSON Decoder: + + * * :code:`void discord_sticker_pack_from_json(char *rbuf, size_t len, struct discord_sticker_pack **)` + * * :code:`void discord_sticker_pack_list_from_json(char *rbuf, size_t len, struct discord_sticker_pack ***)` + * * JSON Encoder: + + * * :code:`void discord_sticker_pack_to_json(char *wbuf, size_t len, struct discord_sticker_pack *)` + * * :code:`void discord_sticker_pack_list_to_json(char *wbuf, size_t len, struct discord_sticker_pack **)` + * @endverbatim + */ +struct discord_sticker_pack { + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + u64_snowflake_t id; /**< id of the sticker pack */ + + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + struct discord_sticker **stickers; /**< the stickers in the pack */ + + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + char *name; /**< name of the sticker pack */ + + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + u64_snowflake_t sku_id; /**< id of the pack's SKU */ + + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + u64_snowflake_t cover_sticker_id; /**< id of a sticker in the pack which is shown as the pack's icon */ + + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + char *description; /**< description of the sticker pack */ + + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + u64_snowflake_t banner_asset_id; /**< id of the sticker pack's banner image */ + }; /* This file is generated from specs/discord/user.endpoints-params.json, Please don't edit it. */ @@ -10989,6 +11595,151 @@ extern void discord_role_tags_list_from_json_v(char *str, size_t len, void *p); extern void discord_role_tags_list_from_json(char *str, size_t len, struct discord_role_tags ***p); extern size_t discord_role_tags_list_to_json_v(char *str, size_t len, void *p); extern size_t discord_role_tags_list_to_json(char *str, size_t len, struct discord_role_tags **p); +/* This file is generated from specs/discord/stage-instance.endpoints-params.json, Please don't edit it. */ + +extern void discord_create_stage_instance_params_cleanup_v(void *p); +extern void discord_create_stage_instance_params_cleanup(struct discord_create_stage_instance_params *p); +extern void discord_create_stage_instance_params_init_v(void *p); +extern void discord_create_stage_instance_params_init(struct discord_create_stage_instance_params *p); +extern void discord_create_stage_instance_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_create_stage_instance_params_from_json(char *json, size_t len, struct discord_create_stage_instance_params **pp); +extern size_t discord_create_stage_instance_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_create_stage_instance_params_to_json(char *json, size_t len, struct discord_create_stage_instance_params *p); +extern void discord_create_stage_instance_params_list_free_v(void **p); +extern void discord_create_stage_instance_params_list_free(struct discord_create_stage_instance_params **p); +extern void discord_create_stage_instance_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_create_stage_instance_params_list_from_json(char *str, size_t len, struct discord_create_stage_instance_params ***p); +extern size_t discord_create_stage_instance_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_create_stage_instance_params_list_to_json(char *str, size_t len, struct discord_create_stage_instance_params **p); + +extern void discord_modify_stage_instance_params_cleanup_v(void *p); +extern void discord_modify_stage_instance_params_cleanup(struct discord_modify_stage_instance_params *p); +extern void discord_modify_stage_instance_params_init_v(void *p); +extern void discord_modify_stage_instance_params_init(struct discord_modify_stage_instance_params *p); +extern void discord_modify_stage_instance_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_modify_stage_instance_params_from_json(char *json, size_t len, struct discord_modify_stage_instance_params **pp); +extern size_t discord_modify_stage_instance_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_modify_stage_instance_params_to_json(char *json, size_t len, struct discord_modify_stage_instance_params *p); +extern void discord_modify_stage_instance_params_list_free_v(void **p); +extern void discord_modify_stage_instance_params_list_free(struct discord_modify_stage_instance_params **p); +extern void discord_modify_stage_instance_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_modify_stage_instance_params_list_from_json(char *str, size_t len, struct discord_modify_stage_instance_params ***p); +extern size_t discord_modify_stage_instance_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_modify_stage_instance_params_list_to_json(char *str, size_t len, struct discord_modify_stage_instance_params **p); +/* This file is generated from specs/discord/stage-instance.json, Please don't edit it. */ + + + +extern void discord_stage_instance_cleanup_v(void *p); +extern void discord_stage_instance_cleanup(struct discord_stage_instance *p); +extern void discord_stage_instance_init_v(void *p); +extern void discord_stage_instance_init(struct discord_stage_instance *p); +extern void discord_stage_instance_from_json_v(char *json, size_t len, void *pp); +extern void discord_stage_instance_from_json(char *json, size_t len, struct discord_stage_instance **pp); +extern size_t discord_stage_instance_to_json_v(char *json, size_t len, void *p); +extern size_t discord_stage_instance_to_json(char *json, size_t len, struct discord_stage_instance *p); +extern void discord_stage_instance_list_free_v(void **p); +extern void discord_stage_instance_list_free(struct discord_stage_instance **p); +extern void discord_stage_instance_list_from_json_v(char *str, size_t len, void *p); +extern void discord_stage_instance_list_from_json(char *str, size_t len, struct discord_stage_instance ***p); +extern size_t discord_stage_instance_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_stage_instance_list_to_json(char *str, size_t len, struct discord_stage_instance **p); +/* This file is generated from specs/discord/sticker.endpoints-params.json, Please don't edit it. */ + +extern void discord_list_nitro_sticker_packs_response_cleanup_v(void *p); +extern void discord_list_nitro_sticker_packs_response_cleanup(struct discord_list_nitro_sticker_packs_response *p); +extern void discord_list_nitro_sticker_packs_response_init_v(void *p); +extern void discord_list_nitro_sticker_packs_response_init(struct discord_list_nitro_sticker_packs_response *p); +extern void discord_list_nitro_sticker_packs_response_from_json_v(char *json, size_t len, void *pp); +extern void discord_list_nitro_sticker_packs_response_from_json(char *json, size_t len, struct discord_list_nitro_sticker_packs_response **pp); +extern size_t discord_list_nitro_sticker_packs_response_to_json_v(char *json, size_t len, void *p); +extern size_t discord_list_nitro_sticker_packs_response_to_json(char *json, size_t len, struct discord_list_nitro_sticker_packs_response *p); +extern void discord_list_nitro_sticker_packs_response_list_free_v(void **p); +extern void discord_list_nitro_sticker_packs_response_list_free(struct discord_list_nitro_sticker_packs_response **p); +extern void discord_list_nitro_sticker_packs_response_list_from_json_v(char *str, size_t len, void *p); +extern void discord_list_nitro_sticker_packs_response_list_from_json(char *str, size_t len, struct discord_list_nitro_sticker_packs_response ***p); +extern size_t discord_list_nitro_sticker_packs_response_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_list_nitro_sticker_packs_response_list_to_json(char *str, size_t len, struct discord_list_nitro_sticker_packs_response **p); + +extern void discord_create_guild_sticker_params_cleanup_v(void *p); +extern void discord_create_guild_sticker_params_cleanup(struct discord_create_guild_sticker_params *p); +extern void discord_create_guild_sticker_params_init_v(void *p); +extern void discord_create_guild_sticker_params_init(struct discord_create_guild_sticker_params *p); +extern void discord_create_guild_sticker_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_create_guild_sticker_params_from_json(char *json, size_t len, struct discord_create_guild_sticker_params **pp); +extern size_t discord_create_guild_sticker_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_create_guild_sticker_params_to_json(char *json, size_t len, struct discord_create_guild_sticker_params *p); +extern void discord_create_guild_sticker_params_list_free_v(void **p); +extern void discord_create_guild_sticker_params_list_free(struct discord_create_guild_sticker_params **p); +extern void discord_create_guild_sticker_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_create_guild_sticker_params_list_from_json(char *str, size_t len, struct discord_create_guild_sticker_params ***p); +extern size_t discord_create_guild_sticker_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_create_guild_sticker_params_list_to_json(char *str, size_t len, struct discord_create_guild_sticker_params **p); + +extern void discord_modify_guild_sticker_params_cleanup_v(void *p); +extern void discord_modify_guild_sticker_params_cleanup(struct discord_modify_guild_sticker_params *p); +extern void discord_modify_guild_sticker_params_init_v(void *p); +extern void discord_modify_guild_sticker_params_init(struct discord_modify_guild_sticker_params *p); +extern void discord_modify_guild_sticker_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_modify_guild_sticker_params_from_json(char *json, size_t len, struct discord_modify_guild_sticker_params **pp); +extern size_t discord_modify_guild_sticker_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_modify_guild_sticker_params_to_json(char *json, size_t len, struct discord_modify_guild_sticker_params *p); +extern void discord_modify_guild_sticker_params_list_free_v(void **p); +extern void discord_modify_guild_sticker_params_list_free(struct discord_modify_guild_sticker_params **p); +extern void discord_modify_guild_sticker_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_modify_guild_sticker_params_list_from_json(char *str, size_t len, struct discord_modify_guild_sticker_params ***p); +extern size_t discord_modify_guild_sticker_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_modify_guild_sticker_params_list_to_json(char *str, size_t len, struct discord_modify_guild_sticker_params **p); +/* This file is generated from specs/discord/sticker.json, Please don't edit it. */ + + + + + +extern void discord_sticker_cleanup_v(void *p); +extern void discord_sticker_cleanup(struct discord_sticker *p); +extern void discord_sticker_init_v(void *p); +extern void discord_sticker_init(struct discord_sticker *p); +extern void discord_sticker_from_json_v(char *json, size_t len, void *pp); +extern void discord_sticker_from_json(char *json, size_t len, struct discord_sticker **pp); +extern size_t discord_sticker_to_json_v(char *json, size_t len, void *p); +extern size_t discord_sticker_to_json(char *json, size_t len, struct discord_sticker *p); +extern void discord_sticker_list_free_v(void **p); +extern void discord_sticker_list_free(struct discord_sticker **p); +extern void discord_sticker_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_list_from_json(char *str, size_t len, struct discord_sticker ***p); +extern size_t discord_sticker_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_list_to_json(char *str, size_t len, struct discord_sticker **p); + +extern void discord_sticker_item_cleanup_v(void *p); +extern void discord_sticker_item_cleanup(struct discord_sticker_item *p); +extern void discord_sticker_item_init_v(void *p); +extern void discord_sticker_item_init(struct discord_sticker_item *p); +extern void discord_sticker_item_from_json_v(char *json, size_t len, void *pp); +extern void discord_sticker_item_from_json(char *json, size_t len, struct discord_sticker_item **pp); +extern size_t discord_sticker_item_to_json_v(char *json, size_t len, void *p); +extern size_t discord_sticker_item_to_json(char *json, size_t len, struct discord_sticker_item *p); +extern void discord_sticker_item_list_free_v(void **p); +extern void discord_sticker_item_list_free(struct discord_sticker_item **p); +extern void discord_sticker_item_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_item_list_from_json(char *str, size_t len, struct discord_sticker_item ***p); +extern size_t discord_sticker_item_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_item_list_to_json(char *str, size_t len, struct discord_sticker_item **p); + +extern void discord_sticker_pack_cleanup_v(void *p); +extern void discord_sticker_pack_cleanup(struct discord_sticker_pack *p); +extern void discord_sticker_pack_init_v(void *p); +extern void discord_sticker_pack_init(struct discord_sticker_pack *p); +extern void discord_sticker_pack_from_json_v(char *json, size_t len, void *pp); +extern void discord_sticker_pack_from_json(char *json, size_t len, struct discord_sticker_pack **pp); +extern size_t discord_sticker_pack_to_json_v(char *json, size_t len, void *p); +extern size_t discord_sticker_pack_to_json(char *json, size_t len, struct discord_sticker_pack *p); +extern void discord_sticker_pack_list_free_v(void **p); +extern void discord_sticker_pack_list_free(struct discord_sticker_pack **p); +extern void discord_sticker_pack_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_pack_list_from_json(char *str, size_t len, struct discord_sticker_pack ***p); +extern size_t discord_sticker_pack_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_pack_list_to_json(char *str, size_t len, struct discord_sticker_pack **p); /* This file is generated from specs/discord/user.endpoints-params.json, Please don't edit it. */ extern void discord_modify_current_user_params_cleanup_v(void *p); diff --git a/specs-code/discord/stage-instance.c b/specs-code/discord/stage-instance.c new file mode 100644 index 000000000..4415e0085 --- /dev/null +++ b/specs-code/discord/stage-instance.c @@ -0,0 +1,281 @@ +/* This file is generated from specs/discord/stage-instance.json, Please don't edit it. */ +/** + * @file specs-code/discord/stage-instance.c + * @see (null) + */ + +#include +#include +#include +#include +#include "json-actor.h" +#include "json-actor-boxed.h" +#include "cee-utils.h" +#include "discord.h" + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_stage_instance_privacy_level_list_free_v(void **p) { + discord_stage_instance_privacy_level_list_free((enum discord_stage_instance_privacy_level**)p); +} + +void discord_stage_instance_privacy_level_list_from_json_v(char *str, size_t len, void *p) { + discord_stage_instance_privacy_level_list_from_json(str, len, (enum discord_stage_instance_privacy_level ***)p); +} + +size_t discord_stage_instance_privacy_level_list_to_json_v(char *str, size_t len, void *p){ + return discord_stage_instance_privacy_level_list_to_json(str, len, (enum discord_stage_instance_privacy_level **)p); +} + +enum discord_stage_instance_privacy_level discord_stage_instance_privacy_level_eval(char *s){ + if(strcasecmp("PUBLIC", s) == 0) return DISCORD_STAGE_INSTANCE_PUBLIC; + if(strcasecmp("GUILD_ONLY", s) == 0) return DISCORD_STAGE_INSTANCE_GUILD_ONLY; + ERR("'%s' doesn't match any known enumerator.", s); +} + +char* discord_stage_instance_privacy_level_print(enum discord_stage_instance_privacy_level v){ + + switch (v) { + case DISCORD_STAGE_INSTANCE_PUBLIC: return "PUBLIC"; + case DISCORD_STAGE_INSTANCE_GUILD_ONLY: return "GUILD_ONLY"; + } + + return NULL; +} + +void discord_stage_instance_privacy_level_list_free(enum discord_stage_instance_privacy_level **p) { + ntl_free((void**)p, NULL); +} + +void discord_stage_instance_privacy_level_list_from_json(char *str, size_t len, enum discord_stage_instance_privacy_level ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(enum discord_stage_instance_privacy_level); + d.init_elem = NULL; + d.elem_from_buf = ja_u64_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_stage_instance_privacy_level_list_to_json(char *str, size_t len, enum discord_stage_instance_privacy_level **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, ja_u64_to_json_v); +} + + +void discord_stage_instance_from_json(char *json, size_t len, struct discord_stage_instance **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_stage_instance *p = *pp; + discord_stage_instance_init(p); + r=json_extract(json, len, + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + "(id):F," + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + "(guild_id):F," + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + "(channel_id):F," + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + "(topic):?s," + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + "(privacy_level):d," + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + "(discoverable_disabled):b,", + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + cee_strtoull, &p->id, + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + cee_strtoull, &p->guild_id, + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + cee_strtoull, &p->channel_id, + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + &p->topic, + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + &p->privacy_level, + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + &p->discoverable_disabled); + ret = r; +} + +size_t discord_stage_instance_to_json(char *json, size_t len, struct discord_stage_instance *p) +{ + size_t r; + void *arg_switches[6]={NULL}; + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + arg_switches[0] = &p->id; + + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + arg_switches[1] = &p->guild_id; + + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + arg_switches[2] = &p->channel_id; + + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + arg_switches[3] = p->topic; + + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + arg_switches[4] = &p->privacy_level; + + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + arg_switches[5] = &p->discoverable_disabled; + + r=json_inject(json, len, + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + "(id):|F|," + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + "(guild_id):|F|," + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + "(channel_id):|F|," + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + "(topic):s," + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + "(privacy_level):d," + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + "(discoverable_disabled):b," + "@arg_switches:b", + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + cee_ulltostr, &p->id, + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + cee_ulltostr, &p->guild_id, + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + cee_ulltostr, &p->channel_id, + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + p->topic, + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + &p->privacy_level, + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + &p->discoverable_disabled, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_stage_instance_cleanup_v(void *p) { + discord_stage_instance_cleanup((struct discord_stage_instance *)p); +} + +void discord_stage_instance_init_v(void *p) { + discord_stage_instance_init((struct discord_stage_instance *)p); +} + +void discord_stage_instance_from_json_v(char *json, size_t len, void *pp) { + discord_stage_instance_from_json(json, len, (struct discord_stage_instance**)pp); +} + +size_t discord_stage_instance_to_json_v(char *json, size_t len, void *p) { + return discord_stage_instance_to_json(json, len, (struct discord_stage_instance*)p); +} + +void discord_stage_instance_list_free_v(void **p) { + discord_stage_instance_list_free((struct discord_stage_instance**)p); +} + +void discord_stage_instance_list_from_json_v(char *str, size_t len, void *p) { + discord_stage_instance_list_from_json(str, len, (struct discord_stage_instance ***)p); +} + +size_t discord_stage_instance_list_to_json_v(char *str, size_t len, void *p){ + return discord_stage_instance_list_to_json(str, len, (struct discord_stage_instance **)p); +} + + +void discord_stage_instance_cleanup(struct discord_stage_instance *d) { + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + /* p->id is a scalar */ + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + /* p->guild_id is a scalar */ + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + /* p->channel_id is a scalar */ + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + if (d->topic) + free(d->topic); + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + /* p->privacy_level is a scalar */ + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + /* p->discoverable_disabled is a scalar */ +} + +void discord_stage_instance_init(struct discord_stage_instance *p) { + memset(p, 0, sizeof(struct discord_stage_instance)); + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + +} +void discord_stage_instance_list_free(struct discord_stage_instance **p) { + ntl_free((void**)p, (vfvp)discord_stage_instance_cleanup); +} + +void discord_stage_instance_list_from_json(char *str, size_t len, struct discord_stage_instance ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_stage_instance); + d.init_elem = NULL; + d.elem_from_buf = discord_stage_instance_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_stage_instance_list_to_json(char *str, size_t len, struct discord_stage_instance **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_stage_instance_to_json_v); +} + diff --git a/specs-code/discord/stage-instance.endpoints-params.c b/specs-code/discord/stage-instance.endpoints-params.c new file mode 100644 index 000000000..c32b76eb1 --- /dev/null +++ b/specs-code/discord/stage-instance.endpoints-params.c @@ -0,0 +1,290 @@ +/* This file is generated from specs/discord/stage-instance.endpoints-params.json, Please don't edit it. */ +/** + * @file specs-code/discord/stage-instance.endpoints-params.c + * @see (null) + */ + +#include +#include +#include +#include +#include "json-actor.h" +#include "json-actor-boxed.h" +#include "cee-utils.h" +#include "discord.h" + +void discord_create_stage_instance_params_from_json(char *json, size_t len, struct discord_create_stage_instance_params **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_create_stage_instance_params *p = *pp; + discord_create_stage_instance_params_init(p); + r=json_extract(json, len, + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + "(channel_id):F," + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + "(topic):?s," + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + "(privacy_level):d,", + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + cee_strtoull, &p->channel_id, + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + &p->topic, + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + &p->privacy_level); + ret = r; +} + +size_t discord_create_stage_instance_params_to_json(char *json, size_t len, struct discord_create_stage_instance_params *p) +{ + size_t r; + void *arg_switches[3]={NULL}; + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + arg_switches[0] = &p->channel_id; + + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + arg_switches[1] = p->topic; + + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + if (p->privacy_level != 0) + arg_switches[2] = &p->privacy_level; + + r=json_inject(json, len, + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + "(channel_id):|F|," + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + "(topic):s," + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + "(privacy_level):d," + "@arg_switches:b", + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + cee_ulltostr, &p->channel_id, + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + p->topic, + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + &p->privacy_level, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_create_stage_instance_params_cleanup_v(void *p) { + discord_create_stage_instance_params_cleanup((struct discord_create_stage_instance_params *)p); +} + +void discord_create_stage_instance_params_init_v(void *p) { + discord_create_stage_instance_params_init((struct discord_create_stage_instance_params *)p); +} + +void discord_create_stage_instance_params_from_json_v(char *json, size_t len, void *pp) { + discord_create_stage_instance_params_from_json(json, len, (struct discord_create_stage_instance_params**)pp); +} + +size_t discord_create_stage_instance_params_to_json_v(char *json, size_t len, void *p) { + return discord_create_stage_instance_params_to_json(json, len, (struct discord_create_stage_instance_params*)p); +} + +void discord_create_stage_instance_params_list_free_v(void **p) { + discord_create_stage_instance_params_list_free((struct discord_create_stage_instance_params**)p); +} + +void discord_create_stage_instance_params_list_from_json_v(char *str, size_t len, void *p) { + discord_create_stage_instance_params_list_from_json(str, len, (struct discord_create_stage_instance_params ***)p); +} + +size_t discord_create_stage_instance_params_list_to_json_v(char *str, size_t len, void *p){ + return discord_create_stage_instance_params_list_to_json(str, len, (struct discord_create_stage_instance_params **)p); +} + + +void discord_create_stage_instance_params_cleanup(struct discord_create_stage_instance_params *d) { + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + /* p->channel_id is a scalar */ + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + if (d->topic) + free(d->topic); + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + /* p->privacy_level is a scalar */ +} + +void discord_create_stage_instance_params_init(struct discord_create_stage_instance_params *p) { + memset(p, 0, sizeof(struct discord_create_stage_instance_params)); + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + +} +void discord_create_stage_instance_params_list_free(struct discord_create_stage_instance_params **p) { + ntl_free((void**)p, (vfvp)discord_create_stage_instance_params_cleanup); +} + +void discord_create_stage_instance_params_list_from_json(char *str, size_t len, struct discord_create_stage_instance_params ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_create_stage_instance_params); + d.init_elem = NULL; + d.elem_from_buf = discord_create_stage_instance_params_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_create_stage_instance_params_list_to_json(char *str, size_t len, struct discord_create_stage_instance_params **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_create_stage_instance_params_to_json_v); +} + + +void discord_modify_stage_instance_params_from_json(char *json, size_t len, struct discord_modify_stage_instance_params **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_modify_stage_instance_params *p = *pp; + discord_modify_stage_instance_params_init(p); + r=json_extract(json, len, + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + "(topic):?s," + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + "(privacy_level):d,", + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + &p->topic, + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + &p->privacy_level); + ret = r; +} + +size_t discord_modify_stage_instance_params_to_json(char *json, size_t len, struct discord_modify_stage_instance_params *p) +{ + size_t r; + void *arg_switches[2]={NULL}; + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + arg_switches[0] = p->topic; + + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + if (p->privacy_level != 0) + arg_switches[1] = &p->privacy_level; + + r=json_inject(json, len, + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + "(topic):s," + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + "(privacy_level):d," + "@arg_switches:b", + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + p->topic, + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + &p->privacy_level, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_modify_stage_instance_params_cleanup_v(void *p) { + discord_modify_stage_instance_params_cleanup((struct discord_modify_stage_instance_params *)p); +} + +void discord_modify_stage_instance_params_init_v(void *p) { + discord_modify_stage_instance_params_init((struct discord_modify_stage_instance_params *)p); +} + +void discord_modify_stage_instance_params_from_json_v(char *json, size_t len, void *pp) { + discord_modify_stage_instance_params_from_json(json, len, (struct discord_modify_stage_instance_params**)pp); +} + +size_t discord_modify_stage_instance_params_to_json_v(char *json, size_t len, void *p) { + return discord_modify_stage_instance_params_to_json(json, len, (struct discord_modify_stage_instance_params*)p); +} + +void discord_modify_stage_instance_params_list_free_v(void **p) { + discord_modify_stage_instance_params_list_free((struct discord_modify_stage_instance_params**)p); +} + +void discord_modify_stage_instance_params_list_from_json_v(char *str, size_t len, void *p) { + discord_modify_stage_instance_params_list_from_json(str, len, (struct discord_modify_stage_instance_params ***)p); +} + +size_t discord_modify_stage_instance_params_list_to_json_v(char *str, size_t len, void *p){ + return discord_modify_stage_instance_params_list_to_json(str, len, (struct discord_modify_stage_instance_params **)p); +} + + +void discord_modify_stage_instance_params_cleanup(struct discord_modify_stage_instance_params *d) { + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + if (d->topic) + free(d->topic); + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + /* p->privacy_level is a scalar */ +} + +void discord_modify_stage_instance_params_init(struct discord_modify_stage_instance_params *p) { + memset(p, 0, sizeof(struct discord_modify_stage_instance_params)); + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + +} +void discord_modify_stage_instance_params_list_free(struct discord_modify_stage_instance_params **p) { + ntl_free((void**)p, (vfvp)discord_modify_stage_instance_params_cleanup); +} + +void discord_modify_stage_instance_params_list_from_json(char *str, size_t len, struct discord_modify_stage_instance_params ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_modify_stage_instance_params); + d.init_elem = NULL; + d.elem_from_buf = discord_modify_stage_instance_params_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_modify_stage_instance_params_list_to_json(char *str, size_t len, struct discord_modify_stage_instance_params **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_modify_stage_instance_params_to_json_v); +} + diff --git a/specs-code/discord/stage-instance.endpoints-params.h b/specs-code/discord/stage-instance.endpoints-params.h new file mode 100644 index 000000000..0d10ac0fe --- /dev/null +++ b/specs-code/discord/stage-instance.endpoints-params.h @@ -0,0 +1,114 @@ +/* This file is generated from specs/discord/stage-instance.endpoints-params.json, Please don't edit it. */ +/** + * @file specs-code/discord/stage-instance.endpoints-params.h + * @see (null) + */ + + +/* Create Stage Instance */ +/* defined at specs/discord/stage-instance.endpoints-params.json:8:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_create_stage_instance_params_init(struct discord_create_stage_instance_params *)` + * * Cleanup: + + * * :code:`void discord_create_stage_instance_params_cleanup(struct discord_create_stage_instance_params *)` + * * :code:`void discord_create_stage_instance_params_list_free(struct discord_create_stage_instance_params **)` + * * JSON Decoder: + + * * :code:`void discord_create_stage_instance_params_from_json(char *rbuf, size_t len, struct discord_create_stage_instance_params **)` + * * :code:`void discord_create_stage_instance_params_list_from_json(char *rbuf, size_t len, struct discord_create_stage_instance_params ***)` + * * JSON Encoder: + + * * :code:`void discord_create_stage_instance_params_to_json(char *wbuf, size_t len, struct discord_create_stage_instance_params *)` + * * :code:`void discord_create_stage_instance_params_list_to_json(char *wbuf, size_t len, struct discord_create_stage_instance_params **)` + * @endverbatim + */ +struct discord_create_stage_instance_params { + /* specs/discord/stage-instance.endpoints-params.json:11:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}' */ + u64_snowflake_t channel_id; /**< The id of the Stage channel */ + + /* specs/discord/stage-instance.endpoints-params.json:12:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + char *topic; /**< The topic of the Stage instance (1-120 characters) */ + + /* specs/discord/stage-instance.endpoints-params.json:13:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + enum discord_stage_instance_privacy_level privacy_level; + +}; +extern void discord_create_stage_instance_params_cleanup_v(void *p); +extern void discord_create_stage_instance_params_cleanup(struct discord_create_stage_instance_params *p); +extern void discord_create_stage_instance_params_init_v(void *p); +extern void discord_create_stage_instance_params_init(struct discord_create_stage_instance_params *p); +extern void discord_create_stage_instance_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_create_stage_instance_params_from_json(char *json, size_t len, struct discord_create_stage_instance_params **pp); +extern size_t discord_create_stage_instance_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_create_stage_instance_params_to_json(char *json, size_t len, struct discord_create_stage_instance_params *p); +extern void discord_create_stage_instance_params_list_free_v(void **p); +extern void discord_create_stage_instance_params_list_free(struct discord_create_stage_instance_params **p); +extern void discord_create_stage_instance_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_create_stage_instance_params_list_from_json(char *str, size_t len, struct discord_create_stage_instance_params ***p); +extern size_t discord_create_stage_instance_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_create_stage_instance_params_list_to_json(char *str, size_t len, struct discord_create_stage_instance_params **p); + +/* Modify Stage Instance */ +/* defined at specs/discord/stage-instance.endpoints-params.json:19:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_modify_stage_instance_params_init(struct discord_modify_stage_instance_params *)` + * * Cleanup: + + * * :code:`void discord_modify_stage_instance_params_cleanup(struct discord_modify_stage_instance_params *)` + * * :code:`void discord_modify_stage_instance_params_list_free(struct discord_modify_stage_instance_params **)` + * * JSON Decoder: + + * * :code:`void discord_modify_stage_instance_params_from_json(char *rbuf, size_t len, struct discord_modify_stage_instance_params **)` + * * :code:`void discord_modify_stage_instance_params_list_from_json(char *rbuf, size_t len, struct discord_modify_stage_instance_params ***)` + * * JSON Encoder: + + * * :code:`void discord_modify_stage_instance_params_to_json(char *wbuf, size_t len, struct discord_modify_stage_instance_params *)` + * * :code:`void discord_modify_stage_instance_params_list_to_json(char *wbuf, size_t len, struct discord_modify_stage_instance_params **)` + * @endverbatim + */ +struct discord_modify_stage_instance_params { + /* specs/discord/stage-instance.endpoints-params.json:22:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + char *topic; /**< The topic of the Stage instance (1-120 characters) */ + + /* specs/discord/stage-instance.endpoints-params.json:23:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0}' */ + enum discord_stage_instance_privacy_level privacy_level; + +}; +extern void discord_modify_stage_instance_params_cleanup_v(void *p); +extern void discord_modify_stage_instance_params_cleanup(struct discord_modify_stage_instance_params *p); +extern void discord_modify_stage_instance_params_init_v(void *p); +extern void discord_modify_stage_instance_params_init(struct discord_modify_stage_instance_params *p); +extern void discord_modify_stage_instance_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_modify_stage_instance_params_from_json(char *json, size_t len, struct discord_modify_stage_instance_params **pp); +extern size_t discord_modify_stage_instance_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_modify_stage_instance_params_to_json(char *json, size_t len, struct discord_modify_stage_instance_params *p); +extern void discord_modify_stage_instance_params_list_free_v(void **p); +extern void discord_modify_stage_instance_params_list_free(struct discord_modify_stage_instance_params **p); +extern void discord_modify_stage_instance_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_modify_stage_instance_params_list_from_json(char *str, size_t len, struct discord_modify_stage_instance_params ***p); +extern size_t discord_modify_stage_instance_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_modify_stage_instance_params_list_to_json(char *str, size_t len, struct discord_modify_stage_instance_params **p); diff --git a/specs-code/discord/stage-instance.h b/specs-code/discord/stage-instance.h new file mode 100644 index 000000000..eeb2f35df --- /dev/null +++ b/specs-code/discord/stage-instance.h @@ -0,0 +1,102 @@ +/* This file is generated from specs/discord/stage-instance.json, Please don't edit it. */ +/** + * @file specs-code/discord/stage-instance.h + * @see (null) + */ + + + +/* Privacy Level */ +/* defined at specs/discord/stage-instance.json:5:5 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * :code:`char* discord_stage_instance_privacy_level_print(enum discord_stage_instance_privacy_level code)` + * * :code:`enum discord_stage_instance_privacy_level discord_stage_instance_privacy_level_eval(char *code_as_str)` + * @endverbatim + */ +enum discord_stage_instance_privacy_level { + DISCORD_STAGE_INSTANCE_PUBLIC = 1, /**< The Stage instance is visible publicly, such as on Stage Discovery. */ + DISCORD_STAGE_INSTANCE_GUILD_ONLY = 2, /**< The Stage instance is visible to only guild members. */ +}; +extern char* discord_stage_instance_privacy_level_print(enum discord_stage_instance_privacy_level); +extern enum discord_stage_instance_privacy_level discord_stage_instance_privacy_level_eval(char*); +extern void discord_stage_instance_privacy_level_list_free_v(void **p); +extern void discord_stage_instance_privacy_level_list_free(enum discord_stage_instance_privacy_level **p); +extern void discord_stage_instance_privacy_level_list_from_json_v(char *str, size_t len, void *p); +extern void discord_stage_instance_privacy_level_list_from_json(char *str, size_t len, enum discord_stage_instance_privacy_level ***p); +extern size_t discord_stage_instance_privacy_level_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_stage_instance_privacy_level_list_to_json(char *str, size_t len, enum discord_stage_instance_privacy_level **p); + +/* Stage Instance Structure */ +/* defined at specs/discord/stage-instance.json:17:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_stage_instance_init(struct discord_stage_instance *)` + * * Cleanup: + + * * :code:`void discord_stage_instance_cleanup(struct discord_stage_instance *)` + * * :code:`void discord_stage_instance_list_free(struct discord_stage_instance **)` + * * JSON Decoder: + + * * :code:`void discord_stage_instance_from_json(char *rbuf, size_t len, struct discord_stage_instance **)` + * * :code:`void discord_stage_instance_list_from_json(char *rbuf, size_t len, struct discord_stage_instance ***)` + * * JSON Encoder: + + * * :code:`void discord_stage_instance_to_json(char *wbuf, size_t len, struct discord_stage_instance *)` + * * :code:`void discord_stage_instance_list_to_json(char *wbuf, size_t len, struct discord_stage_instance **)` + * @endverbatim + */ +struct discord_stage_instance { + /* specs/discord/stage-instance.json:20:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}' */ + u64_snowflake_t id; /**< The id of this Stage instance */ + + /* specs/discord/stage-instance.json:21:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}' */ + u64_snowflake_t guild_id; /**< The guild id of the associated Stage channel */ + + /* specs/discord/stage-instance.json:22:18 + '{"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}' */ + u64_snowflake_t channel_id; /**< The id of the associated Stage channel */ + + /* specs/discord/stage-instance.json:23:18 + '{"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}' */ + char *topic; /**< The topic of the Stage instance (1-120 characters) */ + + /* specs/discord/stage-instance.json:24:18 + '{"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}' */ + enum discord_stage_instance_privacy_level privacy_level; /**< The privacy level of the Stage instance */ + + /* specs/discord/stage-instance.json:25:18 + '{"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}}' */ + bool discoverable_disabled; + +}; +extern void discord_stage_instance_cleanup_v(void *p); +extern void discord_stage_instance_cleanup(struct discord_stage_instance *p); +extern void discord_stage_instance_init_v(void *p); +extern void discord_stage_instance_init(struct discord_stage_instance *p); +extern void discord_stage_instance_from_json_v(char *json, size_t len, void *pp); +extern void discord_stage_instance_from_json(char *json, size_t len, struct discord_stage_instance **pp); +extern size_t discord_stage_instance_to_json_v(char *json, size_t len, void *p); +extern size_t discord_stage_instance_to_json(char *json, size_t len, struct discord_stage_instance *p); +extern void discord_stage_instance_list_free_v(void **p); +extern void discord_stage_instance_list_free(struct discord_stage_instance **p); +extern void discord_stage_instance_list_from_json_v(char *str, size_t len, void *p); +extern void discord_stage_instance_list_from_json(char *str, size_t len, struct discord_stage_instance ***p); +extern size_t discord_stage_instance_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_stage_instance_list_to_json(char *str, size_t len, struct discord_stage_instance **p); diff --git a/specs-code/discord/sticker.c b/specs-code/discord/sticker.c new file mode 100644 index 000000000..a99e54893 --- /dev/null +++ b/specs-code/discord/sticker.c @@ -0,0 +1,865 @@ +/* This file is generated from specs/discord/sticker.json, Please don't edit it. */ +/** + * @file specs-code/discord/sticker.c + * @see (null) + */ + +#include +#include +#include +#include +#include "json-actor.h" +#include "json-actor-boxed.h" +#include "cee-utils.h" +#include "discord.h" + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_sticker_types_list_free_v(void **p) { + discord_sticker_types_list_free((enum discord_sticker_types**)p); +} + +void discord_sticker_types_list_from_json_v(char *str, size_t len, void *p) { + discord_sticker_types_list_from_json(str, len, (enum discord_sticker_types ***)p); +} + +size_t discord_sticker_types_list_to_json_v(char *str, size_t len, void *p){ + return discord_sticker_types_list_to_json(str, len, (enum discord_sticker_types **)p); +} + +enum discord_sticker_types discord_sticker_types_eval(char *s){ + if(strcasecmp("STANDARD", s) == 0) return DISCORD_STICKER_STANDARD; + if(strcasecmp("GUILD", s) == 0) return DISCORD_STICKER_GUILD; + ERR("'%s' doesn't match any known enumerator.", s); +} + +char* discord_sticker_types_print(enum discord_sticker_types v){ + + switch (v) { + case DISCORD_STICKER_STANDARD: return "STANDARD"; + case DISCORD_STICKER_GUILD: return "GUILD"; + } + + return NULL; +} + +void discord_sticker_types_list_free(enum discord_sticker_types **p) { + ntl_free((void**)p, NULL); +} + +void discord_sticker_types_list_from_json(char *str, size_t len, enum discord_sticker_types ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(enum discord_sticker_types); + d.init_elem = NULL; + d.elem_from_buf = ja_u64_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_sticker_types_list_to_json(char *str, size_t len, enum discord_sticker_types **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, ja_u64_to_json_v); +} + + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_sticker_format_types_list_free_v(void **p) { + discord_sticker_format_types_list_free((enum discord_sticker_format_types**)p); +} + +void discord_sticker_format_types_list_from_json_v(char *str, size_t len, void *p) { + discord_sticker_format_types_list_from_json(str, len, (enum discord_sticker_format_types ***)p); +} + +size_t discord_sticker_format_types_list_to_json_v(char *str, size_t len, void *p){ + return discord_sticker_format_types_list_to_json(str, len, (enum discord_sticker_format_types **)p); +} + +enum discord_sticker_format_types discord_sticker_format_types_eval(char *s){ + if(strcasecmp("PNG", s) == 0) return DISCORD_STICKER_PNG; + if(strcasecmp("APNG", s) == 0) return DISCORD_STICKER_APNG; + if(strcasecmp("LOTTIE", s) == 0) return DISCORD_STICKER_LOTTIE; + ERR("'%s' doesn't match any known enumerator.", s); +} + +char* discord_sticker_format_types_print(enum discord_sticker_format_types v){ + + switch (v) { + case DISCORD_STICKER_PNG: return "PNG"; + case DISCORD_STICKER_APNG: return "APNG"; + case DISCORD_STICKER_LOTTIE: return "LOTTIE"; + } + + return NULL; +} + +void discord_sticker_format_types_list_free(enum discord_sticker_format_types **p) { + ntl_free((void**)p, NULL); +} + +void discord_sticker_format_types_list_from_json(char *str, size_t len, enum discord_sticker_format_types ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(enum discord_sticker_format_types); + d.init_elem = NULL; + d.elem_from_buf = ja_u64_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_sticker_format_types_list_to_json(char *str, size_t len, enum discord_sticker_format_types **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, ja_u64_to_json_v); +} + + +void discord_sticker_from_json(char *json, size_t len, struct discord_sticker **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_sticker *p = *pp; + discord_sticker_init(p); + r=json_extract(json, len, + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + "(id):F," + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + "(pack_id):F," + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + "(name):?s," + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + "(description):?s," + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + "(tags):?s," + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + "(asset):?s," + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + "(type):d," + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + "(format_type):d," + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + "(available):b," + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + "(guild_id):F," + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + "(user):F," + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + "(sort_value):d,", + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + cee_strtoull, &p->id, + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + cee_strtoull, &p->pack_id, + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + &p->name, + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + &p->description, + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + &p->tags, + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + &p->asset, + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + &p->type, + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + &p->format_type, + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + &p->available, + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + cee_strtoull, &p->guild_id, + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + discord_user_from_json, &p->user, + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + &p->sort_value); + ret = r; +} + +size_t discord_sticker_to_json(char *json, size_t len, struct discord_sticker *p) +{ + size_t r; + void *arg_switches[12]={NULL}; + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + arg_switches[0] = &p->id; + + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + if (p->pack_id != 0) + arg_switches[1] = &p->pack_id; + + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + arg_switches[2] = p->name; + + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + arg_switches[3] = p->description; + + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + arg_switches[4] = p->tags; + + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + arg_switches[5] = p->asset; + + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + arg_switches[6] = &p->type; + + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + arg_switches[7] = &p->format_type; + + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + if (p->available != false) + arg_switches[8] = &p->available; + + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + if (p->guild_id != 0) + arg_switches[9] = &p->guild_id; + + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + if (p->user != NULL) + arg_switches[10] = p->user; + + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + arg_switches[11] = &p->sort_value; + + r=json_inject(json, len, + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + "(id):|F|," + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + "(pack_id):|F|," + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + "(name):s," + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + "(description):s," + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + "(tags):s," + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + "(asset):s," + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + "(type):d," + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + "(format_type):d," + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + "(available):b," + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + "(guild_id):|F|," + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + "(user):F," + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + "(sort_value):d," + "@arg_switches:b", + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + cee_ulltostr, &p->id, + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + cee_ulltostr, &p->pack_id, + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + p->name, + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + p->description, + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + p->tags, + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + p->asset, + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + &p->type, + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + &p->format_type, + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + &p->available, + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + cee_ulltostr, &p->guild_id, + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + discord_user_to_json, p->user, + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + &p->sort_value, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_sticker_cleanup_v(void *p) { + discord_sticker_cleanup((struct discord_sticker *)p); +} + +void discord_sticker_init_v(void *p) { + discord_sticker_init((struct discord_sticker *)p); +} + +void discord_sticker_from_json_v(char *json, size_t len, void *pp) { + discord_sticker_from_json(json, len, (struct discord_sticker**)pp); +} + +size_t discord_sticker_to_json_v(char *json, size_t len, void *p) { + return discord_sticker_to_json(json, len, (struct discord_sticker*)p); +} + +void discord_sticker_list_free_v(void **p) { + discord_sticker_list_free((struct discord_sticker**)p); +} + +void discord_sticker_list_from_json_v(char *str, size_t len, void *p) { + discord_sticker_list_from_json(str, len, (struct discord_sticker ***)p); +} + +size_t discord_sticker_list_to_json_v(char *str, size_t len, void *p){ + return discord_sticker_list_to_json(str, len, (struct discord_sticker **)p); +} + + +void discord_sticker_cleanup(struct discord_sticker *d) { + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + /* p->id is a scalar */ + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + /* p->pack_id is a scalar */ + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + if (d->name) + free(d->name); + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + if (d->description) + free(d->description); + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + if (d->tags) + free(d->tags); + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + if (d->asset) + free(d->asset); + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + /* p->type is a scalar */ + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + /* p->format_type is a scalar */ + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + /* p->available is a scalar */ + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + /* p->guild_id is a scalar */ + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + if (d->user) { + discord_user_cleanup(d->user); + free(d->user); + } + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + /* p->sort_value is a scalar */ +} + +void discord_sticker_init(struct discord_sticker *p) { + memset(p, 0, sizeof(struct discord_sticker)); + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + +} +void discord_sticker_list_free(struct discord_sticker **p) { + ntl_free((void**)p, (vfvp)discord_sticker_cleanup); +} + +void discord_sticker_list_from_json(char *str, size_t len, struct discord_sticker ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_sticker); + d.init_elem = NULL; + d.elem_from_buf = discord_sticker_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_sticker_list_to_json(char *str, size_t len, struct discord_sticker **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_sticker_to_json_v); +} + + +void discord_sticker_item_from_json(char *json, size_t len, struct discord_sticker_item **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_sticker_item *p = *pp; + discord_sticker_item_init(p); + r=json_extract(json, len, + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + "(id):F," + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + "(name):?s," + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + "(format_type):d,", + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + cee_strtoull, &p->id, + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + &p->name, + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + &p->format_type); + ret = r; +} + +size_t discord_sticker_item_to_json(char *json, size_t len, struct discord_sticker_item *p) +{ + size_t r; + void *arg_switches[3]={NULL}; + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + arg_switches[0] = &p->id; + + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + arg_switches[1] = p->name; + + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + arg_switches[2] = &p->format_type; + + r=json_inject(json, len, + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + "(id):|F|," + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + "(name):s," + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + "(format_type):d," + "@arg_switches:b", + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + cee_ulltostr, &p->id, + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + p->name, + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + &p->format_type, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_sticker_item_cleanup_v(void *p) { + discord_sticker_item_cleanup((struct discord_sticker_item *)p); +} + +void discord_sticker_item_init_v(void *p) { + discord_sticker_item_init((struct discord_sticker_item *)p); +} + +void discord_sticker_item_from_json_v(char *json, size_t len, void *pp) { + discord_sticker_item_from_json(json, len, (struct discord_sticker_item**)pp); +} + +size_t discord_sticker_item_to_json_v(char *json, size_t len, void *p) { + return discord_sticker_item_to_json(json, len, (struct discord_sticker_item*)p); +} + +void discord_sticker_item_list_free_v(void **p) { + discord_sticker_item_list_free((struct discord_sticker_item**)p); +} + +void discord_sticker_item_list_from_json_v(char *str, size_t len, void *p) { + discord_sticker_item_list_from_json(str, len, (struct discord_sticker_item ***)p); +} + +size_t discord_sticker_item_list_to_json_v(char *str, size_t len, void *p){ + return discord_sticker_item_list_to_json(str, len, (struct discord_sticker_item **)p); +} + + +void discord_sticker_item_cleanup(struct discord_sticker_item *d) { + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + /* p->id is a scalar */ + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + if (d->name) + free(d->name); + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + /* p->format_type is a scalar */ +} + +void discord_sticker_item_init(struct discord_sticker_item *p) { + memset(p, 0, sizeof(struct discord_sticker_item)); + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + +} +void discord_sticker_item_list_free(struct discord_sticker_item **p) { + ntl_free((void**)p, (vfvp)discord_sticker_item_cleanup); +} + +void discord_sticker_item_list_from_json(char *str, size_t len, struct discord_sticker_item ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_sticker_item); + d.init_elem = NULL; + d.elem_from_buf = discord_sticker_item_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_sticker_item_list_to_json(char *str, size_t len, struct discord_sticker_item **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_sticker_item_to_json_v); +} + + +void discord_sticker_pack_from_json(char *json, size_t len, struct discord_sticker_pack **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_sticker_pack *p = *pp; + discord_sticker_pack_init(p); + r=json_extract(json, len, + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + "(id):F," + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + "(stickers):F," + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + "(name):?s," + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + "(sku_id):F," + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + "(cover_sticker_id):F," + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + "(description):?s," + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + "(banner_asset_id):F,", + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + cee_strtoull, &p->id, + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + discord_sticker_list_from_json, &p->stickers, + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + &p->name, + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + cee_strtoull, &p->sku_id, + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + cee_strtoull, &p->cover_sticker_id, + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + &p->description, + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + cee_strtoull, &p->banner_asset_id); + ret = r; +} + +size_t discord_sticker_pack_to_json(char *json, size_t len, struct discord_sticker_pack *p) +{ + size_t r; + void *arg_switches[7]={NULL}; + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + arg_switches[0] = &p->id; + + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + arg_switches[1] = p->stickers; + + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + arg_switches[2] = p->name; + + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + arg_switches[3] = &p->sku_id; + + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + if (p->cover_sticker_id != 0) + arg_switches[4] = &p->cover_sticker_id; + + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + arg_switches[5] = p->description; + + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + arg_switches[6] = &p->banner_asset_id; + + r=json_inject(json, len, + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + "(id):|F|," + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + "(stickers):F," + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + "(name):s," + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + "(sku_id):|F|," + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + "(cover_sticker_id):|F|," + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + "(description):s," + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + "(banner_asset_id):|F|," + "@arg_switches:b", + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + cee_ulltostr, &p->id, + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + discord_sticker_list_to_json, p->stickers, + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + p->name, + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + cee_ulltostr, &p->sku_id, + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + cee_ulltostr, &p->cover_sticker_id, + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + p->description, + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + cee_ulltostr, &p->banner_asset_id, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_sticker_pack_cleanup_v(void *p) { + discord_sticker_pack_cleanup((struct discord_sticker_pack *)p); +} + +void discord_sticker_pack_init_v(void *p) { + discord_sticker_pack_init((struct discord_sticker_pack *)p); +} + +void discord_sticker_pack_from_json_v(char *json, size_t len, void *pp) { + discord_sticker_pack_from_json(json, len, (struct discord_sticker_pack**)pp); +} + +size_t discord_sticker_pack_to_json_v(char *json, size_t len, void *p) { + return discord_sticker_pack_to_json(json, len, (struct discord_sticker_pack*)p); +} + +void discord_sticker_pack_list_free_v(void **p) { + discord_sticker_pack_list_free((struct discord_sticker_pack**)p); +} + +void discord_sticker_pack_list_from_json_v(char *str, size_t len, void *p) { + discord_sticker_pack_list_from_json(str, len, (struct discord_sticker_pack ***)p); +} + +size_t discord_sticker_pack_list_to_json_v(char *str, size_t len, void *p){ + return discord_sticker_pack_list_to_json(str, len, (struct discord_sticker_pack **)p); +} + + +void discord_sticker_pack_cleanup(struct discord_sticker_pack *d) { + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + /* p->id is a scalar */ + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + if (d->stickers) + discord_sticker_list_free(d->stickers); + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + if (d->name) + free(d->name); + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + /* p->sku_id is a scalar */ + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + /* p->cover_sticker_id is a scalar */ + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + if (d->description) + free(d->description); + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + /* p->banner_asset_id is a scalar */ +} + +void discord_sticker_pack_init(struct discord_sticker_pack *p) { + memset(p, 0, sizeof(struct discord_sticker_pack)); + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + +} +void discord_sticker_pack_list_free(struct discord_sticker_pack **p) { + ntl_free((void**)p, (vfvp)discord_sticker_pack_cleanup); +} + +void discord_sticker_pack_list_from_json(char *str, size_t len, struct discord_sticker_pack ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_sticker_pack); + d.init_elem = NULL; + d.elem_from_buf = discord_sticker_pack_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_sticker_pack_list_to_json(char *str, size_t len, struct discord_sticker_pack **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_sticker_pack_to_json_v); +} + diff --git a/specs-code/discord/sticker.endpoints-params.c b/specs-code/discord/sticker.endpoints-params.c new file mode 100644 index 000000000..ddac58919 --- /dev/null +++ b/specs-code/discord/sticker.endpoints-params.c @@ -0,0 +1,431 @@ +/* This file is generated from specs/discord/sticker.endpoints-params.json, Please don't edit it. */ +/** + * @file specs-code/discord/sticker.endpoints-params.c + * @see (null) + */ + +#include +#include +#include +#include +#include "json-actor.h" +#include "json-actor-boxed.h" +#include "cee-utils.h" +#include "discord.h" + +void discord_list_nitro_sticker_packs_response_from_json(char *json, size_t len, struct discord_list_nitro_sticker_packs_response **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_list_nitro_sticker_packs_response *p = *pp; + discord_list_nitro_sticker_packs_response_init(p); + r=json_extract(json, len, + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + "(sticker_packs):F,", + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + discord_sticker_pack_list_from_json, &p->sticker_packs); + ret = r; +} + +size_t discord_list_nitro_sticker_packs_response_to_json(char *json, size_t len, struct discord_list_nitro_sticker_packs_response *p) +{ + size_t r; + void *arg_switches[1]={NULL}; + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + arg_switches[0] = p->sticker_packs; + + r=json_inject(json, len, + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + "(sticker_packs):F," + "@arg_switches:b", + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + discord_sticker_pack_list_to_json, p->sticker_packs, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_list_nitro_sticker_packs_response_cleanup_v(void *p) { + discord_list_nitro_sticker_packs_response_cleanup((struct discord_list_nitro_sticker_packs_response *)p); +} + +void discord_list_nitro_sticker_packs_response_init_v(void *p) { + discord_list_nitro_sticker_packs_response_init((struct discord_list_nitro_sticker_packs_response *)p); +} + +void discord_list_nitro_sticker_packs_response_from_json_v(char *json, size_t len, void *pp) { + discord_list_nitro_sticker_packs_response_from_json(json, len, (struct discord_list_nitro_sticker_packs_response**)pp); +} + +size_t discord_list_nitro_sticker_packs_response_to_json_v(char *json, size_t len, void *p) { + return discord_list_nitro_sticker_packs_response_to_json(json, len, (struct discord_list_nitro_sticker_packs_response*)p); +} + +void discord_list_nitro_sticker_packs_response_list_free_v(void **p) { + discord_list_nitro_sticker_packs_response_list_free((struct discord_list_nitro_sticker_packs_response**)p); +} + +void discord_list_nitro_sticker_packs_response_list_from_json_v(char *str, size_t len, void *p) { + discord_list_nitro_sticker_packs_response_list_from_json(str, len, (struct discord_list_nitro_sticker_packs_response ***)p); +} + +size_t discord_list_nitro_sticker_packs_response_list_to_json_v(char *str, size_t len, void *p){ + return discord_list_nitro_sticker_packs_response_list_to_json(str, len, (struct discord_list_nitro_sticker_packs_response **)p); +} + + +void discord_list_nitro_sticker_packs_response_cleanup(struct discord_list_nitro_sticker_packs_response *d) { + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + if (d->sticker_packs) + discord_sticker_pack_list_free(d->sticker_packs); +} + +void discord_list_nitro_sticker_packs_response_init(struct discord_list_nitro_sticker_packs_response *p) { + memset(p, 0, sizeof(struct discord_list_nitro_sticker_packs_response)); + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + +} +void discord_list_nitro_sticker_packs_response_list_free(struct discord_list_nitro_sticker_packs_response **p) { + ntl_free((void**)p, (vfvp)discord_list_nitro_sticker_packs_response_cleanup); +} + +void discord_list_nitro_sticker_packs_response_list_from_json(char *str, size_t len, struct discord_list_nitro_sticker_packs_response ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_list_nitro_sticker_packs_response); + d.init_elem = NULL; + d.elem_from_buf = discord_list_nitro_sticker_packs_response_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_list_nitro_sticker_packs_response_list_to_json(char *str, size_t len, struct discord_list_nitro_sticker_packs_response **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_list_nitro_sticker_packs_response_to_json_v); +} + + +void discord_create_guild_sticker_params_from_json(char *json, size_t len, struct discord_create_guild_sticker_params **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_create_guild_sticker_params *p = *pp; + discord_create_guild_sticker_params_init(p); + r=json_extract(json, len, + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + "(name):?s," + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + "(description):?s," + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + "(tags):?s,", + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + &p->name, + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + &p->description, + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + &p->tags); + ret = r; +} + +size_t discord_create_guild_sticker_params_to_json(char *json, size_t len, struct discord_create_guild_sticker_params *p) +{ + size_t r; + void *arg_switches[4]={NULL}; + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + arg_switches[0] = p->name; + + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + arg_switches[1] = p->description; + + /* specs/discord/sticker.endpoints-params.json:22:18 + '{"name":"file", "type":{ "base":"struct discord_file", "dec":"*" }, "loc":"multipart", "comment":"the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB"}' */ + arg_switches[2] = p->file; + + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + arg_switches[3] = p->tags; + + r=json_inject(json, len, + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + "(name):s," + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + "(description):s," + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + "(tags):s," + "@arg_switches:b", + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + p->name, + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + p->description, + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + p->tags, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_create_guild_sticker_params_cleanup_v(void *p) { + discord_create_guild_sticker_params_cleanup((struct discord_create_guild_sticker_params *)p); +} + +void discord_create_guild_sticker_params_init_v(void *p) { + discord_create_guild_sticker_params_init((struct discord_create_guild_sticker_params *)p); +} + +void discord_create_guild_sticker_params_from_json_v(char *json, size_t len, void *pp) { + discord_create_guild_sticker_params_from_json(json, len, (struct discord_create_guild_sticker_params**)pp); +} + +size_t discord_create_guild_sticker_params_to_json_v(char *json, size_t len, void *p) { + return discord_create_guild_sticker_params_to_json(json, len, (struct discord_create_guild_sticker_params*)p); +} + +void discord_create_guild_sticker_params_list_free_v(void **p) { + discord_create_guild_sticker_params_list_free((struct discord_create_guild_sticker_params**)p); +} + +void discord_create_guild_sticker_params_list_from_json_v(char *str, size_t len, void *p) { + discord_create_guild_sticker_params_list_from_json(str, len, (struct discord_create_guild_sticker_params ***)p); +} + +size_t discord_create_guild_sticker_params_list_to_json_v(char *str, size_t len, void *p){ + return discord_create_guild_sticker_params_list_to_json(str, len, (struct discord_create_guild_sticker_params **)p); +} + + +void discord_create_guild_sticker_params_cleanup(struct discord_create_guild_sticker_params *d) { + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + if (d->name) + free(d->name); + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + if (d->description) + free(d->description); + /* specs/discord/sticker.endpoints-params.json:22:18 + '{"name":"file", "type":{ "base":"struct discord_file", "dec":"*" }, "loc":"multipart", "comment":"the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB"}' */ + if (d->file) { + discord_file_cleanup(d->file); + free(d->file); + } + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + if (d->tags) + free(d->tags); +} + +void discord_create_guild_sticker_params_init(struct discord_create_guild_sticker_params *p) { + memset(p, 0, sizeof(struct discord_create_guild_sticker_params)); + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + + /* specs/discord/sticker.endpoints-params.json:22:18 + '{"name":"file", "type":{ "base":"struct discord_file", "dec":"*" }, "loc":"multipart", "comment":"the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB"}' */ + + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + +} +void discord_create_guild_sticker_params_list_free(struct discord_create_guild_sticker_params **p) { + ntl_free((void**)p, (vfvp)discord_create_guild_sticker_params_cleanup); +} + +void discord_create_guild_sticker_params_list_from_json(char *str, size_t len, struct discord_create_guild_sticker_params ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_create_guild_sticker_params); + d.init_elem = NULL; + d.elem_from_buf = discord_create_guild_sticker_params_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_create_guild_sticker_params_list_to_json(char *str, size_t len, struct discord_create_guild_sticker_params **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_create_guild_sticker_params_to_json_v); +} + + +void discord_modify_guild_sticker_params_from_json(char *json, size_t len, struct discord_modify_guild_sticker_params **pp) +{ + static size_t ret=0; /**< used for debugging */ + size_t r=0; + if (!*pp) *pp = malloc(sizeof **pp); + struct discord_modify_guild_sticker_params *p = *pp; + discord_modify_guild_sticker_params_init(p); + r=json_extract(json, len, + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + "(name):?s," + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + "(description):?s," + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + "(tags):?s,", + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + &p->name, + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + &p->description, + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + &p->tags); + ret = r; +} + +size_t discord_modify_guild_sticker_params_to_json(char *json, size_t len, struct discord_modify_guild_sticker_params *p) +{ + size_t r; + void *arg_switches[3]={NULL}; + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + arg_switches[0] = p->name; + + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + arg_switches[1] = p->description; + + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + arg_switches[2] = p->tags; + + r=json_inject(json, len, + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + "(name):s," + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + "(description):s," + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + "(tags):s," + "@arg_switches:b", + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + p->name, + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + p->description, + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + p->tags, + arg_switches, sizeof(arg_switches), true); + return r; +} + + +typedef void (*vfvp)(void *); +typedef void (*vfcpsvp)(char *, size_t, void *); +typedef size_t (*sfcpsvp)(char *, size_t, void *); +void discord_modify_guild_sticker_params_cleanup_v(void *p) { + discord_modify_guild_sticker_params_cleanup((struct discord_modify_guild_sticker_params *)p); +} + +void discord_modify_guild_sticker_params_init_v(void *p) { + discord_modify_guild_sticker_params_init((struct discord_modify_guild_sticker_params *)p); +} + +void discord_modify_guild_sticker_params_from_json_v(char *json, size_t len, void *pp) { + discord_modify_guild_sticker_params_from_json(json, len, (struct discord_modify_guild_sticker_params**)pp); +} + +size_t discord_modify_guild_sticker_params_to_json_v(char *json, size_t len, void *p) { + return discord_modify_guild_sticker_params_to_json(json, len, (struct discord_modify_guild_sticker_params*)p); +} + +void discord_modify_guild_sticker_params_list_free_v(void **p) { + discord_modify_guild_sticker_params_list_free((struct discord_modify_guild_sticker_params**)p); +} + +void discord_modify_guild_sticker_params_list_from_json_v(char *str, size_t len, void *p) { + discord_modify_guild_sticker_params_list_from_json(str, len, (struct discord_modify_guild_sticker_params ***)p); +} + +size_t discord_modify_guild_sticker_params_list_to_json_v(char *str, size_t len, void *p){ + return discord_modify_guild_sticker_params_list_to_json(str, len, (struct discord_modify_guild_sticker_params **)p); +} + + +void discord_modify_guild_sticker_params_cleanup(struct discord_modify_guild_sticker_params *d) { + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + if (d->name) + free(d->name); + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + if (d->description) + free(d->description); + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + if (d->tags) + free(d->tags); +} + +void discord_modify_guild_sticker_params_init(struct discord_modify_guild_sticker_params *p) { + memset(p, 0, sizeof(struct discord_modify_guild_sticker_params)); + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + +} +void discord_modify_guild_sticker_params_list_free(struct discord_modify_guild_sticker_params **p) { + ntl_free((void**)p, (vfvp)discord_modify_guild_sticker_params_cleanup); +} + +void discord_modify_guild_sticker_params_list_from_json(char *str, size_t len, struct discord_modify_guild_sticker_params ***p) +{ + struct ntl_deserializer d; + memset(&d, 0, sizeof(d)); + d.elem_size = sizeof(struct discord_modify_guild_sticker_params); + d.init_elem = NULL; + d.elem_from_buf = discord_modify_guild_sticker_params_from_json_v; + d.ntl_recipient_p= (void***)p; + extract_ntl_from_json2(str, len, &d); +} + +size_t discord_modify_guild_sticker_params_list_to_json(char *str, size_t len, struct discord_modify_guild_sticker_params **p) +{ + return ntl_to_buf(str, len, (void **)p, NULL, discord_modify_guild_sticker_params_to_json_v); +} + diff --git a/specs-code/discord/sticker.endpoints-params.h b/specs-code/discord/sticker.endpoints-params.h new file mode 100644 index 000000000..5ee409d7b --- /dev/null +++ b/specs-code/discord/sticker.endpoints-params.h @@ -0,0 +1,170 @@ +/* This file is generated from specs/discord/sticker.endpoints-params.json, Please don't edit it. */ +/** + * @file specs-code/discord/sticker.endpoints-params.h + * @see (null) + */ + + +/* List Nitro Sticker Packs */ +/* defined at specs/discord/sticker.endpoints-params.json:8:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_list_nitro_sticker_packs_response_init(struct discord_list_nitro_sticker_packs_response *)` + * * Cleanup: + + * * :code:`void discord_list_nitro_sticker_packs_response_cleanup(struct discord_list_nitro_sticker_packs_response *)` + * * :code:`void discord_list_nitro_sticker_packs_response_list_free(struct discord_list_nitro_sticker_packs_response **)` + * * JSON Decoder: + + * * :code:`void discord_list_nitro_sticker_packs_response_from_json(char *rbuf, size_t len, struct discord_list_nitro_sticker_packs_response **)` + * * :code:`void discord_list_nitro_sticker_packs_response_list_from_json(char *rbuf, size_t len, struct discord_list_nitro_sticker_packs_response ***)` + * * JSON Encoder: + + * * :code:`void discord_list_nitro_sticker_packs_response_to_json(char *wbuf, size_t len, struct discord_list_nitro_sticker_packs_response *)` + * * :code:`void discord_list_nitro_sticker_packs_response_list_to_json(char *wbuf, size_t len, struct discord_list_nitro_sticker_packs_response **)` + * @endverbatim + */ +struct discord_list_nitro_sticker_packs_response { + /* specs/discord/sticker.endpoints-params.json:11:18 + '{"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"}' */ + struct discord_sticker_pack **sticker_packs; /**< array of sticker pack objects */ + +}; +extern void discord_list_nitro_sticker_packs_response_cleanup_v(void *p); +extern void discord_list_nitro_sticker_packs_response_cleanup(struct discord_list_nitro_sticker_packs_response *p); +extern void discord_list_nitro_sticker_packs_response_init_v(void *p); +extern void discord_list_nitro_sticker_packs_response_init(struct discord_list_nitro_sticker_packs_response *p); +extern void discord_list_nitro_sticker_packs_response_from_json_v(char *json, size_t len, void *pp); +extern void discord_list_nitro_sticker_packs_response_from_json(char *json, size_t len, struct discord_list_nitro_sticker_packs_response **pp); +extern size_t discord_list_nitro_sticker_packs_response_to_json_v(char *json, size_t len, void *p); +extern size_t discord_list_nitro_sticker_packs_response_to_json(char *json, size_t len, struct discord_list_nitro_sticker_packs_response *p); +extern void discord_list_nitro_sticker_packs_response_list_free_v(void **p); +extern void discord_list_nitro_sticker_packs_response_list_free(struct discord_list_nitro_sticker_packs_response **p); +extern void discord_list_nitro_sticker_packs_response_list_from_json_v(char *str, size_t len, void *p); +extern void discord_list_nitro_sticker_packs_response_list_from_json(char *str, size_t len, struct discord_list_nitro_sticker_packs_response ***p); +extern size_t discord_list_nitro_sticker_packs_response_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_list_nitro_sticker_packs_response_list_to_json(char *str, size_t len, struct discord_list_nitro_sticker_packs_response **p); + +/* Create Guild Sticker */ +/* defined at specs/discord/sticker.endpoints-params.json:17:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_create_guild_sticker_params_init(struct discord_create_guild_sticker_params *)` + * * Cleanup: + + * * :code:`void discord_create_guild_sticker_params_cleanup(struct discord_create_guild_sticker_params *)` + * * :code:`void discord_create_guild_sticker_params_list_free(struct discord_create_guild_sticker_params **)` + * * JSON Decoder: + + * * :code:`void discord_create_guild_sticker_params_from_json(char *rbuf, size_t len, struct discord_create_guild_sticker_params **)` + * * :code:`void discord_create_guild_sticker_params_list_from_json(char *rbuf, size_t len, struct discord_create_guild_sticker_params ***)` + * * JSON Encoder: + + * * :code:`void discord_create_guild_sticker_params_to_json(char *wbuf, size_t len, struct discord_create_guild_sticker_params *)` + * * :code:`void discord_create_guild_sticker_params_list_to_json(char *wbuf, size_t len, struct discord_create_guild_sticker_params **)` + * @endverbatim + */ +struct discord_create_guild_sticker_params { + /* specs/discord/sticker.endpoints-params.json:20:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + char *name; /**< name of the sticker (2-30 characters) */ + + /* specs/discord/sticker.endpoints-params.json:21:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + char *description; /**< description of the sticker (empty or 2-100 characters) */ + + /* specs/discord/sticker.endpoints-params.json:22:18 + '{"name":"file", "type":{ "base":"struct discord_file", "dec":"*" }, "loc":"multipart", "comment":"the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB"}' */ + struct discord_file *file; /**< the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB */ + + /* specs/discord/sticker.endpoints-params.json:23:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + char *tags; /**< autocomplete/suggestion tags for the sticker (max 200 characters) */ + +}; +extern void discord_create_guild_sticker_params_cleanup_v(void *p); +extern void discord_create_guild_sticker_params_cleanup(struct discord_create_guild_sticker_params *p); +extern void discord_create_guild_sticker_params_init_v(void *p); +extern void discord_create_guild_sticker_params_init(struct discord_create_guild_sticker_params *p); +extern void discord_create_guild_sticker_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_create_guild_sticker_params_from_json(char *json, size_t len, struct discord_create_guild_sticker_params **pp); +extern size_t discord_create_guild_sticker_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_create_guild_sticker_params_to_json(char *json, size_t len, struct discord_create_guild_sticker_params *p); +extern void discord_create_guild_sticker_params_list_free_v(void **p); +extern void discord_create_guild_sticker_params_list_free(struct discord_create_guild_sticker_params **p); +extern void discord_create_guild_sticker_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_create_guild_sticker_params_list_from_json(char *str, size_t len, struct discord_create_guild_sticker_params ***p); +extern size_t discord_create_guild_sticker_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_create_guild_sticker_params_list_to_json(char *str, size_t len, struct discord_create_guild_sticker_params **p); + +/* Modify Guild Sticker */ +/* defined at specs/discord/sticker.endpoints-params.json:29:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_modify_guild_sticker_params_init(struct discord_modify_guild_sticker_params *)` + * * Cleanup: + + * * :code:`void discord_modify_guild_sticker_params_cleanup(struct discord_modify_guild_sticker_params *)` + * * :code:`void discord_modify_guild_sticker_params_list_free(struct discord_modify_guild_sticker_params **)` + * * JSON Decoder: + + * * :code:`void discord_modify_guild_sticker_params_from_json(char *rbuf, size_t len, struct discord_modify_guild_sticker_params **)` + * * :code:`void discord_modify_guild_sticker_params_list_from_json(char *rbuf, size_t len, struct discord_modify_guild_sticker_params ***)` + * * JSON Encoder: + + * * :code:`void discord_modify_guild_sticker_params_to_json(char *wbuf, size_t len, struct discord_modify_guild_sticker_params *)` + * * :code:`void discord_modify_guild_sticker_params_list_to_json(char *wbuf, size_t len, struct discord_modify_guild_sticker_params **)` + * @endverbatim + */ +struct discord_modify_guild_sticker_params { + /* specs/discord/sticker.endpoints-params.json:32:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}' */ + char *name; /**< name of the sticker (2-30 characters) */ + + /* specs/discord/sticker.endpoints-params.json:33:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}' */ + char *description; /**< description of the sticker (empty or 2-100 characters) */ + + /* specs/discord/sticker.endpoints-params.json:34:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + char *tags; /**< autocomplete/suggestion tags for the sticker (max 200 characters) */ + +}; +extern void discord_modify_guild_sticker_params_cleanup_v(void *p); +extern void discord_modify_guild_sticker_params_cleanup(struct discord_modify_guild_sticker_params *p); +extern void discord_modify_guild_sticker_params_init_v(void *p); +extern void discord_modify_guild_sticker_params_init(struct discord_modify_guild_sticker_params *p); +extern void discord_modify_guild_sticker_params_from_json_v(char *json, size_t len, void *pp); +extern void discord_modify_guild_sticker_params_from_json(char *json, size_t len, struct discord_modify_guild_sticker_params **pp); +extern size_t discord_modify_guild_sticker_params_to_json_v(char *json, size_t len, void *p); +extern size_t discord_modify_guild_sticker_params_to_json(char *json, size_t len, struct discord_modify_guild_sticker_params *p); +extern void discord_modify_guild_sticker_params_list_free_v(void **p); +extern void discord_modify_guild_sticker_params_list_free(struct discord_modify_guild_sticker_params **p); +extern void discord_modify_guild_sticker_params_list_from_json_v(char *str, size_t len, void *p); +extern void discord_modify_guild_sticker_params_list_from_json(char *str, size_t len, struct discord_modify_guild_sticker_params ***p); +extern size_t discord_modify_guild_sticker_params_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_modify_guild_sticker_params_list_to_json(char *str, size_t len, struct discord_modify_guild_sticker_params **p); diff --git a/specs-code/discord/sticker.h b/specs-code/discord/sticker.h new file mode 100644 index 000000000..52edf57c2 --- /dev/null +++ b/specs-code/discord/sticker.h @@ -0,0 +1,283 @@ +/* This file is generated from specs/discord/sticker.json, Please don't edit it. */ +/** + * @file specs-code/discord/sticker.h + * @see (null) + */ + + + +/* Sticker Types */ +/* defined at specs/discord/sticker.json:5:5 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * :code:`char* discord_sticker_types_print(enum discord_sticker_types code)` + * * :code:`enum discord_sticker_types discord_sticker_types_eval(char *code_as_str)` + * @endverbatim + */ +enum discord_sticker_types { + DISCORD_STICKER_STANDARD = 1, /**< an official sticker in a pack, part of Nitro or in a removed purchasable pack */ + DISCORD_STICKER_GUILD = 2, /**< a sticker uploaded to a Boosted guild for the guild's members */ +}; +extern char* discord_sticker_types_print(enum discord_sticker_types); +extern enum discord_sticker_types discord_sticker_types_eval(char*); +extern void discord_sticker_types_list_free_v(void **p); +extern void discord_sticker_types_list_free(enum discord_sticker_types **p); +extern void discord_sticker_types_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_types_list_from_json(char *str, size_t len, enum discord_sticker_types ***p); +extern size_t discord_sticker_types_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_types_list_to_json(char *str, size_t len, enum discord_sticker_types **p); + + +/* Sticker Format Types */ +/* defined at specs/discord/sticker.json:15:5 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * :code:`char* discord_sticker_format_types_print(enum discord_sticker_format_types code)` + * * :code:`enum discord_sticker_format_types discord_sticker_format_types_eval(char *code_as_str)` + * @endverbatim + */ +enum discord_sticker_format_types { + DISCORD_STICKER_PNG = 1, + DISCORD_STICKER_APNG = 2, + DISCORD_STICKER_LOTTIE = 3, +}; +extern char* discord_sticker_format_types_print(enum discord_sticker_format_types); +extern enum discord_sticker_format_types discord_sticker_format_types_eval(char*); +extern void discord_sticker_format_types_list_free_v(void **p); +extern void discord_sticker_format_types_list_free(enum discord_sticker_format_types **p); +extern void discord_sticker_format_types_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_format_types_list_from_json(char *str, size_t len, enum discord_sticker_format_types ***p); +extern size_t discord_sticker_format_types_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_format_types_list_to_json(char *str, size_t len, enum discord_sticker_format_types **p); + +/* Sticker Structure */ +/* defined at specs/discord/sticker.json:28:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_sticker_init(struct discord_sticker *)` + * * Cleanup: + + * * :code:`void discord_sticker_cleanup(struct discord_sticker *)` + * * :code:`void discord_sticker_list_free(struct discord_sticker **)` + * * JSON Decoder: + + * * :code:`void discord_sticker_from_json(char *rbuf, size_t len, struct discord_sticker **)` + * * :code:`void discord_sticker_list_from_json(char *rbuf, size_t len, struct discord_sticker ***)` + * * JSON Encoder: + + * * :code:`void discord_sticker_to_json(char *wbuf, size_t len, struct discord_sticker *)` + * * :code:`void discord_sticker_list_to_json(char *wbuf, size_t len, struct discord_sticker **)` + * @endverbatim + */ +struct discord_sticker { + /* specs/discord/sticker.json:31:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + u64_snowflake_t id; /**< id of the sticker */ + + /* specs/discord/sticker.json:32:18 + '{"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}' */ + u64_snowflake_t pack_id; /**< for standard stickers, id of the pack the sticker is from */ + + /* specs/discord/sticker.json:33:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + char *name; /**< name of the sticker */ + + /* specs/discord/sticker.json:34:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}' */ + char *description; /**< description of the sticker */ + + /* specs/discord/sticker.json:35:18 + '{"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}' */ + char *tags; /**< autocomplete/suggestion tags for the sticker (max 200 characters) */ + + /* specs/discord/sticker.json:36:18 + '{"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}' */ + char *asset; /**< Deprecated previously the sticker asset hash, now an empty string */ + + /* specs/discord/sticker.json:37:18 + '{"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}' */ + enum discord_sticker_types type; /**< type of sticker */ + + /* specs/discord/sticker.json:38:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + enum discord_sticker_format_types format_type; /**< type of sticker format */ + + /* specs/discord/sticker.json:39:18 + '{"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}' */ + bool available; /**< whether this guild sticker can be used, may be false due to loss of Server Boosts */ + + /* specs/discord/sticker.json:40:18 + '{"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}' */ + u64_snowflake_t guild_id; /**< id of the guild that owns this sticker */ + + /* specs/discord/sticker.json:41:18 + '{"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}' */ + struct discord_user *user; /**< the user that uploaded the guild sticker */ + + /* specs/discord/sticker.json:42:18 + '{"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"}' */ + int sort_value; /**< the standard sticker's sort order within its pack */ + +}; +extern void discord_sticker_cleanup_v(void *p); +extern void discord_sticker_cleanup(struct discord_sticker *p); +extern void discord_sticker_init_v(void *p); +extern void discord_sticker_init(struct discord_sticker *p); +extern void discord_sticker_from_json_v(char *json, size_t len, void *pp); +extern void discord_sticker_from_json(char *json, size_t len, struct discord_sticker **pp); +extern size_t discord_sticker_to_json_v(char *json, size_t len, void *p); +extern size_t discord_sticker_to_json(char *json, size_t len, struct discord_sticker *p); +extern void discord_sticker_list_free_v(void **p); +extern void discord_sticker_list_free(struct discord_sticker **p); +extern void discord_sticker_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_list_from_json(char *str, size_t len, struct discord_sticker ***p); +extern size_t discord_sticker_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_list_to_json(char *str, size_t len, struct discord_sticker **p); + +/* Sticker Item Structure */ +/* defined at specs/discord/sticker.json:47:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_sticker_item_init(struct discord_sticker_item *)` + * * Cleanup: + + * * :code:`void discord_sticker_item_cleanup(struct discord_sticker_item *)` + * * :code:`void discord_sticker_item_list_free(struct discord_sticker_item **)` + * * JSON Decoder: + + * * :code:`void discord_sticker_item_from_json(char *rbuf, size_t len, struct discord_sticker_item **)` + * * :code:`void discord_sticker_item_list_from_json(char *rbuf, size_t len, struct discord_sticker_item ***)` + * * JSON Encoder: + + * * :code:`void discord_sticker_item_to_json(char *wbuf, size_t len, struct discord_sticker_item *)` + * * :code:`void discord_sticker_item_list_to_json(char *wbuf, size_t len, struct discord_sticker_item **)` + * @endverbatim + */ +struct discord_sticker_item { + /* specs/discord/sticker.json:50:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}' */ + u64_snowflake_t id; /**< id of the sticker */ + + /* specs/discord/sticker.json:51:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}' */ + char *name; /**< name of the sticker */ + + /* specs/discord/sticker.json:52:18 + '{"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}' */ + enum discord_sticker_format_types format_type; /**< type of sticker format */ + +}; +extern void discord_sticker_item_cleanup_v(void *p); +extern void discord_sticker_item_cleanup(struct discord_sticker_item *p); +extern void discord_sticker_item_init_v(void *p); +extern void discord_sticker_item_init(struct discord_sticker_item *p); +extern void discord_sticker_item_from_json_v(char *json, size_t len, void *pp); +extern void discord_sticker_item_from_json(char *json, size_t len, struct discord_sticker_item **pp); +extern size_t discord_sticker_item_to_json_v(char *json, size_t len, void *p); +extern size_t discord_sticker_item_to_json(char *json, size_t len, struct discord_sticker_item *p); +extern void discord_sticker_item_list_free_v(void **p); +extern void discord_sticker_item_list_free(struct discord_sticker_item **p); +extern void discord_sticker_item_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_item_list_from_json(char *str, size_t len, struct discord_sticker_item ***p); +extern size_t discord_sticker_item_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_item_list_to_json(char *str, size_t len, struct discord_sticker_item **p); + +/* Sticker Pack Structure */ +/* defined at specs/discord/sticker.json:57:22 */ +/** + * @verbatim embed:rst:leading-asterisk + * .. container:: toggle + + * .. container:: header + + * **Methods** + + * * Initializer: + + * * :code:`void discord_sticker_pack_init(struct discord_sticker_pack *)` + * * Cleanup: + + * * :code:`void discord_sticker_pack_cleanup(struct discord_sticker_pack *)` + * * :code:`void discord_sticker_pack_list_free(struct discord_sticker_pack **)` + * * JSON Decoder: + + * * :code:`void discord_sticker_pack_from_json(char *rbuf, size_t len, struct discord_sticker_pack **)` + * * :code:`void discord_sticker_pack_list_from_json(char *rbuf, size_t len, struct discord_sticker_pack ***)` + * * JSON Encoder: + + * * :code:`void discord_sticker_pack_to_json(char *wbuf, size_t len, struct discord_sticker_pack *)` + * * :code:`void discord_sticker_pack_list_to_json(char *wbuf, size_t len, struct discord_sticker_pack **)` + * @endverbatim + */ +struct discord_sticker_pack { + /* specs/discord/sticker.json:60:18 + '{"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}' */ + u64_snowflake_t id; /**< id of the sticker pack */ + + /* specs/discord/sticker.json:61:18 + '{"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}' */ + struct discord_sticker **stickers; /**< the stickers in the pack */ + + /* specs/discord/sticker.json:62:18 + '{"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}' */ + char *name; /**< name of the sticker pack */ + + /* specs/discord/sticker.json:63:18 + '{"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}' */ + u64_snowflake_t sku_id; /**< id of the pack's SKU */ + + /* specs/discord/sticker.json:64:18 + '{"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}' */ + u64_snowflake_t cover_sticker_id; /**< id of a sticker in the pack which is shown as the pack's icon */ + + /* specs/discord/sticker.json:65:18 + '{"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}' */ + char *description; /**< description of the sticker pack */ + + /* specs/discord/sticker.json:66:18 + '{"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"}' */ + u64_snowflake_t banner_asset_id; /**< id of the sticker pack's banner image */ + +}; +extern void discord_sticker_pack_cleanup_v(void *p); +extern void discord_sticker_pack_cleanup(struct discord_sticker_pack *p); +extern void discord_sticker_pack_init_v(void *p); +extern void discord_sticker_pack_init(struct discord_sticker_pack *p); +extern void discord_sticker_pack_from_json_v(char *json, size_t len, void *pp); +extern void discord_sticker_pack_from_json(char *json, size_t len, struct discord_sticker_pack **pp); +extern size_t discord_sticker_pack_to_json_v(char *json, size_t len, void *p); +extern size_t discord_sticker_pack_to_json(char *json, size_t len, struct discord_sticker_pack *p); +extern void discord_sticker_pack_list_free_v(void **p); +extern void discord_sticker_pack_list_free(struct discord_sticker_pack **p); +extern void discord_sticker_pack_list_from_json_v(char *str, size_t len, void *p); +extern void discord_sticker_pack_list_from_json(char *str, size_t len, struct discord_sticker_pack ***p); +extern size_t discord_sticker_pack_list_to_json_v(char *str, size_t len, void *p); +extern size_t discord_sticker_pack_list_to_json(char *str, size_t len, struct discord_sticker_pack **p); diff --git a/specs/discord/stage-instance.endpoints-params.json b/specs/discord/stage-instance.endpoints-params.json new file mode 100644 index 000000000..44a33209e --- /dev/null +++ b/specs/discord/stage-instance.endpoints-params.json @@ -0,0 +1,27 @@ +{ + "namespace":["discord"], + "defs": + [ + { + "title":"Create Stage Instance", + "namespace":["create_stage_instance"], + "struct":"params", + "fields": + [ + {"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the Stage channel"}, + {"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}, + {"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0} + ] + }, + { + "title":"Modify Stage Instance", + "namespace":["modify_stage_instance"], + "struct":"params", + "fields": + [ + {"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}, + {"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level", "comment":"The privacy level of the Stage instance (default GUILD_ONLY)"}, "inject_if_not":0} + ] + } + ] +} diff --git a/specs/discord/stage-instance.json b/specs/discord/stage-instance.json new file mode 100644 index 000000000..b85b1bf06 --- /dev/null +++ b/specs/discord/stage-instance.json @@ -0,0 +1,29 @@ +{ + "namespace": ["discord"], + "defs": + [ + { + "title":"Privacy Level", + "namespace":["stage_instance"], + "enum":"privacy_level", + "items": + [ + { "name": "PUBLIC", "value":1, "comment":"The Stage instance is visible publicly, such as on Stage Discovery."}, + { "name": "GUILD_ONLY", "value":2, "comment":"The Stage instance is visible to only guild members."} + ] + }, + { + "title":"Stage Instance Structure", + "struct":"stage_instance", + "fields": + [ + {"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of this Stage instance"}, + {"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The guild id of the associated Stage channel"}, + {"name":"channel_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"The id of the associated Stage channel"}, + {"name":"topic", "type":{"base":"char", "dec":"*"}, "comment":"The topic of the Stage instance (1-120 characters)"}, + {"name":"privacy_level", "type":{"base":"int", "int_alias":"enum discord_stage_instance_privacy_level"}, "comment":"The privacy level of the Stage instance"}, + {"name":"discoverable_disabled", "type":{"base":"bool", "comment":"Whether or not Stage Discovery is disabled"}} + ] + } + ] +} diff --git a/specs/discord/sticker.endpoints-params.json b/specs/discord/sticker.endpoints-params.json new file mode 100644 index 000000000..1791cddb0 --- /dev/null +++ b/specs/discord/sticker.endpoints-params.json @@ -0,0 +1,38 @@ +{ + "namespace":["discord"], + "defs": + [ + { + "title":"List Nitro Sticker Packs", + "namespace":["list_nitro_sticker_packs"], + "struct":"response", + "fields": + [ + {"name":"sticker_packs", "type":{"base":"struct discord_sticker_pack", "dec":"ntl"}, "comment":"array of sticker pack objects"} + ] + }, + { + "title":"Create Guild Sticker", + "namespace":["create_guild_sticker"], + "struct":"params", + "fields": + [ + {"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}, + {"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}, + {"name":"file", "type":{ "base":"struct discord_file", "dec":"*" }, "loc":"multipart", "comment":"the sticker file to upload, must be a PNG, APNG, or Lottie JSON file, max 500 KB"}, + {"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"} + ] + }, + { + "title":"Modify Guild Sticker", + "namespace":["modify_guild_sticker"], + "struct":"params", + "fields": + [ + {"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker (2-30 characters)"}, + {"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker (empty or 2-100 characters)"}, + {"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"} + ] + } + ] +} diff --git a/specs/discord/sticker.json b/specs/discord/sticker.json new file mode 100644 index 000000000..bab782fe6 --- /dev/null +++ b/specs/discord/sticker.json @@ -0,0 +1,70 @@ +{ + "namespace": ["discord"], + "defs": + [ + { + "title":"Sticker Types", + "namespace":["sticker"], + "enum":"types", + "items": + [ + { "name": "STANDARD", "value":1, "comment":"an official sticker in a pack, part of Nitro or in a removed purchasable pack"}, + { "name": "GUILD", "value":2, "comment":"a sticker uploaded to a Boosted guild for the guild's members"} + ] + }, + { + "title":"Sticker Format Types", + "namespace":["sticker"], + "enum":"format_types", + "items": + [ + { "name": "PNG", "value":1}, + { "name": "APNG", "value":2}, + { "name": "LOTTIE", "value":3} + ] + }, + { + "title":"Sticker Structure", + "struct":"sticker", + "fields": + [ + {"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}, + {"name":"pack_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"for standard stickers, id of the pack the sticker is from"}, + {"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}, + {"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker"}, + {"name":"tags", "type":{"base":"char", "dec":"*"}, "comment":"autocomplete/suggestion tags for the sticker (max 200 characters)"}, + {"name":"asset", "type":{"base":"char", "dec":"*"}, "comment":"Deprecated previously the sticker asset hash, now an empty string"}, + {"name":"type", "type":{"base":"int", "int_alias":"enum discord_sticker_types"}, "comment":"type of sticker"}, + {"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"}, + {"name":"available", "type":{"base":"bool"}, "inject_if_not":false, "comment":"whether this guild sticker can be used, may be false due to loss of Server Boosts"}, + {"name":"guild_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of the guild that owns this sticker"}, + {"name":"user", "type":{"base":"struct discord_user", "dec":"*"}, "inject_if_not":null, "comment":"the user that uploaded the guild sticker"}, + {"name":"sort_value", "type":{"base":"int"}, "comment":"the standard sticker's sort order within its pack"} + ] + }, + { + "title":"Sticker Item Structure", + "struct":"sticker_item", + "fields": + [ + {"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker"}, + {"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker"}, + {"name":"format_type", "type":{"base":"int", "int_alias":"enum discord_sticker_format_types"}, "comment":"type of sticker format"} + ] + }, + { + "title":"Sticker Pack Structure", + "struct":"sticker_pack", + "fields": + [ + {"name":"id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack"}, + {"name":"stickers", "type":{"base":"struct discord_sticker", "dec":"ntl"}, "comment":"the stickers in the pack"}, + {"name":"name", "type":{"base":"char", "dec":"*"}, "comment":"name of the sticker pack"}, + {"name":"sku_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the pack's SKU"}, + {"name":"cover_sticker_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "inject_if_not":0, "comment":"id of a sticker in the pack which is shown as the pack's icon"}, + {"name":"description", "type":{"base":"char", "dec":"*"}, "comment":"description of the sticker pack"}, + {"name":"banner_asset_id", "type":{"base":"char", "dec":"*", "converter":"snowflake"}, "comment":"id of the sticker pack's banner image"} + ] + } + ] +}