Files correlati : Commento : - Creazione nuova cartella per contenere tutte le librerie esterne - Aggiunta nuova libreria sqlapi per interfacciare campo a vari DB git-svn-id: svn://10.65.10.50/branches/R_10_00@24149 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			145 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// samisc.h
 | 
						|
//
 | 
						|
//////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#if !defined(__SAMISC_H__)
 | 
						|
#define __SAMISC_H__
 | 
						|
 | 
						|
#define sa_min(x, y) ((x) < (y)? (x) : (y))
 | 
						|
#define sa_max(x, y) ((x) > (y)? (x) : (y))
 | 
						|
 | 
						|
#if defined(SA_UNICODE)
 | 
						|
#define sa_strcpy(x, y) wcscpy(x, y)
 | 
						|
#define sa_strlen(x) wcslen(x)
 | 
						|
#define sa_strstr(x, y) wcsstr(x, y)
 | 
						|
#define sa_strchr(x, y) wcschr(x, y)
 | 
						|
#define sa_isspace(x) iswspace(x)
 | 
						|
#define sa_isdigit(x) iswdigit(x)
 | 
						|
#define sa_isalpha(x) iswalpha(x)
 | 
						|
#define sa_strcmp(x, y) wcscmp(x, y)
 | 
						|
#define sa_strncmp(x, y, z) wcsncmp(x, y, z)
 | 
						|
#define sa_tolower(x) towlower(x)
 | 
						|
#define sa_toupper(x) towupper(x)
 | 
						|
#define sa_strcoll(x, y) wcscoll(x, y)
 | 
						|
#define sa_strpbrk(x, y) wcspbrk(x, y)
 | 
						|
#define sa_strrchr(x, y) wcsrchr(x, y)
 | 
						|
#define sa_strtol(x, y, z) wcstol(x, y, z)
 | 
						|
#define sa_strtoul(x, y, z) wcstoul(x, y, z)
 | 
						|
#define sa_strtod(x, y) wcstod(x, y)
 | 
						|
#define sa_toi(x) (int)wcstol(x, NULL, 10)
 | 
						|
#define sa_tol(x) wcstol(x, NULL, 10)
 | 
						|
#define sa_sscanf swscanf
 | 
						|
#define sa_printf wprintf
 | 
						|
#define sa_scanf wscanf
 | 
						|
#define sa_getchar getwchar
 | 
						|
#ifdef SQLAPI_WINDOWS
 | 
						|
#define sa_snprintf _snwprintf
 | 
						|
#define sa_vsnprintf(x, y, z, j) _vsnwprintf(x, y, z, j)
 | 
						|
#define sa_stricmp(x, y) _wcsicmp(x, y)
 | 
						|
#else
 | 
						|
#define sa_vsnprintf(x, y, z, j) vswprintf(x, y, z, j)
 | 
						|
#define sa_snprintf swprintf
 | 
						|
#define sa_stricmp(x, y) wcscasecmp(x, y)
 | 
						|
#endif // ! SQLAPI_WINDOWS
 | 
						|
#define sa_csinc(x) (++(x))
 | 
						|
#define sa_clen(x) (1)
 | 
						|
#else
 | 
						|
#define sa_strcpy(x, y) strcpy(x, y)
 | 
						|
#define sa_strlen(x) strlen(x)
 | 
						|
#define sa_strstr(x, y) strstr(x, y)
 | 
						|
#define sa_strchr(x, y) strchr(x, y)
 | 
						|
#define sa_isspace(x) isspace((unsigned char)x)
 | 
						|
#define sa_isdigit(x) isdigit((unsigned char)x)
 | 
						|
#define sa_isalpha(x) isalpha((unsigned char)x)
 | 
						|
#define sa_strcmp(x, y) strcmp(x, y)
 | 
						|
#define sa_strncmp(x, y, z) strncmp(x, y, z)
 | 
						|
#define sa_tolower(x) tolower((unsigned char)x)
 | 
						|
#define sa_toupper(x) toupper((unsigned char)x)
 | 
						|
#define sa_strcoll(x, y) strcoll(x, y)
 | 
						|
#define sa_strpbrk(x, y) strpbrk(x, y)
 | 
						|
#define sa_strrchr(x, y) strrchr(x, y)
 | 
						|
#define sa_strtol(x, y, z) strtol(x, y, z)
 | 
						|
#define sa_strtoul(x, y, z) strtoul(x, y, z)
 | 
						|
#define sa_strtod(x, y) strtod(x, y)
 | 
						|
#define sa_toi(x) atoi(x)
 | 
						|
#define sa_tol(x) atol(x)
 | 
						|
#define sa_sscanf sscanf
 | 
						|
#define sa_printf printf
 | 
						|
#define sa_scanf scanf
 | 
						|
#define sa_getchar getchar
 | 
						|
#ifdef SQLAPI_WINDOWS
 | 
						|
#if defined(__BORLANDC__) && (__BORLANDC__  <= 0x0520)
 | 
						|
#define sa_vsnprintf(x, y, z, j) vsprintf(x, z, j)
 | 
						|
#else
 | 
						|
#define sa_vsnprintf(x, y, z, j) _vsnprintf(x, y, z, j)
 | 
						|
#endif
 | 
						|
#define sa_snprintf _snprintf
 | 
						|
#define sa_stricmp(x, y) _stricmp(x, y)
 | 
						|
#else
 | 
						|
#define sa_vsnprintf(x, y, z, j) vsnprintf(x, y, z, j)
 | 
						|
#define sa_snprintf snprintf
 | 
						|
#define sa_stricmp(x, y) strcasecmp(x, y)
 | 
						|
#endif // ! SQLAPI_WINDOWS
 | 
						|
#define sa_csinc(x) (++(x))
 | 
						|
#define sa_clen(x) (1)
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef SQLAPI_WINDOWS
 | 
						|
#ifdef __BORLANDC__
 | 
						|
#define _strnicmp strnicmp
 | 
						|
#define _stricmp stricmp
 | 
						|
#endif
 | 
						|
#elif SQLAPI_SCOOSR5
 | 
						|
#define _strnicmp strnicmp
 | 
						|
#define _stricmp stricmp
 | 
						|
#else
 | 
						|
#define _strnicmp strncasecmp
 | 
						|
#define _stricmp strcasecmp
 | 
						|
#endif	// defined(SQLAPI_WINDOWS)
 | 
						|
 | 
						|
#ifdef SQLAPI_WINDOWS
 | 
						|
#include <windows.h>
 | 
						|
#else
 | 
						|
#if defined(SA_USE_PTHREAD)
 | 
						|
#include <pthread.h>
 | 
						|
#endif	// defined(SA_USE_PTHREAD)
 | 
						|
#endif
 | 
						|
 | 
						|
class SQLAPI_API SAMutex
 | 
						|
{
 | 
						|
#ifdef  SQLAPI_WINDOWS
 | 
						|
#ifdef SA_USE_MUTEXT_LOCK
 | 
						|
	HANDLE m_hMutex;
 | 
						|
#else
 | 
						|
	CRITICAL_SECTION m_hCriticalSection;
 | 
						|
#endif
 | 
						|
#endif	// defined(SQLAPI_WINDOWS)
 | 
						|
 | 
						|
#if defined(SA_USE_PTHREAD)
 | 
						|
	pthread_mutex_t m_mutex;	// mutex
 | 
						|
	// we need additional machinery
 | 
						|
	// to allow portable recursion
 | 
						|
	int				m_locks;	// number of times owner locked mutex
 | 
						|
	pthread_t		m_owner_thread;	//owner of mutex
 | 
						|
	pthread_mutex_t	m_helper_mutex;	// structure access lock
 | 
						|
#endif	// defined(SA_USE_PTHREAD)
 | 
						|
 | 
						|
public:
 | 
						|
	SAMutex();
 | 
						|
	virtual ~SAMutex();
 | 
						|
 | 
						|
	void Wait();
 | 
						|
	void Release();
 | 
						|
};
 | 
						|
 | 
						|
class SQLAPI_API SACriticalSectionScope
 | 
						|
{
 | 
						|
	SAMutex *m_pSAMutex;
 | 
						|
 | 
						|
public:
 | 
						|
	SACriticalSectionScope(SAMutex *pSAMutex);
 | 
						|
	virtual ~SACriticalSectionScope();
 | 
						|
};
 | 
						|
 | 
						|
#endif // !defined(__SAMISC_H__)
 |