X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=argpar%2Fargpar.h;h=52bdbdd93ac00dab91c8661736e738329d1eb79d;hb=881868ee9b762f1535194e8918411cd2a0ba18d5;hp=498bb2aeb892f88fc25918f42744dbfcaa090c9a;hpb=dd21499c3e149847a18ca1d26276bd0db2e5fd2d;p=argpar.git
diff --git a/argpar/argpar.h b/argpar/argpar.h
index 498bb2a..52bdbdd 100644
--- a/argpar/argpar.h
+++ b/argpar/argpar.h
@@ -87,7 +87,7 @@ A parsing item (the result of argpar_iter_next()) has the type
#argpar_item.
Get the type (option or non-option) of an item with
-\link argpar_item_type(const struct argpar_item *) argpar_item_type()\endlink.
+\link argpar_item_type(const argpar_item_t *) argpar_item_type()\endlink.
Each item type has its set of dedicated functions
(\c argpar_item_opt_ and \c argpar_item_non_opt_ prefixes).
@@ -111,20 +111,14 @@ argpar_iter_next() produces the following items, in this order:
-# Non-option item: magie
.
*/
-/*
- * If argpar is used in some shared library, we don't want said library
- * to export its symbols, so mark them as "hidden".
- *
- * On Windows, symbols are local unless explicitly exported; see
- * .
- */
-#if defined(_WIN32) || defined(__CYGWIN__)
-# define ARGPAR_HIDDEN
+/* Internal: `noexcept` specifier if C++ ⥠11 */
+#if defined(__cplusplus) && (__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900))
+# define ARGPAR_NOEXCEPT noexcept
#else
-# define ARGPAR_HIDDEN __attribute__((visibility("hidden")))
+# define ARGPAR_NOEXCEPT
#endif
-struct argpar_opt_descr;
+typedef struct argpar_opt_descr argpar_opt_descr_t;
/*!
@name Item API
@@ -134,15 +128,16 @@ struct argpar_opt_descr;
/*!
@brief
Type of a parsing item, as returned by
- \link argpar_item_type(const struct argpar_item *) argpar_item_type()\endlink.
+ \link argpar_item_type(const argpar_item *) argpar_item_type()\endlink.
*/
-enum argpar_item_type {
- /// Option
- ARGPAR_ITEM_TYPE_OPT,
+typedef enum argpar_item_type
+{
+ /// Option
+ ARGPAR_ITEM_TYPE_OPT,
- /// Non-option
- ARGPAR_ITEM_TYPE_NON_OPT,
-};
+ /// Non-option
+ ARGPAR_ITEM_TYPE_NON_OPT,
+} argpar_item_type_t;
/*!
@struct argpar_item
@@ -152,7 +147,7 @@ enum argpar_item_type {
argpar_iter_next() sets a pointer to such a type.
*/
-struct argpar_item;
+typedef struct argpar_item argpar_item_t;
/*!
@brief
@@ -167,10 +162,7 @@ struct argpar_item;
@pre
\p item is not \c NULL.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-enum argpar_item_type argpar_item_type(const struct argpar_item *item);
+argpar_item_type_t argpar_item_type(const argpar_item_t *item) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -187,11 +179,7 @@ enum argpar_item_type argpar_item_type(const struct argpar_item *item);
@pre
\p item has the type #ARGPAR_ITEM_TYPE_OPT.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-const struct argpar_opt_descr *argpar_item_opt_descr(
- const struct argpar_item *item);
+const argpar_opt_descr_t *argpar_item_opt_descr(const argpar_item_t *item) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -209,10 +197,7 @@ const struct argpar_opt_descr *argpar_item_opt_descr(
@pre
\p item has the type #ARGPAR_ITEM_TYPE_OPT.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-const char *argpar_item_opt_arg(const struct argpar_item *item);
+const char *argpar_item_opt_arg(const argpar_item_t *item) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -232,10 +217,7 @@ const char *argpar_item_opt_arg(const struct argpar_item *item);
@pre
\p item has the type #ARGPAR_ITEM_TYPE_NON_OPT.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-const char *argpar_item_non_opt_arg(const struct argpar_item *item);
+const char *argpar_item_non_opt_arg(const argpar_item_t *item) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -268,10 +250,7 @@ argument index of \c mix is 4.
argpar_item_non_opt_non_opt_index() -- Returns the non-option index
of a non-option parsing item.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-unsigned int argpar_item_non_opt_orig_index(const struct argpar_item *item);
+unsigned int argpar_item_non_opt_orig_index(const argpar_item_t *item) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -303,10 +282,7 @@ argument index of \c mix is 1.
argpar_item_non_opt_orig_index() -- Returns the original argument
index of a non-option parsing item.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-unsigned int argpar_item_non_opt_non_opt_index(const struct argpar_item *item);
+unsigned int argpar_item_non_opt_non_opt_index(const argpar_item_t *item) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -315,10 +291,7 @@ unsigned int argpar_item_non_opt_non_opt_index(const struct argpar_item *item);
@param[in] item
Parsing item to destroy (may be \c NULL).
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-void argpar_item_destroy(const struct argpar_item *item);
+void argpar_item_destroy(const argpar_item_t *item) ARGPAR_NOEXCEPT;
/*!
@def ARGPAR_ITEM_DESTROY_AND_RESET(_item)
@@ -329,13 +302,13 @@ void argpar_item_destroy(const struct argpar_item *item);
@param[in] _item
Item to destroy and variable to reset
- (const struct argpar_item *
type).
+ (const argpar_item_t *
type).
*/
-#define ARGPAR_ITEM_DESTROY_AND_RESET(_item) \
- { \
- argpar_item_destroy(_item); \
- _item = NULL; \
- }
+#define ARGPAR_ITEM_DESTROY_AND_RESET(_item) \
+ { \
+ argpar_item_destroy(_item); \
+ (_item) = NULL; \
+ }
/// @}
@@ -347,18 +320,19 @@ void argpar_item_destroy(const struct argpar_item *item);
/*!
@brief
Parsing error type, as returned by
- \link argpar_error_type(const struct argpar_error *) argpar_error_type()\endlink.
+ \link argpar_error_type(const argpar_error_t *) argpar_error_type()\endlink.
*/
-enum argpar_error_type {
- /// Unknown option error
- ARGPAR_ERROR_TYPE_UNKNOWN_OPT,
+typedef enum argpar_error_type
+{
+ /// Unknown option error
+ ARGPAR_ERROR_TYPE_UNKNOWN_OPT,
- /// Missing option argument error
- ARGPAR_ERROR_TYPE_MISSING_OPT_ARG,
+ /// Missing option argument error
+ ARGPAR_ERROR_TYPE_MISSING_OPT_ARG,
- /// Unexpected option argument error
- ARGPAR_ERROR_TYPE_UNEXPECTED_OPT_ARG,
-};
+ /// Unexpected option argument error
+ ARGPAR_ERROR_TYPE_UNEXPECTED_OPT_ARG,
+} argpar_error_type_t;
/*!
@struct argpar_error
@@ -366,7 +340,7 @@ enum argpar_error_type {
@brief
Opaque parsing error type
*/
-struct argpar_error;
+typedef struct argpar_error argpar_error_t;
/*!
@brief
@@ -381,10 +355,7 @@ struct argpar_error;
@pre
\p error is not \c NULL.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-enum argpar_error_type argpar_error_type(const struct argpar_error *error);
+argpar_error_type_t argpar_error_type(const argpar_error_t *error) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -401,10 +372,7 @@ enum argpar_error_type argpar_error_type(const struct argpar_error *error);
@pre
\p error is not \c NULL.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-unsigned int argpar_error_orig_index(const struct argpar_error *error);
+unsigned int argpar_error_orig_index(const argpar_error_t *error) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -428,13 +396,10 @@ part (\--mireille
in the last example).
\p error is not \c NULL.
@pre
The type of \p error, as returned by
- \link argpar_error_type(const struct argpar_error *) argpar_error_type()\endlink,
+ \link argpar_error_type(const argpar_error_t *) argpar_error_type()\endlink,
is #ARGPAR_ERROR_TYPE_UNKNOWN_OPT.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-const char *argpar_error_unknown_opt_name(const struct argpar_error *error);
+const char *argpar_error_unknown_opt_name(const argpar_error_t *error) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -461,15 +426,12 @@ const char *argpar_error_unknown_opt_name(const struct argpar_error *error);
\p error is not \c NULL.
@pre
The type of \p error, as returned by
- \link argpar_error_type(const struct argpar_error *) argpar_error_type()\endlink,
+ \link argpar_error_type(const argpar_error_t *) argpar_error_type()\endlink,
is #ARGPAR_ERROR_TYPE_MISSING_OPT_ARG or
#ARGPAR_ERROR_TYPE_UNEXPECTED_OPT_ARG.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-const struct argpar_opt_descr *argpar_error_opt_descr(
- const struct argpar_error *error, bool *is_short);
+const argpar_opt_descr_t *argpar_error_opt_descr(const argpar_error_t *error,
+ bool *is_short) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -478,10 +440,7 @@ const struct argpar_opt_descr *argpar_error_opt_descr(
@param[in] error
Parsing error to destroy (may be \c NULL).
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-void argpar_error_destroy(const struct argpar_error *error);
+void argpar_error_destroy(const argpar_error_t *error) ARGPAR_NOEXCEPT;
/// @}
@@ -500,7 +459,7 @@ terminated with #ARGPAR_OPT_DESCR_SENTINEL, as its \p descrs parameter.
The typical usage is, for example:
@code
-const struct argpar_opt_descr descrs[] = {
+const argpar_opt_descr_t descrs[] = {
{ 0, 'd', NULL, false },
{ 1, '\0', "squeeze", true },
{ 2, 'm', "meow", true },
@@ -508,19 +467,20 @@ const struct argpar_opt_descr descrs[] = {
};
@endcode
*/
-struct argpar_opt_descr {
- /// Numeric ID, to uniquely identify this descriptor
- const int id;
+typedef struct argpar_opt_descr
+{
+ /// Numeric ID, to uniquely identify this descriptor
+ const int id;
- /// Short option character, or '\0'
- const char short_name;
+ /// Short option character, or '\0'
+ const char short_name;
- /// Long option name (without the \--
prefix), or \c NULL
- const char * const long_name;
+ /// Long option name (without the \--
prefix), or \c NULL
+ const char * const long_name;
- /// \c true if this option has an argument
- const bool with_arg;
-};
+ /// \c true if this option has an argument
+ const bool with_arg;
+} argpar_opt_descr_t;
/*!
@brief
@@ -529,7 +489,7 @@ struct argpar_opt_descr {
The typical usage is, for example:
@code
-const struct argpar_opt_descr descrs[] = {
+const argpar_opt_descr_t descrs[] = {
{ 0, 'd', NULL, false },
{ 1, '\0', "squeeze", true },
{ 2, 'm', "meow", true },
@@ -537,7 +497,10 @@ const struct argpar_opt_descr descrs[] = {
};
@endcode
*/
-#define ARGPAR_OPT_DESCR_SENTINEL { -1, '\0', NULL, false }
+#define ARGPAR_OPT_DESCR_SENTINEL \
+ { \
+ -1, '\0', NULL, false \
+ }
/*!
@struct argpar_iter
@@ -547,7 +510,7 @@ const struct argpar_opt_descr descrs[] = {
argpar_iter_create() returns a pointer to such a type.
*/
-struct argpar_iter;
+typedef struct argpar_iter argpar_iter_t;
/*!
@brief
@@ -603,12 +566,8 @@ argpar_iter_next().
@sa
argpar_iter_destroy() -- Destroys an argument parsing iterator.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-struct argpar_iter *argpar_iter_create(unsigned int argc,
- const char * const *argv,
- const struct argpar_opt_descr *descrs);
+argpar_iter_t *argpar_iter_create(unsigned int argc, const char * const *argv,
+ const argpar_opt_descr_t *descrs) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -620,10 +579,7 @@ struct argpar_iter *argpar_iter_create(unsigned int argc,
@sa
argpar_iter_create() -- Creates an argument parsing iterator.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-void argpar_iter_destroy(struct argpar_iter *iter);
+void argpar_iter_destroy(argpar_iter_t *iter) ARGPAR_NOEXCEPT;
/*!
@brief
@@ -631,19 +587,20 @@ void argpar_iter_destroy(struct argpar_iter *iter);
Error status enumerators have a negative value.
*/
-enum argpar_iter_next_status {
- /// Success
- ARGPAR_ITER_NEXT_STATUS_OK,
+typedef enum argpar_iter_next_status
+{
+ /// Success
+ ARGPAR_ITER_NEXT_STATUS_OK,
- /// End of iteration (no more original arguments to parse)
- ARGPAR_ITER_NEXT_STATUS_END,
+ /// End of iteration (no more original arguments to parse)
+ ARGPAR_ITER_NEXT_STATUS_END,
- /// Parsing error
- ARGPAR_ITER_NEXT_STATUS_ERROR = -1,
+ /// Parsing error
+ ARGPAR_ITER_NEXT_STATUS_ERROR = -1,
- /// Memory error
- ARGPAR_ITER_NEXT_STATUS_ERROR_MEMORY = -12,
-};
+ /// Memory error
+ ARGPAR_ITER_NEXT_STATUS_ERROR_MEMORY = -12,
+} argpar_iter_next_status_t;
/*!
@brief
@@ -678,12 +635,8 @@ If there are no more original arguments to parse, this function returns
@pre
\p item is not \c NULL.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-enum argpar_iter_next_status argpar_iter_next(
- struct argpar_iter *iter, const struct argpar_item **item,
- const struct argpar_error **error);
+argpar_iter_next_status_t argpar_iter_next(argpar_iter_t *iter, const argpar_item_t **item,
+ const argpar_error_t **error) ARGPAR_NOEXCEPT;
/*
* Returns the number of ingested elements from `argv`, as passed to
@@ -707,10 +660,7 @@ enum argpar_iter_next_status argpar_iter_next(
@pre
\p iter is not \c NULL.
*/
-/// @cond hidden_macro
-ARGPAR_HIDDEN
-/// @endcond
-unsigned int argpar_iter_ingested_orig_args(const struct argpar_iter *iter);
+unsigned int argpar_iter_ingested_orig_args(const argpar_iter_t *iter) ARGPAR_NOEXCEPT;
/// @}