dc/src/bitwise.h
Marco Cetica 62ad335e58
All checks were successful
dc / build (push) Successful in 15s
Added bitwise operators and fixed various bugs
2024-03-19 12:30:02 +01:00

21 lines
1.0 KiB
C++

#pragma once
#include "operation.h"
class Bitwise : public IOperation {
public:
explicit Bitwise(const OPType op_t) : op_type(op_t) {}
std::optional<std::string> exec(dc::Stack<std::string> &stack, dc::Parameters &parameters, std::unordered_map<char, dc::Register> &regs) override;
private:
std::optional<std::string> fn_bitwise_and(dc::Stack<std::string> &stack, const dc::Parameters &parameters);
std::optional<std::string> fn_bitwise_or(dc::Stack<std::string> &stack, const dc::Parameters &parameters);
std::optional<std::string> fn_bitwise_not(dc::Stack<std::string> &stack, const dc::Parameters &parameters);
std::optional<std::string> fn_bitwise_xor(dc::Stack<std::string> &stack, const dc::Parameters &parameters);
std::optional<std::string> fn_bitwise_lshift(dc::Stack<std::string> &stack, const dc::Parameters &parameters);
std::optional<std::string> fn_bitwise_rshift(dc::Stack<std::string> &stack, const dc::Parameters &parameters);
std::string trim_digits(double number, unsigned int precision);
OPType op_type;
};