X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fshort_types%2F_info;fp=ccan%2Fshort_types%2F_info;h=bc69b1b9968db96fc6cc14f769267c3a33433e0a;hb=3d937beb970d5b52bdaaf41d75e7a0b8eb89d472;hp=0000000000000000000000000000000000000000;hpb=4e5111fb40e1882b8108d61277d3e506cb958124;p=ccan diff --git a/ccan/short_types/_info b/ccan/short_types/_info new file mode 100644 index 00000000..bc69b1b9 --- /dev/null +++ b/ccan/short_types/_info @@ -0,0 +1,80 @@ +#include +#include +#include "config.h" + +/** + * short_types - shorter names for standard integer types + * + * "C is a Spartan language, and so should your naming be." + * -- Linus Torvalds + * + * The short_types header provides for convenient abbreviations for the + * posixly-damned uint32_t types. It also provides be32/le32 for explicitly + * annotating types of specific endian. + * + * Include this header, if only to stop people using these identifiers + * for other things! + * + * Example: + * #include + * #include + * #include + * #include + * + * // Print nonsensical numerical comparison of POSIX vs. short_types. + * #define stringify_1(x) #x + * #define stringify(x) stringify_1(x) + * + * static void evaluate(size_t size, const char *posix, const char *sht, + * unsigned int *posix_total, unsigned int *sht_total, + * unsigned int *size_total) + * { + * printf("\t%ssigned %s: POSIX %i%%, short %i%%\n", + * sht[0] == 'u' ? "un" : "", + * sht+1, + * strlen(posix)*100 / size, + * strlen(sht)*100 / size); + * *posix_total += strlen(posix); + * *sht_total += strlen(sht); + * *size_total += size; + * } + * + * #define EVALUATE(psx, short, pt, st, t) \ + * evaluate(sizeof(psx), stringify(psx), stringify(sht), pt, st, t) + * + * int main(void) + * { + * unsigned int posix_total = 0, sht_total = 0, size_total = 0; + * + * printf("Comparing size of type vs size of name:\n"); + * + * EVALUATE(uint8_t, u8, &posix_total, &sht_total, &size_total); + * EVALUATE(int8_t, s8, &posix_total, &sht_total, &size_total); + * EVALUATE(uint16_t, u16, &posix_total, &sht_total, &size_total); + * EVALUATE(int16_t, s16, &posix_total, &sht_total, &size_total); + * EVALUATE(uint32_t, u32, &posix_total, &sht_total, &size_total); + * EVALUATE(int32_t, s32, &posix_total, &sht_total, &size_total); + * EVALUATE(uint64_t, u64, &posix_total, &sht_total, &size_total); + * EVALUATE(int64_t, s64, &posix_total, &sht_total, &size_total); + * + * printf("Conclusion:\n" + * "\tPOSIX is %u%% LESS efficient than binary.\n" + * "\tshort_types.h is %u%% MORE efficient than binary.\n", + * (posix_total - size_total) * 100 / size_total, + * (size_total - sht_total) * 100 / size_total); + * return 0; + * } + * + * Licence: LGPL (2 or any later version) + */ +int main(int argc, char *argv[]) +{ + if (argc != 2) + return 1; + + if (strcmp(argv[1], "depends") == 0) { + return 0; + } + + return 1; +}