
#ifdef BUILD_NIST_DLL
#   define NIST_EXPORT __declspec( dllexport )
#else
#   define NIST_EXPORT
#endif


#if defined(__cplusplus)
extern "C" {
#endif


extern
int NIST_EXPORT RegisterNIST();

extern
int NIST_EXPORT CreateNewNISTFile();

extern
int NIST_EXPORT WriteNISTToFile(const char *filename);

extern
unsigned char* NIST_EXPORT ReadNISTByteArray();

extern
int NIST_EXPORT ReadSizeOfNISTByteArray();

extern
int NIST_EXPORT ReadNISTFromFile(const char *filename);

extern
int NIST_EXPORT ReadNISTFromMemory(unsigned char* input_byte_array, int size_of_input_byte_array);

extern
int NIST_EXPORT CheckIfRecordTypeExists(int record_type_number);

extern
int NIST_EXPORT ReadNumberOfRecords(int record_type_number);

extern
int NIST_EXPORT ReadIDCofRecord(int record_type_number, int record_number);

extern
char* NIST_EXPORT ReadRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name);

extern
int NIST_EXPORT ReadSizeOfRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name);

extern
char* NIST_EXPORT ReadRecordTxtFieldName(int record_type_number, int idc, int record_field_number);

extern
int NIST_EXPORT ReadSizeOfRecordTxtFieldName(int record_type_number, int idc, int record_field_number, const char *record_field_name);

extern
char* NIST_EXPORT ReadRecordTxtFieldDescription(int record_type_number, int idc, int record_field_number, const char *record_field_name);

extern
int NIST_EXPORT ReadSizeOfRecordTxtFieldDescription(int record_type_number, int idc, int record_field_number, const char *record_field_name);

extern
char* NIST_EXPORT ReadRecordExportedTxtFields(int record_type_number, int idc);

extern
int NIST_EXPORT ReadSizeOfRecordExportedTxtFields(int record_type_number, int idc);

extern
unsigned char* NIST_EXPORT ReadRecordBinaryField(int record_type_number, int idc);

extern
int NIST_EXPORT ReadSizeOfRecordBinaryField(int record_type_number, int idc);

extern
HBITMAP NIST_EXPORT CreateHBITMAPfromRecordBinaryField(int record_type_number, int idc);

extern
int NIST_EXPORT InsertRecordBinaryFieldFromFile(int record_type_number, int idc, const char *filename);

extern
int NIST_EXPORT InsertRecordBinaryFieldFromMemory(int record_type_number, int idc, unsigned char* input_byte_array, int size_of_input_byte_array, const char* CGA, int CGA_int, int HLL, int VLL);

extern
int NIST_EXPORT InsertRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name, const char * input_data);


extern
int NIST_EXPORT DeleteRecord(int record_type_number, int idc);


extern
int NIST_EXPORT SetNISTLibErrorReportMode(int nist_error_report_mode);

extern
char* NIST_EXPORT ReadNISTLibLastErrorMessage();

extern
int NIST_EXPORT SetNISTLibTryToDecodeBinaryField(int try_to_decode_binary_field);


#if defined(__cplusplus)
 }
#endif
