uox3/source/JSEncapsulate.h
Charles Kerr 96e92ea581
Pull2 (#89)
* updated STARTLOCATIONDATA to use std::string, removed typedef

* removed __STARTLOCATIONDATA_ from typedef

* cleanup

* Update Prerequisites.h

* cleanup, no functional code change

* Update cdice.h
2022-06-07 10:49:13 -04:00

135 lines
2.5 KiB
C++

#include "Prerequisites.h"
/* Include all the standard header *after* all the configuration
settings have been made.
*/
#include "UOXStdHeaders.h"
// Pre-declare classes
// Allows use of pointers in header files without including individual .h
// so decreases dependencies between files
class CBaseTile;
class cAccountClass;
class CBaseObject;
class cBooks;
class CBoatObj;
class CChar;
class cCharStuff;
class cCommands;
class CConsole;
class cDice;
class CDictionary;
class CDictionaryContainer;
class cDirectoryListing;
class CEndL;
class cEffects;
class CEnvoke;
class CGuild;
class CGuildCollection;
class CGump;
class cHTMLTemplate;
class cHTMLTemplates;
class cItem;
class CItem;
class CJSMapping;
class CJSMappingSection;
class CLand;
class cMagic;
class CMagicMove;
class CMagicStat;
class CMapHandler;
class CMapRegion;
class CMulHandler;
class cMovement;
class CMultiObj;
class cNetworkStuff;
class CPUOXBuffer;
class CPInputBuffer;
class cRaces;
class CRace;
class cScript;
class CServerData;
class CServerDefinitions;
class CServerProfile;
class cSkillClass;
class cSkills;
class CSocket;
class CSpawnItem;
class CSpawnRegion;
class CSpeechEntry;
class CSpeechQueue;
class CTEffect;
class CThreadQueue;
class CTile;
class CTileUni;
class CTownRegion;
class CVersionClass;
class CWeather;
class cWeatherAb;
class CWeight;
class cWhoList;
class CWorldMain;
class GumpDisplay;
class HelpRequest;
class JailCell;
class JailSystem;
class ObjectFactory;
class Script;
class ScriptSection;
class SpellInfo;
class UOXFile;
/** In order to avoid finger-aches :)
*/
#include "enums.h"
#include "typedefs.h"
enum JSEncapsObjectType
{
JSOT_INT = 0,
JSOT_DOUBLE,
JSOT_BOOL,
JSOT_STRING,
JSOT_OBJECT,
JSOT_NULL,
JSOT_VOID,
JSOT_COUNT
};
class JSEncapsulate
{
public:
JSEncapsulate( JSContext *jsCX, jsval *jsVP );
JSEncapsulate( JSContext *jsCX, JSObject *jsVP );
JSEncapsulate();
void SetContext( JSContext *jsCX, jsval *jsVP );
bool isType( JSEncapsObjectType toCheck );
SI32 toInt( void );
bool toBool( void );
R32 toFloat( void );
std::string toString( void );
void * toObject( void );
std::string ClassName( void );
private:
void InternalReset( void );
void Init( void );
bool beenParsed[JSOT_COUNT+1];
JSEncapsObjectType nativeType;
SI32 intVal;
R32 floatVal;
bool boolVal;
std::string stringVal;
void * objectVal;
JSContext * cx;
jsval * vp;
JSObject * obj;
std::string className;
bool classCached;
void Parse( JSEncapsObjectType typeConvert );
};