From c736e13c7dd04bfa6c0580a4db3d6501dc28eed1 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Fri, 19 Dec 2025 00:01:17 +0100 Subject: Irrlicht --- src/rez/rez.cpp | 51 +++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 24 deletions(-) (limited to 'src/rez/rez.cpp') diff --git a/src/rez/rez.cpp b/src/rez/rez.cpp index 2351c05..b8c22ce 100644 --- a/src/rez/rez.cpp +++ b/src/rez/rez.cpp @@ -18,12 +18,17 @@ std::string rez::ball::toupper(const std::string &s) const return ret; } -std::unique_ptr rez::ball::open(const char *path) +const rez::dir &rez::ball::root() const +{ + return root_dir; +} + +const rez::dir::direntry *rez::ball::access(const char *path) const { std::istringstream stream(path); std::string token; const rez::dir *dir = &root_dir; - const rez::resource *resource = nullptr; + const rez::dir::direntry *de = nullptr; while (std::getline(stream, token, '/')) { @@ -34,38 +39,41 @@ std::unique_ptr rez::ball::open(const char *path) if (it == map.end()) return nullptr; - const rez::dir::direntry &de = it->second; + de = &it->second; - if (std::holds_alternative(de)) - dir = &std::get(de); - else if (std::holds_alternative(de)) - { + if (std::holds_alternative(*de)) + dir = &std::get(*de); + else if (std::holds_alternative(*de)) dir = nullptr; - resource = &std::get(de); - } } - if (dir) + return de; +} + +std::unique_ptr rez::ball::open(const char *path) +{ + const rez::dir::direntry *entry = access(path); + + if (!entry) { - std::cerr << path << " is a directory\n"; + std::cerr << io.path() << ": could not find " << path << '\n'; return nullptr; } - else if (!resource) + else if (std::holds_alternative(*entry)) { - std::cerr << io.path() << ": could not find " << path << '\n'; + std::cerr << path << " is a directory\n"; return nullptr; } - return std::make_unique(*resource, io); + return std::make_unique(std::get(*entry), io); } +const char rez::ball::title[127] = + "\r\nRezMgr Version 1 Copyright (C) 1995 MONOLITH INC. " + "\r\nLithTech Resource File \r\n"; + int rez::ball::parse() { - static const char title[63] = - "\r\nRezMgr Version 1 Copyright (C) 1995 MONOLITH INC. ", - subtitle[65] = - "\r\nLithTech Resource File \r\n"; - if (io.open()) return -1; else if (io.check(title)) @@ -73,11 +81,6 @@ int rez::ball::parse() std::cerr << path << ": wrong title\n"; return -1; } - else if (io.check(subtitle)) - { - std::cerr << path << ": wrong subtitle\n"; - return -1; - } else if (io.check(0x1a)) { std::cerr << path << ": wrong EOF\n"; -- cgit v1.2.3