ISXEQ Compile errors

Moderator: MacroQuest Developers

LamahHerder
a hill giant
a hill giant
Posts: 299
Joined: Sat Jun 29, 2002 2:37 am

ISXEQ Compile errors

Post by LamahHerder » Sat Jun 13, 2015 4:54 pm

I am sure I am doing something wrong for ISXEQ, have no problems compiling mq2...

Procedure
  • 1. install vs2013 community
    2. DL install ISXDK, made sure to put it in c:\program files (x86)\inner space\isxdk like the macros set in vc++ directories within the MQ2.zip SLN file http://www.lavishsoft.com/download/
    3. DL+Install LSModule and put it in folder that SLN file refers to http://www.lavishsoft.com/download/
    4. DL and unzip mq2.zip
    5. copy my MQ2Auth0.h into ..\mq2main
    6. open ISXEQ.sln from zip into vs2013
    7. right click ISXEQ, select build

Initially I had problems with isxdk not being found, and i could not get vs2013 to proper include the normal install path for isxdk (c:\programfiles\isxdk) so I reinstalled it to the path that I saw within the sln and was able to move forward

Now I am getting a ton of errors like

'UInt64' : is not a member of

example from my compile failure

What am I missing?

Code: Select all

Error	210	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQCommands.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	536	1	ISXEQ
Error	211	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQCommands.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	212	error C2039: 'UInt64' : is not a member of '_LSTypeVar' (ISXEQ\ISXEQCommands.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	213	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQCommands.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	546	1	ISXEQ
Error	221	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQ.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	536	1	ISXEQ
Error	222	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQ.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	223	error C2039: 'UInt64' : is not a member of '_LSTypeVar' (ISXEQ\ISXEQ.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	224	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQ.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	546	1	ISXEQ
Error	230	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQCommandAPI.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	536	1	ISXEQ
Error	231	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQCommandAPI.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	232	error C2039: 'UInt64' : is not a member of '_LSTypeVar' (ISXEQ\ISXEQCommandAPI.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	233	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQCommandAPI.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	546	1	ISXEQ
Error	234	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQDataTypes.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	536	1	ISXEQ
Error	235	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQDataTypes.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	236	error C2039: 'UInt64' : is not a member of '_LSTypeVar' (ISXEQ\ISXEQDataTypes.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	237	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQDataTypes.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	546	1	ISXEQ
Error	447	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQServices.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	536	1	ISXEQ
Error	448	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQServices.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	449	error C2039: 'UInt64' : is not a member of '_LSTypeVar' (ISXEQ\ISXEQServices.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	450	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQServices.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	546	1	ISXEQ
Error	458	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQUtilities.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	536	1	ISXEQ
Error	459	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQUtilities.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	460	error C2039: 'UInt64' : is not a member of '_LSTypeVar' (ISXEQ\ISXEQUtilities.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	461	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQUtilities.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	546	1	ISXEQ
Error	462	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQTopLevelObjects.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	536	1	ISXEQ
Error	463	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQTopLevelObjects.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	464	error C2039: 'UInt64' : is not a member of '_LSTypeVar' (ISXEQ\ISXEQTopLevelObjects.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	541	1	ISXEQ
Error	465	error C2039: 'UInt64' : is not a member of '_LSVarPtr' (ISXEQ\ISXEQTopLevelObjects.cpp)	c:\dl\mq2-20150611\mq2main\MQ2DataTypes.h	546	1	ISXEQ

Image

LamahHerder
a hill giant
a hill giant
Posts: 299
Joined: Sat Jun 29, 2002 2:37 am

Re: ISXEQ Compile errors

Post by LamahHerder » Sat Jun 13, 2015 5:37 pm

Little more diggig

I find in the isxeq source...

Code: Select all

		/* Note -- if you get an error compiling this for ISXSDK,  
			error C2039 : 'UInt64' : is not a member of '_LSVarPtr' 
			Then add "unsigned __int64 UInt64;" under the Int64 definition in _LSVarPtr and _LSTypeVar in ISXDK\include\LavishScript\LSType.h 
			This should be fixed in ISXDK35 or higher. 
		*/ 
Not exactly sure the syntax for specifying this for the int64 definition


Looking at LSType.h

Code: Select all

typedef struct _LSVarPtr
{
	_LSVarPtr()
	{
		Int64 = 0;
	}

	union 
	{
		__int64 Int64;
		double Float64;
		unsigned char Array64[8];
		struct 
		{
			union 
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
} LSOBJECTDATA, *PLSOBJECTDATA, LSVARPTR, *PLSVARPTR;

typedef struct _LSTypeVar
{
	_LSTypeVar()
	{
		Type = 0;
		Int64 = 0;
	}

	__inline LSOBJECTDATA &GetObjectData()
	{
		return *(LSOBJECTDATA*)&Int64;
	}

	__inline void SetObjectData(const LSOBJECTDATA &new_data)
	{
		Int64 = new_data.Int64;
	}

	union {
		class LSTypeDefinition *Type;
		class LSTypeDefinition *ObjectType;
	};
	union {
//		LSOBJECTDATA VarPtr;
//		LSOBJECTDATA ObjectData;
		__int64 Int64;
		double Float64;
		unsigned char Array64[8];
		struct
		{
			union
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
} LSOBJECT, *PLSOBJECT, LSTYPEVAR, *PLSTYPEVAR;
So I added it where it seemed sensible.... but now get different errors

Here is my modified where I added "unsigned __int64 UInt64;" under the __int64 Int64 sections in what I think the entire definition is...

Code: Select all

typedef struct _LSVarPtr
{
	_LSVarPtr()
	{
		Int64 = 0;
	}

	union 
	{
		__int64 Int64;
		unsigned __int64 UInt64;
/*
ADDED unsigned __int64 UInt64; ABOVE HERE but not working
*/ 
		double Float64;
		unsigned char Array64[8];
		struct 
		{
			union 
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
} LSOBJECTDATA, *PLSOBJECTDATA, LSVARPTR, *PLSVARPTR;

typedef struct _LSTypeVar
{
	_LSTypeVar()
	{
		Type = 0;
		Int64 = 0;
	}

	__inline LSOBJECTDATA &GetObjectData()
	{
		return *(LSOBJECTDATA*)&Int64;
	}

	__inline void SetObjectData(const LSOBJECTDATA &new_data)
	{
		Int64 = new_data.Int64;
	}

	union {
		class LSTypeDefinition *Type;
		class LSTypeDefinition *ObjectType;
	};
	union {
//		LSOBJECTDATA VarPtr;
//		LSOBJECTDATA ObjectData;
		__int64 Int64;
		unsigned __int64 UInt64;
/*
ADDED unsigned __int64 UInt64; ABOVE HERE but not working
*/ 
		double Float64;
		unsigned char Array64[8];
		struct
		{
			union
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
} LSOBJECT, *PLSOBJECT, LSTYPEVAR, *PLSTYPEVAR;
Now I get these errors on compile

Code: Select all

Error	4353	error MSB3073: The command ""C:\dl\MQ2-20150611\ISXEQ\PostBuild.bat" "C:\dl\MQ2-20150611\" "C:\dl\MQ2-20150611\Release\" ISXEQ
:VCEnd" exited with code 1.	C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets	132	5	ISXEQ
	4354	IntelliSense: return type may not be specified on a conversion function	c:\dl\MQ2-20150611\MQ2Main\EQClasses.h	397	14	ISXEQ
	4355	IntelliSense: return type may not be specified on a conversion function	c:\dl\MQ2-20150611\MQ2Main\EQClasses.h	398	14	ISXEQ
	4356	IntelliSense: return type may not be specified on a conversion function	c:\dl\MQ2-20150611\MQ2Main\EQClasses.h	6131	14	ISXEQ
	4357	IntelliSense: class "_LSVarPtr" has no member "UInt64"	c:\dl\MQ2-20150611\MQ2Main\MQ2DataTypes.h	536	18	ISXEQ
	4358	IntelliSense: class "_LSVarPtr" has no member "UInt64"	c:\dl\MQ2-20150611\MQ2Main\MQ2DataTypes.h	541	16	ISXEQ
	4359	IntelliSense: class "_LSTypeVar" has no member "UInt64"	c:\dl\MQ2-20150611\MQ2Main\MQ2DataTypes.h	541	30	ISXEQ
	4360	IntelliSense: class "_LSVarPtr" has no member "UInt64"	c:\dl\MQ2-20150611\MQ2Main\MQ2DataTypes.h	546	16	ISXEQ

LamahHerder
a hill giant
a hill giant
Posts: 299
Joined: Sat Jun 29, 2002 2:37 am

Re: ISXEQ Compile errors

Post by LamahHerder » Sat Jun 13, 2015 6:12 pm

So I added it above the closing } for the sections and it seems to have worked

Code: Select all

typedef struct _LSVarPtr
{
	_LSVarPtr()
	{
		Int64 = 0;
	}

	union 
	{
		__int64 Int64;
		double Float64;
		unsigned char Array64[8];
		struct 
		{
			union 
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
	unsigned __int64 UInt64;
} LSOBJECTDATA, *PLSOBJECTDATA, LSVARPTR, *PLSVARPTR;

typedef struct _LSTypeVar
{
	_LSTypeVar()
	{
		Type = 0;
		Int64 = 0;
	}

	__inline LSOBJECTDATA &GetObjectData()
	{
		return *(LSOBJECTDATA*)&Int64;
	}

	__inline void SetObjectData(const LSOBJECTDATA &new_data)
	{
		Int64 = new_data.Int64;
	}

	union {
		class LSTypeDefinition *Type;
		class LSTypeDefinition *ObjectType;
	};
	union {
//		LSOBJECTDATA VarPtr;
//		LSOBJECTDATA ObjectData;
		__int64 Int64;
		double Float64;
		unsigned char Array64[8];
		struct
		{
			union
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
	unsigned __int64 UInt64;
} LSOBJECT, *PLSOBJECT, LSTYPEVAR, *PLSTYPEVAR;


I now get the error

Code: Select all

Error	4353	error MSB3073: The command ""C:\dl\MQ2-20150611\ISXEQ\PostBuild.bat" "C:\dl\MQ2-20150611\" "C:\dl\MQ2-20150611\Release\" ISXEQ
:VCEnd" exited with code 1.	C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets	132	5	ISXEQ
I copied the ISXEQ*.dll files to ..\extensions on innerspace
When I open console and 'ext isxeq' I get a crash =(

EqMule
Developer
Developer
Posts: 2697
Joined: Fri Jan 03, 2003 9:57 pm
Contact:

Re: ISXEQ Compile errors

Post by EqMule » Sat Jun 13, 2015 7:13 pm

this is my lstype.h from isxdk 34

I just opened the isxeq-2005.sln in vs 2013 and let it all convert
I let it set Platform Toolset to 2013 v120
then I just used the below file and it builds eventually after building a few times with 0 error 0 warning... don't know what to tell u I don't use isxeq myself so... *shrug*

Only thing I couldn't get a clean build on was the ISEQ.NET thingy... no idea there.

Code: Select all

#pragma once
#pragma warning( push )
#pragma warning( disable : 4505 )
#ifndef __LSTYPE_H__
#define __LSTYPE_H__
#define TypeMember(name) AddMember((DWORD)name,""#name)
#define TypeMethod(name) AddMethod((DWORD)name,""#name)
#include <math.h>
#include <map>
#include <string>
using namespace std;

typedef struct _RGBColor
{
	union {
		unsigned int ulColor;
		struct {
			unsigned char Red;
			unsigned char Green;
			unsigned char Blue;
			unsigned char Reserved;
		};
        struct {
            BYTE B;
            BYTE G;
            BYTE R;
            BYTE A;
        };
        DWORD ARGB;
	};
} RGBCOLOR, *PRGBCOLOR;

typedef struct _LSVarPtr
{
	_LSVarPtr()
	{
		Int64 = 0;
	}

	union 
	{
		__int64 Int64;
		unsigned __int64 UInt64;
		double Float64;
		unsigned char Array64[8];
		struct 
		{
			union 
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
} LSOBJECTDATA, *PLSOBJECTDATA, LSVARPTR, *PLSVARPTR;

typedef struct _LSTypeVar
{
	_LSTypeVar()
	{
		Type = 0;
		Int64 = 0;
	}

	__inline LSOBJECTDATA &GetObjectData()
	{
		return *(LSOBJECTDATA*)&Int64;
	}

	__inline void SetObjectData(const LSOBJECTDATA &new_data)
	{
		Int64 = new_data.Int64;
	}

	union {
		class LSTypeDefinition *Type;
		class LSTypeDefinition *ObjectType;
	};
	union {
//		LSOBJECTDATA VarPtr;
//		LSOBJECTDATA ObjectData;
		__int64 Int64;
		unsigned __int64 UInt64;
		double Float64;
		unsigned char Array64[8];
		struct
		{
			union
			{
				void *Ptr;
				float Float;
				unsigned int DWord;
				unsigned int *DWordPtr;
				int   Int;
				unsigned char Array[4];
				char *CharPtr;
				wchar_t *WCharPtr;
				__int64 *Int64Ptr;
				double *Float64Ptr;
				const void *ConstPtr;
				const char *ConstCharPtr;
				const wchar_t *ConstWCharPtr;
				RGBCOLOR RGB;
			};
			unsigned int HighDWord;
		};
	};
} LSOBJECT, *PLSOBJECT, LSTYPEVAR, *PLSTYPEVAR;

typedef bool(__cdecl *fLSTypeMember)(LSTypeDefinition *pType, LSOBJECTDATA, int argc, char *argv[], LSOBJECT &);
typedef bool(__cdecl *fLSTypeMethod)(LSTypeDefinition *pType, LSOBJECTDATA &, int argc, char *argv[]);
typedef void (__cdecl *fLSGenericEnumCallback)(const char *Name, void *pData);

typedef struct _LSTypeMember
{
	unsigned int ID;
	char *Name;
	union {
		fLSTypeMember MemberCallback;
		fLSTypeMethod MethodCallback;
	};
	_LSTypeMember *pPrev;
	_LSTypeMember *pNext;
} LSTYPEMEMBER, *PLSTYPEMEMBER, LSTYPEMETHOD, *PLSTYPEMETHOD;

typedef struct _Point1f
{
	float X;
} POINT1F, *PPOINT1F;

typedef struct _Point2f : public _Point1f
{
	float Y;
} POINT2F, *PPOINT2F;

typedef struct _Point3f : public _Point2f
{
	float Z;
} POINT3F, *PPOINT3F;

typedef struct _Point1i
{
	int X;
} POINT1I, *PPOINT1I;

typedef struct _Point2i : public _Point1i
{
	int Y;
} POINT2I, *PPOINT2I;

typedef struct _Point3i : public _Point2i
{
	int Z;
} POINT3I, *PPOINT3I;

static inline FLOAT GetDistance3D(_Point3f &P1,_Point3f &P2)
{
    FLOAT dX = P1.X - P2.X;
    FLOAT dY = P1.Y - P2.Y;
    FLOAT dZ = P1.Z - P2.Z;
    return sqrtf(dX*dX + dY*dY + dZ*dZ);
}

static inline FLOAT GetDistance3DNoSqrt(_Point3f &P1,_Point3f &P2)
{
    FLOAT dX = P1.X - P2.X;
    FLOAT dY = P1.Y - P2.Y;
    FLOAT dZ = P1.Z - P2.Z;
    return (dX*dX + dY*dY + dZ*dZ);
}

static inline FLOAT GetDistance2D(_Point2f &P1,_Point2f &P2)
{
    FLOAT dX = P1.X - P2.X;
    FLOAT dY = P1.Y - P2.Y;
    return sqrtf(dX*dX + dY*dY);
}

static inline FLOAT GetDistance2DNoSqrt(_Point2f &P1,_Point2f &P2)
{
    FLOAT dX = P1.X - P2.X;
    FLOAT dY = P1.Y - P2.Y;
    return (dX*dX + dY*dY);
}

static inline FLOAT GetDistance2D(_Point2i &P1,_Point2i &P2)
{
    FLOAT dX = (FLOAT)(P1.X - P2.X);
    FLOAT dY = (FLOAT)(P1.Y - P2.Y);
    return sqrtf(dX*dX + dY*dY);
}

static inline FLOAT GetDistance2DNoSqrt(_Point2i &P1,_Point2i &P2)
{
    FLOAT dX = (FLOAT)(P1.X - P2.X);
    FLOAT dY = (FLOAT)(P1.Y - P2.Y);
    return (dX*dX + dY*dY);
}

static bool DistancePointLine(POINT2F &Point,POINT2F &SegmentStart,POINT2F &SegmentEnd,float &Result)
{
    float SegmentLength= GetDistance2D(SegmentStart,SegmentEnd);
    float U= (((Point.X-SegmentStart.X) * (SegmentEnd.X-SegmentStart.X))+
			   ((Point.Y-SegmentStart.Y) * (SegmentEnd.Y-SegmentStart.Y)))/
				(SegmentLength*SegmentLength);
    if (U<0.0f || U>1.0f)
	{
		// no intersection
        return false; 
	}
	// calculate intersection point
	POINT2F Intersection;
    Intersection.X = SegmentStart.X + U * ( SegmentEnd.X - SegmentStart.X );
    Intersection.Y = SegmentStart.Y + U * ( SegmentEnd.Y - SegmentStart.Y );
	// and now the distance from the point to the start of the segment
    Result = GetDistance2D( Point, Intersection );
    return true;
}

extern void RegisterTemporaryObject(class CTempObject *);

class CTempObject
{
public:
	CTempObject()
	{
		RegisterTemporaryObject(this);
	}
	virtual ~CTempObject()
	{
	}
	virtual void Delete()
	{
		delete this;
	}
};

template<typename T>
class CTemporaryObject : public CTempObject
{
public:
	T Object;
};

class LSBinary
{
public:
	LSBinary(size_t InitialSize = 64);
	LSBinary(void *buf, size_t buflen);
	~LSBinary();

	bool Copy(void *buf, size_t buflen);
	size_t Resize(size_t NewSize);
	bool Reset(unsigned char Value);
	bool Reset(unsigned int Begin, size_t Length, unsigned char Value);
	bool Copy(unsigned int Begin, void *buf, size_t buflen);

	inline void *GetBuffer()
	{
		return pBuffer;
	}
	inline size_t GetSize() { return Size; }
	inline size_t GetUsed() { return Used; }

	inline void SetUsed(size_t NewUsed) { Used = NewUsed; }

protected:
	void *pBuffer;
	size_t Size;
	size_t Used;
};

#define INHERITDIRECT(_inherit_) \
	virtual int GetInheritedMember(LSOBJECTDATA ObjectData, char *Member, int argc, char *argv[], LSOBJECT &Dest)\
	{\
		return _inherit_->GetMemberEx(ObjectData,Member,argc,argv,Dest);\
	}\
	virtual int GetInheritedMethod(LSOBJECTDATA &ObjectData, char *Method, int argc, char *argv[])\
	{\
		return _inherit_->GetMethodEx(ObjectData,Method,argc,argv);\
	}\
	virtual int GetInheritedIndex(LSOBJECTDATA &ObjectData, int argc, char *argv[], LSOBJECT &Dest)\
	{\
		return _inherit_->GetIndex(ObjectData,argc,argv,Dest);\
	}

#define INHERITINDIRECT(_inherit_,_convertto_,_convertfrom_) \
	virtual int GetInheritedMember(LSOBJECTDATA ObjectData, char *Member, int argc, char *argv[], LSOBJECT &Dest)\
	{\
		LSOBJECTDATA Temp;\
		_convertto_;\
		return _inherit_->GetMemberEx(Temp,Member,argc,argv,Dest);\
	}\
	virtual int GetInheritedIndex(LSOBJECTDATA ObjectData, int argc, char *argv[], LSOBJECT &Dest)\
	{\
		LSOBJECTDATA Temp;\
		_convertto_;\
		return _inherit_->GetIndex(Temp,argc,argv,Dest);\
	}\
	virtual int GetInheritedMethod(LSOBJECTDATA &ObjectData, char *Method, int argc, char *argv[])\
	{\
		LSOBJECTDATA Temp;\
		_convertto_;\
		int Ret=_inherit_->GetMethodEx(Temp,Method,argc,argv);\
		if (Ret>0)\
		{\
			_convertfrom_;\
		}\
		return Ret;\
	}

class LSTypeDefinition
{
public:
	LSTypeDefinition(char *NewName);

	inline void InitializeMembers(PLSTYPEMEMBER MemberArray)
	{
		for (unsigned int i = 0 ; MemberArray[i].ID ; i++)
		{
			AddMember(MemberArray[i].ID,MemberArray[i].Name);
		}
	}

	virtual ~LSTypeDefinition();

	virtual bool __declspec(deprecated) FromString(LSOBJECTDATA &ObjectData, char *Source)  {return false;}

	virtual bool FromText(LSOBJECTDATA &ObjectData, int argc, char *argv[]);// calls the other FromText by default.

	virtual bool FromText(LSOBJECTDATA &ObjectData, char *Source) 
	{
#pragma warning( push )
#pragma warning( disable : 4996 )
		return FromString(ObjectData,Source);
#pragma warning( pop )
	}

	virtual void InitVariable(LSOBJECTDATA &ObjectData) {ObjectData.Int64=0;}
	virtual bool InitVariable(LSOBJECTDATA &ObjectData, const char *SubType) {if (SubType && SubType[0]) return false; InitVariable(ObjectData); return true;}

	virtual void FreeVariable(LSOBJECTDATA &ObjectData) {}

	virtual bool __declspec(deprecated) GetMember(LSOBJECTDATA ObjectData, char *Member, int argc, char *argv[], LSOBJECT &Dest)
	{
		return false;
	}
	virtual bool __declspec(deprecated) GetMethod(LSOBJECTDATA &ObjectData, char *Method, int argc, char *argv[])
	{
		return false;
	}

	virtual bool GetMember(LSOBJECTDATA ObjectData, PLSTYPEMEMBER pMember, int argc, char *argv[], LSOBJECT &Dest)
	{
#pragma warning( push )
#pragma warning( disable : 4996 )
		return GetMember(ObjectData,pMember->Name,argc,argv,Dest);
#pragma warning( pop )
	}
	virtual bool GetMethod(LSOBJECTDATA &ObjectData, PLSTYPEMETHOD pMethod, int argc, char *argv[])
	{
#pragma warning( push )
#pragma warning( disable : 4996 )
		return GetMethod(ObjectData,pMethod->Name,argc,argv);
#pragma warning( pop )
	}

	virtual int GetIndex(LSOBJECTDATA ObjectData, int argc, char *argv[], LSOBJECT &Dest)
	{
		return GetInheritedIndex(ObjectData,argc,argv,Dest);
/*		// SAMPLE
		// This will let the index automatically access a member called GetIndex
		return GetMemberEx(ObjectData,"GetIndex",argc,argv,Dest);
/**/

	}

	virtual int GetMemberEx(LSOBJECTDATA ObjectData, char *Member, int argc, char *argv[], LSOBJECT &Dest);
	virtual int GetMethodEx(LSOBJECTDATA &ObjectData, char *Method, int argc, char *argv[]);

	virtual int GetInheritedIndex(LSOBJECTDATA ObjectData, int argc, char *argv[], LSOBJECT &Dest)
	{
		return -1;
/*		// SAMPLE
		// convert ObjectData to inherited type
		ObjectData.Ptr=((string*)ObjectData.Ptr)->c_str();
		// try inherited type
		return pStringType->GetIndex(ObjectData,argc,argv,Dest);
/**/
	}


	virtual int GetInheritedMember(LSOBJECTDATA ObjectData, char *Member, int argc, char *argv[], LSOBJECT &Dest)
	{
		return -1;	
/*		// SAMPLE
		// convert ObjectData to inherited type
		ObjectData.Ptr=((string*)ObjectData.Ptr)->c_str();
		// try inherited type
		return pStringType->GetMemberEx(ObjectData,Member,argc,argv,Dest);
/**/
	}
	virtual int GetInheritedMethod(LSOBJECTDATA &ObjectData, char *Method, int argc, char *argv[])
	{
		return -1;
/*		
		// SAMPLE: Direct conversion
		return pStringType->GetMethodEx(ObjectData,argc,argv);

		// SAMPLE: Special conversion required
		// make temporary ObjectData for inherited type
		LSOBJECTDATA Temp;
		Temp.Ptr=((string*)ObjectData.Ptr)->c_str();
		// try inherited type
		int Ret=pStringType->GetMethodEx(Temp,Method,argc,argv);
		if (Ret>0)
		{
			// string changed, replace old string
			((string*)ObjectData.Ptr)->assign(Temp.CharPtr);
		}
		return Ret;
/**/
	}


	virtual bool ToText(LSOBJECTDATA ObjectData, char *buf, unsigned int buflen)
	{
#pragma warning( push )
#pragma warning( disable : 4996 )
		return ToText(ObjectData,buf);
#pragma warning( pop )
	}


	virtual bool __declspec(deprecated) ToText(LSOBJECTDATA ObjectData, char *Destination)
	{
#pragma warning( push )
#pragma warning( disable : 4996 )
		return ToString(ObjectData,Destination);
#pragma warning( pop )
	}

	virtual bool __declspec(deprecated) ToString(LSOBJECTDATA ObjectData, char *Destination)
	{
		return false;
	}

	inline char *GetName() {return &TypeName[0];}
	inline LSTypeDefinition *GetInheritance() {return pInherits;}

	char *GetMemberName(unsigned int ID);
	bool GetMemberID(char *Name, unsigned int &Result);
	PLSTYPEMEMBER FindMember(char *Name);
	virtual bool InheritedMember(char *Name);

	char *GetMethodName(unsigned int ID);
	bool GetMethodID(char *Name, unsigned int &Result);
	PLSTYPEMETHOD FindMethod(char *Name);
	virtual bool InheritedMethod(char *Name);

	virtual LSTypeDefinition *GetVariableType()
	{
		return this;
	}

	void SetInheritance(LSTypeDefinition *pNewInherit);

	unsigned int RegisterVariable(struct _LSTypeVariable *);
	inline struct _LSTypeVariable *GetVariableByID(unsigned int ID)
	{
		map<unsigned int,struct _LSTypeVariable *>::iterator i=Variables.find(ID);
		if (i!=Variables.end())
			return i->second;
		return 0;
	}
	void UnregisterVariable(unsigned int ID);

	virtual bool AddMember(unsigned int ID, char *Name, fLSTypeMember Callback=0);
	virtual bool AddMember(char *Name, fLSTypeMember Callback=0);
	virtual bool RemoveMember(char *Name, fLSTypeMember Callback=0);

	virtual bool AddMethod(unsigned int ID, char *Name, fLSTypeMethod Callback=0);
	virtual bool AddMethod(char *Name, fLSTypeMethod Callback=0);
	virtual bool RemoveMethod(char *Name, fLSTypeMethod Callback=0);

	unsigned int EnumMembers(fLSGenericEnumCallback Callback, void *pData);
	unsigned int EnumMethods(fLSGenericEnumCallback Callback, void *pData);

protected:
	char TypeName[32];
	CIndex<PLSTYPEMEMBER> Members;
	map<string,unsigned int> MemberMap;
	CIndex<PLSTYPEMETHOD> Methods;
	map<string,unsigned int> MethodMap;
	LSTypeDefinition *pInherits;

	unsigned int NextMethodID;
	unsigned int NextMemberID;

	unsigned int NextVariableID;
	map<unsigned int,struct _LSTypeVariable *> Variables;
	bool bShutdown;
};

class CLSObject : public LSOBJECT
{
public:
	CLSObject()
	{
		Int64=0;
		Type=0;
	}
	~CLSObject()
	{
		Reset();
	}
	inline void Reset()
	{
		if (Type)
		{
			Type->FreeVariable(GetObjectData());
			Type=0;
		}
	}
	bool Initialize(LSTypeDefinition *pType, const char *SubType, int argc=0, char *argv[]=0)
	{
		if (Type)
			Reset();
		if (!pType)
			return false;
		pType=pType->GetVariableType();
		if (!pType)
			return false;
		if (!pType->InitVariable(GetObjectData(), SubType))
			return false;
		if (!pType->FromText(GetObjectData(), argc, argv))
		{
			pType->FreeVariable(GetObjectData());
			return false;
		}
		Type=pType;
		return true;
	}
};


#define LSType LSTypeDefinition
#endif
#pragma warning( pop )
My status o/
If you like MQ2 and would like to contribute, please do. My goal is 25 donations per month.
So far I've received Image donations for this month's patches.

Bitcoin: 1Aq8ackjQ4f7AUvbUL7BE6oPfT8PmNP4Zq
Krono: PM me.
I can always use characters for testing, PM me if you can donate one.

LamahHerder
a hill giant
a hill giant
Posts: 299
Joined: Sat Jun 29, 2002 2:37 am

Re: ISXEQ Compile errors

Post by LamahHerder » Sat Jun 13, 2015 10:22 pm

TY Eqmule

Your .h worked but still CTD
Will post debug later.