Sha256: 2e15189bcb62cf5d76f2e0772f576d360e9df30feac977f90e5b1ee01289c7ac

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

/* Copyright (c) 2024 Julian Benda
 *
 * This file is part of inkCPP which is released under MIT license.
 * See file LICENSE.txt or go to
 * https://github.com/JBenda/inkcpp for full license details.
 */
#include "header.h"
#include "version.h"

namespace ink::internal {

	header header::parse_header(const char *data)
	{
		header res;
		const char* ptr = data;
		res.endien = *reinterpret_cast<const header::endian_types*>(ptr);
		ptr += sizeof(header::endian_types);

		using v_t = decltype(header::ink_version_number);
		using vcpp_t = decltype(header::ink_bin_version_number);

		if (res.endien == header::endian_types::same) {
			res.ink_version_number =
				*reinterpret_cast<const v_t*>(ptr);
			ptr += sizeof(v_t);
			res.ink_bin_version_number =
				*reinterpret_cast<const vcpp_t*>(ptr);

		} else if (res.endien == header::endian_types::differ) {
			res.ink_version_number =
				swap_bytes(*reinterpret_cast<const v_t*>(ptr));
			ptr += sizeof(v_t);
			res.ink_bin_version_number =
				swap_bytes(*reinterpret_cast<const vcpp_t*>(ptr));
		} else {
			inkFail("Failed to parse endian encoding!");
		}

		if (res.ink_bin_version_number != InkBinVersion) {
			inkFail("InkCpp-version mismatch: file was compiled with different InkCpp-version!");
		}
		return res;
	}
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
inkcpp_rb-0.1.3 ext/inkcpp_rb/inkcpp/inkcpp/header.cpp
inkcpp_rb-0.1.2 ext/inkcpp_rb/inkcpp/inkcpp/header.cpp
inkcpp_rb-0.1.1 ext/inkcpp_rb/inkcpp/inkcpp/header.cpp
inkcpp_rb-0.1.0 ext/inkcpp_rb/inkcpp/inkcpp/header.cpp