view mupdf-source/thirdparty/zxing-cpp/core/src/ReedSolomonEncoder.h @ 38:8934ac156ef5

Allow to build with the PyPI package "clang" instead of "libclang". 1. It seems to be maintained. 2. In the FreeBSD base system there is no pre-built libclang.so. If you need this library you have to install llvm from ports additionally. 2. On FreeBSD there is no pre-built wheel "libclang" with a packaged libclang.so.
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 23 Sep 2025 10:27:15 +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