From f661438c93806e42cfbbbd39d79c77924a4a5a16 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Mon, 15 Apr 2024 04:53:42 +0630 Subject: Moved read_file to a general base library --- Makefile | 2 +- asm/base.cpp | 32 ++++++++++++++++++++++++++++++++ asm/base.hpp | 20 ++++++++++++++++++++ asm/main.cpp | 19 +------------------ 4 files changed, 54 insertions(+), 19 deletions(-) create mode 100644 asm/base.cpp create mode 100644 asm/base.hpp diff --git a/Makefile b/Makefile index 609fc40..83dc4dc 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ VM_OUT=$(DIST)/ovm.out ## ASSEMBLY setup ASM_DIST=$(DIST)/asm ASM_SRC=asm -ASM_CODE:=$(addprefix $(ASM_SRC)/, lexer.cpp, preprocesser.cpp) +ASM_CODE:=$(addprefix $(ASM_SRC)/, base.cpp lexer.cpp preprocesser.cpp) ASM_OBJECTS:=$(ASM_CODE:$(ASM_SRC)/%.cpp=$(ASM_DIST)/%.o) ASM_DEPS:=$(ASM_OBJECTS:%.o=%.d) $(ASM_DIST)/main.d ASM_CFLAGS=$(CPPFLAGS) diff --git a/asm/base.cpp b/asm/base.cpp new file mode 100644 index 0000000..d2812f1 --- /dev/null +++ b/asm/base.cpp @@ -0,0 +1,32 @@ +/* Copyright (C) 2024 Aryadev Chavali + + * You may distribute and modify this code under the terms of the GPLv2 + * license. You should have received a copy of the GPLv2 license with + * this file. If not, please write to: aryadev@aryadevchavali.com. + + * Created: 2024-04-14 + * Author: Aryadev Chavali + * Description: + */ + +#include "./base.hpp" + +#include + +std::optional read_file(const char *filename) +{ + FILE *fp = fopen(filename, "rb"); + if (fp) + { + std::string contents; + fseek(fp, 0, SEEK_END); + contents.resize(ftell(fp)); + rewind(fp); + fread(&contents[0], 1, contents.size(), fp); + fclose(fp); + + return contents; + } + else + return std::nullopt; +} diff --git a/asm/base.hpp b/asm/base.hpp new file mode 100644 index 0000000..b956028 --- /dev/null +++ b/asm/base.hpp @@ -0,0 +1,20 @@ +/* Copyright (C) 2024 Aryadev Chavali + + * You may distribute and modify this code under the terms of the GPLv2 + * license. You should have received a copy of the GPLv2 license with + * this file. If not, please write to: aryadev@aryadevchavali.com. + + * Created: 2024-04-14 + * Author: Aryadev Chavali + * Description: Base library + */ + +#ifndef BASE_HPP +#define BASE_HPP + +#include +#include + +std::optional read_file(const char *); + +#endif diff --git a/asm/main.cpp b/asm/main.cpp index 51600cb..be26426 100644 --- a/asm/main.cpp +++ b/asm/main.cpp @@ -20,28 +20,11 @@ #include +#include "./base.hpp" #include "./lexer.hpp" using std::pair, std::string, std::string_view, std::vector; -std::optional read_file(const char *filename) -{ - FILE *fp = fopen(filename, "rb"); - if (fp) - { - string contents; - fseek(fp, 0, SEEK_END); - contents.resize(ftell(fp)); - rewind(fp); - fread(&contents[0], 1, contents.size(), fp); - fclose(fp); - - return contents; - } - else - return std::nullopt; -} - void usage(const char *program_name, FILE *fp) { fprintf(fp, -- cgit v1.2.3-13-gbd6f