# interface99 **Repository Path**: doveyxia/interface99 ## Basic Information - **Project Name**: interface99 - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-30 - **Last Updated**: 2025-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
Shape |
|
```c
#include
|
Rectangle |
Triangle |
|
```c
typedef struct {
int a, b;
} Rectangle;
int Rectangle_perim(const VSelf) {
VSELF(const Rectangle);
return (self->a + self->b) * 2;
}
void Rectangle_scale(VSelf, int factor) {
VSELF(Rectangle);
self->a *= factor;
self->b *= factor;
}
impl(Shape, Rectangle);
```
|
```c
typedef struct {
int a, b, c;
} Triangle;
int Triangle_perim(const VSelf) {
VSELF(const Triangle);
return self->a + self->b + self->c;
}
void Triangle_scale(VSelf, int factor) {
VSELF(Triangle);
self->a *= factor;
self->b *= factor;
self->c *= factor;
}
impl(Shape, Triangle);
```
|
Test |
|
```c
void test(Shape shape) {
printf("perim = %d\n", VCALL(shape, perim));
VCALL(shape, scale, 5);
printf("perim = %d\n", VCALL(shape, perim));
}
int main(void) {
Shape r = DYN_LIT(Rectangle, Shape, {5, 7});
Shape t = DYN_LIT(Triangle, Shape, {10, 20, 30});
test(r);
test(t);
}
```
|