Skip to content

pTerrance/advanced-enums

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

advanced-enums

DEFINE_ENUM(Status, Fail, Success, Exception);

Defines an advanced enum (TM) called Status with the following values: Fail, Success, and Exception.

Example

A C 23 function that demonstrates how to use the example 'Status' enum

#include "advanced-enums.h"

DEFINE_ENUM(Status, Fail, Success, Exception);

Status Foo() {
  return Status::Success;
}

void Example() {
  const Status status1 = Status::Fail;
  const Status status2 = Foo();

  if (status1 == Status::Success); // false
  if (status1 != Status::Success); // true
  if (status1.IsException()); // false
  if (status1 != status2); // true

  std::println("{} - {}", status1, status2); // "Fail - Success"
}

Usage

To use the advanced-enums library, simply include the advanced-enums.h header file in your source code. You can then use the DEFINE_ENUM macro to define enums with additional functionality, such as a sleeker API and built in ToString & formatting support.

Concerns

Any enum created will now have all the types spelled out in memory. If you have any important variable names that you would like to obfuscate, simply define ENUM_ENCRYPTION_STRING to your compile time encryption.

Final Thoughts

There are other tools available that offer more features, but I prefer to use this macro because it is lightweight and made by me (>.>). Hopefully we will see some changes to macros in the coming c editions. The amount of compiler hacking required to make this work is ridiculous.

About

C 'enum' with extra functionality.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages