You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.1 KiB
81 lines
2.1 KiB
#include "codegen.h" |
|
|
|
static const Ecore_Getopt optdesc = { |
|
"edbus_codegen", |
|
"%prog [options] <file.xml>", |
|
"1.0", |
|
"(C) 2012 - The Enlightenment Project", |
|
"BSD", |
|
"Generate DBUS code, making write DBus client applications easy\n", |
|
0, |
|
{ |
|
ECORE_GETOPT_STORE_STR('p', "prefix", "The prefix for the generated code."), |
|
ECORE_GETOPT_STORE_STR('i', "interface", "To generate code of only one interface of xml."), |
|
ECORE_GETOPT_STORE_STR('o', "output file name", "The name of output files, only used if a interface is selected."), |
|
ECORE_GETOPT_LICENSE('L', "license"), |
|
ECORE_GETOPT_COPYRIGHT('C', "copyright"), |
|
ECORE_GETOPT_VERSION('V', "version"), |
|
ECORE_GETOPT_HELP('h', "help"), |
|
ECORE_GETOPT_SENTINEL |
|
} |
|
}; |
|
|
|
int |
|
main(int argc, char **argv) |
|
{ |
|
char *xml_buf = NULL; |
|
DBus_Object *obj = NULL; |
|
char *prefix = NULL, *interface = NULL, *output = NULL; |
|
Eina_Bool quit_option = EINA_FALSE; |
|
int arg_index; |
|
Ecore_Getopt_Value values[] = { |
|
ECORE_GETOPT_VALUE_STR(prefix), |
|
ECORE_GETOPT_VALUE_STR(interface), |
|
ECORE_GETOPT_VALUE_STR(output), |
|
ECORE_GETOPT_VALUE_BOOL(quit_option), |
|
ECORE_GETOPT_VALUE_BOOL(quit_option), |
|
ECORE_GETOPT_VALUE_BOOL(quit_option), |
|
ECORE_GETOPT_VALUE_BOOL(quit_option), |
|
ECORE_GETOPT_VALUE_NONE |
|
}; |
|
|
|
eina_init(); |
|
|
|
arg_index = ecore_getopt_parse(&optdesc, values, argc, argv); |
|
if (arg_index == -1) |
|
{ |
|
printf("Error: parsing arguments.\n"); |
|
return -1; |
|
} |
|
if (quit_option) |
|
return 0; |
|
if (argc <= arg_index) |
|
{ |
|
printf("Error: Missing file name.\n"); |
|
return -1; |
|
} |
|
|
|
if (!file_read(argv[arg_index], &xml_buf)) |
|
{ |
|
printf("Error reading file.\n"); |
|
goto end; |
|
} |
|
|
|
if (!eina_simple_xml_parse(xml_buf, strlen(xml_buf), EINA_TRUE, |
|
parser, &obj)) |
|
{ |
|
printf("Error: could not parse XML\n"); |
|
goto end; |
|
} |
|
|
|
source_client_generate(obj, prefix, interface, output); |
|
util_h_write(); |
|
|
|
end: |
|
if (obj) |
|
object_free(obj); |
|
|
|
free(xml_buf); |
|
eina_shutdown(); |
|
return 0; |
|
}
|
|
|