eolian: disallow missing docs for stable API where necessary

The things that require docs include classes, variables, typedecls,
events and methods/properties. Implements, params, returns, parts
and struct/enum fields don't require them.

Empty/whitespace only string does not count as documentation.
This commit is contained in:
Daniel Kolesa 2019-09-30 17:01:31 +02:00
parent 09859cacf2
commit 2946cb3c32
71 changed files with 746 additions and 108 deletions

View File

@ -1,5 +1,6 @@
abstract Efl.Loop_Model extends Efl.Loop_Consumer implements Efl.Model
{
[[TBD]]
data: null;
methods {
volatile_make {

View File

@ -41,12 +41,23 @@ _validate(Eolian_Object *obj)
eolian_state_log_obj((_base)->unit->state, (_base), __VA_ARGS__)
static Eina_Bool
_validate_docstr(Eina_Stringshare *str, const Eolian_Object *info, Eina_List **rdbg)
_validate_docstr(Eina_Stringshare *str, const Eolian_Object *info, Eina_List **rdbg, Eina_Bool sum)
{
if (!str || !str[0]) return EINA_TRUE;
Eina_List *pl = NULL;
if (str && str[0])
pl = eolian_documentation_string_split(str);
if (!pl)
{
if (sum)
{
_eo_parser_log(info, "empty documentation");
return EINA_FALSE;
}
/* description can be empty, summary-only line */
return EINA_TRUE;
}
Eina_Bool ret = EINA_TRUE;
Eina_List *pl = eolian_documentation_string_split(str);
char *par;
EINA_LIST_FREE(pl, par)
{
@ -88,16 +99,23 @@ _validate_docstr(Eina_Stringshare *str, const Eolian_Object *info, Eina_List **r
}
static Eina_Bool
_validate_doc(Eolian_Documentation *doc)
_validate_doc(Validate_State *vals, Eolian_Documentation *doc,
const Eolian_Object *obj)
{
if (!doc)
{
if (!obj) return EINA_TRUE;
if (!vals->stable) return EINA_TRUE;
_eo_parser_log(obj, "missing documentation");
return EINA_FALSE;
}
return EINA_TRUE;
Eina_List *rdbg = doc->ref_dbg;
if (!_validate_docstr(doc->summary, &doc->base, &rdbg))
if (!_validate_docstr(doc->summary, &doc->base, &rdbg, EINA_TRUE))
return EINA_FALSE;
if (!_validate_docstr(doc->description, &doc->base, &rdbg))
if (!_validate_docstr(doc->description, &doc->base, &rdbg, EINA_FALSE))
return EINA_FALSE;
return _validate(&doc->base);
@ -132,7 +150,7 @@ _sf_map_cb(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED,
if (!sc->succ)
return EINA_FALSE;
sc->succ = _validate_doc(sf->doc);
sc->succ = _validate_doc(sc->vals, sf->doc, NULL);
return sc->succ;
}
@ -149,7 +167,7 @@ _ef_map_cb(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED,
if (!sc->succ)
return EINA_FALSE;
sc->succ = _validate_doc(ef->doc);
sc->succ = _validate_doc(sc->vals, ef->doc, NULL);
return sc->succ;
}
@ -160,12 +178,12 @@ _validate_typedecl(Validate_State *vals, Eolian_Typedecl *tp)
if (tp->base.validated)
return EINA_TRUE;
if (!_validate_doc(tp->doc))
return EINA_FALSE;
/* for the time being assume all typedecls are beta unless overridden */
Eina_Bool was_stable = _set_stable(vals, !tp->base.is_beta);
if (!_validate_doc(vals, tp->doc, &tp->base))
return EINA_FALSE;
switch (tp->type)
{
case EOLIAN_TYPEDECL_ALIAS:
@ -471,7 +489,7 @@ _validate_param(Validate_State *vals, Eolian_Function_Parameter *param)
if (param->value && !_validate_expr(param->value, param->type, 0, param->by_ref))
return EINA_FALSE;
if (!_validate_doc(param->doc))
if (!_validate_doc(vals, param->doc, NULL))
return EINA_FALSE;
return _validate(&param->base);
@ -539,9 +557,9 @@ _validate_function(Validate_State *vals, Eolian_Function *func, Eina_Hash *nhash
#undef EOLIAN_PARAMS_VALIDATE
if (!_validate_doc(func->get_return_doc))
if (!_validate_doc(vals, func->get_return_doc, NULL))
return _reset_stable(vals, was_stable, EINA_FALSE);
if (!_validate_doc(func->set_return_doc))
if (!_validate_doc(vals, func->set_return_doc, NULL))
return _reset_stable(vals, was_stable, EINA_FALSE);
/* just for now, when dups become errors there will be no need to check */
@ -574,7 +592,7 @@ _validate_part(Validate_State *vals, Eolian_Part *part, Eina_Hash *phash)
Eina_Bool was_stable = _set_stable(vals, !part->base.is_beta && vals->stable);
if (!_validate_doc(part->doc))
if (!_validate_doc(vals, part->doc, NULL))
return _reset_stable(vals, was_stable, EINA_FALSE);
/* switch the class name for class */
@ -693,7 +711,7 @@ _validate_event(Validate_State *vals, Eolian_Event *event, Eina_Hash *nhash)
}
}
if (!_validate_doc(event->doc))
if (!_validate_doc(vals, event->doc, &event->base))
return _reset_stable(vals, was_stable, EINA_FALSE);
eina_hash_set(nhash, &event->base.name, &event->base);
@ -1346,16 +1364,17 @@ _db_fill_inherits(Validate_State *vals, Eolian_Class *cl, Eina_Hash *fhash,
}
static Eina_Bool
_validate_implement(Eolian_Implement *impl)
_validate_implement(Validate_State *vals, Eolian_Implement *impl)
{
if (impl->base.validated)
return EINA_TRUE;
if (!_validate_doc(impl->common_doc))
if (!_validate_doc(vals, impl->common_doc, (impl->implklass == impl->klass)
? &impl->foo_id->base : NULL))
return EINA_FALSE;
if (!_validate_doc(impl->get_doc))
if (!_validate_doc(vals, impl->get_doc, NULL))
return EINA_FALSE;
if (!_validate_doc(impl->set_doc))
if (!_validate_doc(vals, impl->set_doc, NULL))
return EINA_FALSE;
return _validate(&impl->base);
@ -1503,7 +1522,7 @@ _validate_class(Validate_State *vals, Eolian_Class *cl,
return EINA_FALSE;
EINA_LIST_FOREACH(cl->implements, l, impl)
if (!_validate_implement(impl))
if (!_validate_implement(vals, impl))
return EINA_FALSE;
/* all the checks that need to be done every time are performed now */
@ -1514,7 +1533,7 @@ _validate_class(Validate_State *vals, Eolian_Class *cl,
return EINA_TRUE;
}
if (!_validate_doc(cl->doc))
if (!_validate_doc(vals, cl->doc, &cl->base))
return EINA_FALSE;
/* also done */
@ -1537,7 +1556,7 @@ _validate_constant(Validate_State *vals, Eolian_Constant *var)
if (!_validate_expr(var->value, var->base_type, 0, EINA_FALSE))
return _reset_stable(vals, was_stable, EINA_FALSE);
if (!_validate_doc(var->doc))
if (!_validate_doc(vals, var->doc, &var->base))
return _reset_stable(vals, was_stable, EINA_FALSE);
_reset_stable(vals, was_stable, EINA_TRUE);

View File

@ -1,5 +1,6 @@
class @beta Ecore.Audio.Out.Test extends Ecore.Audio.Out
{
[[No description supplied.]]
data: null;
implements {
@empty Ecore.Audio.source { set; get; }

View File

@ -1,4 +1,4 @@
class @beta Efl.App.Test.CML extends Efl.Object implements Efl.Core.Command_Line
{
[[No description supplied.]]
}

View File

@ -1,9 +1,10 @@
import eina_types;
class Dummy.Child extends Dummy.Test_Object {
[[No description supplied.]]
methods {
double_params {
[[No description supplied.]]
params {
@in a: string;
@in b: double;
@ -11,6 +12,7 @@ class Dummy.Child extends Dummy.Test_Object {
}
@property iface_was_set {
[[No description supplied.]]
get {}
values {
data: bool;
@ -30,6 +32,7 @@ class Dummy.Child extends Dummy.Test_Object {
}
@property obligatory_beta_ctor_was_called {
[[No description supplied.]]
get{}
values {
data: bool;
@ -37,6 +40,7 @@ class Dummy.Child extends Dummy.Test_Object {
}
@property optional_beta_ctor_was_called {
[[No description supplied.]]
get{}
values {
data: bool;

View File

@ -1,16 +1,21 @@
class Dummy.Constructible_Object extends Efl.Object {
[[No description supplied.]]
methods {
construct_type_and_store {
[[No description supplied.]]
params {
@in type: const(Efl.Class);
}
return: Efl.Object;
}
increment_default_construction_count {
[[No description supplied.]]
}
increment_special_construction_count {
[[No description supplied.]]
}
@property native_construction_count {
[[No description supplied.]]
get {
}
values {
@ -18,6 +23,7 @@ class Dummy.Constructible_Object extends Efl.Object {
}
}
@property default_construction_count {
[[No description supplied.]]
get {
}
values {
@ -25,6 +31,7 @@ class Dummy.Constructible_Object extends Efl.Object {
}
}
@property special_construction_count {
[[No description supplied.]]
get {
}
values {
@ -32,6 +39,7 @@ class Dummy.Constructible_Object extends Efl.Object {
}
}
@property internal_object {
[[No description supplied.]]
get {
}
values {
@ -39,6 +47,7 @@ class Dummy.Constructible_Object extends Efl.Object {
}
}
multiply_integer_value @const {
[[No description supplied.]]
params {
v: int;
}

View File

@ -1,9 +1,10 @@
import eina_types;
class Dummy.Event_Manager extends Efl.Object {
[[No description supplied.]]
methods {
@property emitter {
[[No description supplied.]]
set {
}
values {
@ -12,6 +13,7 @@ class Dummy.Event_Manager extends Efl.Object {
}
emit_with_int {
[[No description supplied.]]
params {
data: int;
}
@ -19,6 +21,7 @@ class Dummy.Event_Manager extends Efl.Object {
}
release {
[[No description supplied.]]
}
}

View File

@ -1,2 +1,3 @@
class Dummy.Hidden_Object extends Efl.Object {
[[No description supplied.]]
}

View File

@ -1,13 +1,16 @@
class Dummy.Inherit_Helper extends Efl.Object
{
[[No description supplied.]]
methods {
receive_dummy_and_call_int_out @static {
[[No description supplied.]]
params {
@in x: Dummy.Test_Object;
}
return: int;
}
receive_dummy_and_call_in_stringshare @static {
[[No description supplied.]]
params {
@in x: Dummy.Inherit_Iface;
}

View File

@ -1,6 +1,8 @@
interface Dummy.Inherit_Iface {
[[No description supplied.]]
methods {
stringshare_test {
[[No description supplied.]]
params {
@in v: stringshare;
}

View File

@ -1,6 +1,8 @@
class Dummy.Numberwrapper extends Efl.Object {
[[No description supplied.]]
methods {
@property number {
[[No description supplied.]]
get {
}
set {

View File

@ -1,7 +1,7 @@
import eina_types;
class Dummy.Part_Holder extends Dummy.Test_Object implements Efl.Part {
[[No description supplied.]]
parts {
one: Dummy.Test_Object; [[ Part number one. ]]
two: Dummy.Test_Object; [[ Part number two. ]]

View File

@ -1,9 +1,12 @@
interface Dummy.Test_Iface
{
[[No description supplied.]]
methods {
emit_nonconflicted {
[[No description supplied.]]
}
@property iface_prop {
[[No description supplied.]]
get {}
set {}
values {
@ -12,6 +15,7 @@ interface Dummy.Test_Iface
}
method_protected @protected @const {
[[No description supplied.]]
params {
@in x: int;
}
@ -19,6 +23,7 @@ interface Dummy.Test_Iface
}
call_method_protected @const {
[[No description supplied.]]
params {
@in x: int;
}
@ -26,6 +31,7 @@ interface Dummy.Test_Iface
}
@property protected_prop @protected {
[[No description supplied.]]
get {}
set {}
values {
@ -34,6 +40,7 @@ interface Dummy.Test_Iface
}
@property public_getter_private_setter {
[[No description supplied.]]
get {}
set @protected {}
values {
@ -42,6 +49,7 @@ interface Dummy.Test_Iface
}
@property static_prop @static {
[[No description supplied.]]
get {}
set {}
values {

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
class Eina_Simple extends Efl.Object
{
[[No description supplied.]]
data: null;
implements {
Efl.Object.constructor;

View File

@ -1,4 +1,4 @@
class @beta Focus_Manager_Test extends Focus.Test implements Efl.Ui.Focus.Manager_Window_Root
{
[[No description supplied.]]
}

View File

@ -2,13 +2,16 @@ class @beta Focus.Test
extends Efl.Object
implements Efl.Ui.Focus.Object, Efl.Gfx.Entity
{
[[No description supplied.]]
methods {
test_size {
[[No description supplied.]]
params {
rect : Eina.Rect;
}
}
@property manager {
[[No description supplied.]]
set {
}

View File

@ -2,6 +2,7 @@ class @beta Focus.Test.Sub.Main
extends Efl.Object
implements Efl.Ui.Focus.Object, Efl.Ui.Focus.Manager_Sub, Efl.Gfx.Entity
{
[[No description supplied.]]
implements {
Efl.Ui.Focus.Object.focus_manager { get; }
Efl.Ui.Focus.Object.focus_parent { get; }

View File

@ -1,6 +1,8 @@
abstract Base {
[[No description supplied.]]
methods {
@property z {
[[No description supplied.]]
values {
a: int;
b: char;
@ -8,8 +10,10 @@ abstract Base {
}
}
constructor @pure_virtual {
[[No description supplied.]]
}
destructor {
[[No description supplied.]]
}
}
constructors {

View File

@ -1,20 +1,27 @@
class Class_Funcs {
[[No description supplied.]]
methods {
@property a @static {
[[No description supplied.]]
get {
}
}
@property b {
[[No description supplied.]]
get {
}
}
foo @static {
[[No description supplied.]]
}
bar {
[[No description supplied.]]
}
baz @protected @static {
[[No description supplied.]]
}
bah @protected {
[[No description supplied.]]
}
}
}

View File

@ -2,7 +2,7 @@ import base;
import mixins_require;
class Class.Requires extends Base implements Mixins.Require {
[[No description supplied.]]
methods {
}
}

View File

@ -1,6 +1,8 @@
class Complex_Type {
[[No description supplied.]]
methods {
@property a {
[[No description supplied.]]
set {
return: list<array<strbuf @move> > @move;
}
@ -11,6 +13,7 @@ class Complex_Type {
}
}
foo {
[[No description supplied.]]
params {
buf: mstring @move;
sl: slice<ubyte>;

View File

@ -1,4 +1,5 @@
class Consts {
[[No description supplied.]]
methods {
foo @const {
[[comment foo]]

View File

@ -1,14 +1,18 @@
class Ctor_Dtor extends Base {
[[No description supplied.]]
methods {
custom_constructor_1 {
[[No description supplied.]]
params {
@in a: int;
@in b: char;
}
}
custom_constructor_2 {
[[No description supplied.]]
}
custom_constructor_3 {
[[No description supplied.]]
params {
@in z: int;
}

View File

@ -1,23 +1,27 @@
// regular named enum
enum Foo {
[[No description supplied.]]
first,
bar,
baz = 5 * 3
}
enum Baz {
[[No description supplied.]]
flag1 = 1 << 0,
flag2 = 1 << 1,
flag3 = 1 << 2, // testing trailing comma on last item
}
enum Name.Spaced {
[[No description supplied.]]
pants
}
const Bah: Baz = Baz.flag1;
const Bah: Baz = Baz.flag1; [[No description supplied.]]
enum Value {
[[No description supplied.]]
foo,
bar,
baz = 2,
@ -26,11 +30,13 @@ enum Value {
pants
}
const Pants: Value = Value.pants;
const Pants: Value = Value.pants; [[No description supplied.]]
class Enum {
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
params {
idx: int;
}

View File

@ -1,14 +1,16 @@
struct Evas_Event_Clicked_Double_Info {
[[No description supplied.]]
pants: int;
}
class Events {
[[No description supplied.]]
event_c_prefix: totally_not_events;
events {
clicked @beta: void; [[Comment for clicked]]
clicked,double: Evas_Event_Clicked_Double_Info; /* No comment */
hot @hot: void;
restart @restart: void;
hot_restart @hot @restart: void;
clicked,double: Evas_Event_Clicked_Double_Info; [[No description supplied.]]
hot @hot: void; [[No description supplied.]]
restart @restart: void; [[No description supplied.]]
hot_restart @hot @restart: void; [[No description supplied.]]
}
}

View File

@ -1,24 +1,28 @@
/* regular type */
type Foo: int;
type Foo: int; [[No description supplied.]]
/* extern type */
type @extern Evas.Coord: int;
type @extern Evas.Coord: int; [[No description supplied.]]
/* regular struct */
struct X
{
[[No description supplied.]]
field: int;
}
/* extern struct */
struct @extern Y
{
[[No description supplied.]]
field: int;
}
class Extern {
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
params {
idx: int;
}

View File

@ -1,18 +1,22 @@
/* regular struct */
struct Named1 {
[[No description supplied.]]
field: int;
}
struct @free(test_free) Named2 {
[[No description supplied.]]
field: int;
}
/* opaque */
struct Opaque1;
struct @free(opaque_free) Opaque2;
struct Opaque1; [[No description supplied.]]
struct @free(opaque_free) Opaque2; [[No description supplied.]]
class Free_Func {
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
params {
idx: int;
}

View File

@ -1,14 +1,17 @@
import function_types;
class Function_As_Argument {
[[No description supplied.]]
methods {
set_cb {
[[No description supplied.]]
params {
cb: SimpleFunc;
}
}
call_cb {
[[No description supplied.]]
params {
a: int;
b: double;

View File

@ -13,12 +13,33 @@ typedef Eo Function_As_Argument;
#endif
/** No description supplied.
*
* @ingroup Function_As_Argument
*/
#define FUNCTION_AS_ARGUMENT_CLASS function_as_argument_class_get()
EWAPI const Efl_Class *function_as_argument_class_get(void);
/**
* @brief No description supplied.
*
* @param[in] obj The object.
* @param[in] cb
*
* @ingroup Function_As_Argument
*/
EOAPI void function_as_argument_set_cb(Eo *obj, void *cb_data, SimpleFunc cb, Eina_Free_Cb cb_free_cb);
/**
* @brief No description supplied.
*
* @param[in] obj The object.
* @param[in] a
* @param[in] b
*
* @ingroup Function_As_Argument
*/
EOAPI char *function_as_argument_call_cb(Eo *obj, int a, double b) EFL_TRANSFER_OWNERSHIP;
#endif

View File

@ -1,10 +1,12 @@
// typedef void (*VoidFunc)(void *data);
function VoidFunc {
[[No description supplied.]]
};
// typedef const char *(*SimpleFunc)(void *data, int a, double b);
function SimpleFunc {
[[No description supplied.]]
params {
a: int;
b: double;
@ -14,6 +16,7 @@ function SimpleFunc {
// typedef double (*ComplexFunc)(void *data, const char *a, const char **b);
function ComplexFunc {
[[No description supplied.]]
params {
@in c: string;
@out d: mstring @move;
@ -23,6 +26,7 @@ function ComplexFunc {
// typedef void (*FuncAsArgFunc)(void *data, VoidFunc cb, SimpleFunc another_cb);
function FuncAsArgFunc {
[[No description supplied.]]
params {
cb: VoidFunc;
another_cb: SimpleFunc;

View File

@ -4,12 +4,28 @@
#ifndef _FUNCTION_TYPES_EOT_TYPES
#define _FUNCTION_TYPES_EOT_TYPES
/** No description supplied.
*
* @ingroup VoidFunc
*/
typedef void (*VoidFunc)(void *data);
/** No description supplied.
*
* @ingroup SimpleFunc
*/
typedef const char * (*SimpleFunc)(void *data, int a, double b);
/** No description supplied.
*
* @ingroup ComplexFunc
*/
typedef double (*ComplexFunc)(void *data, const char *c, char **d EFL_TRANSFER_OWNERSHIP);
/** No description supplied.
*
* @ingroup FuncAsArgFunc
*/
typedef void (*FuncAsArgFunc)(void *data, void *cb_data, VoidFunc cb, Eina_Free_Cb cb_free_cb, void *another_cb_data, SimpleFunc another_cb, Eina_Free_Cb another_cb_free_cb);

View File

@ -1,6 +1,7 @@
interface Iface {
[[No description supplied.]]
methods {
foo {}
bar {}
foo { [[No description supplied.]] }
bar { [[No description supplied.]] }
}
}

View File

@ -1,8 +1,10 @@
import import_types;
class Import {
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
}
}
}

View File

@ -1,5 +1,6 @@
type Imported: int;
type Imported: int; [[No description supplied.]]
struct Imported_Struct {
[[No description supplied.]]
foo: float;
}

View File

@ -4,8 +4,16 @@
#ifndef _IMPORT_TYPES_EOT_TYPES
#define _IMPORT_TYPES_EOT_TYPES
/** No description supplied.
*
* @ingroup Imported
*/
typedef int Imported;
/** No description supplied.
*
* @ingroup Imported_Struct
*/
typedef struct _Imported_Struct
{
float foo;

View File

@ -2,9 +2,10 @@ import base;
import class_simple;
mixin Mixins.Require requires Base {
[[No description supplied.]]
methods {
test {
[[No description supplied.]]
}
}
implements {

View File

@ -1,5 +1,6 @@
class nmsp1.class1 extends nmsp1.nmsp11.class2 implements nmsp2.class1, no_nmsp
{
[[No description supplied.]]
implements {
nmsp1.nmsp11.class2.a { set; }
no_nmsp.foo;

View File

@ -1,7 +1,9 @@
abstract nmsp1.nmsp11.class2
{
[[No description supplied.]]
methods {
@property a {
[[No description supplied.]]
set @pure_virtual {
}
}

View File

@ -1,3 +1,4 @@
mixin nmsp2.class1
{
[[No description supplied.]]
}

View File

@ -1,7 +1,9 @@
mixin no_nmsp
{
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
}
}
}

View File

@ -1,6 +1,8 @@
abstract Object_Impl extends Base {
[[No description supplied.]]
methods {
@property a {
[[No description supplied.]]
set {
values {
value: const(list<string>);
@ -17,6 +19,7 @@ abstract Object_Impl extends Base {
}
}
@property b {
[[No description supplied.]]
set {
}
get @pure_virtual {
@ -27,12 +30,14 @@ abstract Object_Impl extends Base {
}
}
constructor_1 {
[[No description supplied.]]
params {
@in a: int;
@in b: char;
}
}
constructor_2 {
[[No description supplied.]]
}
foo1 {
[[comment foo]]
@ -51,6 +56,7 @@ abstract Object_Impl extends Base {
}
}
pure_foo3 @pure_virtual {
[[No description supplied.]]
/* set as virtual pure - no implementation expected */
}
}

View File

@ -1,8 +1,10 @@
class Object_Impl_Add extends Base {
[[No description supplied.]]
data: Object_Impl_Data;
methods {
@property c {
[[No description supplied.]]
set {
}
get {

View File

@ -1,12 +1,15 @@
abstract Override extends Base {
[[No description supplied.]]
methods {
@property a {
[[No description supplied.]]
set @pure_virtual {
}
get {
}
}
@property b {
[[No description supplied.]]
set {
}
get {
@ -21,6 +24,7 @@ abstract Override extends Base {
}
}
@property c {
[[No description supplied.]]
set {
}
get {
@ -33,8 +37,10 @@ abstract Override extends Base {
}
}
foo @pure_virtual {
[[No description supplied.]]
}
bar {
[[No description supplied.]]
params {
@in idx: int;
@out a: int (250);

View File

@ -1,4 +1,5 @@
class Parts extends Override {
[[No description supplied.]]
parts {
part1: Override; [[Part 1]]
part2 @beta: Parts; [[Part 2]]

View File

@ -1,24 +1,31 @@
class Scope {
[[No description supplied.]]
methods {
@property a @protected {
[[No description supplied.]]
get {
}
}
@property b {
[[No description supplied.]]
get {
}
}
@property c {
[[No description supplied.]]
get {
}
set @protected {
}
}
foo {
[[No description supplied.]]
}
bar @protected {
[[No description supplied.]]
}
foobar {
[[No description supplied.]]
}
}
}

View File

@ -1,20 +1,24 @@
struct Named {
[[No description supplied.]]
field: int @by_ref;
something: string;
}
struct Another {
[[No description supplied.]]
field: Named;
}
/* opaque struct */
struct Opaque;
struct Opaque; [[No description supplied.]]
struct @extern Not.Generated {
field: int;
[[No description supplied.]]
field: int;
}
class Struct {
[[No description supplied.]]
methods {
foo {
[[Foo docs. This is $monospace. This is alone-standing $.]]
@ -24,6 +28,7 @@ class Struct {
return: mstring @move;
}
bar {
[[No description supplied.]]
return: Named @by_ref;
}
}

View File

@ -11,21 +11,37 @@ typedef Eo Struct;
#ifndef _STRUCT_EO_TYPES
#define _STRUCT_EO_TYPES
/** No description supplied.
*
* @ingroup Named
*/
typedef struct _Named
{
int *field;
const char *something;
} Named;
/** No description supplied.
*
* @ingroup Another
*/
typedef struct _Another
{
Named field;
} Another;
/** No description supplied.
*
* @ingroup Opaque
*/
typedef struct _Opaque Opaque;
#endif
/** No description supplied.
*
* @ingroup Struct
*/
#define STRUCT_CLASS struct_class_get()
EWAPI const Efl_Class *struct_class_get(void);
@ -40,6 +56,10 @@ EWAPI const Efl_Class *struct_class_get(void);
*/
EOAPI char *struct_foo(Eo *obj, int idx) EFL_TRANSFER_OWNERSHIP;
/** No description supplied.
*
* @ingroup Struct
*/
EOAPI Named *struct_bar(Eo *obj);
#endif

View File

@ -3,10 +3,22 @@
typedef Eo Struct;
/** No description supplied.
*
* @ingroup Named
*/
typedef struct _Named Named;
/** No description supplied.
*
* @ingroup Another
*/
typedef struct _Another Another;
/** No description supplied.
*
* @ingroup Opaque
*/
typedef struct _Opaque Opaque;

View File

@ -1,15 +1,16 @@
type Evas.Coord: int; /* Simple type definition */
type List_Objects: list<Typedef>; /* A little more complex */
type Evas.Coord: int; [[No description supplied.]]
type List_Objects: list<Typedef>; [[No description supplied.]]
type Evas.Coord2: Evas.Coord;
type Evas.Coord3: Evas.Coord2;
type Evas.Coord2: Evas.Coord; [[No description supplied.]]
type Evas.Coord3: Evas.Coord2; [[No description supplied.]]
type @extern Evas.Pants: float; /* not generated */
type @extern Evas.Pants: float; [[No description supplied.]]
type @beta Undef: __undefined_type; /* not generated */
type @beta Undef: __undefined_type; [[No description supplied.]]
enum Elm.Object.Select_Mode
{
[[No description supplied.]]
default = 0,
always,
none,
@ -18,8 +19,10 @@ enum Elm.Object.Select_Mode
}
class Typedef {
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
params {
idx: int;
}

View File

@ -11,14 +11,34 @@ typedef Eo Typedef;
#ifndef _TYPEDEF_EO_TYPES
#define _TYPEDEF_EO_TYPES
/** No description supplied.
*
* @ingroup Evas
*/
typedef int Evas_Coord;
/** No description supplied.
*
* @ingroup List_Objects
*/
typedef Eina_List *List_Objects;
/** No description supplied.
*
* @ingroup Evas
*/
typedef Evas_Coord Evas_Coord2;
/** No description supplied.
*
* @ingroup Evas
*/
typedef Evas_Coord2 Evas_Coord3;
/** No description supplied.
*
* @ingroup Elm_Object
*/
typedef enum
{
ELM_OBJECT_SELECT_MODE_DEFAULT = 0,
@ -30,10 +50,22 @@ typedef enum
#endif
/** No description supplied.
*
* @ingroup Typedef
*/
#define TYPEDEF_CLASS typedef_class_get()
EWAPI const Efl_Class *typedef_class_get(void);
/**
* @brief No description supplied.
*
* @param[in] obj The object.
* @param[in] idx
*
* @ingroup Typedef
*/
EOAPI char *typedef_foo(Eo *obj, int idx) EFL_TRANSFER_OWNERSHIP;
#endif

View File

@ -3,12 +3,28 @@
typedef Eo Typedef;
/** No description supplied.
*
* @ingroup Evas
*/
typedef int Evas_Coord;
/** No description supplied.
*
* @ingroup List_Objects
*/
typedef Eina_List *List_Objects;
/** No description supplied.
*
* @ingroup Evas
*/
typedef Evas_Coord Evas_Coord2;
/** No description supplied.
*
* @ingroup Evas
*/
typedef Evas_Coord2 Evas_Coord3;

View File

@ -1,4 +1,5 @@
class Unimpl composites Iface {
[[No description supplied.]]
implements {
Iface.foo;
}

View File

@ -1,9 +1,11 @@
// regular constant
const Foo: int = 5;
const Foo: int = 5; [[No description supplied.]]
class Var {
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
params {
idx: int;
}

View File

@ -1,9 +1,10 @@
class Aux_A extends Aux_C {
[[No description supplied.]]
methods {
baz {}
baz { [[No description supplied.]] }
}
events {
test2: void;
test2: void; [[No description supplied.]]
}
implements {
Aux_C.foo;

View File

@ -1,2 +1,3 @@
class Aux_B extends Aux_C {
[[No description supplied.]]
}

View File

@ -1,9 +1,10 @@
class Aux_C {
[[No description supplied.]]
methods {
foo {}
bar {}
foo { [[No description supplied.]] }
bar { [[No description supplied.]] }
}
events {
test: void;
test: void; [[No description supplied.]]
}
}

View File

@ -1,5 +1,6 @@
class Generated_Future extends Efl.Object
{
[[No description supplied.]]
methods {
}
}

View File

@ -1,5 +1,6 @@
class A extends Efl.Object
{
[[No description supplied.]]
data: A_Data;
implements {
Efl.Object.constructor;

View File

@ -1,5 +1,6 @@
class B extends A
{
[[No description supplied.]]
data: B_Data;
implements {
Efl.Object.constructor;

View File

@ -1,5 +1,6 @@
class C extends B
{
[[No description supplied.]]
data: C_Data;
implements {
Efl.Object.constructor;

View File

@ -1,196 +1,236 @@
class Complex extends Efl.Object
{
[[No description supplied.]]
data: Complex_Data;
methods {
// container test
inptrcont {
[[No description supplied.]]
params {
l: list<string>;
}
}
inclasscont {
[[No description supplied.]]
params {
l: list<Efl.Object>;
}
}
incontcont {
[[No description supplied.]]
params {
l: list<list<string>>;
}
}
incontcontown {
[[No description supplied.]]
params {
l: list<list<string>> @move;
}
}
incontowncontown {
[[No description supplied.]]
params {
l: list<list<string> @move> @move;
}
}
incontowncont {
[[No description supplied.]]
params {
l: list<list<string> @move>;
}
}
instringcont {
[[No description supplied.]]
params {
l: list<string>;
}
}
instringowncont {
[[No description supplied.]]
params {
l: list<mstring @move>;
}
}
instringcontown {
[[No description supplied.]]
params {
l: list<string> @move;
}
}
inarray {
[[No description supplied.]]
params {
l: array<string>;
}
}
inarrayown {
[[No description supplied.]]
params {
l: array<string> @move;
}
}
inhash @beta {
[[No description supplied.]]
params {
l: hash<string, string>;
}
}
inhashown @beta {
[[No description supplied.]]
params {
l: hash<string, string> @move;
}
}
initerator {
[[No description supplied.]]
params {
l: iterator<int>;
}
}
initeratorown {
[[No description supplied.]]
params {
l: iterator<int> @move;
}
}
inaccessor {
[[No description supplied.]]
params {
l: accessor<int>;
}
}
inaccessorown {
[[No description supplied.]]
params {
l: accessor<int> @move;
}
}
// out
outclasscont {
[[No description supplied.]]
params {
@out l: list<Efl.Object>;
}
}
outcontcont {
[[No description supplied.]]
params {
@out l: list<list<string>>;
}
}
outcontcontown {
[[No description supplied.]]
params {
@out l: list<list<string>> @move;
}
}
outcontowncontown {
[[No description supplied.]]
params {
@out l: list<list<string> @move> @move;
}
}
outcontowncont {
[[No description supplied.]]
params {
@out l: list<list<string> @move>;
}
}
outstringcont {
[[No description supplied.]]
params {
@out l: list<string>;
}
}
outstringowncont {
[[No description supplied.]]
params {
@out l: list<mstring @move>;
}
}
outstringcontown {
[[No description supplied.]]
params {
@out l: list<string> @move;
}
}
outarray {
[[No description supplied.]]
params {
@out l: array<string>;
}
}
outarrayown {
[[No description supplied.]]
params {
@out l: array<string> @move;
}
}
outhash @beta {
[[No description supplied.]]
params {
@out l: hash<string, string>;
}
}
outhashown @beta {
[[No description supplied.]]
params {
@out l: hash<string, string> @move;
}
}
outiterator {
[[No description supplied.]]
params {
@out l: iterator<int>;
}
}
outiteratorown {
[[No description supplied.]]
params {
@out l: iterator<int> @move;
}
}
outaccessor {
[[No description supplied.]]
params {
@out l: accessor<int>;
}
}
outaccessorown {
[[No description supplied.]]
params {
@out l: accessor<int> @move;
}
}
foo {
[[No description supplied.]]
params {
l: list<string>;
}
}
bar {
[[No description supplied.]]
return: array<string>;
}
wrapper_r {
[[No description supplied.]]
return: Complex;
}
wrapper_in {
[[No description supplied.]]
params {
@in a1: Complex;
}
}
wrapper_inout {
[[No description supplied.]]
params {
@inout a1: Complex;
}
}
wrapper_out {
[[No description supplied.]]
params {
@out a1: Complex;
}

View File

@ -1,7 +1,9 @@
class Cyclic1
{
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
return: Cyclic2;
}
}

View File

@ -1,7 +1,9 @@
class Cyclic2
{
[[No description supplied.]]
methods {
foo {
[[No description supplied.]]
return: Cyclic1;
}
}

View File

@ -1,15 +1,17 @@
struct Generic.Event
{
[[No description supplied.]]
field1: int;
field2: list<string>;
}
class Generic extends Efl.Object implements Generic_Interface
{
[[No description supplied.]]
data: Generic_Data;
methods {
@property req_ctor_a_value {
[[No description supplied.]]
get {
}
values {
@ -17,6 +19,7 @@ class Generic extends Efl.Object implements Generic_Interface
}
}
@property opt_ctor_a_value {
[[No description supplied.]]
get {
}
values {
@ -24,92 +27,114 @@ class Generic extends Efl.Object implements Generic_Interface
}
}
required_ctor_a {
[[No description supplied.]]
params {
@in value: int;
}
}
required_ctor_b {
[[No description supplied.]]
params {
@in value: int;
}
}
optional_ctor_a {
[[No description supplied.]]
params {
@in value: int;
}
}
optional_ctor_b {
[[No description supplied.]]
params {
@in value: int;
}
}
@property req_ctor_b_value {
[[No description supplied.]]
get {}
values {
value: int;
}
}
@property opt_ctor_b_value {
[[No description supplied.]]
get {}
values {
value: int;
}
}
out_required_ctor_a {
[[No description supplied.]]
params {
@out value: int;
}
}
out_required_ctor_b {
[[No description supplied.]]
params {
@out value: int;
}
}
out_optional_ctor_a {
[[No description supplied.]]
params {
@out value: int;
}
}
out_optional_ctor_b {
[[No description supplied.]]
params {
@out value: int;
}
}
call_event1 {
[[No description supplied.]]
}
call_event2 {
[[No description supplied.]]
}
call_event3 {
[[No description supplied.]]
}
call_event4 {
[[No description supplied.]]
}
call_event5 {
[[No description supplied.]]
}
protected_method1 @protected {
[[No description supplied.]]
}
beta_method1 @beta {
[[No description supplied.]]
}
protected_beta_method1 @protected @beta {
[[No description supplied.]]
}
event_param {
[[No description supplied.]]
params {
value: event;
}
}
const_event_param {
[[No description supplied.]]
params {
value: const(event);
}
}
binbuf_param {
[[No description supplied.]]
params {
value: binbuf;
}
}
const_binbuf_param {
[[No description supplied.]]
params {
value: const(binbuf);
}
@ -125,13 +150,13 @@ class Generic extends Efl.Object implements Generic_Interface
Efl.Object.constructor;
}
events {
prefix,event1: void;
prefix,event2: Generic;
prefix,event3: int;
prefix,event4: const(array<string>);
prefix,event5: Generic.Event;
protected,event1 @protected: void;
beta,event1 @beta: void;
protected,beta,event1 @beta @protected: void;
prefix,event1: void; [[No description supplied.]]
prefix,event2: Generic; [[No description supplied.]]
prefix,event3: int; [[No description supplied.]]
prefix,event4: const(array<string>); [[No description supplied.]]
prefix,event5: Generic.Event; [[No description supplied.]]
protected,event1 @protected: void; [[No description supplied.]]
beta,event1 @beta: void; [[No description supplied.]]
protected,beta,event1 @beta @protected: void; [[No description supplied.]]
}
}

View File

@ -1,3 +1,4 @@
interface Generic_Interface
{
[[No description supplied.]]
}

View File

@ -1,3 +1,4 @@
class Name.Name {
[[No description supplied.]]
}

View File

@ -1,3 +1,4 @@
class Ns.Name {
[[No description supplied.]]
}

View File

@ -1,3 +1,4 @@
class Ns.Name.Other {
[[No description supplied.]]
}

View File

@ -1,11 +1,14 @@
class Property_Holder extends Efl.Object
{
[[No description supplied.]]
methods {
some_method {
[[No description supplied.]]
return: int;
}
@property prop_simple {
[[No description supplied.]]
get {}
set {}
values {
@ -14,6 +17,7 @@ class Property_Holder extends Efl.Object
}
@property getter_only {
[[No description supplied.]]
get {}
values {
data: int;
@ -21,6 +25,7 @@ class Property_Holder extends Efl.Object
}
@property setter_only {
[[No description supplied.]]
set {}
values {
data: int;
@ -28,6 +33,7 @@ class Property_Holder extends Efl.Object
}
@property prop_with_key {
[[No description supplied.]]
get {}
set {}
values {

View File

@ -1,11 +1,14 @@
class Simple extends Efl.Object
{
[[No description supplied.]]
data: null;
methods {
simple_get {
[[No description supplied.]]
return: bool;
}
name_get {
[[No description supplied.]]
params {
@out name: string;
}