forked from enlightenment/efl
60 lines
1.3 KiB
C
60 lines
1.3 KiB
C
#ifdef HAVE_CONFIG_H
|
|
# include <config.h>
|
|
#endif
|
|
|
|
#include <Ecore.h>
|
|
|
|
#include "ecore_private.h"
|
|
|
|
#define MY_CLASS EFL_LOOP_ARGS_CLASS
|
|
|
|
typedef struct _Efl_Loop_Args_Data Efl_Loop_Args_Data;
|
|
struct _Efl_Loop_Args_Data
|
|
{
|
|
int argc;
|
|
const char **argv;
|
|
};
|
|
|
|
EOLIAN static void
|
|
_efl_loop_args_args_set(Eo *obj EINA_UNUSED, Efl_Loop_Args_Data *pd, int argc, const char **argv)
|
|
{
|
|
int i;
|
|
|
|
if (argc < 0) return;
|
|
for (i = 0; i < pd->argc; i++) eina_stringshare_del(pd->argv[i]);
|
|
free(pd->argv);
|
|
pd->argc = argc;
|
|
if (argc > 0)
|
|
{
|
|
pd->argv = malloc(argc * sizeof(const char *));
|
|
for (i = 0; i < argc; i++) pd->argv[i] = eina_stringshare_add(argv[i]);
|
|
}
|
|
}
|
|
|
|
EOLIAN static int
|
|
_efl_loop_args_arg_num_get(Eo *obj EINA_UNUSED, Efl_Loop_Args_Data *pd)
|
|
{
|
|
return pd->argc;
|
|
}
|
|
|
|
EOLIAN const char *
|
|
_efl_loop_args_arg_get(Eo *obj EINA_UNUSED, Efl_Loop_Args_Data *pd, int num)
|
|
{
|
|
if ((num < 0) || (num >= pd->argc)) return NULL;
|
|
return pd->argv[num];
|
|
}
|
|
|
|
EOLIAN static void
|
|
_efl_loop_args_eo_base_destructor(Eo *obj EINA_UNUSED, Efl_Loop_Args_Data *pd)
|
|
{
|
|
int i;
|
|
|
|
for (i = 0; i < pd->argc; i++) eina_stringshare_del(pd->argv[i]);
|
|
free(pd->argv);
|
|
pd->argv = NULL;
|
|
pd->argc = 0;
|
|
eo_destructor(eo_super(obj, MY_CLASS));
|
|
}
|
|
|
|
#include "efl_loop_args.eo.c"
|