compile fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
2b835535a9
commit
5b7f1aab47
@ -6,7 +6,7 @@
|
||||
// Created: 01/02/97
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart and Markus Holzem
|
||||
// Licence: wxWindows licence
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wx/setup.h"
|
||||
@ -25,19 +25,22 @@
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __WXGTK__
|
||||
extern "C" {
|
||||
#include "../../src/iodbc/isql.h"
|
||||
#include "../../src/iodbc/isqlext.h"
|
||||
#include "../../src/iodbc/odbc_funcs.h"
|
||||
#include "../../src/iodbc/odbc_types.h"
|
||||
typedef float SFLOAT;
|
||||
typedef double SDOUBLE;
|
||||
#define ULONG UDWORD
|
||||
#ifdef __UNIX__
|
||||
extern "C"
|
||||
{
|
||||
#include "../../src/iodbc/isql.h"
|
||||
#include "../../src/iodbc/isqlext.h"
|
||||
#include "../../src/iodbc/odbc_funcs.h"
|
||||
#include "../../src/iodbc/odbc_types.h"
|
||||
|
||||
typedef float SFLOAT;
|
||||
typedef double SDOUBLE;
|
||||
|
||||
#define ULONG UDWORD
|
||||
}
|
||||
#else
|
||||
#include <sqlext.h>
|
||||
#endif
|
||||
#else // !Unix
|
||||
#include <sqlext.h>
|
||||
#endif // Unix/!Unix
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/list.h"
|
||||
@ -60,13 +63,11 @@ class WXDLLEXPORT wxRecordSet;
|
||||
|
||||
class WXDLLEXPORT wxDatabase: public wxObject
|
||||
{
|
||||
// JACS
|
||||
DECLARE_DYNAMIC_CLASS(wxDatabase)
|
||||
private:
|
||||
protected:
|
||||
static HENV hEnv;
|
||||
static int refCount;
|
||||
|
||||
|
||||
HDBC hDBC;
|
||||
char* username;
|
||||
char* password;
|
||||
@ -83,19 +84,19 @@ class WXDLLEXPORT wxDatabase: public wxObject
|
||||
bool err_occured;
|
||||
|
||||
wxList recordSets; // Record sets: Added by JACS
|
||||
|
||||
|
||||
public:
|
||||
wxDatabase(void);
|
||||
~wxDatabase(void);
|
||||
|
||||
wxDatabase();
|
||||
~wxDatabase();
|
||||
|
||||
bool Open(char *, bool exclusive =FALSE, bool readOnly =TRUE, char *username ="ODBC", char *password ="");
|
||||
bool Close(void);
|
||||
bool Close();
|
||||
|
||||
// Cleanup operations, added by JACS
|
||||
void DeleteRecordSets(void); // Called when the database is deleted
|
||||
void ResetRecordSets(void); // Required if the database is closed
|
||||
inline wxList& GetRecordSets(void) { return recordSets; }
|
||||
|
||||
|
||||
inline char *GetUsername(void) { return username; }
|
||||
inline char *GetPassword(void) { return password; }
|
||||
inline char *GetDataSource(void) { return datasource; }
|
||||
@ -103,31 +104,31 @@ class WXDLLEXPORT wxDatabase: public wxObject
|
||||
inline wxRETCODE GetErrorCode(void) { return retcode; }
|
||||
inline HDBC GetHDBC(void) { return hDBC; }
|
||||
inline HENV GetHENV(void) { return hEnv; }
|
||||
|
||||
|
||||
void SetPassword(char *s);
|
||||
void SetUsername(char *s);
|
||||
void SetDataSource(char *s);
|
||||
|
||||
|
||||
// Database attributes
|
||||
char *GetDatabaseName(void);
|
||||
bool CanUpdate(void);
|
||||
bool CanTransact(void);
|
||||
bool InWaitForDataSource(void);
|
||||
char *GetDatabaseName();
|
||||
bool CanUpdate();
|
||||
bool CanTransact();
|
||||
bool InWaitForDataSource();
|
||||
void SetLoginTimeout(long seconds);
|
||||
void SetQueryTimeout(long seconds);
|
||||
void SetSynchronousMode(bool synchronous);
|
||||
|
||||
// Database operations
|
||||
bool BeginTrans(void);
|
||||
bool CommitTrans(void);
|
||||
bool RollbackTrans(void);
|
||||
void Cancel(void);
|
||||
bool BeginTrans();
|
||||
bool CommitTrans();
|
||||
bool RollbackTrans();
|
||||
void Cancel();
|
||||
|
||||
// Error handling
|
||||
bool ErrorOccured(void);
|
||||
char* GetErrorMessage(void);
|
||||
long GetErrorNumber(void);
|
||||
char* GetErrorClass(void);
|
||||
bool ErrorOccured();
|
||||
char* GetErrorMessage();
|
||||
long GetErrorNumber();
|
||||
char* GetErrorClass();
|
||||
inline void ErrorSnapshot(HSTMT =SQL_NULL_HSTMT);
|
||||
|
||||
// Overridables
|
||||
@ -154,23 +155,23 @@ class WXDLLEXPORT wxQueryField: public wxObject
|
||||
long size;
|
||||
bool dirty;
|
||||
|
||||
bool AllocData(void);
|
||||
bool AllocData();
|
||||
|
||||
public:
|
||||
wxQueryField(void);
|
||||
~wxQueryField(void);
|
||||
|
||||
wxQueryField();
|
||||
~wxQueryField();
|
||||
|
||||
bool SetData(void*, long);
|
||||
void SetDirty(bool =TRUE);
|
||||
void ClearData(void);
|
||||
void ClearData();
|
||||
void SetType(short);
|
||||
void SetSize(long);
|
||||
|
||||
void* GetData(void);
|
||||
short GetType(void);
|
||||
long GetSize(void);
|
||||
|
||||
bool IsDirty(void);
|
||||
|
||||
void* GetData();
|
||||
short GetType();
|
||||
long GetSize();
|
||||
|
||||
bool IsDirty();
|
||||
};
|
||||
|
||||
// Represents a column description
|
||||
@ -184,13 +185,13 @@ class WXDLLEXPORT wxQueryCol: public wxObject
|
||||
bool nullable;
|
||||
long varsize;
|
||||
void* var;
|
||||
|
||||
|
||||
public:
|
||||
wxList fields;
|
||||
|
||||
wxQueryCol(void);
|
||||
~wxQueryCol(void);
|
||||
|
||||
|
||||
wxQueryCol();
|
||||
~wxQueryCol();
|
||||
|
||||
void* BindVar(void*, long);
|
||||
void FillVar(int);
|
||||
void AppendField(void*, long);
|
||||
@ -199,10 +200,10 @@ class WXDLLEXPORT wxQueryCol: public wxObject
|
||||
void SetNullable(bool);
|
||||
void SetFieldDirty(int, bool =TRUE);
|
||||
void SetType(short);
|
||||
|
||||
char* GetName(void);
|
||||
short GetType(void);
|
||||
bool IsNullable(void);
|
||||
|
||||
char* GetName();
|
||||
short GetType();
|
||||
bool IsNullable();
|
||||
void* GetData(int);
|
||||
long GetSize(int);
|
||||
|
||||
@ -217,7 +218,7 @@ class WXDLLEXPORT wxRecordSet: public wxObject
|
||||
int cursor;
|
||||
int type;
|
||||
int options;
|
||||
|
||||
|
||||
protected:
|
||||
HSTMT hStmt;
|
||||
int nFields;
|
||||
@ -232,48 +233,50 @@ class WXDLLEXPORT wxRecordSet: public wxObject
|
||||
wxRETCODE retcode;
|
||||
wxList cols;
|
||||
wxList fetchbuf;
|
||||
|
||||
|
||||
void FillVars(int);
|
||||
|
||||
public:
|
||||
// JACS gave parent a default value for benefit of IMPLEMENT_DYNAMIC_CLASS
|
||||
wxRecordSet(wxDatabase *parent = NULL, int =wxOPEN_TYPE_DYNASET, int =wxOPTION_DEFAULT);
|
||||
~wxRecordSet(void);
|
||||
|
||||
wxRecordSet(wxDatabase *parent = NULL,
|
||||
int = wxOPEN_TYPE_DYNASET,
|
||||
int = wxOPTION_DEFAULT);
|
||||
~wxRecordSet();
|
||||
|
||||
// My own, lower-level functions.
|
||||
bool BeginQuery(int openType, char *sql = NULL, int options = wxOPTION_DEFAULT);
|
||||
bool EndQuery(void);
|
||||
bool EndQuery();
|
||||
bool Query(char* columns, char* table =NULL, char *filter =NULL);
|
||||
|
||||
// Attributes
|
||||
inline int GetNumberFields(void) { return nFields; }
|
||||
inline int GetNumberParams(void) { return nParams; }
|
||||
long GetNumberRecords(void);
|
||||
long GetNumberCols(void);
|
||||
long GetNumberRecords();
|
||||
long GetNumberCols();
|
||||
inline char *GetFilter(void) { return recordFilter; }
|
||||
inline char *GetSortString(void) { return sortString; }
|
||||
inline wxDatabase *GetDatabase(void) { return parentdb; }
|
||||
inline wxRETCODE GetErrorCode(void) { return retcode; }
|
||||
bool CanAppend(void);
|
||||
bool CanRestart(void);
|
||||
bool CanScroll(void);
|
||||
bool CanTransact(void);
|
||||
bool CanUpdate(void);
|
||||
long GetCurrentRecord(void);
|
||||
bool RecordCountFinal(void);
|
||||
bool GetResultSet(void);
|
||||
bool CanAppend();
|
||||
bool CanRestart();
|
||||
bool CanScroll();
|
||||
bool CanTransact();
|
||||
bool CanUpdate();
|
||||
long GetCurrentRecord();
|
||||
bool RecordCountFinal();
|
||||
bool GetResultSet();
|
||||
bool ExecuteSQL(char*);
|
||||
bool GetTables(void);
|
||||
bool GetTables();
|
||||
bool GetColumns(char* =NULL);
|
||||
bool GetPrimaryKeys(char* =NULL);
|
||||
bool GetForeignKeys(char* , char * );
|
||||
char *GetTableName(void);
|
||||
char *GetTableName();
|
||||
void SetTableName(char*);
|
||||
char *GetSQL(void);
|
||||
bool IsOpen(void);
|
||||
bool IsBOF(void);
|
||||
bool IsEOF(void);
|
||||
bool IsDeleted(void);
|
||||
char *GetSQL();
|
||||
bool IsOpen();
|
||||
bool IsBOF();
|
||||
bool IsEOF();
|
||||
bool IsDeleted();
|
||||
|
||||
bool GetFieldData(int colPos, int dataType, void *dataPtr);
|
||||
bool GetFieldData(const char*, int dataType, void *dataPtr);
|
||||
@ -286,50 +289,50 @@ class WXDLLEXPORT wxRecordSet: public wxObject
|
||||
void* BindVar(const char*, void*, long);
|
||||
|
||||
void SetType(int);
|
||||
int GetType(void);
|
||||
int GetType();
|
||||
void SetOptions(int);
|
||||
int GetOptions(void);
|
||||
|
||||
int GetOptions();
|
||||
|
||||
// Update operations
|
||||
void AddNew(void);
|
||||
bool Delete(void);
|
||||
void Edit(void);
|
||||
bool Update(void);
|
||||
void AddNew();
|
||||
bool Delete();
|
||||
void Edit();
|
||||
bool Update();
|
||||
|
||||
// Record navigation
|
||||
virtual bool Move(long rows);
|
||||
virtual bool MoveFirst(void);
|
||||
virtual bool MoveLast(void);
|
||||
virtual bool MoveNext(void);
|
||||
virtual bool MovePrev(void);
|
||||
virtual bool MoveFirst();
|
||||
virtual bool MoveLast();
|
||||
virtual bool MoveNext();
|
||||
virtual bool MovePrev();
|
||||
virtual bool GoTo(long);
|
||||
|
||||
// Others
|
||||
bool GetDataSources(void);
|
||||
bool GetDataSources();
|
||||
|
||||
// Associate a column name/position with a data location
|
||||
// bool BindColumn(int colPos, int dataType, void *dataPtr);
|
||||
|
||||
void Cancel(void);
|
||||
void Cancel();
|
||||
bool IsFieldDirty(int);
|
||||
bool IsFieldDirty(const char*);
|
||||
bool IsFieldNull(int);
|
||||
bool IsFieldNull(const char*);
|
||||
bool IsColNullable(int);
|
||||
bool IsColNullable(const char*);
|
||||
virtual bool Requery(void);
|
||||
virtual bool Requery();
|
||||
virtual void SetFieldDirty(int, bool dirty = TRUE);
|
||||
virtual void SetFieldDirty(const char*, bool dirty = TRUE);
|
||||
void SetFieldNull(void *p, bool isNull = TRUE);
|
||||
|
||||
// Overridables
|
||||
virtual char *GetDefaultConnect(void);
|
||||
virtual char *GetDefaultSQL(void);
|
||||
|
||||
virtual char *GetDefaultConnect();
|
||||
virtual char *GetDefaultSQL();
|
||||
|
||||
// Internal
|
||||
|
||||
|
||||
// Build SQL query from column specification
|
||||
bool ConstructDefaultSQL(void);
|
||||
bool ConstructDefaultSQL();
|
||||
void SetDefaultSQL(char *s);
|
||||
bool ReleaseHandle(void); // Added JACS
|
||||
};
|
||||
|
@ -35,7 +35,7 @@
|
||||
public:
|
||||
// override base class virtuals
|
||||
// ----------------------------
|
||||
|
||||
|
||||
// this one is called on application startup and is a good place for the app
|
||||
// initialization (doing it here and not in the ctor allows to have an error
|
||||
// return: if OnInit() returns false, the application terminates)
|
||||
@ -48,7 +48,7 @@
|
||||
public:
|
||||
// ctor(s)
|
||||
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
|
||||
|
||||
|
||||
// event handlers (these functions should _not_ be virtual)
|
||||
void OnQuit(wxCommandEvent& event);
|
||||
void OnAbout(wxCommandEvent& event);
|
||||
@ -71,10 +71,7 @@
|
||||
Minimal_Quit = 1,
|
||||
Minimal_About,
|
||||
Minimal_Back,
|
||||
Minimal_Forward,
|
||||
|
||||
// controls start here (the numbers are, of course, arbitrary)
|
||||
Minimal_Text = 1000,
|
||||
Minimal_Forward
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -90,18 +87,18 @@
|
||||
EVT_MENU(Minimal_Back, MyFrame::OnBack)
|
||||
EVT_MENU(Minimal_Forward, MyFrame::OnForward)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
// Create a new application object: this macro will allow wxWindows to create
|
||||
// the application object during program execution (it's better than using a
|
||||
// static object for many reasons) and also declares the accessor function
|
||||
// wxGetApp() which will return the reference of the right type (i.e. MyApp and
|
||||
// not wxApp)
|
||||
IMPLEMENT_APP(MyApp)
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
// ============================================================================
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// the application class
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -114,18 +111,18 @@
|
||||
#if wxUSE_LIBJPEG
|
||||
wxImage::AddHandler(new wxJPEGHandler);
|
||||
#endif
|
||||
|
||||
|
||||
wxFileSystem::AddHandler(new wxZipFSHandler);
|
||||
|
||||
|
||||
// Create the main application window
|
||||
MyFrame *frame = new MyFrame("wxHtmlWindow testing application",
|
||||
wxPoint(50, 50), wxSize(640, 480));
|
||||
|
||||
|
||||
// Show it and tell the application that it's our main window
|
||||
// @@@ what does it do exactly, in fact? is it necessary here?
|
||||
frame->Show(TRUE);
|
||||
SetTopWindow(frame);
|
||||
|
||||
|
||||
// success: wxApp::OnRun() will be called which will enter the main message
|
||||
// loop and the application will run. If we returned FALSE here, the
|
||||
// application would exit immediately.
|
||||
@ -157,7 +154,7 @@ wxHtmlWindow *html;
|
||||
|
||||
// ... and attach this menu bar to the frame
|
||||
SetMenuBar(menuBar);
|
||||
|
||||
|
||||
CreateStatusBar(1);
|
||||
|
||||
{
|
||||
|
@ -1,13 +1,11 @@
|
||||
#if !defined(__VISAGECPP__)
|
||||
# pragma warning(disable:4001) /* non standard extension used: single line comment */
|
||||
#endif
|
||||
#include "wx/setup.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#if wxUSE_APPLE_IEEE
|
||||
|
||||
/*
|
||||
* C O N V E R T T O I E E E E X T E N D E D
|
||||
* C O N V E R T T O I E E E E X T E N D E D
|
||||
*/
|
||||
|
||||
/* Copyright (C) 1988-1991 Apple Computer, Inc.
|
||||
@ -16,7 +14,7 @@
|
||||
* Machine-independent I/O routines for IEEE floating-point numbers.
|
||||
*
|
||||
* NaN's and infinities are converted to HUGE_VAL or HUGE, which
|
||||
* happens to be infinity on IEEE machines. Unfortunately, it is
|
||||
* happens to be infinity on IEEE machines. Unfortunately, it is
|
||||
* impossible to preserve NaN's in a machine-independent way.
|
||||
* Infinities are, however, preserved on IEEE machines.
|
||||
*
|
||||
@ -49,67 +47,68 @@
|
||||
|
||||
void ConvertToIeeeExtended(double num, unsigned char *bytes)
|
||||
{
|
||||
int sign;
|
||||
int expon;
|
||||
double fMant, fsMant;
|
||||
unsigned long hiMant, loMant;
|
||||
int sign;
|
||||
int expon;
|
||||
double fMant, fsMant;
|
||||
unsigned long hiMant, loMant;
|
||||
|
||||
if (num < 0) {
|
||||
sign = 0x8000;
|
||||
num *= -1;
|
||||
} else {
|
||||
sign = 0;
|
||||
}
|
||||
if (num < 0) {
|
||||
sign = 0x8000;
|
||||
num *= -1;
|
||||
} else {
|
||||
sign = 0;
|
||||
}
|
||||
|
||||
if (num == 0) {
|
||||
expon = 0; hiMant = 0; loMant = 0;
|
||||
}
|
||||
else {
|
||||
fMant = frexp(num, &expon);
|
||||
if ((expon > 16384) || !(fMant < 1)) { /* Infinity or NaN */
|
||||
expon = sign|0x7FFF; hiMant = 0; loMant = 0; /* infinity */
|
||||
}
|
||||
else { /* Finite */
|
||||
expon += 16382;
|
||||
if (expon < 0) { /* denormalized */
|
||||
fMant = ldexp(fMant, expon);
|
||||
expon = 0;
|
||||
}
|
||||
expon |= sign;
|
||||
fMant = ldexp(fMant, 32);
|
||||
fsMant = floor(fMant);
|
||||
hiMant = FloatToUnsigned(fsMant);
|
||||
fMant = ldexp(fMant - fsMant, 32);
|
||||
fsMant = floor(fMant);
|
||||
loMant = FloatToUnsigned(fsMant);
|
||||
}
|
||||
}
|
||||
if (num == 0) {
|
||||
expon = 0; hiMant = 0; loMant = 0;
|
||||
}
|
||||
else {
|
||||
fMant = frexp(num, &expon);
|
||||
if ((expon > 16384) || !(fMant < 1)) { /* Infinity or NaN */
|
||||
expon = sign|0x7FFF; hiMant = 0; loMant = 0; /* infinity */
|
||||
}
|
||||
else { /* Finite */
|
||||
expon += 16382;
|
||||
if (expon < 0) { /* denormalized */
|
||||
fMant = ldexp(fMant, expon);
|
||||
expon = 0;
|
||||
}
|
||||
expon |= sign;
|
||||
fMant = ldexp(fMant, 32);
|
||||
fsMant = floor(fMant);
|
||||
hiMant = FloatToUnsigned(fsMant);
|
||||
fMant = ldexp(fMant - fsMant, 32);
|
||||
fsMant = floor(fMant);
|
||||
loMant = FloatToUnsigned(fsMant);
|
||||
}
|
||||
}
|
||||
|
||||
/* disable the warning about 'possible loss of data' & 'conversion between diff types' */
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable: 4244)
|
||||
#pragma warning(disable: 4135)
|
||||
#endif /* Visual C++ */
|
||||
/* disable the warning about 'possible loss of data' & 'conversion between
|
||||
* diff types' */
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable: 4244)
|
||||
#pragma warning(disable: 4135)
|
||||
#endif /* Visual C++ */
|
||||
|
||||
bytes[0] = (expon >> 8) & 0xff;
|
||||
bytes[1] = expon & 0xff;
|
||||
bytes[2] = (unsigned char) ((hiMant >> 24) & 0xff);
|
||||
bytes[3] = (unsigned char) ((hiMant >> 16) & 0xff);
|
||||
bytes[4] = (unsigned char) ((hiMant >> 8) & 0xff);
|
||||
bytes[5] = (unsigned char) (hiMant & 0xff);
|
||||
bytes[6] = (unsigned char) ((loMant >> 24) & 0xff);
|
||||
bytes[7] = (unsigned char) ((loMant >> 16) & 0xff);
|
||||
bytes[8] = (unsigned char) ((loMant >> 8) & 0xff);
|
||||
bytes[9] = (unsigned char) (loMant & 0xff);
|
||||
bytes[0] = (expon >> 8) & 0xff;
|
||||
bytes[1] = expon & 0xff;
|
||||
bytes[2] = (unsigned char) ((hiMant >> 24) & 0xff);
|
||||
bytes[3] = (unsigned char) ((hiMant >> 16) & 0xff);
|
||||
bytes[4] = (unsigned char) ((hiMant >> 8) & 0xff);
|
||||
bytes[5] = (unsigned char) (hiMant & 0xff);
|
||||
bytes[6] = (unsigned char) ((loMant >> 24) & 0xff);
|
||||
bytes[7] = (unsigned char) ((loMant >> 16) & 0xff);
|
||||
bytes[8] = (unsigned char) ((loMant >> 8) & 0xff);
|
||||
bytes[9] = (unsigned char) (loMant & 0xff);
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(default: 4244)
|
||||
#pragma warning(default: 4135)
|
||||
#endif /* Visual C++ */
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(default: 4244)
|
||||
#pragma warning(default: 4135)
|
||||
#endif /* Visual C++ */
|
||||
}
|
||||
|
||||
/*
|
||||
* C O N V E R T F R O M I E E E E X T E N D E D
|
||||
* C O N V E R T F R O M I E E E E X T E N D E D
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -119,16 +118,16 @@ void ConvertToIeeeExtended(double num, unsigned char *bytes)
|
||||
* Machine-independent I/O routines for IEEE floating-point numbers.
|
||||
*
|
||||
* NaN's and infinities are converted to HUGE_VAL or HUGE, which
|
||||
* happens to be infinity on IEEE machines. Unfortunately, it is
|
||||
* happens to be infinity on IEEE machines. Unfortunately, it is
|
||||
* impossible to preserve NaN's in a machine-independent way.
|
||||
* Infinities are, however, preserved on IEEE machines.
|
||||
*
|
||||
* These routines have been tested on the following machines:
|
||||
* Apple Macintosh, MPW 3.1 C compiler
|
||||
* Apple Macintosh, THINK C compiler
|
||||
* Silicon Graphics IRIS, MIPS compiler
|
||||
* Cray X/MP and Y/MP
|
||||
* Digital Equipment VAX
|
||||
* Apple Macintosh, MPW 3.1 C compiler
|
||||
* Apple Macintosh, THINK C compiler
|
||||
* Silicon Graphics IRIS, MIPS compiler
|
||||
* Cray X/MP and Y/MP
|
||||
* Digital Equipment VAX
|
||||
*
|
||||
*
|
||||
* Implemented by Malcolm Slaney and Ken Turkowski.
|
||||
@ -156,38 +155,38 @@ void ConvertToIeeeExtended(double num, unsigned char *bytes)
|
||||
|
||||
double ConvertFromIeeeExtended(const unsigned char *bytes)
|
||||
{
|
||||
double f;
|
||||
int expon;
|
||||
unsigned long hiMant, loMant;
|
||||
double f;
|
||||
int expon;
|
||||
unsigned long hiMant, loMant;
|
||||
|
||||
expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF);
|
||||
hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24)
|
||||
| ((unsigned long) (bytes[3] & 0xFF) << 16)
|
||||
| ((unsigned long) (bytes[4] & 0xFF) << 8)
|
||||
| ((unsigned long) (bytes[5] & 0xFF));
|
||||
loMant = ((unsigned long) (bytes[6] & 0xFF) << 24)
|
||||
| ((unsigned long) (bytes[7] & 0xFF) << 16)
|
||||
| ((unsigned long) (bytes[8] & 0xFF) << 8)
|
||||
| ((unsigned long) (bytes[9] & 0xFF));
|
||||
expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF);
|
||||
hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24)
|
||||
| ((unsigned long) (bytes[3] & 0xFF) << 16)
|
||||
| ((unsigned long) (bytes[4] & 0xFF) << 8)
|
||||
| ((unsigned long) (bytes[5] & 0xFF));
|
||||
loMant = ((unsigned long) (bytes[6] & 0xFF) << 24)
|
||||
| ((unsigned long) (bytes[7] & 0xFF) << 16)
|
||||
| ((unsigned long) (bytes[8] & 0xFF) << 8)
|
||||
| ((unsigned long) (bytes[9] & 0xFF));
|
||||
|
||||
if (expon == 0 && hiMant == 0 && loMant == 0) {
|
||||
f = 0;
|
||||
}
|
||||
else {
|
||||
if (expon == 0x7FFF) { /* Infinity or NaN */
|
||||
f = HUGE_VAL;
|
||||
}
|
||||
else {
|
||||
expon -= 16383;
|
||||
f = ldexp(UnsignedToFloat(hiMant), expon-=31);
|
||||
f += ldexp(UnsignedToFloat(loMant), expon-=32);
|
||||
}
|
||||
}
|
||||
if (expon == 0 && hiMant == 0 && loMant == 0) {
|
||||
f = 0;
|
||||
}
|
||||
else {
|
||||
if (expon == 0x7FFF) { /* Infinity or NaN */
|
||||
f = HUGE_VAL;
|
||||
}
|
||||
else {
|
||||
expon -= 16383;
|
||||
f = ldexp(UnsignedToFloat(hiMant), expon-=31);
|
||||
f += ldexp(UnsignedToFloat(loMant), expon-=32);
|
||||
}
|
||||
}
|
||||
|
||||
if (bytes[0] & 0x80)
|
||||
return -f;
|
||||
else
|
||||
return f;
|
||||
if (bytes[0] & 0x80)
|
||||
return -f;
|
||||
else
|
||||
return f;
|
||||
}
|
||||
|
||||
#endif /* wxUSE_APPLE_IEEE */
|
||||
|
Loading…
Reference in New Issue
Block a user