summaryrefslogtreecommitdiff
path: root/src/wasm-option-parser.h
diff options
context:
space:
mode:
authorBen Smith <binji@chromium.org>2016-03-20 23:01:02 -0700
committerBen Smith <binji@chromium.org>2016-03-20 23:19:04 -0700
commit02634375f056e8cae5176bc6ebb9bf4e160fe936 (patch)
treeabb08223dd7a2ba184b3e633b74be79b34790990 /src/wasm-option-parser.h
parent4cdce96d43e421f714df37da03f802950bd811b1 (diff)
downloadwabt-02634375f056e8cae5176bc6ebb9bf4e160fe936.tar.gz
wabt-02634375f056e8cae5176bc6ebb9bf4e160fe936.tar.bz2
wabt-02634375f056e8cae5176bc6ebb9bf4e160fe936.zip
remove getopt, use WasmOptionParser instead
Diffstat (limited to 'src/wasm-option-parser.h')
-rw-r--r--src/wasm-option-parser.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/wasm-option-parser.h b/src/wasm-option-parser.h
new file mode 100644
index 00000000..20601914
--- /dev/null
+++ b/src/wasm-option-parser.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2016 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WASM_OPTION_PARSER_H_
+#define WASM_OPTION_PARSER_H_
+
+#include "wasm-common.h"
+
+enum {
+ WASM_OPTION_NO_ARGUMENT,
+ WASM_OPTION_HAS_ARGUMENT,
+};
+
+struct WasmOption;
+struct WasmOptionParser;
+typedef void (*WasmOptionCallback)(struct WasmOptionParser*,
+ struct WasmOption*,
+ const char* argument);
+typedef void (*WasmArgumentCallback)(struct WasmOptionParser*,
+ const char* argument);
+typedef void (*WasmOptionErrorCallback)(struct WasmOptionParser*,
+ const char* message);
+
+typedef struct WasmOption {
+ int id;
+ char short_name;
+ const char* long_name;
+ const char* metavar;
+ int has_argument;
+ const char* help;
+} WasmOption;
+
+typedef struct WasmOptionParser {
+ WasmOption* options;
+ int num_options;
+ WasmOptionCallback on_option;
+ WasmArgumentCallback on_argument;
+ WasmOptionErrorCallback on_error;
+ void* user_data;
+
+ /* cached after call to wasm_parse_options */
+ char* argv0;
+} WasmOptionParser;
+
+WASM_EXTERN_C_BEGIN
+void wasm_parse_options(WasmOptionParser* parser,
+ int argc,
+ char** argv);
+void wasm_print_help(WasmOptionParser* parser);
+WASM_EXTERN_C_END
+
+#endif /* WASM_OPTION_PARSER_H_ */