Append types to vectors

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <stdlib.h> typedef __uint128_t u128; typedef __uint64_t u64; typedef __uint32_t u32; typedef __uint16_t u16; typedef __uint8_t u8; typedef __int128_t s128; typedef __int64_t s64; typedef __int32_t s32; typedef __int16_t s16; typedef __int8_t s8; typedef __uint32_t b32; typedef float f32; typedef double f64; // Switches #define DEBUG 1 // Dissapearing functions #if DEBUG #define Dlog(...) \ printf(__VA_ARGS__) #else #define Assert(Expression,...) #define Dlog(...) #endif // 36 Types. // 144 Functions. // 1464 lines of code written manually. // 66 lines of code here. // Struct Define #define v2ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,AppendName,syntax) \ v2##Type v2##Type##AppendName(v2##Type First, v2##Type Second) \ { \ v2##Type Result; \ Result.x = First.x syntax Second.x; \ Result.y = First.y syntax Second.y; \ return Result; \ } #define v3ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,AppendName,syntax) \ v3##Type v3##Type##AppendName(v3##Type First, v3##Type Second) \ { \ v3##Type Result; \ Result.x = First.x syntax Second.x; \ Result.y = First.y syntax Second.y; \ Result.z = First.z syntax Second.z; \ return Result; \ } #define v4ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,AppendName,syntax) \ v4##Type v4##Type##AppendName(v4##Type First, v4##Type Second) \ { \ v4##Type Result; \ Result.x = First.x syntax Second.x; \ Result.y = First.y syntax Second.y; \ Result.z = First.z syntax Second.z; \ Result.w = First.w syntax Second.w; \ return Result; \ } #define VectorStructDefine(Type) \ struct v2##Type { \ Type x; \ Type y; \ }typedef v2##Type; \ struct v3##Type { \ Type x; \ Type y; \ Type z; \ }typedef v3##Type; \ struct v4##Type { \ Type x; \ Type y; \ Type z; \ Type w; \ }typedef v4##Type; \ \ v2ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Add,+) \ v3ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Add,+) \ v4ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Add,+) \ \ v2ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Sub,-) \ v3ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Sub,-) \ v4ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Sub,-) \ \ v2ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Mul,*) \ v3ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Mul,*) \ v4ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Mul,*) \ \ v2ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Div,/) \ v3ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Div,/) \ v4ElementsOfOneStructPlusElementsOfAnotherStruct__(Type,Div,/) // NOTE:Daniel: Defines to v2s128,v3s128,v4f32 ...etc VectorStructDefine(s128) VectorStructDefine(s64) VectorStructDefine(s32) VectorStructDefine(s16) VectorStructDefine(s8) VectorStructDefine(u128) VectorStructDefine(u64) VectorStructDefine(u32) VectorStructDefine(u16) VectorStructDefine(u8) VectorStructDefine(f64) VectorStructDefine(f32) int main() { v4s32 g = {-5,1,21,4}; v4s32 h = {9,4,1,5}; v4s32 r = v4s32Add(g,h); Dlog("%i : %i : %i : %i\n",r.x,r.y,r.z,r.w); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines