typedef struct { int x; int y; } PointStruct; static inline PointStruct PointMake(int x, int y) { PointStruct point; point.x = x; point.y = y; return point; } static inline void PointSet(PointStruct *point, int x, int y) { point->x = x; point->y = y; } static inline void PointAdd(PointStruct *value1, PointStruct *value2, PointStruct *result) { PointSet(result, value1->x + value2->x, value1->y + value2->y); } static inline void PointSubtract(PointStruct *value1, PointStruct *value2, PointStruct *result) { PointSet(result, value1->x - value2->x, value1->y - value2->y); }