forked from enlightenment/efl
parent
f702826a90
commit
d49c544e81
|
@ -30,6 +30,7 @@ lib_eolian_libeolian_la_SOURCES = \
|
||||||
lib/eolian/database_event.c \
|
lib/eolian/database_event.c \
|
||||||
lib/eolian/database_event_api.c \
|
lib/eolian/database_event_api.c \
|
||||||
lib/eolian/database_part.c \
|
lib/eolian/database_part.c \
|
||||||
|
lib/eolian/database_part_api.c \
|
||||||
lib/eolian/database_expr.c \
|
lib/eolian/database_expr.c \
|
||||||
lib/eolian/database_expr_api.c \
|
lib/eolian/database_expr_api.c \
|
||||||
lib/eolian/database_var.c \
|
lib/eolian/database_var.c \
|
||||||
|
@ -94,6 +95,7 @@ tests/eolian/data/object_impl.eo \
|
||||||
tests/eolian/data/object_impl_add.eo \
|
tests/eolian/data/object_impl_add.eo \
|
||||||
tests/eolian/data/override.eo \
|
tests/eolian/data/override.eo \
|
||||||
tests/eolian/data/owning.eo \
|
tests/eolian/data/owning.eo \
|
||||||
|
tests/eolian/data/parts.eo \
|
||||||
tests/eolian/data/scope.eo \
|
tests/eolian/data/scope.eo \
|
||||||
tests/eolian/data/struct.eo \
|
tests/eolian/data/struct.eo \
|
||||||
tests/eolian/data/typedef.eo \
|
tests/eolian/data/typedef.eo \
|
||||||
|
|
|
@ -1253,7 +1253,7 @@ EAPI Eina_Iterator *eolian_class_constructors_get(const Eolian_Class *klass);
|
||||||
* @brief Get an iterator to the events defined in a class.
|
* @brief Get an iterator to the events defined in a class.
|
||||||
*
|
*
|
||||||
* @param[in] klass the class.
|
* @param[in] klass the class.
|
||||||
* @return the iterator
|
* @return an iterator over const Eolian_Event* objects
|
||||||
*
|
*
|
||||||
* @ingroup Eolian
|
* @ingroup Eolian
|
||||||
*/
|
*/
|
||||||
|
@ -1333,6 +1333,46 @@ EAPI Eina_Bool eolian_event_is_hot(const Eolian_Event *event);
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool eolian_event_is_restart(const Eolian_Event *event);
|
EAPI Eina_Bool eolian_event_is_restart(const Eolian_Event *event);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief Get an iterator to the parts defined in a class.
|
||||||
|
*
|
||||||
|
* @param[in] klass the class.
|
||||||
|
* @return an iterator over const Eolian_Part* objects
|
||||||
|
*
|
||||||
|
* @ingroup Eolian
|
||||||
|
*/
|
||||||
|
EAPI Eina_Iterator *eolian_class_parts_get(const Eolian_Class *klass);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief Get the name of a part.
|
||||||
|
*
|
||||||
|
* @param[in] part the part handle
|
||||||
|
* @return the name or NULL
|
||||||
|
*
|
||||||
|
* @ingroup Eolian
|
||||||
|
*/
|
||||||
|
EAPI Eina_Stringshare *eolian_part_name_get(const Eolian_Part *part);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief Get the type of a part.
|
||||||
|
*
|
||||||
|
* @param[in] part the part handle
|
||||||
|
* @return the type or NULL
|
||||||
|
*
|
||||||
|
* @ingroup Eolian
|
||||||
|
*/
|
||||||
|
EAPI const Eolian_Class *eolian_part_class_get(const Eolian_Part *part);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief Get the documentation of an part.
|
||||||
|
*
|
||||||
|
* @param[in] part the part handle
|
||||||
|
* @return the documentation or NULL
|
||||||
|
*
|
||||||
|
* @ingroup Eolian
|
||||||
|
*/
|
||||||
|
EAPI const Eolian_Documentation *eolian_part_documentation_get(const Eolian_Part *part);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief Returns the C name of an event
|
* @brief Returns the C name of an event
|
||||||
*
|
*
|
||||||
|
|
|
@ -173,6 +173,13 @@ eolian_class_events_get(const Eolian_Class *cl)
|
||||||
return (cl->events ? eina_list_iterator_new(cl->events) : NULL);
|
return (cl->events ? eina_list_iterator_new(cl->events) : NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Iterator *
|
||||||
|
eolian_class_parts_get(const Eolian_Class *cl)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
||||||
|
return (cl->parts ? eina_list_iterator_new(cl->parts) : NULL);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
eolian_class_ctor_enable_get(const Eolian_Class *cl)
|
eolian_class_ctor_enable_get(const Eolian_Class *cl)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include "eolian_database.h"
|
||||||
|
|
||||||
|
EAPI Eina_Stringshare *
|
||||||
|
eolian_part_name_get(const Eolian_Part *part)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
|
||||||
|
return part->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI const Eolian_Class *
|
||||||
|
eolian_part_class_get(const Eolian_Part *part)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
|
||||||
|
return part->klass;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI const Eolian_Documentation *
|
||||||
|
eolian_part_documentation_get(const Eolian_Part *part)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
|
||||||
|
return part->doc;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
class Parts (Override, Base) {
|
||||||
|
parts {
|
||||||
|
part1: Override; [[Part 1]]
|
||||||
|
part2: Base; [[Part 2]]
|
||||||
|
part3: Parts; [[Part 3]]
|
||||||
|
}
|
||||||
|
}
|
|
@ -1544,6 +1544,51 @@ START_TEST(eolian_function_as_arguments)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(eolian_parts)
|
||||||
|
{
|
||||||
|
const Eolian_Unit *unit;
|
||||||
|
const Eolian_Class *cls;
|
||||||
|
Eina_Iterator *iter;
|
||||||
|
Eolian_Part *part;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
static const char *part_classes[] = {
|
||||||
|
"Override", "Base", "Parts"
|
||||||
|
};
|
||||||
|
|
||||||
|
eolian_init();
|
||||||
|
|
||||||
|
fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data"));
|
||||||
|
|
||||||
|
fail_if(!(unit = eolian_file_parse(PACKAGE_DATA_DIR"/data/parts.eo")));
|
||||||
|
|
||||||
|
fail_if(!(cls = eolian_class_get_by_name(unit, "Parts")));
|
||||||
|
|
||||||
|
fail_if(!(iter = eolian_class_parts_get(cls)));
|
||||||
|
|
||||||
|
EINA_ITERATOR_FOREACH(iter, part)
|
||||||
|
{
|
||||||
|
const Eolian_Documentation *doc;
|
||||||
|
const Eolian_Class *klass;
|
||||||
|
char pattern[24];
|
||||||
|
|
||||||
|
sprintf(pattern, "part%d", i + 1);
|
||||||
|
ck_assert_str_eq(pattern, eolian_part_name_get(part));
|
||||||
|
|
||||||
|
sprintf(pattern, "Part %d", i + 1);
|
||||||
|
fail_if(!(doc = eolian_part_documentation_get(part)));
|
||||||
|
ck_assert_str_eq(pattern, eolian_documentation_summary_get(doc));
|
||||||
|
|
||||||
|
fail_if(!(klass = eolian_part_class_get(part)));
|
||||||
|
ck_assert_str_eq(part_classes[i], eolian_class_name_get(klass));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
eina_iterator_free(iter);
|
||||||
|
|
||||||
|
eolian_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
void eolian_parsing_test(TCase *tc)
|
void eolian_parsing_test(TCase *tc)
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, eolian_simple_parsing);
|
tcase_add_test(tc, eolian_simple_parsing);
|
||||||
|
@ -1567,4 +1612,5 @@ void eolian_parsing_test(TCase *tc)
|
||||||
tcase_add_test(tc, eolian_docs);
|
tcase_add_test(tc, eolian_docs);
|
||||||
tcase_add_test(tc, eolian_function_types);
|
tcase_add_test(tc, eolian_function_types);
|
||||||
tcase_add_test(tc, eolian_function_as_arguments);
|
tcase_add_test(tc, eolian_function_as_arguments);
|
||||||
|
tcase_add_test(tc, eolian_parts);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue