mirror of https://github.com/swig/swig
40 lines
670 B
OpenEdge ABL
40 lines
670 B
OpenEdge ABL
%module memberin_extend_c
|
|
|
|
/* Example from the Manual, section 5.5.6: "Adding member functions to C structures" */
|
|
|
|
%{
|
|
typedef struct {
|
|
char name[50];
|
|
} Person;
|
|
%}
|
|
|
|
typedef struct {
|
|
%extend {
|
|
char name[50];
|
|
}
|
|
} Person;
|
|
|
|
%{
|
|
#include <ctype.h>
|
|
#include <string.h>
|
|
|
|
void make_upper(char *name) {
|
|
char *c;
|
|
for (c = name; *c; ++c)
|
|
*c = (char)toupper((int)*c);
|
|
}
|
|
|
|
/* Specific implementation of set/get functions forcing capitalization */
|
|
|
|
char *Person_name_get(Person *p) {
|
|
make_upper(p->name);
|
|
return p->name;
|
|
}
|
|
|
|
void Person_name_set(Person *p, char *val) {
|
|
p->name[0] = '\0';
|
|
strncat(p->name, val, sizeof(p->name) - 1);
|
|
make_upper(p->name);
|
|
}
|
|
%}
|