Massive reformating and cleanup

This commit is contained in:
2024-12-06 21:07:54 +01:00
parent 79390b94b7
commit d2cbdc2910
33 changed files with 1030 additions and 1100 deletions

View File

@ -7,63 +7,59 @@
#include <iostream>
#endif
namespace fsh::util {
namespace fsh::util
{
/**
/**
* Applies some settings to terminals to fix some inconsistencies between
* windows and linux terminals
*
* * **Windows** : it enables using ansii characters
* * **Linux** : it enables [Noncanonical Mode](https://www.gnu.org/software/libc/manual/html_node/Noncanonical-Input.html)
*/
void prepTerminal();
void prepTerminal();
#ifndef _WIN32
class CursorIStreamBuffer : public std::streambuf {
public:
enum EscapeSequence {
FAILED,
POSSIBLE,
LEFT_ARROW,
RIGHT_ARROW
class CursorIStreamBuffer : public std::streambuf {
public:
enum EscapeSequence {
FAILED,
POSSIBLE,
LEFT_ARROW,
RIGHT_ARROW
};
CursorIStreamBuffer() : valid(0), read_chars(0), cursor_pos(0), buffer() { setg(buffer, buffer, buffer); }
protected:
int underflow() override;
// int uflow() override;
// std::streamsize xsgetn(char* s, std::streamsize n) override;
private:
int valid;
EscapeSequence testForEscapeCodes(char chr);
int readInputToNewLine();
std::string input;
int read_chars;
int cursor_pos;
char buffer[32];
};
CursorIStreamBuffer() : valid(0), read_chars(0), cursor_pos(0), buffer() {
setg(buffer,buffer,buffer);
}
protected:
int underflow() override;
// int uflow() override;
// std::streamsize xsgetn(char* s, std::streamsize n) override;
class CursorIStream : public std::istream {
public:
CursorIStream() : std::istream(&buffer) {}
private:
int valid;
EscapeSequence testForEscapeCodes(char chr);
int readInputToNewLine();
std::string input;
int read_chars;
int cursor_pos;
char buffer[32];
};
class CursorIStream : public std::istream {
public:
CursorIStream() : std::istream(&buffer) {}
private:
CursorIStreamBuffer buffer;
};
extern CursorIStream cin;
private:
CursorIStreamBuffer buffer;
};
extern CursorIStream cin;
#else
extern std::istream& cin;
#endif
extern std::istream& cin;
#endif
}

View File

@ -7,49 +7,37 @@
namespace fsh::util {
extern const char* tokens[];
extern const char* tokens[];
template <class T>
static inline std::optional<std::string> mk_optional(T t){
if(t){
return t->gvalue();
template <class T>
static inline std::optional<std::string> mk_optional(T t) {
if (t) { return t->gvalue(); }
return std::optional<std::string>();
}
return std::optional<std::string>();
}
static inline bool contains(char x, std::string text) {
for (const auto& chr : text){
if(chr == x) return 1;
static inline bool contains(char x, std::string text) {
for (const auto& chr : text) {
if (chr == x) return 1;
}
return 0;
};
static inline std::ifstream input(const std::string& x) {
std::ifstream in(x, std::ios::in);
if (!in) { throw std::runtime_error("Can't open file"); }
return in;
}
return 0;
};
static inline std::ifstream input(const std::string& x) {
std::ifstream in(x, std::ios::in);
if(!in) {
throw std::runtime_error("Can't open file");
static inline std::ofstream output(const std::string& x) {
std::ofstream out(x, std::ios::out);
if (!out.is_open()) { throw std::runtime_error("Can't open file"); }
return out;
}
return in;
}
static inline std::ofstream output(const std::string& x) {
std::ofstream out(x, std::ios::out);
if(!out.is_open()) {
throw std::runtime_error("Can't open file");
static inline std::ofstream output_append(const std::string& x) {
std::ofstream out(x, std::ios::app | std::ios::out);
if (!out.is_open()) { throw std::runtime_error("Can't open file"); }
return out;
}
return out;
}
static inline std::ofstream output_append(const std::string& x) {
std::ofstream out(x, std::ios::app | std::ios::out);
if(!out.is_open()) {
throw std::runtime_error("Can't open file");
}
return out;
}
}