forked from enlightenment/efl
196 lines
7.7 KiB
C
196 lines
7.7 KiB
C
#ifndef _EVAS_DATA_H
|
|
#define _EVAS_DATA_H
|
|
|
|
#ifdef EAPI
|
|
# undef EAPI
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
# ifdef EFL_EVAS_BUILD
|
|
# ifdef DLL_EXPORT
|
|
# define EAPI __declspec(dllexport)
|
|
# else
|
|
# define EAPI
|
|
# endif /* ! DLL_EXPORT */
|
|
# else
|
|
# define EAPI __declspec(dllimport)
|
|
# endif /* ! EFL_EVAS_BUILD */
|
|
#else
|
|
# ifdef __GNUC__
|
|
# if __GNUC__ >= 4
|
|
# define EAPI __attribute__ ((visibility("default")))
|
|
# else
|
|
# define EAPI
|
|
# endif
|
|
# else
|
|
# define EAPI
|
|
# endif
|
|
#endif /* ! _WIN32 */
|
|
|
|
/**
|
|
* @file
|
|
* @brief These routines are used for Evas data types.
|
|
*/
|
|
|
|
typedef unsigned char Evas_Bool;
|
|
|
|
typedef struct _Evas_Array_Hash Evas_Array_Hash;
|
|
typedef struct _Evas_Hash Evas_Hash; /**< A Hash table handle */
|
|
typedef struct _Evas_List Evas_List; /**< A generic linked list node handle */
|
|
typedef struct _Evas_Object_List Evas_Object_List;
|
|
|
|
struct _Evas_Hash
|
|
{
|
|
int population;
|
|
Evas_Object_List *buckets[256];
|
|
};
|
|
|
|
struct _Evas_List /** A linked list node */
|
|
{
|
|
void *data; /**< Pointer to list element payload */
|
|
Evas_List *next; /**< Next member in the list */
|
|
Evas_List *prev; /**< Previous member in the list */
|
|
struct _Evas_List_Accounting *accounting; /**< Private list accounting info - don't touch */
|
|
};
|
|
|
|
struct _Evas_Object_List
|
|
{
|
|
Evas_Object_List *next, *prev;
|
|
Evas_Object_List *last;
|
|
};
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* Evas Array Hash functions
|
|
*/
|
|
|
|
EAPI Evas_Array_Hash *evas_array_hash_new (void);
|
|
EAPI void evas_array_hash_free (Evas_Array_Hash *hash);
|
|
EAPI void evas_array_hash_add (Evas_Array_Hash *hash,
|
|
int key,
|
|
int data);
|
|
EAPI int evas_array_hash_search (Evas_Array_Hash *hash,
|
|
int key);
|
|
|
|
|
|
/*
|
|
* Evas Hash functions
|
|
*/
|
|
|
|
/* FIXME: add:
|
|
* api to add find, del members by data, size not just string and also
|
|
* provide hash generation functions settable by the app
|
|
*
|
|
* do we really need this? hmmm - let me think... there may be a better way
|
|
*/
|
|
EAPI Evas_Hash *evas_hash_add (Evas_Hash *hash,
|
|
const char *key,
|
|
const void *data);
|
|
EAPI Evas_Hash *evas_hash_direct_add (Evas_Hash *hash,
|
|
const char *key,
|
|
const void *data);
|
|
EAPI Evas_Hash *evas_hash_del (Evas_Hash *hash,
|
|
const char *key,
|
|
const void *data);
|
|
EAPI void * evas_hash_find (const Evas_Hash *hash,
|
|
const char *key);
|
|
EAPI void * evas_hash_modify (Evas_Hash *hash,
|
|
const char *key,
|
|
const void *data);
|
|
EAPI int evas_hash_size (const Evas_Hash *hash);
|
|
EAPI void evas_hash_free (Evas_Hash *hash);
|
|
EAPI void evas_hash_foreach (const Evas_Hash *hash,
|
|
Evas_Bool (*func)(
|
|
const Evas_Hash *hash,
|
|
const char *
|
|
key,
|
|
void *data,
|
|
void *fdata),
|
|
const void *fdata);
|
|
EAPI int evas_hash_alloc_error (void);
|
|
|
|
|
|
/*
|
|
* Evas List functions
|
|
*/
|
|
|
|
EAPI Evas_List *evas_list_append (Evas_List *list,
|
|
const void *data);
|
|
EAPI Evas_List *evas_list_prepend (Evas_List *list,
|
|
const void *data);
|
|
EAPI Evas_List *evas_list_append_relative (Evas_List *list,
|
|
const void *data,
|
|
const void *relative);
|
|
EAPI Evas_List *evas_list_append_relative_list (Evas_List *list,
|
|
const void *data,
|
|
Evas_List *relative);
|
|
EAPI Evas_List *evas_list_prepend_relative (Evas_List *list,
|
|
const void *data,
|
|
const void *relative);
|
|
EAPI Evas_List *evas_list_prepend_relative_list (Evas_List *list,
|
|
const void *data,
|
|
Evas_List *relative);
|
|
EAPI Evas_List *evas_list_remove (Evas_List *list,
|
|
const void *data);
|
|
EAPI Evas_List *evas_list_remove_list (Evas_List *list,
|
|
Evas_List *remove_list);
|
|
EAPI Evas_List *evas_list_promote_list (Evas_List *list,
|
|
Evas_List *move_list);
|
|
EAPI void * evas_list_find (const Evas_List *list,
|
|
const void *data);
|
|
EAPI Evas_List *evas_list_find_list (const Evas_List *list,
|
|
const void *data);
|
|
EAPI Evas_List *evas_list_free (Evas_List *list);
|
|
EAPI Evas_List *evas_list_last (const Evas_List *list);
|
|
EAPI Evas_List *evas_list_next (const Evas_List *list);
|
|
EAPI Evas_List *evas_list_prev (const Evas_List *list);
|
|
EAPI void * evas_list_data (const Evas_List *list);
|
|
EAPI int evas_list_count (const Evas_List *list);
|
|
EAPI void * evas_list_nth (const Evas_List *list, int n);
|
|
EAPI Evas_List *evas_list_nth_list (const Evas_List *list, int n);
|
|
EAPI Evas_List *evas_list_reverse (Evas_List *list);
|
|
EAPI Evas_List *evas_list_sort (Evas_List *list,
|
|
int size,
|
|
int (*func)(void *,void *));
|
|
EAPI int evas_list_alloc_error (void);
|
|
|
|
|
|
/*
|
|
* Evas Object List functions
|
|
*/
|
|
|
|
EAPI void * evas_object_list_append (void *in_list,
|
|
void *in_item);
|
|
EAPI void * evas_object_list_prepend (void *in_list,
|
|
void *in_item);
|
|
EAPI void * evas_object_list_append_relative (void *in_list,
|
|
void *in_item,
|
|
void *in_relative);
|
|
EAPI void * evas_object_list_prepend_relative (void *in_list,
|
|
void *in_item,
|
|
void *in_relative);
|
|
EAPI void * evas_object_list_remove (void *in_list,
|
|
void *in_item);
|
|
EAPI void * evas_object_list_find (void *in_list,
|
|
void *in_item);
|
|
|
|
|
|
/*
|
|
* Evas Stringshare functions
|
|
*/
|
|
|
|
EAPI void evas_stringshare_init (void); /* not implemented */
|
|
EAPI void evas_stringshare_shutdown (void); /* not implemented */
|
|
EAPI const char *evas_stringshare_add (const char *str);
|
|
EAPI void evas_stringshare_del (const char *str);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _EVAS_DATA_H */
|