Pure Programmer
Blue Matrix


Cluster Map

Enumerations

L1

This page is under construction. Please come back later.

Enums1.cpp
#include "Utils.hpp"
#include <clocale>
#include <codecvt>
#include <iostream>
#include <string>

std::locale utf8loc(std::locale(), new std::codecvt_utf8<wchar_t>);
using namespace std;

enum class CompassPoint {
	NORTH,
	EAST,
	SOUTH,
	WEST
};

wstring CompassPointToString(CompassPoint const c) noexcept {
	wstring result = L"";
	switch (c) {
		case CompassPoint::NORTH:
			result = L"North";
			break;
		case CompassPoint::EAST:
			result = L"East";
			break;
		case CompassPoint::SOUTH:
			result = L"South";
			break;
		case CompassPoint::WEST:
			result = L"West";
			break;
	}
	return result;
}

CompassPoint turnRight(CompassPoint const c) noexcept {
	if (c == CompassPoint::NORTH) {
		return CompassPoint::EAST;
	} else if (c == CompassPoint::EAST) {
		return CompassPoint::SOUTH;
	} else if (c == CompassPoint::SOUTH) {
		return CompassPoint::WEST;
	} else {
		return CompassPoint::NORTH;
	}
}

int main(int argc, char **argv) {
	setlocale(LC_ALL, "en_US.UTF-8");
	wcout.imbue(utf8loc);
	wcin.imbue(utf8loc);

	CompassPoint cp1 = CompassPoint::NORTH;
	wcout << L"cp1: " << Utils::enum_to_wstring(cp1) << endl;
	wcout << L"SOUTH: " << CompassPointToString(CompassPoint::SOUTH) << endl;
	wcout << L"turnRight(cp1): " << CompassPointToString(turnRight(cp1)) << endl;
	CompassPoint cp2 = CompassPoint::EAST;
	if (cp1 == cp2) {
		wcout << L"cp1 == cp2" << endl;
	} else {
		wcout << L"cp1 != cp2" << endl;
	}
	cp1 = cp2;
	if (cp1 == cp2) {
		wcout << L"cp1 == cp2" << endl;
	} else {
		wcout << L"cp1 != cp2" << endl;
	}
	return 0;
}

Output
$ g++ -std=c++17 Enums1.cpp -o Enums1 -lfmt $ ./Enums1 cp1: 0 SOUTH: South turnRight(cp1): East cp1 != cp2 cp1 == cp2
Enums2.cpp
#include "Utils.hpp"
#include <clocale>
#include <codecvt>
#include <iostream>
#include <string>

std::locale utf8loc(std::locale(), new std::codecvt_utf8<wchar_t>);
using namespace std;

enum class Color {
	RED = 1,
	GREEN = 2,
	YELLOW = 3,
	BLUE = 4,
	MAGENTA = 5,
	CYAN = 6
};

Color combineColors(Color const c1, Color const c2) noexcept {
	int const i1 = static_cast<int>(c1);
	int const i2 = static_cast<int>(c2);
	int const result = i1 | i2;
	Color const returnColor = static_cast<Color>(result);
	return returnColor;
}

int main(int argc, char **argv) {
	setlocale(LC_ALL, "en_US.UTF-8");
	wcout.imbue(utf8loc);
	wcin.imbue(utf8loc);

	Color c1 = Color::BLUE;
	wcout << L"c1: " << Utils::enum_to_wstring(c1) << endl;
	wcout << L"RED: " << Utils::enum_to_wstring(Color::RED) << endl;
	wcout << L"combineColors(c1, RED): " << Utils::enum_to_wstring(combineColors(c1, Color::RED)) << endl;
	Color c2 = Color::GREEN;
	wcout << L"combineColors(c1, c2): " << Utils::enum_to_wstring(combineColors(c1, c2)) << endl;
	if (c1 == c2) {
		wcout << L"c1 == c2" << endl;
	} else {
		wcout << L"c1 != c2" << endl;
	}
	c1 = c2;
	if (c1 == c2) {
		wcout << L"c1 == c2" << endl;
	} else {
		wcout << L"c1 != c2" << endl;
	}
	Color bad = static_cast<Color>(7);
	wcout << L"bad: " << Utils::enum_to_wstring(bad) << endl;
	return 0;
}

Output
$ g++ -std=c++17 Enums2.cpp -o Enums2 -lfmt $ ./Enums2 c1: 4 RED: 1 combineColors(c1, RED): 5 combineColors(c1, c2): 6 c1 != c2 c1 == c2 bad: 7
cpp

Questions

Projects

More ★'s indicate higher difficulty level.

References