/*
 * Copyright(C) 2000 Проект ИОК
 *
 * Этот файл содержит информацию, являющуюся
 * собственностью компании Крипто Про.
 *
 * Любая часть этого файла не может быть скопирована,
 * исправлена, переведена на другие языки,
 * локализована или модифицирована любым способом,
 * откомпилирована, передана по сети с или на
 * любую компьютерную систему без предварительного
 * заключения соглашения с компанией Крипто Про.
 */

/****
 * $Id: rdr_prj.h 214787 2020-07-09 06:27:28Z frolov $
 *
 * Работа со считывателями и ключевой информацией (READER).
 *
 * Интерфейс ко всем считывателям (RDR).
 *
 * Мастер include файл для проекта (READER/RDR).
 *
 * Только для реализации проекта READER/RDR.
 *
 * Прямая зависимость от define: 
 *
 * Стандартных: _WIN32
 ****/

#if !defined( _READER_RDR_RDR_PRJ_H )
#define _READER_RDR_RDR_PRJ_H

#include "reader.kit/gen_prj.h"

/*+ Windows +*/
#if defined _WIN32 && defined _USRDLL

/*+ Std include. +*/
#include <process.h>

#include <windowsx.h> /*+ Windows include. +*/
#include <CommCtrl.h>

#endif /* _WIN32 && _USRDLL */

#include "reader/sup_syse.h"

// Здесь свои настройки, чтобы можно было получать диагностику в release:
#if defined IOS
#  define DB_ERROR CONS
#  define DB_TRACE CONS
#  define DB_WARN CONS
#  define DB_CALL CONS
#  define DB_LOG CONS
#else // IOS
#  define DB_ERROR ERRO
#  define DB_TRACE NORM
#  define DB_WARN NORM
#  define DB_CALL NORM
#  define DB_LOG NORM
#endif // IOS

#include "reader/dprint2.h"
#include "reader.kit/sup_sys.h"
#include "reader.kit/sup_lst.h"
#if !defined UNIX
#include "reader/sup_sysw.h"
#endif /* UNIX */

#include "WinCryptEx.h"
#include "reader/rdr.h"
#if defined _USRDLL && defined _WIN32
#include "reader/rdr_wnd.h"
#endif /* _USRDLL && _WIN32 */

#include "reader.kit/reader.h"
     
#include "sup_rc.h"	   /* Ресурсные константы. Только для строк */

/* Макрос, возвращает CODE из функции, перед этим выводит его в лог. 
Вместо CODE можно передавать результат функции с внешними эффектами - вычислится 1 раз.
Используйте его в интерфейсных rdr-функциях вместо обычного return.
*/
#define LOGRETURN(CODE)\
do {DWORD temp = (CODE);\
    DbTrace(DB_CALL, (FTEXT(db_ctx, "res: 0x%x"), (temp))); \
    return (temp);\
}while(0)

#endif /* _READER_RDR_RDR_PRJ_H */
