/*---------------------------------------------------------------------------*
* pcrc.h *
* *
* Copyright 2007, 2008 Nuance Communciations, Inc. *
* *
* Licensed under the Apache License, Version 2.0 (the 'License'); *
* you may not use this file except in compliance with the License. *
* *
* You may obtain a copy of the License at *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an 'AS IS' BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
*---------------------------------------------------------------------------*/
#ifndef PCRC_H
#define PCRC_H
#include "PortPrefix.h"
#include "ptypes.h"
/**
* @addtogroup PCRCModule PCRC API functions
*
* @{
*/
/**
* Computes the CRC-encoding of the block of data.
*
* @param data The data on which to compute the CRC
* @param size the size of the data.
* @return the CRC of the data.
*/
PORTABLE_API unsigned int pcrcComputeData(const void *data, unsigned int size);
/**
* Computes the CRC-encoding of a string.
*
* @param str The string for which to compute the CRC
* @return the CRC of the string.
*/
PORTABLE_API unsigned int pcrcComputeString(const LCHAR *str);
/**
* Initial value to pass to the pcrcUpdateData to ensist consistency with
* pcrcComputeData.
*/
#define CRC_INITIAL_VALUE (~0U)
/**
* Updates the CRC when adding a new byte.
*
* @param crc The initial crc value.
* @param data datum to append to the crc
* @param size the size of the data.
* @return the new crc value.
*/
PORTABLE_API unsigned int pcrcUpdateData(unsigned int crc,
const void * data,
unsigned int size);
/**
* @}
*/
#endif