tune for 64 bits

This commit is contained in:
VincentWei
2018-01-16 19:07:41 +08:00
parent 060e483872
commit 2fbff87cb4
10 changed files with 247 additions and 136 deletions

View File

@@ -256,6 +256,20 @@ MGUI_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
* @{
*/
#if defined(_WIN64)
# define SIZEOF_PTR 8
#elif defined(__LP64__)
# define SIZEOF_PTR 8
#else
# define SIZEOF_PTR 4
#endif
/**
* \var PVOID
* \brief A type definition for a pointer to any type.
*/
typedef void *PVOID;
/**
* \var typedef int BOOL
* \brief A type definition for boolean value.
@@ -265,6 +279,7 @@ MGUI_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
typedef int BOOL;
#endif
#endif
/**
* \def FALSE
* \brief FALSE value, defined as 0 by MiniGUI.
@@ -318,55 +333,55 @@ typedef int BOOL;
*/
/**
* \var typedef unsigned int GHANDLE
* \var GHANDLE
* \brief General handle.
*/
typedef unsigned int GHANDLE;
typedef PVOID GHANDLE;
/**
* \var typedef unsigned int HWND
* \var HWND
* \brief Handle to main window or control.
*/
typedef unsigned int HWND;
typedef GHANDLE HWND;
/**
* \var typedef unsigned int HDC
* \var HDC
* \brief Handle to device context.
*/
typedef unsigned int HDC;
typedef GHANDLE HDC;
/**
* \var typedef unsigned int HPALETTE
* \var HPALETTE
* \brief Handle to a logical palette.
*/
typedef unsigned int HPALETTE;
typedef GHANDLE HPALETTE;
/**
* \var typedef unsigned int HCURSOR
* \var HCURSOR
* \brief Handle to cursor.
*/
typedef unsigned int HCURSOR;
typedef GHANDLE HCURSOR;
/**
* \var typedef unsigned int HICON
* \var HICON
* \brief Handle to icon.
*/
typedef unsigned int HICON;
typedef GHANDLE HICON;
/**
* \var typedef unsigned int HMENU
* \var HMENU
* \brief Handle to menu.
*/
typedef unsigned int HMENU;
typedef GHANDLE HMENU;
/**
* \var typedef unsigned int HACCEL
* \var HACCEL
* \brief Handle to accelarator.
*/
typedef unsigned int HACCEL;
typedef GHANDLE HACCEL;
/**
* \var typedef unsigned int HDLG
* \var HDLG
* \brief Handle to dialog box, same as HWND.
*/
typedef unsigned int HDLG;
typedef GHANDLE HDLG;
/**
* \var typedef unsigned int HHOOK
* \var HHOOK
* \brief Handle to keyboard or mouse event hook.
*/
typedef unsigned int HHOOK;
typedef GHANDLE HHOOK;
/** @} end of handles */
@@ -376,73 +391,158 @@ typedef unsigned int HHOOK;
*/
/**
* \var typedef unsigned char BYTE
* \brief A type definition for unsigned character (byte).
* \var BYTE
* \brief A type definition for an 8-bit unsigned character (byte).
*/
#ifndef _HAVE_TYPE_BYTE
typedef unsigned char BYTE;
#endif
/**
* \var typedef signed char SBYTE
* \brief A type definition for signed character.
* \var SBYTE
* \brief A type definition for an 8-bit signed character.
*/
typedef signed char SBYTE;
/**
* \var typedef unsigned short WORD
* \brief A type definition for unsigned short integer (word).
* \var WORD_HPTR
* \brief An unsigned int (word) type in half pointer precision.
*/
#ifndef _HAVE_TYPE_WORD
typedef unsigned short WORD;
#if defined(_WIN64)
typedef unsigned int WORD_HPTR;
#elif defined(__LP64__)
typedef unsigned int WORD_HPTR;
#else
typedef unsigned short WORD_HPTR;
#endif
/**
* \var typedef signed short SWORD
* \brief A type definition for signed short integer.
* \var SWORD_HPTR
* \brief An signed int type in half pointer precision.
*/
typedef signed short SWORD;
/**
* \var typedef unsigned long DWORD
* \brief A type definition for unsigned long integer (double word).
*/
#ifndef _HAVE_TYPE_DWORD
typedef unsigned long DWORD;
#if defined(_WIN64)
typedef signed int SWORD_HPTR;
#elif defined(__LP64__)
typedef signed int SWORD_HPTR;
#else
typedef signed short SWORD_HPTR;
#endif
/**
* \var typedef signed long SDWORD
* \brief A type definition for signed long integer.
* \var WORD
* \brief A type definition for an unsigned integer (word).
*/
typedef signed long SDWORD;
typedef WORD_HPTR WORD;
/**
* \var typedef unsigned int UINT
* \var SWORD
* \brief A type definition for a signed integer.
*/
typedef SWORD_HPTR SWORD;
/**
* \var WORD16
* \brief A type definition for a 16-bit unsigned integer (word).
*/
typedef unsigned short WORD16;
/**
* \var SWORD16
* \brief A type definition for a 16-bit signed integer.
*/
typedef signed short SWORD16;
/**
* \var DWORD_PTR
* \brief An unsigned long type for pointer precision.
*
* Commonly used for general 32-bit parameters that have been extended
* to 64 bits in 64-bit platform.
*/
#if defined(_WIN64)
typedef unsigned __int64 DWORD_PTR;
#elif defined(__LP64__)
typedef unsigned long DWORD_PTR;
#else
typedef unsigned int DWORD_PTR;
#endif
/**
* \var DWORD
* \brief A unsigned long type definition for pointer precision.
*/
typedef DWORD_PTR DWORD;
/**
* \var DWORD32
* \brief A type definition for a 32-bit unsigned integer.
*/
typedef unsigned short DWORD32;
/**
* \var SDWORD32
* \brief A type definition for a 32-bit signed integer.
*/
typedef signed short SDWORD32;
/**
* \var UINT
* \brief A type definition for unsigned integer.
*/
#ifndef _HAVE_TYPE_UINT
typedef unsigned int UINT;
typedef unsigned int UINT;
/**
* \var INT_PTR
* \brief A signed integer type for pointer precision.
*/
#if defined(_WIN64)
typedef __int64 INT_PTR;
#elif defined(__LP64__)
typedef long INT_PTR;
#else
typedef int INT_PTR;
#endif
/**
* \var typedef long LONG
* \var UINT_PTR
* \brief A unsigned integer type for pointer precision.
*/
#if defined(_WIN64)
typedef unsigned __int64 UINT_PTR;
#elif defined(__LP64__)
typedef unsigned long UINT_PTR;
#else
typedef unsigned int UINT_PTR;
#endif
#if SIZEOF_PTR == 8
# define INT_PTR_MIN (-9223372036854775807L-1)
# define INT_PTR_MAX (9223372036854775807L)
# define UINT_PTR_MAX (18446744073709551615UL)
#else
# error 64bit arrives 32bit.
# define INT_PTR_MIN (-2147483647-1)
# define INT_PTR_MAX (2147483647)
# define UINT_PTR_MAX (4294967295U)
#endif
/**
* \var typedef LONG
* \brief A type definition for long integer.
*/
#ifndef _HAVE_TYPE_LONG
typedef long LONG;
typedef long LONG;
#endif
/**
* \var typedef unsigned int WPARAM
* \var WPARAM
* \brief A type definition for the first message paramter.
*/
typedef unsigned int WPARAM;
typedef UINT_PTR WPARAM;
/**
* \var typedef unsigned long LPARAM
* \var LPARAM
* \brief A type definition for the second message paramter.
*/
typedef unsigned long LPARAM;
typedef UINT_PTR LPARAM;
/**
* \def LOBYTE(w)

View File

@@ -1090,19 +1090,19 @@ MG_EXPORT BOOL GUIAPI InitPolygonRegion (PCLIPRGN dst,
* \note MiniGUI does not do any clipping operation for this DC,
* so use this DC may make a mess of other windows.
*/
#define HDC_SCREEN 0
#define HDC_SCREEN (HDC)0
/*
* This is a system screen DC create for MiniGUI internal usage, for example,
* menu and z-order operations
*/
#define HDC_SCREEN_SYS 1
#define HDC_SCREEN_SYS (HDC)1
/**
* \def HDC_INVALID
* \brief Indicates an invalid handle to device context.
*/
#define HDC_INVALID 0xFFFFFFFF
#define HDC_INVALID (HDC)UINT_PTR_MAX
#define GDCAP_COLORNUM 0
#define GDCAP_HPIXEL 1

View File

@@ -209,9 +209,9 @@
#if defined(_MSC_VER) && _MSC_VER < 1300 || defined(__DMC__)
/*
* VC++6.0 or early compiler's header has no DWORD_PTR type.
* VC++6.0 or early compiler's header has no DWORD type.
*/
typedef unsigned long DWORD_PTR;
typedef unsigned long DWORD;
#endif
/*
* -----------------

View File

@@ -4893,15 +4893,15 @@ extern MG_EXPORT HWND __mg_hwnd_desktop;
* \def HWND_NULL
* \brief Null window handle.
*/
#define HWND_NULL 0
#define HWND_NULL (HWND)0
/**
* \def HWND_INVALID
* \brief Invalid window handle.
*/
#define HWND_INVALID 0xFFFFFFFF
#define HWND_INVALID (HWND)UINT_PTR_MAX
#define HWND_OTHERPROC 0xFFFFFFFE
#define HWND_OTHERPROC (HWND)UINT_PTR_MAX
/**
* Structure defines a main window.
@@ -8426,10 +8426,10 @@ typedef struct _MENUITEMINFO {
PBITMAP checkedbmp;
/** The private data attached to the menu item */
DWORD itemdata;
DWORD itemdata;
/** The data of this menu item, used to pass the string or the pointer to the BITMAP object of the menu item */
DWORD typedata;
DWORD typedata;
/**
* Used by \a GetMenuItemInfo function to indicate the maximal length
@@ -9056,7 +9056,7 @@ typedef struct _CTRLDATA
/** Control caption */
const char* caption;
/** Additional data */
DWORD dwAddData;
DWORD dwAddData;
/** Control extended style */
DWORD dwExStyle;

View File

@@ -271,7 +271,7 @@ unsigned short font_GetBestScaleFactor (int height, int expect)
{ \
devfont = head; \
while (devfont) { \
fprintf (stderr, " %d: %s, charsetname: %s, style: %#lx\n", \
fprintf (stderr, " %d: %s, charsetname: %s, style: %#x\n", \
count, \
devfont->name, devfont->charset_ops->name, devfont->style); \
devfont = devfont->next; \

View File

@@ -102,7 +102,7 @@ static PLOGFONT gdiCreateLogFont (const char* type, const char* family,
log_font->sbc_scale = 1;
log_font->mbc_scale = 1;
_MG_PRINTF ("FONT>LogFont: requested info: type: %s, family: %s, style: %lx, charset: %s, size: %d.\n",
_MG_PRINTF ("FONT>LogFont: requested info: type: %s, family: %s, style: %x, charset: %s, size: %d.\n",
log_font->type, log_font->family, log_font->style, log_font->charset,
log_font->size);
@@ -223,7 +223,7 @@ static PLOGFONT gdiCreateLogFont (const char* type, const char* family,
log_font->style &= ~FS_FLIP_HORZVERT;
}
_MG_PRINTF ("FONT>LogFont: created info: type: %s, family: %s, style: %lx, charset: %s, size: %d.\n",
_MG_PRINTF ("FONT>LogFont: created info: type: %s, family: %s, style: %x, charset: %s, size: %d.\n",
log_font->type, log_font->family, log_font->style, log_font->charset,
log_font->size);

View File

@@ -29,7 +29,7 @@ typedef struct _CTRLCLASSINFO
int (*ControlProc)(HWND, int, WPARAM, LPARAM);
// control procedure.
DWORD dwAddData; // the additional data.
DWORD dwAddData; // the additional data.
int nUseCount; // use count.
struct _CTRLCLASSINFO* next;

View File

@@ -102,34 +102,42 @@ int MGUI_WriteLE64 (MG_RWops *dst, Uint64 value)
int MGUI_WriteBE64 (MG_RWops *dst, Uint64 value)
{
value = ArchSwapBE64(value);
return(MGUI_RWwrite(dst, &value, (sizeof value), 1));
return (MGUI_RWwrite(dst, &value, (sizeof value), 1));
}
Uint16 MGUI_ReadLE16FP (FILE *src)
{
Uint16 value;
size_t size;
fread (&value, (sizeof value), 1, src);
return(ArchSwapLE16(value));
size = fread (&value, (sizeof value), 1, src);
if (size < sizeof (value))
return -1;
return (ArchSwapLE16(value));
}
Uint32 MGUI_ReadLE32FP (FILE *src)
{
Uint32 value;
size_t size;
fread(&value, (sizeof value), 1, src);
return(ArchSwapLE32(value));
size = fread(&value, (sizeof value), 1, src);
if (size < sizeof (value))
return -1;
return (ArchSwapLE32(value));
}
int MGUI_WriteLE16FP (FILE *dst, Uint16 value)
{
value = ArchSwapLE16(value);
return(fwrite (&value, (sizeof value), 1, dst));
return (fwrite (&value, (sizeof value), 1, dst));
}
int MGUI_WriteLE32FP (FILE *dst, Uint32 value)
{
value = ArchSwapLE32(value);
return(fwrite (&value, (sizeof value), 1, dst));
return (fwrite (&value, (sizeof value), 1, dst));
}

View File

@@ -54,46 +54,46 @@ void __mg_rewind (FILE *fp);
int my_fputs (const char *s, FILE *stream)
{
int len = strlen (s);
int ret = 0;
ret = fwrite (s, 1, len, stream);
if (ret != len)
return EOF;
else
return ret;
int len = strlen (s);
int ret = 0;
ret = fwrite (s, 1, len, stream);
if (ret != len)
return EOF;
else
return ret;
}
char * my_fgets (char *s, int size, FILE *stream)
{
int c;
int count = 0;
int c;
int count = 0;
while (!feof (stream)) {
if (fread (&c, 1, 1, stream) != 1) {
if (count == 0)
return NULL;
else {
s[count] = '\0';
return s;
}
}
if (c == EOF || (char)c == '\r' ||(char)c == '\n') {
s [count++] = (char)c;
s [count++] = '\0';
return s;
}
else
s[count++] = (char)c;
}
if (!count)
return NULL;
else
{
s[count] = '\0';
return s;
}
while (!feof (stream)) {
if (fread (&c, 1, 1, stream) != 1) {
if (count == 0)
return NULL;
else {
s[count] = '\0';
return s;
}
}
if (c == EOF || (char)c == '\r' ||(char)c == '\n') {
s [count++] = (char)c;
s [count++] = '\0';
return s;
}
else
s[count++] = (char)c;
}
if (!count)
return NULL;
else
{
s[count] = '\0';
return s;
}
}
#endif
///////////////////////////////
@@ -127,7 +127,10 @@ static BOOL LookForEtcFile (void)
}
getcwd (etcfile, MAX_PATH);
if (getcwd (etcfile, MAX_PATH) == NULL) {
return FALSE;
}
strcat (etcfile, "/");
strcat (etcfile, ETCFILENAME);
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
@@ -151,41 +154,41 @@ static BOOL LookForEtcFile (void)
}
}
strcpy (etcfile, "/usr/local/etc/" ETCFILENAME);
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
== ETC_OK) {
strcpy (ETCFILEPATH, etcfile);
return TRUE;
}
strcpy (etcfile, "/usr/local/etc/" ETCFILENAME);
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
== ETC_OK) {
strcpy (ETCFILEPATH, etcfile);
return TRUE;
}
strcpy (etcfile, "/etc/" ETCFILENAME);
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
== ETC_OK) {
strcpy (ETCFILEPATH, etcfile);
return TRUE;
}
strcpy (etcfile, "/etc/" ETCFILENAME);
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
== ETC_OK) {
strcpy (ETCFILEPATH, etcfile);
return TRUE;
}
return FALSE;
return FALSE;
#elif defined(WIN32)
sprintf(etcfile, "c:\\windows\\%s", ETCFILENAME);
sprintf(etcfile, "c:\\windows\\%s", ETCFILENAME);
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
== ETC_OK) {
strcpy (ETCFILEPATH, etcfile);
return TRUE;
}
sprintf(etcfile, "c:\\%s", ETCFILENAME);
sprintf(etcfile, "c:\\%s", ETCFILENAME);
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
== ETC_OK) {
strcpy (ETCFILEPATH, etcfile);
return TRUE;
}
return FALSE;
return FALSE;
#elif defined(__THREADX__)
char etcpath[MAX_PATH]= "/flash/fhas2-cfg/";
strcpy (etcfile, etcpath);
strcat (etcfile, ETCFILENAME);
char etcpath[MAX_PATH]= "/flash/fhas2-cfg/";
strcpy (etcfile, etcpath);
strcat (etcfile, ETCFILENAME);
#endif
if (GetValueFromEtcFile (etcfile, "system", "gal_engine", buff, 8)
@@ -207,7 +210,7 @@ BOOL mg_InitMgEtc (void)
return FALSE;
}
if (hMgEtc)
if (hMgEtc)
return TRUE;
if ( !(hMgEtc = LoadEtcFile (ETCFILEPATH)) )
@@ -1070,7 +1073,7 @@ GHANDLE GUIAPI FindSectionInEtc (GHANDLE hEtc,
/* not found */
if (bCreateNew) {
if (petc->sect_nr_alloc <= 0)
return ETC_READONLYOBJ;
return (GHANDLE) ETC_READONLYOBJ;
if (empty_section >= 0) {
psect = petc->sections + empty_section;
@@ -1314,7 +1317,7 @@ void mswin_ping(void);
void GUIAPI Ping(void)
{
#ifdef WIN32
mswin_ping();
mswin_ping();
#else
putchar ('\a');
fflush (stdout);

View File

@@ -277,8 +277,8 @@ MG_RWops *MGUI_RWFromMem(void *mem, int size)
rwops->eof = mem_eof;
rwops->hidden.mem.base = (Uint8 *)mem;
rwops->hidden.mem.here = rwops->hidden.mem.base;
if ((0xFFFFFFFF - (Uint32)mem) < size)
rwops->hidden.mem.stop = (void*)0xFFFFFFFF;
if ((UINT_PTR_MAX - (UINT_PTR)mem) < size)
rwops->hidden.mem.stop = (void*)UINT_PTR_MAX;
else
rwops->hidden.mem.stop = rwops->hidden.mem.base+size;
@@ -299,8 +299,8 @@ void MGUI_InitMemRW (MG_RWops* area, void *mem, int size)
area->eof = mem_eof;
area->hidden.mem.base = (Uint8 *)mem;
area->hidden.mem.here = area->hidden.mem.base;
if ((0xFFFFFFFF - (Uint32)mem) < size)
area->hidden.mem.stop = (void*)0xFFFFFFFF;
if ((UINT_PTR_MAX - (UINT_PTR)mem) < size)
area->hidden.mem.stop = (void*)UINT_PTR_MAX;
else
area->hidden.mem.stop = area->hidden.mem.base+size;