#include <charconv>
#include <iostream>
#include <vector>
#include <ranges>
#include <string_view>
#include "interpretSeeds.h"
Go to the source code of this file.
|
| void | getLuxury (std::vector< std::string >::iterator &token, short &luxLevel) |
| void | getOffset (std::vector< std::string >::iterator &token, uint32_t &offset) |
| bool | interpretSeeds (const std::string &buffer, std::string &stream, uint32_t &seed1, uint32_t &seed2, short &luxury, uint32_t &offset) |
| bool | interpretSeeds (const std::string &buffer, std::string &stream, std::vector< uint32_t > &seeds) |
◆ getLuxury()
| void getLuxury |
( |
std::vector< std::string >::iterator & | token, |
|
|
short & | luxLevel ) |
|
inline |
Definition at line 15 of file interpretSeeds.cxx.
15 {
16 if ((*token) == "LUXURY") {
17 ++token;
19 auto result = std::from_chars(token->data(), token->data() + token->size(), parsedValue);
20 if (
result.ec != std::errc()) {
21 std::cerr << "Parsing error in function getLuxury." << std::endl;
22 }
23 luxLevel = parsedValue;
24 ++token;
25 }
26}
◆ getOffset()
| void getOffset |
( |
std::vector< std::string >::iterator & | token, |
|
|
uint32_t & | offset ) |
|
inline |
Definition at line 30 of file interpretSeeds.cxx.
30 {
31 if ((*token) == "OFFSET") {
32 ++token;
34 auto result = std::from_chars(token->data(), token->data() + token->size(), parsedValue);
35 if (
result.ec != std::errc()) {
36 std::cerr << "Parsing error in function getOffset." << std::endl;
37 }
39 ++token;
40 }
41}
◆ interpretSeeds() [1/2]
| bool interpretSeeds |
( |
const std::string & | buffer, |
|
|
std::string & | stream, |
|
|
std::vector< uint32_t > & | seeds ) |
Definition at line 69 of file interpretSeeds.cxx.
71{
72
73 std::vector<std::string>
tokens;
74 for (
auto&& range : std::string_view{
buffer} | std::views::split(
' '))
if (!
range.empty())
tokens.emplace_back(
range.begin(),
range.end());
75 int nToks =
static_cast<int>(
tokens.size());
76 bool status = (nToks == 31 || nToks == 33 || nToks == 771);
77 if (status) {
78 auto token =
tokens.begin();
80 --nToks;
81 if (nToks == 32) nToks=30;
82 for (
int i=0;
i<nToks;
i++) {
84 auto [
ptr, ec] = std::from_chars(token->data(), token->data() + token->size(), value);
85 if (ec != std::errc()) {
87 break;
88 }
89 seeds.push_back(value);
90 ++token;
91 }
92 }
94}
◆ interpretSeeds() [2/2]
| bool interpretSeeds |
( |
const std::string & | buffer, |
|
|
std::string & | stream, |
|
|
uint32_t & | seed1, |
|
|
uint32_t & | seed2, |
|
|
short & | luxury, |
|
|
uint32_t & | offset ) |
Definition at line 43 of file interpretSeeds.cxx.
45{
46
47 std::vector<std::string>
tokens;
48 for (
auto&& range : std::string_view{
buffer} | std::views::split(
' '))
if (!
range.empty())
tokens.emplace_back(
range.begin(),
range.end());
49 int nToks =
static_cast<int>(
tokens.size());
50 bool status = (nToks == 3 || nToks == 5 || nToks == 7);
51 if (status) {
52 auto token =
tokens.begin();
54
58 auto [ptr1, ec1] = std::from_chars(token->data(), token->data() + token->size(), seed1);
59 ++token;
60 auto [ptr2, ec2] = std::from_chars(token->data(), token->data() + token->size(), seed2);
61 ++token;
62 if (ec1 != std::errc() || ec2 != std::errc()) {
64 }
65 }
67}
void getLuxury(std::vector< std::string >::iterator &token, short &luxLevel)
void getOffset(std::vector< std::string >::iterator &token, uint32_t &offset)