Nicolas wrote:
> Hi,
>
> Thank you very much to answer me !
> Ok, i will try to port this library by hand.
>
> So can you give me an example to convert some kind of code for vapi file.
>
> First:
>
> typedef enum de_crossover_t
> {
> GA_DE_CROSSOVER_UNKNOWN = 0,
> GA_DE_CROSSOVER_BINOMIAL = 1,
> GA_DE_CROSSOVER_EXPONENTIAL = 2
> } ga_de_crossover_type;
>
>
> Second:
>
> GAULFUNC population *ga_population_new( const int stable_size,
> const int num_chromosome,
> const int len_chromosome);
>
> Third:
>
> GAULFUNC boolean ga_seed_boolean_random(population *pop, entity *adam);
>
> Thank you in advance.
> Nicolas.
You could start with this 'gaul.vapi'. (attachment)
There are two alternatives for 'ga_seed_boolean_random': you can bind it
either as static function or as instance method of class 'Population'.
All classes are [Compact], because they are non-GObject types.
While writing a vapi file by hand it is helpful to look at the generated
C code of a test program that uses the newly added functions:
$ valac gaultest.vala --pkg gaul --vapidir . -C
Sometimes you can rely on the default name prefixes and sometimes you
must override them with [CCode (...)] attributes.
Best Regards,
Frederik
[CCode (lower_case_cprefix = "ga_", cheader_filename = "gaul.h")]
namespace GAUL {
[CCode (cname = "ga_de_crossover_type", cprefix = "GA_DE_CROSSOVER_")]
enum DECrossoverType {
UNKNOWN,
BINOMIAL,
EXPONENTIAL
}
[Compact]
[CCode (cname="population", free_function = "ga_extinction")]
public class Population {
public Population (int stable_size, int num_chromosome,
int len_chromosome);
public void set_mutation (double mutation);
// Alternative A:
[CCode (cname = "ga_seed_boolean_random")]
public bool seed_boolean_random (Entity adam);
}
[Compact]
[CCode (cname="entity")]
public class Entity {
}
// Alternative B:
public static bool seed_boolean_random (Population pop, Entity adam);
}
_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list