argparse-c API 機械可読仕様¶
このドキュメントは scripts/sync_api_spec.py が include/argparse-c.h から生成します。
読み方ガイド¶
- シグネチャ: C 宣言レベルの関数シグネチャ。
- 成功/失敗: 戻り値型ごとの標準契約(
0/-1、true/false、non-NULL/NULL)。 - 所有権 / 解放責務: 返却メモリの所有者と必要な free 関数。
- API は用途ごとにグルーピングしているため、関連操作をまとめて確認できます。
Parser の生成・設定・解放¶
ap_parser_new¶
- シグネチャ:
ap_parser * ap_parser_new(const char * prog, const char * description) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
ap_parser_free。新しい parser を返します。所有権は呼び出し側です。
ap_parser_new_with_options¶
- シグネチャ:
ap_parser * ap_parser_new_with_options(const char * prog, const char * description, ap_parser_options options) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
ap_parser_free。新しい parser を返します。所有権は呼び出し側です。
ap_parser_set_completion¶
- シグネチャ:
int ap_parser_set_completion(ap_parser * parser, bool enabled, const char * entrypoint, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parser_completion_enabled¶
- シグネチャ:
bool ap_parser_completion_enabled(const ap_parser * parser) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parser_completion_entrypoint¶
- シグネチャ:
const char * ap_parser_completion_entrypoint(const ap_parser * parser) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parser_free¶
- シグネチャ:
void ap_parser_free(ap_parser * parser) - 成功/失敗: 成功:
n/a/ 失敗:n/a。戻り値型ごとの意味に従います。 - 所有権 / 解放責務: free 関数指定なし。ライフサイクル補助 API です。解放責務は関数名の規約に従います。
引数・サブコマンド定義¶
ap_add_subcommand¶
- シグネチャ:
ap_parser * ap_add_subcommand(ap_parser * parser, const char * name, const char * description, ap_error * err) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free 関数指定なし。返される parser ポインタの所有権は親 parser ツリー側にあります。
ap_add_mutually_exclusive_group¶
- シグネチャ:
ap_mutually_exclusive_group * ap_add_mutually_exclusive_group(ap_parser * parser, bool required, ap_error * err) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_add_argument¶
- シグネチャ:
int ap_add_argument(ap_parser * parser, const char * name_or_flags, ap_arg_options options, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_group_add_argument¶
- シグネチャ:
int ap_group_add_argument(ap_mutually_exclusive_group * group, const char * name_or_flags, ap_arg_options options, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
パース実行と結果メモリ管理¶
ap_parse_args¶
- シグネチャ:
int ap_parse_args(ap_parser * parser, int argc, char ** argv, ap_namespace ** out_ns, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。成功時は out_ns を ap_namespace_free で解放します。parse_known_args では unknown 配列を ap_free_tokens で解放します。
ap_parse_known_args¶
- シグネチャ:
int ap_parse_known_args(ap_parser * parser, int argc, char ** argv, ap_namespace ** out_ns, char *** out_unknown_args, int * out_unknown_count, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。成功時は out_ns を ap_namespace_free で解放します。parse_known_args では unknown 配列を ap_free_tokens で解放します。
ap_namespace_free¶
- シグネチャ:
void ap_namespace_free(ap_namespace * ns) - 成功/失敗: 成功:
n/a/ 失敗:n/a。戻り値型ごとの意味に従います。 - 所有権 / 解放責務: free 関数指定なし。ライフサイクル補助 API です。解放責務は関数名の規約に従います。
ap_free_tokens¶
- シグネチャ:
void ap_free_tokens(char ** tokens, int count) - 成功/失敗: 成功:
n/a/ 失敗:n/a。戻り値型ごとの意味に従います。 - 所有権 / 解放責務: free 関数指定なし。ライフサイクル補助 API です。解放責務は関数名の規約に従います。
フォーマッタ API¶
ap_format_usage¶
- シグネチャ:
char * ap_format_usage(const ap_parser * parser) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
free。返される文字列はヒープ確保です。
ap_format_help¶
- シグネチャ:
char * ap_format_help(const ap_parser * parser) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
free。返される文字列はヒープ確保です。
ap_format_manpage¶
- シグネチャ:
char * ap_format_manpage(const ap_parser * parser) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
free。返される文字列はヒープ確保です。
ap_format_bash_completion¶
- シグネチャ:
char * ap_format_bash_completion(const ap_parser * parser) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
free。返される文字列はヒープ確保です。
ap_format_fish_completion¶
- シグネチャ:
char * ap_format_fish_completion(const ap_parser * parser) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
free。返される文字列はヒープ確保です。
ap_format_zsh_completion¶
- シグネチャ:
char * ap_format_zsh_completion(const ap_parser * parser) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
free。返される文字列はヒープ確保です。
ap_format_error¶
- シグネチャ:
char * ap_format_error(const ap_parser * parser, const ap_error * err) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free:
free。返される文字列はヒープ確保です。
補完 API¶
ap_complete¶
- シグネチャ:
int ap_complete(const ap_parser * parser, int argc, char ** argv, const char * shell, ap_completion_result * out_result, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_try_handle_completion¶
- シグネチャ:
int ap_try_handle_completion(const ap_parser * parser, int argc, char ** argv, const char * default_shell, int * out_handled, ap_completion_result * out_result, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_completion_result_init¶
- シグネチャ:
void ap_completion_result_init(ap_completion_result * result) - 成功/失敗: 成功:
n/a/ 失敗:n/a。戻り値型ごとの意味に従います。 - 所有権 / 解放責務: free 関数指定なし。ライフサイクル補助 API です。解放責務は関数名の規約に従います。
ap_completion_result_free¶
- シグネチャ:
void ap_completion_result_free(ap_completion_result * result) - 成功/失敗: 成功:
n/a/ 失敗:n/a。戻り値型ごとの意味に従います。 - 所有権 / 解放責務: free 関数指定なし。ライフサイクル補助 API です。解放責務は関数名の規約に従います。
ap_completion_result_add¶
- シグネチャ:
int ap_completion_result_add(ap_completion_result * result, const char * value, const char * help, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。候補メモリは ap_completion_result_free で管理されます。
Parser/引数のイントロスペクション API¶
ap_parser_get_info¶
- シグネチャ:
int ap_parser_get_info(const ap_parser * parser, ap_parser_info * out_info) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parser_get_argument¶
- シグネチャ:
int ap_parser_get_argument(const ap_parser * parser, int index, ap_arg_info * out_info) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parser_get_subcommand¶
- シグネチャ:
int ap_parser_get_subcommand(const ap_parser * parser, int index, ap_subcommand_info * out_info) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_arg_short_flag_count¶
- シグネチャ:
int ap_arg_short_flag_count(const ap_arg_info * info) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_arg_short_flag_at¶
- シグネチャ:
const char * ap_arg_short_flag_at(const ap_arg_info * info, int index) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_arg_long_flag_count¶
- シグネチャ:
int ap_arg_long_flag_count(const ap_arg_info * info) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_arg_long_flag_at¶
- シグネチャ:
const char * ap_arg_long_flag_at(const ap_arg_info * info, int index) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
Namespace 取得 API¶
ap_ns_get_bool¶
- シグネチャ:
bool ap_ns_get_bool(const ap_namespace * ns, const char * dest, bool * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_string¶
- シグネチャ:
bool ap_ns_get_string(const ap_namespace * ns, const char * dest, const char ** out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_int32¶
- シグネチャ:
bool ap_ns_get_int32(const ap_namespace * ns, const char * dest, int32_t * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_int64¶
- シグネチャ:
bool ap_ns_get_int64(const ap_namespace * ns, const char * dest, int64_t * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_uint64¶
- シグネチャ:
bool ap_ns_get_uint64(const ap_namespace * ns, const char * dest, uint64_t * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_double¶
- シグネチャ:
bool ap_ns_get_double(const ap_namespace * ns, const char * dest, double * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_count¶
- シグネチャ:
int ap_ns_get_count(const ap_namespace * ns, const char * dest) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_string_at¶
- シグネチャ:
const char * ap_ns_get_string_at(const ap_namespace * ns, const char * dest, int index) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_int32_at¶
- シグネチャ:
bool ap_ns_get_int32_at(const ap_namespace * ns, const char * dest, int index, int32_t * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_int64_at¶
- シグネチャ:
bool ap_ns_get_int64_at(const ap_namespace * ns, const char * dest, int index, int64_t * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_uint64_at¶
- シグネチャ:
bool ap_ns_get_uint64_at(const ap_namespace * ns, const char * dest, int index, uint64_t * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_ns_get_double_at¶
- シグネチャ:
bool ap_ns_get_double_at(const ap_namespace * ns, const char * dest, int index, double * out_value) - 成功/失敗: 成功:
true/ 失敗:false。bool 戻り値 API は true が成功/存在、false が失敗/未存在を表します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
デフォルトオプション生成 API¶
ap_arg_options_default¶
- シグネチャ:
ap_arg_options ap_arg_options_default(void) - 成功/失敗: 成功:
n/a/ 失敗:n/a。戻り値型ごとの意味に従います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parser_options_default¶
- シグネチャ:
ap_parser_options ap_parser_options_default(void) - 成功/失敗: 成功:
n/a/ 失敗:n/a。戻り値型ごとの意味に従います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
その他の API¶
ap_add_argument_group¶
- シグネチャ:
ap_argument_group * ap_add_argument_group(ap_parser * parser, const char * title, const char * description, ap_error * err) - 成功/失敗: 成功:
non-NULL/ 失敗:NULL。ポインタ戻り値 API は NULL を失敗値として使います。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_argument_group_add_argument¶
- シグネチャ:
int ap_argument_group_add_argument(ap_argument_group * group, const char * name_or_flags, ap_arg_options options, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parse_intermixed_args¶
- シグネチャ:
int ap_parse_intermixed_args(ap_parser * parser, int argc, char ** argv, ap_namespace ** out_ns, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。
ap_parse_known_intermixed_args¶
- シグネチャ:
int ap_parse_known_intermixed_args(ap_parser * parser, int argc, char ** argv, ap_namespace ** out_ns, char *** out_unknown_args, int * out_unknown_count, ap_error * err) - 成功/失敗: 成功:
0/ 失敗:-1。int 戻り値 API は成功 0 / 失敗 -1 を返します。 - 所有権 / 解放責務: free 関数指定なし。戻り値で新規所有権の移譲はありません。