From 18cbeb0808697a9a71ce281c033ae468d74e2e29 Mon Sep 17 00:00:00 2001 From: Anton Bachin Date: Tue, 15 Mar 2016 18:14:23 -0500 Subject: [PATCH] Simplified README. --- README.md | 21 +++++++++------------ doc/image/sample.gif | Bin 80774 -> 80684 bytes doc/image/tweet.png | Bin 8250 -> 0 bytes doc/image/twsupport.png | Bin 10206 -> 0 bytes 4 files changed, 9 insertions(+), 12 deletions(-) delete mode 100644 doc/image/tweet.png delete mode 100644 doc/image/twsupport.png diff --git a/README.md b/README.md index 35358d5..fcc8e0f 100644 --- a/README.md +++ b/README.md @@ -35,20 +35,17 @@ See the [project page][project] for full documentation. ## Installation -Simply add `enum.h` to your project — that's it. - -Then, include it, and use the `BETTER_ENUM` macro. Your compiler will generate -the rich enums that are missing from standard C++. +Simply add `enum.h` to your project. ## Additional features -- No dependencies and no external build tools. Uses only standard C++, though, - for C++98, variadic macro support is required. +- Uses only standard C++, though, for C++98, variadic macro support is required + (major compilers have it). - Supported and tested on [clang, gcc, and msvc][testing]. - Fast compilation. You have to declare a few dozen enums to slow down your - compiler as much as [just including `iostream` does][performance]. + compiler as much as [only including `iostream` does][performance]. - Use any initializers and sparse ranges, just like with a built-in enum. -- Guaranteed size and alignment — you choose the representation type. +- Control over size and alignment — you choose the representation type. - Stream operators. - Does not use the heap and can be compiled with exceptions disabled, for use in minimal freestanding environments. @@ -62,12 +59,12 @@ The biggest limitation is that the `BETTER_ENUM` macro can't be used inside a class. This seems [difficult to remove][nested]. There is a workaround with `typedef` (or C++11 `using`): -```cpp -BETTER_ENUM(UniquePrefix_Color, uint8_t, Red, Green, Blue) +``` +BETTER_ENUM(SomePrefix_Color, uint8_t, Red, Green, Blue) struct triplet { - typedef UniquePrefix_Color Color; - Color r, g, b; + typedef SomePrefix_Color Color; + Color r, g, b; }; triplet::Color color; diff --git a/doc/image/sample.gif b/doc/image/sample.gif index 65813c5f76b18aa942fa83fbb8c7e8ce39afd9e9..c0f55593fc3d4494010b412161862b6329ac192d 100644 GIT binary patch delta 1580 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 diff --git a/doc/image/twsupport.png b/doc/image/twsupport.png deleted file mode 100644 index ddc4b1f0651f854089d18df92ff224417f247cd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10206 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