1import eina_types;
2
3type Dummy.MyInt: int; [[Docs for typedef Dummy. @since 1.66]]
4
5const Dummy.Constvar_Bool : bool = true; [[Docs for var Dummy.Constvar_Bool. @since 1.66]]
6const Dummy.Constvar_Int : int = -32766; [[Docs for var Dummy.Constvar_Int. @since 1.66]]
7const Dummy.Constvar_UInt : uint = 65533U; [[Docs for var Dummy.Constvar_UInt. @since 1.66]]
8const Dummy.Constvar_Long : long = -2147483644L; [[Docs for var Dummy.Constvar_Long. @since 1.66]]
9const Dummy.Constvar_ULong : ulong = 4294967288UL; [[Docs for var Dummy.Constvar_ULong @since 1.66]]
10const Dummy.Constvar_LLong : llong = -9223372036854775800LL; [[Docs for var Dummy.Constvar_LLong. @since 1.66]]
11const Dummy.Constvar_ULLong : ullong = 18446744073709551615ULL; [[Docs for var Dummy.Constvar_ULLong. @since 1.66]]
12const Dummy.Constvar_Float : float = 16777211.0f; [[Docs for var Dummy.Constvar_Float. @since 1.66]]
13const Dummy.Constvar_Double : double = 9007199254740988.0; [[Docs for var Dummy.Constvar_Double. @since 1.66]]
14const Dummy.Constvar_Char : char = '!'; [[Docs for var Dummy.Constvar_Char. @since 1.66]]
15const Dummy.Constvar_String : string = "test_str"; [[Docs for var Dummy.Constvar_String. @since 1.66]]
16
17enum Dummy.SampleEnum {
18   [[Docs for enum Dummy.SampleEnum. @since 1.66]]
19   v0,
20   v1,
21   v2,
22   v3,
23   v4,
24}
25
26struct @free(free) Dummy.StructSimple {
27   [[Docs for struct Dummy.StructSimple. @since 1.66]]
28   fbyte: byte;
29   fubyte: ubyte;
30   fchar: char;
31   fshort: short;
32   fushort: ushort;
33   fint: int;
34   fuint: uint;
35   flong: long;
36   fulong: ulong;
37   fllong: llong;
38   fullong: ullong;
39   fint8: int8;
40   fuint8: uint8;
41   fint16: int16;
42   fuint16: uint16;
43   fint32: int32;
44   fuint32: uint32;
45   fint64: int64;
46   fuint64: uint64;
47   fssize: ssize;
48   fsize: size;
49   fintptr: intptr;
50   // fuintptr: uintptr; // TODO
51   fptrdiff: ptrdiff;
52   ffloat: float;
53   fdouble: double;
54   fbool: bool;
55   fenum: Dummy.SampleEnum;
56   // fboolptr: ptr(bool); // TODO
57   // fbyteptr: ptr(byte);
58   // fubyteptr: ptr(ubyte);
59   // fcharptr: ptr(char);
60   // fuint8ptr: ptr(uint8);
61   // fint16ptr: ptr(int16);
62   // fuint64ptr: ptr(uint64);
63   // fssizeptr: ptr(ssize);
64   // fsizeptr: ptr(size);
65   // fintptrptr: ptr(intptr);
66   // fptrdiffptr: ptr(ptrdiff);
67   // ffloatptr: ptr(float);
68   // fdoubleptr: ptr(double);
69   // fvoid_ptrptr: ptr(void_ptr);
70   // fenumptr: ptr(Dummy.SampleEnum);
71   fstring: string;
72   fmstring: mstring;
73   fstringshare: stringshare;
74   fmyint: Dummy.MyInt;
75}
76
77struct @beta @free(free) Dummy.StructComplex {
78   farray: array<string>;
79   flist: list<string>;
80   fhash: hash<string, string>;
81   fiterator: iterator<string>;
82   faccessor: accessor<string>;
83   fany_value: any_value;
84   fany_value_ref: any_value_ref;
85   fbinbuf: binbuf;
86   fslice: slice<ubyte>;
87   // fslice: ptr(Eina.Slice); // TODO
88   fobj: Dummy.Numberwrapper;
89}
90
91function Dummy.SimpleCb {
92   [[Docs for function Dummy.SimpleCb. @since 1.66]]
93   params {
94      a: int;
95   }
96   return: int;
97};
98
99function Dummy.FormatCb {
100   [[Docs for function Dummy.FormatCb. @since 1.66]]
101   params {
102      @in str: strbuf;
103      @in value: const(any_value);
104   }
105};
106
107class Dummy.Test_Object extends Efl.Object implements Dummy.Test_Iface {
108   [[ Simple test class
109
110      @since 1.23 ]]
111   methods {
112      return_object {
113         return: Dummy.Test_Object;
114      }
115
116      return_null_object {
117         return: Dummy.Test_Object;
118      }
119
120      return_iface {
121         return: Dummy.Test_Iface;
122      }
123
124      int_out {
125         params {
126            @in x: int;
127            @out y: int;
128         }
129      }
130
131      /*
132      int_ptr_out {
133         params {
134            @in x: int;
135            @out y: ptr(int);
136         }
137      }
138      */
139
140      in_stringshare {
141         params {
142            @in v: stringshare;
143         }
144         return: stringshare @move;
145      }
146      in_own_stringshare {
147         params {
148            @in v: stringshare @move;
149         }
150         return: stringshare @move;
151      }
152
153      out_stringshare {
154         params {
155            @out v: stringshare;
156         }
157      }
158      out_own_stringshare {
159         params {
160            @out v: stringshare @move;
161         }
162      }
163
164      return_stringshare {
165         return: stringshare;
166      }
167      return_own_stringshare {
168         return: stringshare @move;
169      }
170
171      in_string {
172         params {
173            @in str: string;
174         }
175         return: mstring @move;
176      }
177
178      in_own_string {
179         params {
180            @in str: mstring @move;
181         }
182         return: mstring @move;
183      }
184
185      return_string {
186         return: string;
187      }
188
189      return_own_string {
190         return: mstring @move;
191      }
192
193      out_string {
194         params {
195            @out str: string;
196         }
197      }
198
199      out_own_string {
200         params {
201            @out str: mstring @move;
202         }
203      }
204
205      call_in_string {
206        params {
207            @in str: string;
208        }
209      }
210
211      call_in_own_string {
212        params {
213            @in str: mstring @move;
214        }
215      }
216
217      call_return_string {
218         return: string;
219      }
220
221      call_return_own_string {
222         return: mstring @move;
223      }
224
225      call_out_string {
226         return: string;
227      }
228
229      call_out_own_string {
230         return: mstring @move;
231      }
232
233      // Stringshare virtual helpers
234      call_in_stringshare {
235        params {
236            @in str: stringshare;
237        }
238      }
239
240      call_in_own_stringshare {
241        params {
242            @in str: stringshare @move;
243        }
244      }
245
246      call_return_stringshare {
247         return: stringshare;
248      }
249
250      call_return_own_stringshare {
251         return: stringshare @move;
252      }
253
254      call_out_stringshare {
255         return: stringshare;
256      }
257
258      call_out_own_stringshare {
259         return: stringshare @move;
260      }
261
262      eina_slice_in {
263         params {
264            @in slice: slice<ubyte>;
265         }
266         return: bool;
267      }
268
269      eina_rw_slice_in {
270         params {
271            @in slice: rw_slice<ubyte>;
272         }
273         return: bool;
274      }
275
276      eina_slice_out {
277         params {
278            @out slice: slice<ubyte>;
279         }
280         return: bool;
281      }
282
283      eina_rw_slice_out {
284         params {
285            @out slice: rw_slice<ubyte>;
286         }
287         return: bool;
288      }
289
290      eina_rw_slice_inout {
291         params {
292            @inout slice: rw_slice<ubyte>;
293         }
294         return: bool;
295      }
296
297      /*
298      eina_slice_return {
299         return: slice<ubyte>;
300      }
301
302      eina_rw_slice_return {
303         return: rw_slice<ubyte>;
304      }
305      */
306
307      eina_binbuf_in {
308         params {
309            @in binbuf: binbuf;
310         }
311         return: bool;
312      }
313
314      call_eina_binbuf_in {
315         params {
316            @in binbuf: binbuf;
317         }
318         return: bool;
319      }
320
321      eina_binbuf_in_own {
322         params {
323            @in binbuf: binbuf @move;
324         }
325         return: bool;
326      }
327
328      call_eina_binbuf_in_own {
329        params {
330            @in str: binbuf @move;
331        }
332        return: bool;
333      }
334
335      check_binbuf_in_own {
336         return: bool;
337      }
338
339      eina_binbuf_out {
340         params {
341            @out binbuf: binbuf;
342         }
343         return: bool;
344      }
345
346      call_eina_binbuf_out {
347         return: binbuf;
348      }
349
350      check_binbuf_out {
351         return: bool;
352      }
353
354      eina_binbuf_out_own {
355         params {
356            @out binbuf: binbuf @move;
357         }
358         return: bool;
359      }
360
361      call_eina_binbuf_out_own {
362         return: binbuf @move;
363      }
364
365      eina_binbuf_return {
366         return: binbuf;
367      }
368
369      call_eina_binbuf_return {
370         return: binbuf;
371      }
372
373      check_binbuf_return {
374         return: bool;
375      }
376
377      eina_binbuf_return_own {
378         return: binbuf @move;
379      }
380
381      call_eina_binbuf_return_own {
382         return: binbuf @move;
383      }
384
385      /* Eina Array */
386
387      /* Integer */
388      eina_array_int_in {
389         params {
390            @in arr: array<int>;
391         }
392         return: bool;
393      }
394
395      eina_array_int_in_own {
396         params {
397            @in arr: array<int> @move; // <int @move>
398         }
399         return: bool;
400      }
401      check_eina_array_int_in_own {
402         return: bool;
403      }
404
405      eina_array_int_out {
406         params {
407            @out arr: array<int>;
408         }
409         return: bool;
410      }
411      check_eina_array_int_out {
412         return: bool;
413      }
414
415      eina_array_int_out_own {
416         params {
417            @out arr: array<int> @move; // <int @move>
418         }
419         return: bool;
420      }
421
422      eina_array_int_return {
423         return: array<int>;
424      }
425      check_eina_array_int_return {
426         return: bool;
427      }
428
429      eina_array_int_return_own {
430         return: array<int> @move; // <int @move>
431      }
432
433      /* String */
434      eina_array_str_in {
435         params {
436            @in arr: array<string>;
437         }
438         return: bool;
439      }
440
441      eina_array_str_in_own {
442         params {
443            @in arr: array<mstring @move> @move;
444         }
445         return: bool;
446      }
447      check_eina_array_str_in_own {
448         return: bool;
449      }
450
451      eina_array_str_out {
452         params {
453            @out arr: array<string>;
454         }
455         return: bool;
456      }
457      check_eina_array_str_out {
458         return: bool;
459      }
460
461      eina_array_str_out_own {
462         params {
463            @out arr: array<mstring @move> @move;
464         }
465         return: bool;
466      }
467
468      eina_array_str_return {
469         return: array<string>;
470      }
471      check_eina_array_str_return {
472         return: bool;
473      }
474
475      eina_array_str_return_own {
476         return: array<mstring @move> @move;
477      }
478
479      /* Eina_Stringshare */
480      eina_array_strshare_in {
481         params {
482            @in arr: array<stringshare>;
483         }
484         return: bool;
485      }
486
487      eina_array_strshare_in_own {
488         params {
489            @in arr: array<stringshare @move> @move;
490         }
491         return: bool;
492      }
493      check_eina_array_strshare_in_own {
494         return: bool;
495      }
496
497      eina_array_strshare_out {
498         params {
499            @out arr: array<stringshare>;
500         }
501         return: bool;
502      }
503      check_eina_array_strshare_out {
504         return: bool;
505      }
506
507      eina_array_strshare_out_own {
508         params {
509            @out arr: array<stringshare @move> @move;
510         }
511         return: bool;
512      }
513
514      eina_array_strshare_return {
515         return: array<stringshare>;
516      }
517      check_eina_array_strshare_return {
518         return: bool;
519      }
520
521      eina_array_strshare_return_own {
522         return: array<stringshare @move> @move;
523      }
524
525      /* Object */
526      eina_array_obj_in {
527         params {
528            @in arr: array<Dummy.Numberwrapper>;
529         }
530         return: bool;
531      }
532
533      eina_array_obj_in_own {
534         params {
535            @in arr: array<Dummy.Numberwrapper @move> @move;
536         }
537         return: bool;
538      }
539      check_eina_array_obj_in_own {
540         return: bool;
541      }
542
543      eina_array_obj_out {
544         params {
545            @out arr: array<Dummy.Numberwrapper>;
546         }
547         return: bool;
548      }
549      check_eina_array_obj_out {
550         return: bool;
551      }
552
553      eina_array_obj_out_own {
554         params {
555            @out arr: array<Dummy.Numberwrapper @move> @move;
556         }
557         return: bool;
558      }
559
560      eina_array_obj_return {
561         return: array<Dummy.Numberwrapper>;
562      }
563      check_eina_array_obj_return {
564         return: bool;
565      }
566
567      eina_array_obj_return_own {
568         return: array<Dummy.Numberwrapper @move> @move;
569      }
570
571      eina_array_obj_return_in {
572         params {
573            @in arr: array<Dummy.Numberwrapper>;
574         }
575         return: array<Dummy.Numberwrapper>;
576     }
577
578      /* Eina List */
579
580      /* Integer */
581      eina_list_int_in @beta {
582         params {
583            @in lst: list<int>;
584         }
585         return: bool;
586      }
587
588      eina_list_int_in_own @beta {
589         params {
590            @in lst: list<int> @move; // <int @move>
591         }
592         return: bool;
593      }
594      check_eina_list_int_in_own {
595         return: bool;
596      }
597
598      eina_list_int_out @beta {
599         params {
600            @out lst: list<int>;
601         }
602         return: bool;
603      }
604      check_eina_list_int_out {
605         return: bool;
606      }
607
608      eina_list_int_out_own @beta {
609         params {
610            @out lst: list<int> @move; // <int @move>
611         }
612         return: bool;
613      }
614
615      eina_list_int_return @beta {
616         return: list<int>;
617      }
618      check_eina_list_int_return {
619         return: bool;
620      }
621
622      eina_list_int_return_own @beta {
623         return: list<int> @move; // <int @move>
624      }
625
626      /* String */
627      eina_list_str_in @beta {
628         params {
629            @in lst: list<string>;
630         }
631         return: bool;
632      }
633
634      eina_list_str_in_own @beta {
635         params {
636            @in lst: list<mstring @move> @move;
637         }
638         return: bool;
639      }
640      check_eina_list_str_in_own {
641         return: bool;
642      }
643
644      eina_list_str_out @beta {
645         params {
646            @out lst: list<string>;
647         }
648         return: bool;
649      }
650      check_eina_list_str_out {
651         return: bool;
652      }
653
654      eina_list_str_out_own @beta {
655         params {
656            @out lst: list<mstring @move> @move;
657         }
658         return: bool;
659      }
660
661      eina_list_str_return @beta {
662         return: list<string>;
663      }
664      check_eina_list_str_return {
665         return: bool;
666      }
667
668      eina_list_str_return_own @beta {
669         return: list<mstring @move> @move;
670      }
671
672      /* Eina_Stringshare */
673      eina_list_strshare_in @beta {
674         params {
675            @in lst: list<stringshare>;
676         }
677         return: bool;
678      }
679
680      eina_list_strshare_in_own @beta {
681         params {
682            @in lst: list<stringshare @move> @move;
683         }
684         return: bool;
685      }
686      check_eina_list_strshare_in_own {
687         return: bool;
688      }
689
690      eina_list_strshare_out @beta {
691         params {
692            @out lst: list<stringshare>;
693         }
694         return: bool;
695      }
696      check_eina_list_strshare_out {
697         return: bool;
698      }
699
700      eina_list_strshare_out_own @beta {
701         params {
702            @out lst: list<stringshare @move> @move;
703         }
704         return: bool;
705      }
706
707      eina_list_strshare_return @beta {
708         return: list<stringshare>;
709      }
710      check_eina_list_strshare_return {
711         return: bool;
712      }
713
714      eina_list_strshare_return_own @beta {
715         return: list<stringshare @move> @move;
716      }
717
718      /* Object */
719      eina_list_obj_in @beta {
720         params {
721            @in lst: list<Dummy.Numberwrapper>;
722         }
723         return: bool;
724      }
725
726      eina_list_obj_in_own @beta {
727         params {
728            @in lst: list<Dummy.Numberwrapper @move> @move;
729         }
730         return: bool;
731      }
732      check_eina_list_obj_in_own {
733         return: bool;
734      }
735
736      eina_list_obj_out @beta {
737         params {
738            @out lst: list<Dummy.Numberwrapper>;
739         }
740         return: bool;
741      }
742      check_eina_list_obj_out {
743         return: bool;
744      }
745
746      eina_list_obj_out_own @beta {
747         params {
748            @out lst: list<Dummy.Numberwrapper @move> @move;
749         }
750         return: bool;
751      }
752
753      eina_list_obj_return @beta {
754         return: list<Dummy.Numberwrapper>;
755      }
756      check_eina_list_obj_return {
757         return: bool;
758      }
759
760      eina_list_obj_return_own @beta {
761         return: list<Dummy.Numberwrapper @move> @move;
762      }
763
764      eina_list_obj_return_in @beta {
765         params {
766            @in lst: list<Dummy.Numberwrapper>;
767         }
768         return: list<Dummy.Numberwrapper>;
769      }
770
771      // Eina Hash //
772
773      // Integer //
774      eina_hash_int_in @beta {
775         params {
776            @in hsh: hash<int, int>;
777         }
778         return: bool;
779      }
780
781      /*
782      eina_hash_int_in_own @beta {
783         params {
784            @in hsh: hash<int, int> @move; // <, int @move>
785         }
786         return: bool;
787      }
788      check_eina_hash_int_in_own {
789         return: bool;
790      }
791      */
792
793      eina_hash_int_out @beta {
794         params {
795            @out hsh: hash<int, int>;
796         }
797         return: bool;
798      }
799      check_eina_hash_int_out @beta {
800         return: bool;
801      }
802
803      /*
804      eina_hash_int_out_own @beta {
805         params {
806            @out hsh: hash<int, int> @move; // <, int @move>
807         }
808         return: bool;
809      }
810      check_eina_hash_int_out_own @beta {
811         return: bool;
812      }
813      */
814
815      eina_hash_int_return @beta {
816         return: hash<int, int>;
817      }
818      check_eina_hash_int_return @beta {
819         return: bool;
820      }
821
822      /*
823      eina_hash_int_return_own @beta {
824         return: hash<int, int> @move; // <, int @move>
825      }
826      check_eina_hash_int_return_own @beta {
827         return: bool;
828      }
829      */
830
831      // String //
832      eina_hash_str_in @beta {
833         params {
834            @in hsh: hash<string, string>;
835         }
836         return: bool;
837      }
838
839      eina_hash_str_in_own @beta {
840         params {
841            @in hsh: hash<string, mstring @move> @move;
842         }
843         return: bool;
844      }
845      check_eina_hash_str_in_own @beta {
846         return: bool;
847      }
848
849      eina_hash_str_out @beta {
850         params {
851            @out hsh: hash<string, string>;
852         }
853         return: bool;
854      }
855      check_eina_hash_str_out @beta {
856         return: bool;
857      }
858
859      eina_hash_str_out_own @beta {
860         params {
861            @out hsh: hash<string, mstring @move> @move;
862         }
863         return: bool;
864      }
865      check_eina_hash_str_out_own @beta {
866         return: bool;
867      }
868
869      eina_hash_str_return @beta {
870         return: hash<string, string>;
871      }
872      check_eina_hash_str_return @beta {
873         return: bool;
874      }
875
876      eina_hash_str_return_own @beta {
877         return: hash<string, mstring @move> @move;
878      }
879      check_eina_hash_str_return_own @beta {
880         return: bool;
881      }
882
883      // Eina_Stringshare //
884      eina_hash_strshare_in @beta {
885         params {
886            @in hsh: hash<stringshare, stringshare>;
887         }
888         return: bool;
889      }
890
891      eina_hash_strshare_in_own @beta {
892         params {
893            @in hsh: hash<stringshare, stringshare @move> @move;
894         }
895         return: bool;
896      }
897      check_eina_hash_strshare_in_own @beta {
898         return: bool;
899      }
900
901      eina_hash_strshare_out @beta {
902         params {
903            @out hsh: hash<stringshare, stringshare>;
904         }
905         return: bool;
906      }
907      check_eina_hash_strshare_out @beta {
908         return: bool;
909      }
910
911      eina_hash_strshare_out_own @beta {
912         params {
913            @out hsh: hash<stringshare, stringshare @move> @move;
914         }
915         return: bool;
916      }
917      check_eina_hash_strshare_out_own @beta {
918         return: bool;
919      }
920
921      eina_hash_strshare_return @beta {
922         return: hash<stringshare, stringshare>;
923      }
924      check_eina_hash_strshare_return @beta {
925         return: bool;
926      }
927
928      eina_hash_strshare_return_own @beta {
929         return: hash<stringshare, stringshare @move> @move;
930      }
931      check_eina_hash_strshare_return_own @beta {
932         return: bool;
933      }
934
935      // Object //
936      eina_hash_obj_in @beta {
937         params {
938            @in hsh: hash<Dummy.Numberwrapper, Dummy.Numberwrapper>;
939            @in nwk1: Dummy.Numberwrapper;
940            @in nwv1: Dummy.Numberwrapper;
941            @out nwk2: Dummy.Numberwrapper;
942            @out nwv2: Dummy.Numberwrapper;
943         }
944         return: bool;
945      }
946
947      eina_hash_obj_in_own @beta {
948         params {
949            @in hsh: hash<Dummy.Numberwrapper, Dummy.Numberwrapper @move> @move;
950            @in nwk1: Dummy.Numberwrapper;
951            @in nwv1: Dummy.Numberwrapper;
952            @out nwk2: Dummy.Numberwrapper;
953            @out nwv2: Dummy.Numberwrapper;
954         }
955         return: bool;
956      }
957      check_eina_hash_obj_in_own @beta {
958         params {
959            @in nwk1: Dummy.Numberwrapper;
960            @in nwv1: Dummy.Numberwrapper;
961            @in nwk2: Dummy.Numberwrapper;
962            @in nwv2: Dummy.Numberwrapper;
963         }
964         return: bool;
965      }
966
967      eina_hash_obj_out @beta {
968         params {
969            @out hsh: hash<Dummy.Numberwrapper, Dummy.Numberwrapper>;
970            @out nwk: Dummy.Numberwrapper;
971            @out nwv: Dummy.Numberwrapper;
972         }
973         return: bool;
974      }
975      check_eina_hash_obj_out @beta {
976         params {
977            @in nwk1: Dummy.Numberwrapper;
978            @in nwv1: Dummy.Numberwrapper;
979            @in nwk2: Dummy.Numberwrapper;
980            @in nwv2: Dummy.Numberwrapper;
981         }
982         return: bool;
983      }
984
985      eina_hash_obj_out_own @beta {
986         params {
987            @out hsh: hash<Dummy.Numberwrapper, Dummy.Numberwrapper @move> @move;
988            @out nwk: Dummy.Numberwrapper;
989            @out nwv: Dummy.Numberwrapper;
990         }
991         return: bool;
992      }
993      check_eina_hash_obj_out_own @beta {
994         return: bool;
995      }
996
997      eina_hash_obj_return @beta {
998         params {
999            @out nwk: Dummy.Numberwrapper;
1000            @out nwv: Dummy.Numberwrapper;
1001         }
1002         return: hash<Dummy.Numberwrapper, Dummy.Numberwrapper>;
1003      }
1004      check_eina_hash_obj_return @beta {
1005         params {
1006            @in nwk1: Dummy.Numberwrapper;
1007            @in nwv1: Dummy.Numberwrapper;
1008            @in nwk2: Dummy.Numberwrapper;
1009            @in nwv2: Dummy.Numberwrapper;
1010         }
1011         return: bool;
1012      }
1013
1014      eina_hash_obj_return_own @beta {
1015         params {
1016            @out nwk: Dummy.Numberwrapper;
1017            @out nwv: Dummy.Numberwrapper;
1018         }
1019         return: hash<Dummy.Numberwrapper, Dummy.Numberwrapper @move> @move;
1020      }
1021      check_eina_hash_obj_return_own @beta {
1022         return: bool;
1023      }
1024
1025      /* Eina Iterator */
1026
1027      /* Integer */
1028      eina_iterator_int_in {
1029         params {
1030            @in itr: iterator<int>;
1031         }
1032         return: bool;
1033      }
1034
1035      eina_iterator_int_in_own {
1036         params {
1037            @in itr: iterator<int> @move;
1038         }
1039         return: bool;
1040      }
1041      check_eina_iterator_int_in_own {
1042         return: bool;
1043      }
1044
1045      eina_iterator_int_out {
1046         params {
1047            @out itr: iterator<int>;
1048         }
1049         return: bool;
1050      }
1051      check_eina_iterator_int_out {
1052         return: bool;
1053      }
1054
1055      eina_iterator_int_out_own {
1056         params {
1057            @out itr: iterator<int> @move;
1058         }
1059         return: bool;
1060      }
1061
1062      eina_iterator_int_return {
1063         return: iterator<int>;
1064      }
1065      check_eina_iterator_int_return {
1066         return: bool;
1067      }
1068
1069      eina_iterator_int_return_own {
1070         return: iterator<int> @move;
1071      }
1072
1073      /* String */
1074      eina_iterator_str_in {
1075         params {
1076            @in itr: iterator<string>;
1077         }
1078         return: bool;
1079      }
1080
1081      eina_iterator_str_in_own {
1082         params {
1083            @in itr: iterator<mstring> @move;
1084         }
1085         return: bool;
1086      }
1087      check_eina_iterator_str_in_own {
1088         return: bool;
1089      }
1090
1091      eina_iterator_str_out {
1092         params {
1093            @out itr: iterator<string>;
1094         }
1095         return: bool;
1096      }
1097      check_eina_iterator_str_out {
1098         return: bool;
1099      }
1100
1101      eina_iterator_str_out_own {
1102         params {
1103            @out itr: iterator<mstring> @move;
1104         }
1105         return: bool;
1106      }
1107
1108      eina_iterator_str_return {
1109         return: iterator<string>;
1110      }
1111      check_eina_iterator_str_return {
1112         return: bool;
1113      }
1114
1115      eina_iterator_str_return_own {
1116         return: iterator<mstring> @move;
1117      }
1118
1119      /* Eina_Stringshare */
1120      eina_iterator_strshare_in {
1121         params {
1122            @in itr: iterator<stringshare>;
1123         }
1124         return: bool;
1125      }
1126
1127      eina_iterator_strshare_in_own {
1128         params {
1129            @in itr: iterator<stringshare> @move;
1130         }
1131         return: bool;
1132      }
1133      check_eina_iterator_strshare_in_own {
1134         return: bool;
1135      }
1136
1137      eina_iterator_strshare_out {
1138         params {
1139            @out itr: iterator<stringshare>;
1140         }
1141         return: bool;
1142      }
1143      check_eina_iterator_strshare_out {
1144         return: bool;
1145      }
1146
1147      eina_iterator_strshare_out_own {
1148         params {
1149            @out itr: iterator<stringshare> @move;
1150         }
1151         return: bool;
1152      }
1153
1154      eina_iterator_strshare_return {
1155         return: iterator<stringshare>;
1156      }
1157      check_eina_iterator_strshare_return {
1158         return: bool;
1159      }
1160
1161      eina_iterator_strshare_return_own {
1162         return: iterator<stringshare> @move;
1163      }
1164
1165      /* Object */
1166      eina_iterator_obj_in {
1167         params {
1168            @in itr: iterator<Dummy.Numberwrapper>;
1169         }
1170         return: bool;
1171      }
1172
1173      eina_iterator_obj_in_own {
1174         params {
1175            @in itr: iterator<Dummy.Numberwrapper> @move;
1176         }
1177         return: bool;
1178      }
1179      check_eina_iterator_obj_in_own {
1180         return: bool;
1181      }
1182
1183      eina_iterator_obj_out {
1184         params {
1185            @out itr: iterator<Dummy.Numberwrapper>;
1186         }
1187         return: bool;
1188      }
1189      check_eina_iterator_obj_out {
1190         return: bool;
1191      }
1192
1193      eina_iterator_obj_out_own {
1194         params {
1195            @out itr: iterator<Dummy.Numberwrapper> @move;
1196         }
1197         return: bool;
1198      }
1199
1200      eina_iterator_obj_return {
1201         return: iterator<Dummy.Numberwrapper>;
1202      }
1203      check_eina_iterator_obj_return {
1204         return: bool;
1205      }
1206
1207      eina_iterator_obj_return_own {
1208         return: iterator<Dummy.Numberwrapper> @move;
1209      }
1210
1211     /* Function Pointer */
1212
1213     set_callback {
1214         params {
1215            cb: Dummy.SimpleCb;
1216         }
1217      }
1218
1219      call_callback {
1220         params {
1221            a: int;
1222         }
1223         return: int;
1224      }
1225
1226      call_set_callback {
1227      }
1228
1229      raises_eina_error {
1230
1231      }
1232
1233      children_raise_error {
1234
1235      }
1236      call_children_raise_error {
1237
1238      }
1239
1240      error_ret_set {
1241         params {
1242            error: Eina.Error;
1243         }
1244      }
1245
1246      returns_error {
1247         return: Eina.Error;
1248      }
1249
1250      /* Eina Values */
1251      set_value_ptr {
1252         params {
1253            value: any_value_ref;
1254         }
1255      }
1256
1257      set_value_ptr_own {
1258         params {
1259            value: any_value_ref @move;
1260         }
1261      }
1262
1263      set_value {
1264         params {
1265            value: any_value;
1266         }
1267      }
1268
1269      call_set_value {
1270         params {
1271            value: const(any_value);
1272         }
1273      }
1274
1275      get_value_ptr_own {
1276         return: any_value_ref @move;
1277      }
1278
1279      get_value_ptr {
1280         return: any_value_ref;
1281      }
1282
1283      /* Commented out due to issues regarding eolian treatment of any_value.
1284       * Somehow eolian is giving 0 as the default value when declaring the function below,
1285       * leading to compiler errors.
1286       */
1287      /* get_value {
1288         return: any_value;
1289      }
1290      */
1291
1292      clear_value {
1293      }
1294
1295      out_value_ptr {
1296         params {
1297            @out value: any_value_ref;
1298         }
1299      }
1300
1301      out_value_ptr_own {
1302         params {
1303            @out value: any_value_ref @move;
1304         }
1305      }
1306
1307      out_value {
1308         params {
1309            @out value: any_value;
1310         }
1311      }
1312
1313      /* Structs */
1314
1315      struct_simple_in {
1316         params {
1317            @in simple: Dummy.StructSimple;
1318         }
1319         return: bool;
1320      }
1321
1322      /*
1323      struct_simple_ptr_in {
1324         params {
1325            @in simple: ptr(Dummy.StructSimple);
1326         }
1327         return: bool;
1328      }
1329
1330      struct_simple_ptr_in_own {
1331         params {
1332            @in simple: ptr(Dummy.StructSimple) @move;
1333         }
1334         return: Dummy.StructSimple;
1335      }
1336      */
1337
1338      struct_simple_out {
1339         params {
1340            @out simple: Dummy.StructSimple;
1341         }
1342         return: bool;
1343      }
1344
1345      /*
1346      struct_simple_ptr_out {
1347         params {
1348            @out simple: ptr(Dummy.StructSimple);
1349         }
1350         return: Dummy.StructSimple;
1351      }
1352
1353      struct_simple_ptr_out_own {
1354         params {
1355            @out simple: ptr(Dummy.StructSimple) @move;
1356         }
1357         return: Dummy.StructSimple;
1358      }
1359      */
1360
1361      struct_simple_return {
1362         return: Dummy.StructSimple;
1363      }
1364
1365      /*
1366      struct_simple_ptr_return {
1367         return: ptr(Dummy.StructSimple);
1368      }
1369
1370      struct_simple_ptr_return_own {
1371         return: ptr(Dummy.StructSimple) @move;
1372      }
1373      */
1374
1375      call_struct_simple_in {
1376         params {
1377            @in simple: Dummy.StructSimple;
1378         }
1379      }
1380
1381      /*
1382      call_struct_simple_ptr_in {
1383         params {
1384            @in simple: ptr(Dummy.StructSimple);
1385         }
1386      }
1387
1388      call_struct_simple_ptr_in_own {
1389         params {
1390            @in simple: ptr(Dummy.StructSimple) @move;
1391         }
1392      }
1393      */
1394
1395      call_struct_simple_out {
1396         params {
1397            @out simple: Dummy.StructSimple;
1398         }
1399      }
1400
1401      /*
1402      call_struct_simple_ptr_out {
1403         params {
1404            @out simple: ptr(Dummy.StructSimple);
1405         }
1406      }
1407
1408      call_struct_simple_ptr_out_own {
1409         params {
1410            @out simple: ptr(Dummy.StructSimple) @move;
1411         }
1412      }
1413      */
1414
1415      call_struct_simple_return {
1416         return: Dummy.StructSimple;
1417      }
1418
1419      /*
1420      call_struct_simple_ptr_return {
1421         return: ptr(Dummy.StructSimple);
1422      }
1423
1424      call_struct_simple_ptr_return_own {
1425         return: ptr(Dummy.StructSimple) @move;
1426      }
1427      */
1428
1429      struct_complex_in @beta {
1430         params {
1431            @in complex: Dummy.StructComplex;
1432         }
1433         return: bool;
1434      }
1435
1436      /*
1437      struct_complex_ptr_in @beta {
1438         params {
1439            @in complex: ptr(Dummy.StructComplex);
1440         }
1441         return: bool;
1442      }
1443
1444      struct_complex_ptr_in_own @beta {
1445         params {
1446            @in complex: ptr(Dummy.StructComplex) @move;
1447         }
1448         return: bool;
1449      }
1450      */
1451
1452      struct_complex_out @beta {
1453         params {
1454            @out complex: Dummy.StructComplex;
1455         }
1456         return: bool;
1457      }
1458
1459      // struct_complex_ptr_out {
1460      //    params {
1461      //       @out complex: ptr(Dummy.StructComplex);
1462      //    }
1463      //    return: bool;
1464      // }
1465      //
1466      // struct_complex_ptr_out_own {
1467      //    params {
1468      //       @out complex: ptr(Dummy.StructComplex) @move;
1469      //    }
1470      //    return: bool;
1471      // }
1472
1473      struct_complex_return @beta {
1474         return: Dummy.StructComplex;
1475      }
1476
1477      // struct_complex_ptr_return {
1478      //    return: ptr(Dummy.StructComplex);
1479      // }
1480      //
1481      // struct_complex_ptr_return_own {
1482      //    return: ptr(Dummy.StructComplex) @move;
1483      // }
1484
1485      emit_event_with_string {
1486         params {
1487            @in data: string;
1488         }
1489      }
1490      emit_event_with_bool {
1491         params {
1492            @in data: bool;
1493         }
1494      }
1495      emit_event_with_int {
1496         params {
1497            @in data: int;
1498         }
1499      }
1500      emit_event_with_uint {
1501         params {
1502            @in data: uint;
1503         }
1504      }
1505      emit_event_with_float {
1506         params {
1507            @in data: float;
1508         }
1509      }
1510      emit_event_with_double {
1511         params {
1512            @in data: double;
1513         }
1514      }
1515      emit_event_with_obj {
1516         params {
1517            @in data: Dummy.Test_Object;
1518         }
1519      }
1520
1521      emit_event_with_error {
1522         params {
1523            @in data: Eina.Error;
1524         }
1525      }
1526
1527      emit_event_with_struct {
1528         params {
1529            @in data: Dummy.StructSimple;
1530         }
1531      }
1532
1533      emit_event_with_struct_complex @beta {
1534         params {
1535            @in data: Dummy.StructComplex;
1536         }
1537      }
1538
1539      emit_event_with_array {
1540         params {
1541            @in data: array<string>;
1542         }
1543      }
1544
1545      emit_event_with_under {
1546      }
1547
1548      append_to_strbuf {
1549         params {
1550            @in buf: strbuf;
1551            @in str: string;
1552         }
1553      }
1554
1555      call_append_to_strbuf {
1556         params {
1557            @in buf: strbuf;
1558            @in str: string;
1559         }
1560      }
1561
1562      call_format_cb {
1563         params {
1564            @in str: strbuf;
1565            @in value: const(any_value);
1566            @in func: Dummy.FormatCb;
1567         }
1568      }
1569
1570      bypass_typedef {
1571         params {
1572            @in data: Dummy.MyInt;
1573            @out receiver: Dummy.MyInt;
1574         }
1575
1576         return: Dummy.MyInt;
1577      }
1578
1579      @property multi_valued_prop {
1580         [[ A multi valued property. ]]
1581         get {}
1582         set {}
1583         values {
1584           prop1: int; [[ Dummy property's first element. ]]
1585           prop2: int; [[ Dummy property's second element. ]]
1586         }
1587      }
1588
1589      @property klass_prop @static {
1590         get {}
1591         set {}
1592         values {
1593            prop: int;
1594         }
1595      }
1596
1597      create_cmp_array_objects @static {
1598      }
1599
1600      destroy_cmp_array_objects @static {
1601      }
1602
1603      /* Futures */
1604
1605      get_future {
1606         return: future<any_value_ref>;
1607      }
1608
1609      fulfill_promise {
1610         params {
1611            @in data: int;
1612         }
1613      }
1614
1615      reject_promise {
1616         params {
1617            @in error: Eina.Error;
1618         }
1619      }
1620
1621      /* Accessors */
1622      clone_accessor {
1623         params {
1624            @in acc: accessor<int>;
1625         }
1626         return: accessor<int> @move;
1627      }
1628
1629      clone_accessor_own {
1630         params {
1631            @in acc: accessor<int> @move;
1632         }
1633         return: accessor<int> @move;
1634      }
1635
1636      @property setter_only {
1637         set {}
1638         values {
1639           prop: int;
1640         }
1641      }
1642
1643      get_setter_only {
1644         return: int;
1645      }
1646
1647      call_find_provider {
1648         params {
1649            @in type: const(Efl.Class);
1650         }
1651         return: Efl.Object;
1652      }
1653
1654      call_find_provider_for_iface {
1655         return: Efl.Object;
1656      }
1657
1658      mirror_value_type @beta @const {
1659         params {
1660            @in type: const(ptr(Eina.Value_Type));
1661         }
1662         return: const(ptr(Eina.Value_Type));
1663      }
1664
1665      @property hidden_object {
1666         get {}
1667
1668         values {
1669            obj: Efl.Object;
1670         }
1671      }
1672      @property iface_value_prop {
1673         values {
1674            prop: Dummy.Test_Iface;
1675         }
1676      }
1677      @property iface_klass_prop {
1678         set {}
1679         values {
1680            klass: Efl.Class;
1681         }
1682      }
1683      @property iface_value_from_c {
1684         get {}
1685         values {
1686            prop: Dummy.Test_Iface;
1687         }
1688      }
1689
1690      @property return_type_get_prop {
1691         get { return: Eina.Success_Flag; }
1692         set {}
1693         values { i: int; }
1694      }
1695
1696      @property return_type_set_prop {
1697         set { return: Eina.Success_Flag; }
1698         get {}
1699         values { i: int; }
1700      }
1701
1702      @property return_type_prop {
1703         get {
1704           return: Eina.Success_Flag;
1705         }
1706         set {
1707           return: Eina.Success_Flag;
1708         }
1709         values { i: int; }
1710      }
1711
1712      @property multi_value_return_type_get_prop {
1713         get { return: Eina.Success_Flag; }
1714         set {}
1715         values
1716         {
1717           i: int;
1718           j: int;
1719         }
1720      }
1721
1722      @property multi_value_return_type_set_prop {
1723         set { return: Eina.Success_Flag; }
1724         get {}
1725         values
1726         {
1727           i: int;
1728           j: int;
1729         }
1730      }
1731
1732      @property multi_value_return_type_prop {
1733         get {
1734           return: Eina.Success_Flag;
1735         }
1736         set {
1737           return: Eina.Success_Flag;
1738         }
1739         values
1740         {
1741           i: int;
1742           j: int;
1743         }
1744      }
1745}
1746   implements {
1747      Efl.Object.constructor;
1748      Efl.Object.destructor;
1749      Efl.Object.provider_find;
1750      Dummy.Test_Iface.emit_nonconflicted;
1751      Dummy.Test_Iface.iface_prop { get; set; }
1752      Dummy.Test_Iface.protected_prop { get; set; }
1753      Dummy.Test_Iface.public_getter_private_setter{ get; set; }
1754      Dummy.Test_Iface.static_prop{ get; set; }
1755      Dummy.Test_Iface.method_protected;
1756      Dummy.Test_Iface.call_method_protected;
1757   }
1758   events {
1759      evt,with,string @hot: string;
1760      evt,with,bool: bool;
1761      evt,with,int @hot: int;
1762      evt,with,uint @hot: uint;
1763      evt,with,float @hot: float;
1764      evt,with,double @hot: double;
1765      evt,with,obj @hot: Dummy.Test_Object;
1766      evt,with,error @hot: Eina.Error;
1767      evt,with,struct @hot: Dummy.StructSimple;
1768      evt,with,struct,complex @beta @hot: Dummy.StructComplex;
1769      evt,with,array @hot: const(array<string>);
1770      evt_with,under @hot: void;
1771
1772      // Extra events to test generation, but not invocation
1773      evt,with,byte: byte;
1774      evt,with,ubyte: ubyte;
1775
1776      evt,with,char: char;
1777
1778      evt,with,short: short;
1779      evt,with,ushort: ushort;
1780
1781      evt,with,llong: llong;
1782      evt,with,ullong: ullong;
1783
1784      evt,with,int8 @hot: int8;
1785      evt,with,uint8 @hot: uint8;
1786
1787      evt,with,int16 @hot: int16;
1788      evt,with,uint16 @hot: uint16;
1789
1790      evt,with,int32 @hot: int32;
1791      evt,with,uint32 @hot: uint32;
1792
1793      evt,with,int64 @hot: int64;
1794      evt,with,uint64 @hot: uint64;
1795
1796   }
1797}
1798