view mupdf-source/thirdparty/zxing-cpp/core/src/ReedSolomonEncoder.h @ 16:bd5bb0742cc3

A "check" target that checks for all venv and host prerequisites
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 17 Sep 2025 21:11:25 +0200
parents b50eed0cc0ef
children
line wrap: on
line source

/*
* Copyright 2016 Huy Cuong Nguyen
* Copyright 2016 ZXing authors
*/
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "GenericGFPoly.h"

#include <list>
#include <vector>

namespace ZXing {

// public only for testing purposes
class ReedSolomonEncoder
{
public:
	explicit ReedSolomonEncoder(const GenericGF& field);

	void encode(std::vector<int>& message, int numECCodeWords);

private:
	const GenericGF* _field;
	std::list<GenericGFPoly> _cachedGenerators;

	const GenericGFPoly& buildGenerator(int degree);
};

/**
 * @brief ReedSolomonEncode replaces the last numECCodeWords code words in message with error correction code words
 */
inline void ReedSolomonEncode(const GenericGF& field, std::vector<int>& message, int numECCodeWords)
{
	ReedSolomonEncoder(field).encode(message, numECCodeWords);
}

} // namespace ZXing