#pragma once // OpenCL SDK includes #include "OpenCLSDK_Export.h" #include // ISO C includes #include // size_t // cargs includes #include typedef struct cag_option cag_option; SDK_EXPORT cag_option *add_CLI_options(cag_option *opts, size_t *const num_opts, cag_option *add_opts, size_t add_num_opts); enum ParseState { ParsedOK, NotParsed, ParseError }; typedef enum ParseState ParseState; SDK_EXPORT extern cag_option DiagnosticOptions[3]; SDK_EXPORT ParseState parse_DiagnosticOptions( const char identifier, struct cl_sdk_options_Diagnostic *diag_opts); SDK_EXPORT extern cag_option SingleDeviceOptions[3]; // TODO: error handling SDK_EXPORT cl_device_type get_dev_type(const char *in); SDK_EXPORT ParseState parse_SingleDeviceOptions( const char identifier, cag_option_context *cag_context, struct cl_sdk_options_SingleDevice *dev_opts); #define PARS_OPTIONS(parser, state) \ do \ { \ if (state == NotParsed) state = parser; \ if (state == ParseError) \ { \ fprintf(stderr, "Parse error\n"); \ identifier = 'h'; \ state = ParsedOK; \ } \ } while (0)