Merge with develop

This commit is contained in:
kervala 2016-12-10 19:52:43 +01:00
parent 75e183e637
commit dab3de7a74
198 changed files with 1225 additions and 1963 deletions

View file

@ -255,8 +255,19 @@ MACRO(USE_CURRENT_WINSDK)
SET(WINSDK_VERSION "6.0A") SET(WINSDK_VERSION "6.0A")
ENDIF() ENDIF()
ELSEIF(MSVC80) ELSEIF(MSVC80)
IF(NOT MSVC_EXPRESS) SET(WINSDK_MSVC80_COMPATIBLES "7.1" "7.1A" "7.0" "7.0A" "6.1" "6.0" "6.0A" "5.2A")
# TODO: fix this version
# look for each Windows SDK supported by VC++ 2005 (7.1 is the latest)
FOREACH(_VERSION ${WINSDK_DETECTED_VERSIONS})
# look if this version of Windows SDK is installed
LIST(FIND WINSDK_MSVC80_COMPATIBLES ${_VERSION} _FOUND)
IF(NOT _FOUND EQUAL -1)
SET(WINSDK_VERSION "${_VERSION}")
BREAK()
ENDIF()
ENDFOREACH()
IF(NOT MSVC_EXPRESS AND NOT WINSDK_VERSION)
SET(WINSDK_VERSION "5.2A") SET(WINSDK_VERSION "5.2A")
ENDIF() ENDIF()
ELSE() ELSE()
@ -441,8 +452,8 @@ IF(WINSDK_INCLUDE_DIR)
SET(CMAKE_LIBRARY_PATH ${WINSDK_LIBRARY_DIR} ${CMAKE_LIBRARY_PATH}) SET(CMAKE_LIBRARY_PATH ${WINSDK_LIBRARY_DIR} ${CMAKE_LIBRARY_PATH})
# Fix for using Windows SDK 7.1 with Visual C++ 2012 # Fix for using Windows SDK 7.1 with Visual C++ 2012, 2013 and 2015
IF(WINSDK_VERSION STREQUAL "7.1" AND MSVC11) IF(WINSDK_VERSION STREQUAL "7.1" AND (MSVC11 OR MSVC12 OR MSVC14))
ADD_DEFINITIONS(-D_USING_V110_SDK71_) ADD_DEFINITIONS(-D_USING_V110_SDK71_)
ENDIF() ENDIF()
ELSE() ELSE()

View file

@ -888,7 +888,11 @@ MACRO(NL_SETUP_BUILD)
ENDIF() ENDIF()
# never display these warnings because they are minor # never display these warnings because they are minor
ADD_PLATFORM_FLAGS("-Wno-unused-parameter -Wno-unused-private-field -Wno-unused-local-typedef -Wno-unused-variable") ADD_PLATFORM_FLAGS("-Wno-unused-parameter -Wno-unused-variable -Wunused-function -Wunused-value")
IF(CLANG)
ADD_PLATFORM_FLAGS("-Wno-unused-private-field -Wno-unused-local-typedef")
ENDIF()
IF(ANDROID) IF(ANDROID)
ADD_PLATFORM_FLAGS("--sysroot=${PLATFORM_ROOT}") ADD_PLATFORM_FLAGS("--sysroot=${PLATFORM_ROOT}")

View file

@ -93,7 +93,7 @@ public:
uint addAnimation (const char* fileName, const char* animName, bool displayMissingFileWarning = true) uint addAnimation (const char* fileName, const char* animName, bool displayMissingFileWarning = true)
{ {
// Allocate an animation // Allocate an animation
std::auto_ptr<CAnimation> anim (new CAnimation); CUniquePtr<CAnimation> anim (new CAnimation);
// Read it // Read it
NLMISC::CIFile file; NLMISC::CIFile file;
@ -130,7 +130,7 @@ public:
virtual uint addSkeletonWeight (const char* fileName, const char* skelName) virtual uint addSkeletonWeight (const char* fileName, const char* skelName)
{ {
// Allocate an animation // Allocate an animation
std::auto_ptr<CSkeletonWeight> skeletonWeight (new CSkeletonWeight); CUniquePtr<CSkeletonWeight> skeletonWeight (new CSkeletonWeight);
// Read it // Read it
NLMISC::CIFile file; NLMISC::CIFile file;

View file

@ -692,7 +692,7 @@ private:
{ {
NLMISC::CMatrix TexMat[IDRV_MAT_MAXTEXTURES]; NLMISC::CMatrix TexMat[IDRV_MAT_MAXTEXTURES];
}; };
std::auto_ptr<CUserTexMat> _TexUserMat; // user texture matrix CUniquePtr<CUserTexMat> _TexUserMat; // user texture matrix
public: public:
// Private. For Driver only. // Private. For Driver only.

View file

@ -282,7 +282,7 @@ inline float CPSAttribMakerBinOp<float>::getMaxValue(void) const
template <class T> template <class T>
inline CPSAttribMakerBinOp<T>::CPSAttribMakerBinOp(const CPSAttribMakerBinOp &other) : CPSAttribMaker<T>(other) // parent copy ctor inline CPSAttribMakerBinOp<T>::CPSAttribMakerBinOp(const CPSAttribMakerBinOp &other) : CPSAttribMaker<T>(other) // parent copy ctor
{ {
std::auto_ptr<CPSAttribMaker<T> > a0(NLMISC::safe_cast<CPSAttribMaker<T> *>(other._Arg[0]->clone())) CUniquePtr<CPSAttribMaker<T> > a0(NLMISC::safe_cast<CPSAttribMaker<T> *>(other._Arg[0]->clone()))
, a1(NLMISC::safe_cast<CPSAttribMaker<T> *>(other._Arg[1]->clone())); , a1(NLMISC::safe_cast<CPSAttribMaker<T> *>(other._Arg[1]->clone()));
this->_Op = other._Op; this->_Op = other._Op;
this->_Size = other._Size; this->_Size = other._Size;

View file

@ -1463,7 +1463,7 @@ public:
CPSAttribMakerMemoryBase(const CPSAttribMakerMemoryBase &src) : CPSAttribMaker<T>(src) // parent copy ctor CPSAttribMakerMemoryBase(const CPSAttribMakerMemoryBase &src) : CPSAttribMaker<T>(src) // parent copy ctor
{ {
nlassert(src._Scheme); nlassert(src._Scheme);
std::auto_ptr<CPSAttribMaker<T> > s(NLMISC::safe_cast<CPSAttribMaker<T> *>(src._Scheme->clone())); CUniquePtr<CPSAttribMaker<T> > s(NLMISC::safe_cast<CPSAttribMaker<T> *>(src._Scheme->clone()));
this->_T = src._T; this->_T = src._T;
this->_DefaultValue = src._DefaultValue; this->_DefaultValue = src._DefaultValue;
this->_Scheme = s.release(); this->_Scheme = s.release();

View file

@ -590,7 +590,7 @@ protected:
void serial(NLMISC::IStream &f) throw(NLMISC::EStream); void serial(NLMISC::IStream &f) throw(NLMISC::EStream);
}; };
typedef std::auto_ptr<CGlobalTexAnims> PGlobalTexAnims; typedef CUniquePtr<CGlobalTexAnims> PGlobalTexAnims;
PGlobalTexAnims _GlobalTexAnims; PGlobalTexAnims _GlobalTexAnims;
float _GlobalAnimDate; float _GlobalAnimDate;

View file

@ -107,7 +107,7 @@ public:
const CPrimitiveClass *getPrimitiveClass (const NLLIGO::IPrimitive &primitive) const; const CPrimitiveClass *getPrimitiveClass (const NLLIGO::IPrimitive &primitive) const;
// Get a primitive class // Get a primitive class
const CPrimitiveClass *getPrimitiveClass (const char *className) const; const CPrimitiveClass *getPrimitiveClass (const std::string &className) const;
// Get the primitive color // Get the primitive color
NLMISC::CRGBA getPrimitiveColor (const NLLIGO::IPrimitive &primitive); NLMISC::CRGBA getPrimitiveColor (const NLLIGO::IPrimitive &primitive);
@ -134,10 +134,10 @@ public:
bool canBeRoot (const NLLIGO::IPrimitive &primitive); bool canBeRoot (const NLLIGO::IPrimitive &primitive);
// Read a property from an XML file // Read a property from an XML file
bool getPropertyString (std::string &result, const char *filename, xmlNodePtr xmlNode, const char *propName); bool getPropertyString (std::string &result, const std::string &filename, xmlNodePtr xmlNode, const std::string &propName);
// Output error message // Output error message
void syntaxError (const char *filename, xmlNodePtr xmlNode, const char *format, ...); void syntaxError (const std::string &filename, xmlNodePtr xmlNode, const char *format, ...);
virtual void errorMessage (const char *format, ... ); virtual void errorMessage (const char *format, ... );
// Access to the config string // Access to the config string
@ -157,7 +157,7 @@ public:
private: private:
// Init primitive class manager // Init primitive class manager
bool initPrimitiveClass (const char *filename); bool initPrimitiveClass (const std::string &ilename);
// The primitive class manager // The primitive class manager
std::map<std::string, CPrimitiveClass> _PrimitiveClasses; std::map<std::string, CPrimitiveClass> _PrimitiveClasses;

View file

@ -83,9 +83,8 @@ class CPropertyString : public IProperty
{ {
public: public:
CPropertyString () {} CPropertyString () {}
CPropertyString (const char *str);
CPropertyString (const std::string &str); CPropertyString (const std::string &str);
CPropertyString (const char *str, bool _default); CPropertyString (const std::string &str, bool _default);
virtual ~CPropertyString () {} virtual ~CPropertyString () {}
std::string String; std::string String;
@ -287,42 +286,42 @@ public:
* If the property already exist, the method does nothing and returns false. * If the property already exist, the method does nothing and returns false.
* The pointer will be deleted by the primitive using the ::delete operator. * The pointer will be deleted by the primitive using the ::delete operator.
**/ **/
bool addPropertyByName (const char *property_name, IProperty *result); bool addPropertyByName (const std::string &property_name, IProperty *result);
/** /**
* Get a property with its name * Get a property with its name
**/ **/
bool getPropertyByName (const char *property_name, const IProperty *&result) const; bool getPropertyByName (const std::string &property_name, const IProperty *&result) const;
/** /**
* Get a property with its name * Get a property with its name
**/ **/
bool getPropertyByName (const char *property_name, IProperty *&result) const; bool getPropertyByName (const std::string &property_name, IProperty *&result) const;
/** /**
* Get a string property with its name. Return false if the property is not found or is not a string property. * Get a string property with its name. Return false if the property is not found or is not a string property.
**/ **/
bool getPropertyByName (const char *property_name, std::string *&result) const; bool getPropertyByName (const std::string &property_name, std::string *&result) const;
/** /**
* Get a string array property with its name. Return false if the property is not found or is not a string array property. * Get a string array property with its name. Return false if the property is not found or is not a string array property.
**/ **/
bool getPropertyByName (const char *property_name, std::vector<std::string> *&result) const; bool getPropertyByName (const std::string &property_name, std::vector<std::string> *&result) const;
/** /**
* Get a string property with its name. Return false if the property is not found or is not a string property. * Get a string property with its name. Return false if the property is not found or is not a string property.
**/ **/
bool getPropertyByName (const char *property_name, std::string &result) const; bool getPropertyByName (const std::string &property_name, std::string &result) const;
/** /**
* Get a string array property with its name. Return false if the property is not found or is not a string array property. * Get a string array property with its name. Return false if the property is not found or is not a string array property.
**/ **/
bool getPropertyByName (const char *property_name, const std::vector<std::string> *&result) const; bool getPropertyByName (const std::string &property_name, const std::vector<std::string> *&result) const;
/** /**
* Get a color property with its name. Return false if the property is not found or is not a string array property. * Get a color property with its name. Return false if the property is not found or is not a string array property.
**/ **/
bool getPropertyByName (const char *property_name, NLMISC::CRGBA &result) const; bool getPropertyByName (const std::string &property_name, NLMISC::CRGBA &result) const;
/** /**
* Remove a property * Remove a property
@ -333,7 +332,7 @@ public:
/** /**
* Remove a property by its name * Remove a property by its name
**/ **/
bool removePropertyByName (const char *property_name); bool removePropertyByName (const std::string &property_name);
/** /**
* Remove all the properties * Remove all the properties
@ -347,10 +346,10 @@ public:
void initDefaultValues (CLigoConfig &config); void initDefaultValues (CLigoConfig &config);
// Read the primitive, calls initDefaultValue (CLigoConfig &config) // Read the primitive, calls initDefaultValue (CLigoConfig &config)
virtual bool read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config); virtual bool read (xmlNodePtr xmlNode, const std::string &property_name, uint version, CLigoConfig &config);
// Write the primitive // Write the primitive
virtual void write (xmlNodePtr xmlNode, const char *filename) const; virtual void write (xmlNodePtr xmlNode, const std::string &property_name) const;
// Get the vertices // Get the vertices
virtual uint getNumVector () const = 0; virtual uint getNumVector () const = 0;
@ -435,7 +434,7 @@ protected:
virtual CPrimVector *getPrimVector (); virtual CPrimVector *getPrimVector ();
// Read the primitive // Read the primitive
virtual bool read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config); virtual bool read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config);
// \name From IPrimitive // \name From IPrimitive
virtual IPrimitive *copy () const; virtual IPrimitive *copy () const;
@ -474,10 +473,10 @@ protected:
virtual CPrimVector *getPrimVector (); virtual CPrimVector *getPrimVector ();
// Read the primitive // Read the primitive
virtual bool read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config); virtual bool read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config);
// Write the primitive // Write the primitive
virtual void write (xmlNodePtr xmlNode, const char *filename) const; virtual void write (xmlNodePtr xmlNode, const std::string &filename) const;
// \name From IPrimitive // \name From IPrimitive
virtual IPrimitive *copy () const; virtual IPrimitive *copy () const;
@ -509,10 +508,10 @@ protected:
virtual CPrimVector *getPrimVector (); virtual CPrimVector *getPrimVector ();
// Read the primitive // Read the primitive
virtual bool read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config); virtual bool read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config);
// Write the primitive // Write the primitive
virtual void write (xmlNodePtr xmlNode, const char *filename) const; virtual void write (xmlNodePtr xmlNode, const std::string &filename) const;
// \name From IPrimitive // \name From IPrimitive
virtual IPrimitive *copy () const; virtual IPrimitive *copy () const;
@ -568,10 +567,10 @@ protected:
virtual CPrimVector *getPrimVector (); virtual CPrimVector *getPrimVector ();
// Read the primitive // Read the primitive
virtual bool read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config); virtual bool read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config);
// Write the primitive // Write the primitive
virtual void write (xmlNodePtr xmlNode, const char *filename) const; virtual void write (xmlNodePtr xmlNode, const std::string &filename) const;
// \name From IPrimitive // \name From IPrimitive
virtual IPrimitive *copy () const; virtual IPrimitive *copy () const;
@ -632,9 +631,9 @@ public:
uint32 getFullAlias() const; uint32 getFullAlias() const;
// Read the primitive // Read the primitive
virtual bool read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config); virtual bool read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config);
// Write the primitive // Write the primitive
virtual void write (xmlNodePtr xmlNode, const char *filename) const; virtual void write (xmlNodePtr xmlNode, const std::string &filename) const;
// Create a copy of this primitive // Create a copy of this primitive
virtual IPrimitive *copy () const; virtual IPrimitive *copy () const;
// serial for binary save // serial for binary save
@ -686,13 +685,13 @@ public:
void convert (const CPrimRegion &region); void convert (const CPrimRegion &region);
// Read the primitive // Read the primitive
bool read (xmlNodePtr xmlNode, const char *filename, CLigoConfig &config); bool read (xmlNodePtr xmlNode, const std::string &filename, CLigoConfig &config);
// Write the primitive // Write the primitive
void write (xmlDocPtr xmlNode, const char *filename) const; void write (xmlDocPtr xmlNode, const std::string &filename) const;
// Write the primitive // Write the primitive
void write (xmlNodePtr root, const char *filename) const; void write (xmlNodePtr root, const std::string &filename) const;
// serial the primitive. Used for binary files. // serial the primitive. Used for binary files.
void serial(NLMISC::IStream &f); void serial(NLMISC::IStream &f);

View file

@ -108,6 +108,7 @@ namespace NLMISC
{ {
public: public:
CApplicationContext(); CApplicationContext();
virtual ~CApplicationContext();
virtual void *getSingletonPointer(const std::string &singletonName); virtual void *getSingletonPointer(const std::string &singletonName);
virtual void setSingletonPointer(const std::string &singletonName, void *ptr); virtual void setSingletonPointer(const std::string &singletonName, void *ptr);

View file

@ -201,7 +201,9 @@ namespace NLMISC
*/ */
void sleep(uint milliseconds); void sleep(uint milliseconds);
/** Release internal instance.
*/
static void releaseInstance();
}; };

View file

@ -120,11 +120,11 @@ public:
/** Get the first child node pointer named childName. NULL if no node named childName. /** Get the first child node pointer named childName. NULL if no node named childName.
*/ */
static xmlNodePtr getFirstChildNode (xmlNodePtr parent, const char *childName); static xmlNodePtr getFirstChildNode (xmlNodePtr parent, const std::string &childName);
/** Get the next child node pointer name childName, brother of previous. NULL if no node named childName. /** Get the next child node pointer name childName, brother of previous. NULL if no node named childName.
*/ */
static xmlNodePtr getNextChildNode (xmlNodePtr last, const char *childName); static xmlNodePtr getNextChildNode (xmlNodePtr last, const std::string &childName);
/** Get the first child node pointer of type. NULL if no node of type. /** Get the first child node pointer of type. NULL if no node of type.
*/ */
@ -136,7 +136,7 @@ public:
/** Count number of sub node named with a given name for a given node. /** Count number of sub node named with a given name for a given node.
*/ */
static uint countChildren (xmlNodePtr node, const char *childName); static uint countChildren (xmlNodePtr node, const std::string &childName);
/** Count number of sub node of type for a given node. /** Count number of sub node of type for a given node.
*/ */
@ -147,22 +147,22 @@ public:
* *
* Returns true and the result if the property has been found, else false. * Returns true and the result if the property has been found, else false.
*/ */
static bool getPropertyString (std::string &result, xmlNodePtr node, const char *property); static bool getPropertyString (std::string &result, xmlNodePtr node, const std::string &property);
/** /**
* Read an integer property - if the property is not found the default value is returned * Read an integer property - if the property is not found the default value is returned
*/ */
static int getIntProperty(xmlNodePtr node, const char *property, int defaultValue); static int getIntProperty(xmlNodePtr node, const std::string &property, int defaultValue);
/** /**
* Read a floating point property - if the property is not found the default value is returned * Read a floating point property - if the property is not found the default value is returned
*/ */
static double getFloatProperty(xmlNodePtr node, const char *property, float defaultValue); static double getFloatProperty(xmlNodePtr node, const std::string &property, float defaultValue);
/** /**
* Read a string property - if the property is not found the default value is returned * Read a string property - if the property is not found the default value is returned
*/ */
static std::string getStringProperty(xmlNodePtr node, const char *property, const std::string& defaultValue); static std::string getStringProperty(xmlNodePtr node, const std::string &property, const std::string& defaultValue);
/** /**
* Read the content of the node as a string * Read the content of the node as a string
@ -198,12 +198,12 @@ private:
virtual void serialBuffer(uint8 *buf, uint len); virtual void serialBuffer(uint8 *buf, uint len);
virtual void serialBit(bool &bit); virtual void serialBit(bool &bit);
virtual bool xmlPushBeginInternal (const char *nodeName); virtual bool xmlPushBeginInternal (const std::string &nodeName);
virtual bool xmlPushEndInternal (); virtual bool xmlPushEndInternal ();
virtual bool xmlPopInternal (); virtual bool xmlPopInternal ();
virtual bool xmlSetAttribInternal (const char *attribName); virtual bool xmlSetAttribInternal (const std::string &attribName);
virtual bool xmlBreakLineInternal (); virtual bool xmlBreakLineInternal ();
virtual bool xmlCommentInternal (const char *comment); virtual bool xmlCommentInternal (const std::string &comment);
// Internal functions // Internal functions
void serialSeparatedBufferIn ( std::string &value, bool checkSeparator = true ); void serialSeparatedBufferIn ( std::string &value, bool checkSeparator = true );

View file

@ -95,7 +95,7 @@ public:
* \param version is the version to write in the XML header. Default is 1.0. * \param version is the version to write in the XML header. Default is 1.0.
* \return true if initialisation is successful, false if the stream passed is not an output stream. * \return true if initialisation is successful, false if the stream passed is not an output stream.
*/ */
bool init (IStream *stream, const char *version="1.0"); bool init (IStream *stream, const std::string &version = "1.0");
/** Return the error string. /** Return the error string.
* if not empty, something wrong appends * if not empty, something wrong appends
@ -120,7 +120,7 @@ public:
/** Return true if the string is valid to be stored in a XML property without modification. /** Return true if the string is valid to be stored in a XML property without modification.
*/ */
static bool isStringValidForProperties (const char *str); static bool isStringValidForProperties (const std::string &str);
private: private:
@ -144,15 +144,15 @@ private:
virtual void serialBuffer(uint8 *buf, uint len); virtual void serialBuffer(uint8 *buf, uint len);
virtual void serialBit(bool &bit); virtual void serialBit(bool &bit);
virtual bool xmlPushBeginInternal (const char *nodeName); virtual bool xmlPushBeginInternal (const std::string &nodeName);
virtual bool xmlPushEndInternal (); virtual bool xmlPushEndInternal ();
virtual bool xmlPopInternal (); virtual bool xmlPopInternal ();
virtual bool xmlSetAttribInternal (const char *attribName); virtual bool xmlSetAttribInternal (const std::string &attribName);
virtual bool xmlBreakLineInternal (); virtual bool xmlBreakLineInternal ();
virtual bool xmlCommentInternal (const char *comment); virtual bool xmlCommentInternal (const std::string &comment);
// Internal functions // Internal functions
void serialSeparatedBufferOut( const char *value ); void serialSeparatedBufferOut( const std::string &value );
inline void flushContentString (); inline void flushContentString ();
// Push mode // Push mode

View file

@ -83,8 +83,10 @@ private:
# define NL_USES_DEFAULT_ARENA_OBJECT_ALLOCATOR \ # define NL_USES_DEFAULT_ARENA_OBJECT_ALLOCATOR \
void *operator new(size_t size) { return NLMISC::CObjectArenaAllocator::getDefaultAllocator().alloc((uint) size); }\ void *operator new(size_t size) { return NLMISC::CObjectArenaAllocator::getDefaultAllocator().alloc((uint) size); }\
void *operator new(size_t size, int _BlockUse, char const* _FileName, int _LineNumber) { return NLMISC::CObjectArenaAllocator::getDefaultAllocator().alloc((uint) size); }\ void *operator new(size_t size, int _BlockUse, char const* _FileName, int _LineNumber) { return NLMISC::CObjectArenaAllocator::getDefaultAllocator().alloc((uint) size); }\
void *operator new(size_t size, char const* _FileName, int _LineNumber) { return NLMISC::CObjectArenaAllocator::getDefaultAllocator().alloc((uint) size); }\
void operator delete(void *block) { NLMISC::CObjectArenaAllocator::getDefaultAllocator().freeBlock(block); }\ void operator delete(void *block) { NLMISC::CObjectArenaAllocator::getDefaultAllocator().freeBlock(block); }\
void operator delete(void *block, int _BlockUse, char const* _FileName, int _LineNumber) { NLMISC::CObjectArenaAllocator::getDefaultAllocator().freeBlock(block); } void operator delete(void *block, int _BlockUse, char const* _FileName, int _LineNumber) { NLMISC::CObjectArenaAllocator::getDefaultAllocator().freeBlock(block); } \
void operator delete(void *block, char const* _FileName, int _LineNumber) { NLMISC::CObjectArenaAllocator::getDefaultAllocator().freeBlock(block); }
} }

View file

@ -209,7 +209,7 @@ public:
* \param relativePath is the path to make relative to basePath. * \param relativePath is the path to make relative to basePath.
* return true if relativePath as been done relative to basePath, false is relativePath has not been changed. * return true if relativePath as been done relative to basePath, false is relativePath has not been changed.
*/ */
bool makePathRelative (const char *basePath, std::string &relativePath); bool makePathRelative (const std::string &basePath, std::string &relativePath);
/** If File in this list is added more than one in an addSearchPath, it doesn't launch a warning. /** If File in this list is added more than one in an addSearchPath, it doesn't launch a warning.
*/ */
@ -505,7 +505,7 @@ public:
* \param relativePath is the path to make relative to basePath. * \param relativePath is the path to make relative to basePath.
* return true if relativePath as been done relative to basePath, false is relativePath has not been changed. * return true if relativePath as been done relative to basePath, false is relativePath has not been changed.
*/ */
static bool makePathRelative (const char *basePath, std::string &relativePath); static bool makePathRelative(const std::string &basePath, std::string &relativePath);
/** Make path absolute /** Make path absolute
* \param relativePath - The relative path * \param relativePath - The relative path

View file

@ -108,7 +108,7 @@ template <class TPtr, class TKey, class TResourceFinder>
class CResourcePtr class CResourcePtr
{ {
private: private:
CRefCount::CPtrInfo *pinfo; // A ptr to the handle of the object. CRefCount::CPtrInfoBase *pinfo; // A ptr to the handle of the object.
TKey Key; // The key used to find the pointer TKey Key; // The key used to find the pointer
mutable TPtr *Ptr; // A cache for pinfo->Ptr. Useful to speed up ope->() and ope*() mutable TPtr *Ptr; // A cache for pinfo->Ptr. Useful to speed up ope->() and ope*()

View file

@ -61,7 +61,7 @@ template <class TPtr, class TKey, class TResourceFinder> SMART_INLINE void CReso
if(pinfo->Ptr) if(pinfo->Ptr)
{ {
// Inform the Object that no more CResourcePtr points on it. // Inform the Object that no more CResourcePtr points on it.
((TPtr*)(pinfo->Ptr))->pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); ((TPtr*)(pinfo->Ptr))->pinfo = &CRefCount::NullPtrInfo;
} }
// Then delete the pinfo. // Then delete the pinfo.
delete pinfo; delete pinfo;
@ -74,7 +74,7 @@ template <class TPtr, class TKey, class TResourceFinder> SMART_INLINE void CReso
// Cons - dest. // Cons - dest.
template <class TPtr, class TKey, class TResourceFinder> inline CResourcePtr<TPtr, TKey, TResourceFinder>::CResourcePtr() template <class TPtr, class TKey, class TResourceFinder> inline CResourcePtr<TPtr, TKey, TResourceFinder>::CResourcePtr()
{ {
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
REF_TRACE("Smart()"); REF_TRACE("Smart()");
@ -95,7 +95,7 @@ template <class TPtr, class TKey, class TResourceFinder> inline CResourcePtr<TPt
pinfo->RefCount++; pinfo->RefCount++;
} }
else else
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
REF_TRACE("Smart(TPtr*)"); REF_TRACE("Smart(TPtr*)");
} }
@ -117,7 +117,7 @@ template <class TPtr, class TKey, class TResourceFinder> inline CResourcePtr<TPt
REF_TRACE("~Smart()"); REF_TRACE("~Smart()");
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
} }
@ -142,7 +142,7 @@ template <class TPtr, class TKey, class TResourceFinder> CResourcePtr<TPtr, TKey
else else
{ {
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
} }
@ -179,7 +179,7 @@ template <class TPtr, class TKey, class TResourceFinder> void CResourcePtr<T>::k
// First, release the refptr. // First, release the refptr.
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
// Then delete the pointer. // Then delete the pointer.
@ -196,7 +196,7 @@ template <class TPtr, class TKey, class TResourceFinder> inline CResourcePtr<TPt
// Refresh the Ptr. // Refresh the Ptr.
Ptr= (TPtr*)pinfo->Ptr; Ptr= (TPtr*)pinfo->Ptr;
if (pinfo != static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo)) if (pinfo != &CRefCount::NullPtrInfo)
{ {
// Does the pointer has been deleted ? // Does the pointer has been deleted ?
if (Ptr == NULL) if (Ptr == NULL)
@ -310,7 +310,7 @@ template <class TPtr, class TKey, class TResourceFinder> void CStaticResourcePtr
// First, release the refptr. // First, release the refptr.
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
// Then delete the pointer. // Then delete the pointer.

View file

@ -43,7 +43,7 @@ public:
/// Destructor which release pinfo if necessary. /// Destructor which release pinfo if necessary.
~CRefCount(); ~CRefCount();
/// Default constructor init crefs to 0. /// Default constructor init crefs to 0.
CRefCount() { crefs = 0; pinfo=static_cast<CPtrInfo*>(&NullPtrInfo); } CRefCount() { crefs = 0; pinfo = &NullPtrInfo; }
/* The instance handle. /* The instance handle.
Can't put those to private since must be used by CRefPtr (and friend doesn't work with template). Can't put those to private since must be used by CRefPtr (and friend doesn't work with template).
@ -56,6 +56,7 @@ public:
sint RefCount; // RefCount of ptrinfo (!= instance) sint RefCount; // RefCount of ptrinfo (!= instance)
bool IsNullPtrInfo; // For dll problems, must use a flag to mark NullPtrInfo. bool IsNullPtrInfo; // For dll problems, must use a flag to mark NullPtrInfo.
}; };
struct CPtrInfo : public CPtrInfoBase struct CPtrInfo : public CPtrInfoBase
{ {
CPtrInfo(CRefCount const* p) {Ptr=p; RefCount=0; IsNullPtrInfo=false;} CPtrInfo(CRefCount const* p) {Ptr=p; RefCount=0; IsNullPtrInfo=false;}
@ -75,13 +76,13 @@ public:
// Can't put this to private since must be used by CSmartPtr (and friend doesn't work with template). // Can't put this to private since must be used by CSmartPtr (and friend doesn't work with template).
// Provide incref()/decref() function doen't work since decref() can't do a delete this on a non virtual dtor. // Provide incref()/decref() function doen't work since decref() can't do a delete this on a non virtual dtor.
// So Ptr gestion can only be used via CSmartPtr. // So Ptr gestion can only be used via CSmartPtr.
mutable sint crefs; // The ref counter for SmartPtr use. mutable sint crefs; // The ref counter for SmartPtr use.
mutable CPtrInfo *pinfo; // The ref ptr for RefPtr use. mutable CPtrInfoBase *pinfo; // The ref ptr for RefPtr use.
/// operator= must NOT copy crefs/pinfo!! /// operator= must NOT copy crefs/pinfo!!
CRefCount &operator=(const CRefCount &) {return *this;} CRefCount &operator=(const CRefCount &) {return *this;}
/// copy cons must NOT copy crefs/pinfo!! /// copy cons must NOT copy crefs/pinfo!!
CRefCount(const CRefCount &) {crefs = 0; pinfo=static_cast<CPtrInfo*>(&NullPtrInfo);} CRefCount(const CRefCount &) { crefs = 0; pinfo = &NullPtrInfo; }
}; };
// To use CVirtualRefPtr (or if you just want to have a RefCount with virtual destructor), derive from this class. // To use CVirtualRefPtr (or if you just want to have a RefCount with virtual destructor), derive from this class.
@ -99,7 +100,7 @@ public:
#define SMART_TRACE(_s) ((void)0) #define SMART_TRACE(_s) ((void)0)
#define REF_TRACE(_s) ((void)0) #define REF_TRACE(_s) ((void)0)
//#define SMART_TRACE(_s) printf("%s: %d \n", _s, Ptr?Ptr->crefs:0) //#define SMART_TRACE(_s) printf("%s: %d \n", _s, Ptr?Ptr->crefs:0)
//#define REF_TRACE(_s) printf("%s: %d \n", _s, pinfo!=&CRefCount::NullPtrInfo?pinfo->RefCount:0) //#define REF_TRACE(_s) printf("%s: %d \n", _s, pinfo != &CRefCount::NullPtrInfo?pinfo->RefCount:0)
/** /**
@ -294,7 +295,8 @@ template <class T>
class CRefPtr class CRefPtr
{ {
private: private:
CRefCount::CPtrInfo *pinfo; // A ptr to the handle of the object. CRefCount::CPtrInfoBase *pinfo; // A ptr to the handle of the object.
mutable T *Ptr; // A cache for pinfo->Ptr. Useful to speed up ope->() and ope*() mutable T *Ptr; // A cache for pinfo->Ptr. Useful to speed up ope->() and ope*()
void unRef() const; // Just release the handle pinfo, but do not update pinfo/Ptr, if deleted. void unRef() const; // Just release the handle pinfo, but do not update pinfo/Ptr, if deleted.
@ -380,7 +382,7 @@ template <class T>
class CVirtualRefPtr class CVirtualRefPtr
{ {
private: private:
CRefCount::CPtrInfo *pinfo; // A ptr to the handle of the object. CRefCount::CPtrInfoBase *pinfo; // A ptr to the handle of the object.
mutable T *Ptr; // A cache for pinfo->Ptr. Useful to speed up ope->() and ope*() mutable T *Ptr; // A cache for pinfo->Ptr. Useful to speed up ope->() and ope*()
void unRef() const; // Just release the handle pinfo, but do not update pinfo/Ptr, if deleted. void unRef() const; // Just release the handle pinfo, but do not update pinfo/Ptr, if deleted.

View file

@ -134,7 +134,7 @@ SMART_INLINE void CRefPtr<T>::unRef() const
if(pinfo->Ptr) if(pinfo->Ptr)
{ {
// Inform the Object that no more CRefPtr points on it. // Inform the Object that no more CRefPtr points on it.
pinfo->Ptr->pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo->Ptr->pinfo = &CRefCount::NullPtrInfo;
} }
// Then delete the pinfo. // Then delete the pinfo.
delete pinfo; delete pinfo;
@ -148,7 +148,7 @@ SMART_INLINE void CRefPtr<T>::unRef() const
// Cons - dest. // Cons - dest.
template <class T> inline CRefPtr<T>::CRefPtr() template <class T> inline CRefPtr<T>::CRefPtr()
{ {
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
REF_TRACE("Smart()"); REF_TRACE("Smart()");
@ -170,7 +170,7 @@ template <class T> inline CRefPtr<T>::CRefPtr(T *v)
#endif #endif
} }
else else
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
REF_TRACE("Smart(T*)"); REF_TRACE("Smart(T*)");
} }
@ -187,7 +187,7 @@ template <class T> inline CRefPtr<T>::~CRefPtr(void)
REF_TRACE("~Smart()"); REF_TRACE("~Smart()");
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
} }
@ -216,7 +216,7 @@ template <class T> CRefPtr<T> &CRefPtr<T>::operator=(T *v)
else else
{ {
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
} }
@ -250,7 +250,7 @@ template <class T> void CRefPtr<T>::kill()
// First, release the refptr. // First, release the refptr.
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
// Then delete the pointer. // Then delete the pointer.
@ -316,7 +316,7 @@ SMART_INLINE void CVirtualRefPtr<T>::unRef() const
if(pinfo->Ptr) if(pinfo->Ptr)
{ {
// Inform the Object that no more CVirtualRefPtr points on it. // Inform the Object that no more CVirtualRefPtr points on it.
pinfo->Ptr->pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo->Ptr->pinfo = &CRefCount::NullPtrInfo;
} }
// Then delete the pinfo. // Then delete the pinfo.
delete pinfo; delete pinfo;
@ -330,7 +330,7 @@ SMART_INLINE void CVirtualRefPtr<T>::unRef() const
// Cons - dest. // Cons - dest.
template <class T> inline CVirtualRefPtr<T>::CVirtualRefPtr() template <class T> inline CVirtualRefPtr<T>::CVirtualRefPtr()
{ {
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
REF_TRACE("Smart()"); REF_TRACE("Smart()");
@ -352,7 +352,7 @@ template <class T> inline CVirtualRefPtr<T>::CVirtualRefPtr(T *v)
#endif #endif
} }
else else
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
REF_TRACE("Smart(T*)"); REF_TRACE("Smart(T*)");
} }
@ -370,7 +370,7 @@ template <class T> inline CVirtualRefPtr<T>::~CVirtualRefPtr(void)
REF_TRACE("~Smart()"); REF_TRACE("~Smart()");
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
} }
@ -399,7 +399,7 @@ template <class T> CVirtualRefPtr<T> &CVirtualRefPtr<T>::operator=(T *v)
else else
{ {
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
} }
@ -435,7 +435,7 @@ template <class T> void CVirtualRefPtr<T>::kill()
// First, release the refptr. // First, release the refptr.
unRef(); unRef();
pinfo= static_cast<CRefCount::CPtrInfo*>(&CRefCount::NullPtrInfo); pinfo = &CRefCount::NullPtrInfo;
Ptr= NULL; Ptr= NULL;
// Then delete the pointer. // Then delete the pointer.

View file

@ -724,7 +724,7 @@ public:
* xmlSerial() serial a values into a node. * xmlSerial() serial a values into a node.
*/ */
template<class T> template<class T>
void xmlSerial (T& value0, const char *nodeName) void xmlSerial (T& value0, const std::string &nodeName)
{ {
// Open the node // Open the node
xmlPush (nodeName); xmlPush (nodeName);
@ -736,7 +736,7 @@ public:
xmlPop (); xmlPop ();
} }
template<class T> template<class T>
void xmlSerial (T& value0, T& value1, const char *nodeName) void xmlSerial (T& value0, T& value1, const std::string &nodeName)
{ {
// Open the node // Open the node
xmlPush (nodeName); xmlPush (nodeName);
@ -748,7 +748,7 @@ public:
xmlPop (); xmlPop ();
} }
template<class T> template<class T>
void xmlSerial (T& value0, T& value1, T& value2, const char *nodeName) void xmlSerial (T& value0, T& value1, T& value2, const std::string &nodeName)
{ {
// Open the node // Open the node
xmlPush (nodeName); xmlPush (nodeName);
@ -760,7 +760,7 @@ public:
xmlPop (); xmlPop ();
} }
template<class T> template<class T>
void xmlSerial (T& value0, T& value1, T& value2, T& value3, const char *nodeName) void xmlSerial (T& value0, T& value1, T& value2, T& value3, const std::string &nodeName)
{ {
// Open the node // Open the node
xmlPush (nodeName); xmlPush (nodeName);
@ -778,7 +778,7 @@ public:
* \name is the name of the node to open * \name is the name of the node to open
* \return true if you can open the node, false if the stream is between a xmlPushBegin() and a xmlPushEnd() call. * \return true if you can open the node, false if the stream is between a xmlPushBegin() and a xmlPushEnd() call.
*/ */
bool xmlPush (const char *name) bool xmlPush (const std::string &name)
{ {
// XML Mode ? // XML Mode ?
if (_XML) if (_XML)
@ -802,7 +802,7 @@ public:
* \name is the name of the node to open * \name is the name of the node to open
* \return true if you can open the node header, false if the stream is between a xmlPushBegin() and a xmlPushEnd() call. * \return true if you can open the node header, false if the stream is between a xmlPushBegin() and a xmlPushEnd() call.
*/ */
bool xmlPushBegin (const char *name) bool xmlPushBegin (const std::string &name)
{ {
// XML Mode ? // XML Mode ?
if (_XML) if (_XML)
@ -854,7 +854,7 @@ public:
* \param name is the name of the node header attribute serialised. * \param name is the name of the node header attribute serialised.
* \return true if the attribute name have been set, false if the node header is not open (the call is not between xmlPushBegin and xmlPushEnd) * \return true if the attribute name have been set, false if the node header is not open (the call is not between xmlPushBegin and xmlPushEnd)
*/ */
bool xmlSetAttrib (const char *name) bool xmlSetAttrib (const std::string &name)
{ {
// XML Mode ? // XML Mode ?
if (_XML) if (_XML)
@ -888,7 +888,7 @@ public:
* *
* \return true if the comment is added, return false if no node is opened. * \return true if the comment is added, return false if no node is opened.
*/ */
bool xmlComment (const char *comment) bool xmlComment (const std::string &comment)
{ {
// XML Mode ? // XML Mode ?
if (_XML) if (_XML)
@ -910,7 +910,7 @@ protected:
void setXMLMode (bool on); void setXMLMode (bool on);
/// xmlPushBegin implementation /// xmlPushBegin implementation
virtual bool xmlPushBeginInternal (const char * /* name */) { return true; }; virtual bool xmlPushBeginInternal (const std::string &/* name */) { return true; };
/// xmlPushEnd implementation /// xmlPushEnd implementation
virtual bool xmlPushEndInternal () { return true; }; virtual bool xmlPushEndInternal () { return true; };
@ -919,13 +919,13 @@ protected:
virtual bool xmlPopInternal () { return true; }; virtual bool xmlPopInternal () { return true; };
/// xmlBreakLine implementation /// xmlBreakLine implementation
virtual bool xmlSetAttribInternal (const char * /* name */) { return true; }; virtual bool xmlSetAttribInternal (const std::string &/* name */) { return true; };
/// xmlBreakLine implementation /// xmlBreakLine implementation
virtual bool xmlBreakLineInternal () { return true; }; virtual bool xmlBreakLineInternal () { return true; };
/// xmlComment implementation /// xmlComment implementation
virtual bool xmlCommentInternal (const char * /* comment */) { return true; }; virtual bool xmlCommentInternal (const std::string &/* comment */) { return true; };
/** /**
* for Deriver: reset the PtrTable in the stream. * for Deriver: reset the PtrTable in the stream.

View file

@ -162,7 +162,7 @@
# define NL_COMP_GCC # define NL_COMP_GCC
#endif #endif
#if defined(_HAS_CPP0X) || defined(__GXX_EXPERIMENTAL_CXX0X__) #if defined(_HAS_CPP0X) || defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(NL_COMP_VC_VERSION) && NL_COMP_VC_VERSION >= 110)
# define NL_ISO_CPP0X_AVAILABLE # define NL_ISO_CPP0X_AVAILABLE
#endif #endif
@ -430,30 +430,40 @@ extern void operator delete[](void *p) throw();
# define CHashSet ::std::hash_set # define CHashSet ::std::hash_set
# define CHashMultiMap ::std::hash_multimap # define CHashMultiMap ::std::hash_multimap
# endif // _STLP_HASH_MAP # endif // _STLP_HASH_MAP
# define CUniquePtr ::std::auto_ptr
# define CUniquePtrMove
#elif defined(NL_ISO_CPP0X_AVAILABLE) || (defined(NL_COMP_VC) && (NL_COMP_VC_VERSION >= 100))
# include <unordered_map>
# include <unordered_set>
# define CHashMap ::std::unordered_map
# define CHashSet ::std::unordered_set
# define CHashMultiMap ::std::unordered_multimap
# define CUniquePtr ::std::unique_ptr
# define CUniquePtrMove ::std::move
#elif defined(NL_ISO_STDTR1_AVAILABLE) // use std::tr1 for CHash* classes, if available (gcc 4.1+ and VC9 with TR1 feature pack) #elif defined(NL_ISO_STDTR1_AVAILABLE) // use std::tr1 for CHash* classes, if available (gcc 4.1+ and VC9 with TR1 feature pack)
# include NL_ISO_STDTR1_HEADER(unordered_map) # include NL_ISO_STDTR1_HEADER(unordered_map)
# include NL_ISO_STDTR1_HEADER(unordered_set) # include NL_ISO_STDTR1_HEADER(unordered_set)
# define CHashMap NL_ISO_STDTR1_NAMESPACE::unordered_map # define CHashMap NL_ISO_STDTR1_NAMESPACE::unordered_map
# define CHashSet NL_ISO_STDTR1_NAMESPACE::unordered_set # define CHashSet NL_ISO_STDTR1_NAMESPACE::unordered_set
# define CHashMultiMap NL_ISO_STDTR1_NAMESPACE::unordered_multimap # define CHashMultiMap NL_ISO_STDTR1_NAMESPACE::unordered_multimap
# define CUniquePtr ::std::auto_ptr
# define CUniquePtrMove
#elif defined(NL_COMP_VC) && (NL_COMP_VC_VERSION >= 70 && NL_COMP_VC_VERSION <= 90) // VC7 through 9 #elif defined(NL_COMP_VC) && (NL_COMP_VC_VERSION >= 70 && NL_COMP_VC_VERSION <= 90) // VC7 through 9
# include <hash_map> # include <hash_map>
# include <hash_set> # include <hash_set>
# define CHashMap stdext::hash_map # define CHashMap stdext::hash_map
# define CHashSet stdext::hash_set # define CHashSet stdext::hash_set
# define CHashMultiMap stdext::hash_multimap # define CHashMultiMap stdext::hash_multimap
#elif defined(NL_COMP_VC) && (NL_COMP_VC_VERSION >= 100) # define CUniquePtr ::std::auto_ptr
# include <unordered_map> # define CUniquePtrMove
# include <unordered_set>
# define CHashMap ::std::unordered_map
# define CHashSet ::std::unordered_set
# define CHashMultiMap ::std::unordered_multimap
#elif defined(NL_COMP_GCC) // GCC4 #elif defined(NL_COMP_GCC) // GCC4
# include <ext/hash_map> # include <ext/hash_map>
# include <ext/hash_set> # include <ext/hash_set>
# define CHashMap ::__gnu_cxx::hash_map # define CHashMap ::__gnu_cxx::hash_map
# define CHashSet ::__gnu_cxx::hash_set # define CHashSet ::__gnu_cxx::hash_set
# define CHashMultiMap ::__gnu_cxx::hash_multimap # define CHashMultiMap ::__gnu_cxx::hash_multimap
# define CUniquePtr ::std::auto_ptr
# define CUniquePtrMove
namespace __gnu_cxx { namespace __gnu_cxx {

View file

@ -1,27 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/anim_ctrl.h"
namespace NL3D
{
} // NL3D

View file

@ -19,6 +19,9 @@
#include "nel/3d/animatable.h" #include "nel/3d/animatable.h"
#include "nel/3d/channel_mixer.h" #include "nel/3d/channel_mixer.h"
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NL3D namespace NL3D
{ {

View file

@ -22,6 +22,10 @@
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NL3D namespace NL3D
{ {

View file

@ -21,6 +21,10 @@
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NL3D namespace NL3D
{ {

View file

@ -21,6 +21,10 @@
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NL3D namespace NL3D
{ {

View file

@ -1,36 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/animated_value.h"
namespace NL3D
{
/*
// Some compilation check: force Visual to compile to template
CAnimatedValueBool atoto1;
CAnimatedValueInt atoto2;
CAnimatedValueFloat atoto3;
CAnimatedValueVector atoto4;
CAnimatedValueString atoto5;
CAnimatedValueQuat atoto6;
CAnimatedValueRGBA atoto7;
*/
} // NL3D

View file

@ -318,7 +318,7 @@ UAnimation* UAnimation::createAnimation (const char* sPath)
NL3D_HAUTO_UI_ANIMATION; NL3D_HAUTO_UI_ANIMATION;
// Allocate an animation // Allocate an animation
std::auto_ptr<CAnimation> anim (new CAnimation); CUniquePtr<CAnimation> anim (new CAnimation);
// Read it // Read it
NLMISC::CIFile file; NLMISC::CIFile file;

View file

@ -22,6 +22,10 @@
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NL3D namespace NL3D
{ {

View file

@ -29,6 +29,10 @@
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NL3D namespace NL3D
{ {
@ -221,7 +225,7 @@ bool CAnimationSet::loadFromFiles(const std::string &path, bool recurse /* = tru
{ {
NLMISC::CIFile iFile; NLMISC::CIFile iFile;
iFile.open(anims[k]); iFile.open(anims[k]);
std::auto_ptr<CAnimation> anim(new CAnimation); CUniquePtr<CAnimation> anim(new CAnimation);
anim->serial(iFile); anim->serial(iFile);
addAnimation(NLMISC::CFile::getFilenameWithoutExtension(anims[k]).c_str(), anim.release()); addAnimation(NLMISC::CFile::getFilenameWithoutExtension(anims[k]).c_str(), anim.release());
iFile.close(); iFile.close();

View file

@ -1,26 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/animation_time.h"
namespace NL3D {
} // NL3D

View file

@ -31,6 +31,9 @@
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NL3D namespace NL3D
{ {

View file

@ -1,27 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/async_texture_block.h"
namespace NL3D
{
} // NL3D

View file

@ -1,25 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/cube_grid.h"
namespace NL3D
{
} // NL3D

View file

@ -89,8 +89,8 @@ static uint8 *BuildCubeMapTexLuminance(const NLMISC::CVector &start,
CTextureCube *BuildCubeMap(sint mapSize, ICubeMapFunctor &f, bool luminanceOnly /* = false*/, const std::string &shareName /* = "" */) CTextureCube *BuildCubeMap(sint mapSize, ICubeMapFunctor &f, bool luminanceOnly /* = false*/, const std::string &shareName /* = "" */)
{ {
std::auto_ptr<CTextureCube> cubeMap(new CTextureCube); CUniquePtr<CTextureCube> cubeMap(new CTextureCube);
std::auto_ptr<CTextureMem> faces[6]; CUniquePtr<CTextureMem> faces[6];
/// this gives the start (unormalized normal for each face for u,v = 0, 0) /// this gives the start (unormalized normal for each face for u,v = 0, 0)
static const NLMISC::CVector start[] = static const NLMISC::CVector start[] =

View file

@ -477,18 +477,18 @@ bool CDriverGL::unInit()
// Restore monitor color parameters // Restore monitor color parameters
if (_NeedToRestoreGammaRamp) if (_NeedToRestoreGammaRamp)
{ {
HDC dc = CreateDCA ("DISPLAY", NULL, NULL, NULL); HDC dc = CreateDCA("DISPLAY", NULL, NULL, NULL);
if (dc) if (dc)
{ {
if (!SetDeviceGammaRamp (dc, _GammaRampBackuped)) if (!SetDeviceGammaRamp(dc, _GammaRampBackuped))
nlwarning ("(CDriverGL::release): SetDeviceGammaRamp failed"); nlwarning("(CDriverGL::release): SetDeviceGammaRamp failed");
// Release the DC // Release the DC
ReleaseDC (NULL, dc); ReleaseDC(NULL, dc);
} }
else else
{ {
nlwarning ("(CDriverGL::release): can't create DC"); nlwarning("(CDriverGL::release): can't create DC");
} }
} }

View file

@ -105,9 +105,9 @@ CMaterial &CMaterial::operator=(const CMaterial &mat)
// copy texture matrix if there. // copy texture matrix if there.
if (mat._TexUserMat.get()) if (mat._TexUserMat.get())
{ {
std::auto_ptr<CUserTexMat> texMatClone( new CUserTexMat(*(mat._TexUserMat))); // make cpy CUniquePtr<CUserTexMat> texMatClone(new CUserTexMat(*(mat._TexUserMat))); // make cpy
//std::swap(texMatClone, _TexUserMat); // swap with old //std::swap(texMatClone, _TexUserMat); // swap with old
_TexUserMat = texMatClone; _TexUserMat = CUniquePtrMove(texMatClone);
} }
else else
{ {
@ -265,9 +265,9 @@ void CMaterial::serial(NLMISC::IStream &f)
if ((_Flags & IDRV_MAT_USER_TEX_MAT_ALL)) // are there user textrue coordinates matrix ? if ((_Flags & IDRV_MAT_USER_TEX_MAT_ALL)) // are there user textrue coordinates matrix ?
{ {
std::auto_ptr<CUserTexMat> newPtr(new CUserTexMat); // create new CUniquePtr<CUserTexMat> newPtr(new CUserTexMat); // create new
//std::swap(_TexUserMat, newPtr); // replace old //std::swap(_TexUserMat, newPtr); // replace old
_TexUserMat = newPtr; _TexUserMat = CUniquePtrMove(newPtr);
} }
} }

View file

@ -1,26 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/matrix_3x4.h"
namespace NL3D
{
} // NL3D

View file

@ -1,26 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/mesh_vertex_program.h"
namespace NL3D
{
} // NL3D

View file

@ -1,26 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/mrm_parameters.h"
namespace NL3D
{
} // NL3D

View file

@ -1533,7 +1533,7 @@ void CPSConstraintMesh::serial(NLMISC::IStream &f) throw(NLMISC::EStream)
{ {
PGlobalTexAnims newPtr(new CGlobalTexAnims); // create new PGlobalTexAnims newPtr(new CGlobalTexAnims); // create new
//std::swap(_GlobalTexAnims, newPtr); // replace old //std::swap(_GlobalTexAnims, newPtr); // replace old
_GlobalTexAnims = newPtr; _GlobalTexAnims = CUniquePtrMove(newPtr);
f.serial(*_GlobalTexAnims); f.serial(*_GlobalTexAnims);
} }
@ -2352,7 +2352,7 @@ void CPSConstraintMesh::setTexAnimType(TTexAnimType type)
{ {
PGlobalTexAnims newPtr(new CGlobalTexAnims); PGlobalTexAnims newPtr(new CGlobalTexAnims);
//std::swap(_GlobalTexAnims, newPtr); //std::swap(_GlobalTexAnims, newPtr);
_GlobalTexAnims = newPtr; _GlobalTexAnims = CUniquePtrMove(newPtr);
_GlobalAnimationEnabled = 1; _GlobalAnimationEnabled = 1;
} }
break; break;

View file

@ -1,25 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/ps_particle.h"
namespace NL3D
{
/// NOTE : implementation of particles rendering has now been split accross vrious files...
} // NL3D

View file

@ -1,24 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/ps_particle2.h"
namespace NL3D
{
} // NL3D

View file

@ -36,7 +36,7 @@ CPSRibbon::TVBMap CPSRibbon::_VBMaps[16];
static ITexture *CreateGradientTexture() static ITexture *CreateGradientTexture()
{ {
NL_PS_FUNC(CreateGradientTexture) NL_PS_FUNC(CreateGradientTexture)
std::auto_ptr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W, CUniquePtr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W,
sizeof(GradientB2W), sizeof(GradientB2W),
false, /* dont delete */ false, /* dont delete */
false, /* not a file */ false, /* not a file */

View file

@ -33,7 +33,7 @@ static NLMISC::CRGBA GradientB2W[] = {NLMISC::CRGBA(0, 0, 0, 0), NLMISC::CRGBA(2
static ITexture *CreateGradientTexture() static ITexture *CreateGradientTexture()
{ {
NL_PS_FUNC(CreateGradientTexture) NL_PS_FUNC(CreateGradientTexture)
std::auto_ptr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W, CUniquePtr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W,
sizeof(GradientB2W), sizeof(GradientB2W),
false, /* dont delete */ false, /* dont delete */
false, /* not a file */ false, /* not a file */

View file

@ -1,27 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/ptr_set.h"
namespace NL3D
{
} // NL3D

View file

@ -1,41 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/radix_sort.h"
namespace NL3D {
// To test compiling.
/*struct Pipo
{
uint32 a;
uint32 getRadixKey() const {return a;}
};
CRadixSort<Pipo> PipoSort;
static void pipo()
{
PipoSort.sort(NULL, NULL, 30);
}*/
} // NL3D

View file

@ -1,27 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/scissor.h"
namespace NL3D
{
} // NL3D

View file

@ -1,27 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/static_quad_grid.h"
namespace NL3D
{
} // NL3D

View file

@ -1,27 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/tess_list.h"
namespace NL3D
{
} // NL3D

View file

@ -1,25 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/texture_bloom.h"
namespace NL3D {
} // NL3D

View file

@ -193,7 +193,7 @@ bool CTextureCube::isSelectable() const
ITexture *CTextureCube::buildNonSelectableVersion(uint index) ITexture *CTextureCube::buildNonSelectableVersion(uint index)
{ {
if (!isSelectable()) return this; if (!isSelectable()) return this;
std::auto_ptr<CTextureCube> tc(new CTextureCube); CUniquePtr<CTextureCube> tc(new CTextureCube);
// copy basic texture parameters // copy basic texture parameters
(ITexture &) *tc.get() = (ITexture &) *this; // invoke ITexture = op for basics parameters (ITexture &) *tc.get() = (ITexture &) *this; // invoke ITexture = op for basics parameters

View file

@ -1,31 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/texture_user.h"
namespace NL3D
{
void dummyToAvoidStupidCompilerWarning_texture_user_cpp()
{
}
} // NL3D

View file

@ -1,26 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/tile_color.h"
namespace NL3D
{
} // NL3D

View file

@ -1,33 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/trav_scene.h"
#include "nel/3d/scene.h"
namespace NL3D
{
} // NL3D
/* End of trav_scene.cpp */

View file

@ -1,27 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/vegetable_def.h"
namespace NL3D
{
} // NL3D

View file

@ -1,26 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std3d.h"
#include "nel/3d/vegetable_uv8.h"
namespace NL3D
{
} // NL3D

View file

@ -21,6 +21,10 @@
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
// This code is not used actually and doesn't compile // This code is not used actually and doesn't compile
// just preproc comment it // just preproc comment it
#if 0 #if 0

View file

@ -1,17 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdgeorges.h"

View file

@ -4625,34 +4625,21 @@ namespace NLGUI
result = url; result = url;
string tmp; string tmp;
// folder used for images cache if (toLower(result).find("file:") == 0 && result.size() > 5)
static const string cacheDir = "cache";
string::size_type protocolPos = toLower(result).find("://");
if (protocolPos != string::npos)
{ {
// protocol present, it's an url so file must be searched in cache folder result = result.substr(5, result.size()-5);
// TODO: case of special characters & and ?
result = cacheDir + result.substr(protocolPos+2);
// if the file is already cached, use it
if (CFile::fileExists(result)) tmp = result;
} }
else else if (result.find("://") != string::npos || result.find("//") == 0)
{ {
// Url is a file ? // http://, https://, etc or protocol-less url "//domain.com/image.png"
if (toLower(result).find("file:") == 0) return false;
{ }
result = result.substr(5, result.size()-5);
}
tmp = CPath::lookup (CFile::getFilename(result), false, false, false); tmp = CPath::lookup (CFile::getFilename(result), false, false, false);
if (tmp.empty()) if (tmp.empty())
{ {
// try to find in local directory // try to find in local directory
tmp = CPath::lookup (result, false, false, true); tmp = CPath::lookup (result, false, false, true);
}
} }
if (!tmp.empty()) if (!tmp.empty())

View file

@ -508,13 +508,13 @@ bool CLigoConfig::canBeRoot (const NLLIGO::IPrimitive &child)
// *************************************************************************** // ***************************************************************************
bool CLigoConfig::getPropertyString (std::string &result, const char *filename, xmlNodePtr xmlNode, const char *propName) bool CLigoConfig::getPropertyString(std::string &result, const std::string &filename, xmlNodePtr xmlNode, const std::string &propName)
{ {
// Call the CIXml version // Call the CIXml version
if (!CIXml::getPropertyString (result, xmlNode, propName)) if (!CIXml::getPropertyString (result, xmlNode, propName))
{ {
// Output a formated error // Output a formated error
syntaxError (filename, xmlNode, "Missing XML node property (%s)", propName); syntaxError (filename, xmlNode, "Missing XML node property (%s)", propName.c_str());
return false; return false;
} }
return true; return true;
@ -522,7 +522,7 @@ bool CLigoConfig::getPropertyString (std::string &result, const char *filename,
// *************************************************************************** // ***************************************************************************
void CLigoConfig::syntaxError (const char *filename, xmlNodePtr xmlNode, const char *format, ...) void CLigoConfig::syntaxError (const std::string &filename, xmlNodePtr xmlNode, const char *format, ...)
{ {
va_list args; va_list args;
va_start( args, format ); va_start( args, format );
@ -530,7 +530,7 @@ void CLigoConfig::syntaxError (const char *filename, xmlNodePtr xmlNode, const c
vsnprintf( buffer, 1024, format, args ); vsnprintf( buffer, 1024, format, args );
va_end( args ); va_end( args );
errorMessage ("(%s), node (%s), line (%p) :\n%s", filename, xmlNode->name, xmlNode->content, buffer); errorMessage ("(%s), node (%s), line (%p) :\n%s", filename.c_str(), xmlNode->name, xmlNode->content, buffer);
} }
// *************************************************************************** // ***************************************************************************
@ -589,7 +589,7 @@ const CPrimitiveClass *CLigoConfig::getPrimitiveClass (const IPrimitive &primiti
// *************************************************************************** // ***************************************************************************
const CPrimitiveClass *CLigoConfig::getPrimitiveClass (const char *className) const const CPrimitiveClass *CLigoConfig::getPrimitiveClass(const std::string &className) const
{ {
std::map<std::string, CPrimitiveClass>::const_iterator ite = _PrimitiveClasses.find (className); std::map<std::string, CPrimitiveClass>::const_iterator ite = _PrimitiveClasses.find (className);
if (ite != _PrimitiveClasses.end ()) if (ite != _PrimitiveClasses.end ())

View file

@ -22,6 +22,10 @@
//using namespace NL3D; //using namespace NL3D;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLLIGO namespace NLLIGO
{ {

View file

@ -28,6 +28,10 @@ using namespace std;
const uint32 NLLIGO_PRIMITIVE_VERSION = 1; const uint32 NLLIGO_PRIMITIVE_VERSION = 1;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLLIGO namespace NLLIGO
{ {
@ -38,7 +42,7 @@ CPrimitiveContext *CPrimitiveContext::_Instance = NULL;
// XML helpers // XML helpers
// *************************************************************************** // ***************************************************************************
void Error (const char *filename, const char *format, ...) void Error (const std::string &filename, const char *format, ...)
{ {
va_list args; va_list args;
va_start( args, format ); va_start( args, format );
@ -46,12 +50,12 @@ void Error (const char *filename, const char *format, ...)
vsnprintf( buffer, 1024, format, args ); vsnprintf( buffer, 1024, format, args );
va_end( args ); va_end( args );
nlwarning ("In File (%s) %s", filename, buffer); nlwarning ("In File (%s) %s", filename.c_str(), buffer);
} }
// *************************************************************************** // ***************************************************************************
void XMLError (xmlNodePtr xmlNode, const char *filename, const char *format, ... ) void XMLError (xmlNodePtr xmlNode, const std::string &filename, const char *format, ... )
{ {
va_list args; va_list args;
va_start( args, format ); va_start( args, format );
@ -65,20 +69,20 @@ void XMLError (xmlNodePtr xmlNode, const char *filename, const char *format, ...
// *************************************************************************** // ***************************************************************************
xmlNodePtr GetFirstChildNode (xmlNodePtr xmlNode, const char *filename, const char *childName) xmlNodePtr GetFirstChildNode (xmlNodePtr xmlNode, const std::string &filename, const std::string &childName)
{ {
// Call the CIXml version // Call the CIXml version
xmlNodePtr result = CIXml::getFirstChildNode (xmlNode, childName); xmlNodePtr result = CIXml::getFirstChildNode (xmlNode, childName);
if (result) return result; if (result) return result;
// Output a formated error // Output a formated error
XMLError (xmlNode, filename, "Can't find XML node named (%s)", childName); XMLError (xmlNode, filename.c_str(), "Can't find XML node named (%s)", childName);
return NULL; return NULL;
} }
// *************************************************************************** // ***************************************************************************
bool GetPropertyString (string &result, const char *filename, xmlNodePtr xmlNode, const char *propName) bool GetPropertyString (string &result, const std::string &filename, xmlNodePtr xmlNode, const std::string &propName)
{ {
// Call the CIXml version // Call the CIXml version
if (!CIXml::getPropertyString (result, xmlNode, propName)) if (!CIXml::getPropertyString (result, xmlNode, propName))
@ -92,7 +96,7 @@ bool GetPropertyString (string &result, const char *filename, xmlNodePtr xmlNode
// *************************************************************************** // ***************************************************************************
bool ReadInt (const char *propName, int &result, const char *filename, xmlNodePtr xmlNode) bool ReadInt (const std::string &propName, int &result, const std::string &filename, xmlNodePtr xmlNode)
{ {
string value; string value;
if (GetPropertyString (value, filename, xmlNode, propName)) if (GetPropertyString (value, filename, xmlNode, propName))
@ -105,15 +109,15 @@ bool ReadInt (const char *propName, int &result, const char *filename, xmlNodePt
// *************************************************************************** // ***************************************************************************
void WriteInt (const char *propName, int value, xmlNodePtr xmlNode) void WriteInt (const std::string &propName, int value, xmlNodePtr xmlNode)
{ {
// Set properties // Set properties
xmlSetProp (xmlNode, (const xmlChar*)propName, (const xmlChar*)(toString (value).c_str ())); xmlSetProp (xmlNode, (const xmlChar*)propName.c_str(), (const xmlChar*)(toString (value).c_str ()));
} }
// *************************************************************************** // ***************************************************************************
bool ReadUInt (const char *propName, uint &result, const char *filename, xmlNodePtr xmlNode) bool ReadUInt (const std::string &propName, uint &result, const std::string &filename, xmlNodePtr xmlNode)
{ {
string value; string value;
if (GetPropertyString (value, filename, xmlNode, propName)) if (GetPropertyString (value, filename, xmlNode, propName))
@ -126,15 +130,15 @@ bool ReadUInt (const char *propName, uint &result, const char *filename, xmlNode
// *************************************************************************** // ***************************************************************************
void WriteUInt (const char *propName, uint value, xmlNodePtr xmlNode) void WriteUInt (const std::string &propName, uint value, xmlNodePtr xmlNode)
{ {
// Set properties // Set properties
xmlSetProp (xmlNode, (const xmlChar*)propName, (const xmlChar*)(toString (value).c_str ())); xmlSetProp (xmlNode, (const xmlChar*)propName.c_str(), (const xmlChar*)(toString (value).c_str ()));
} }
// *************************************************************************** // ***************************************************************************
bool ReadFloat (const char *propName, float &result, const char *filename, xmlNodePtr xmlNode) bool ReadFloat (const std::string &propName, float &result, const std::string &filename, xmlNodePtr xmlNode)
{ {
string value; string value;
if (GetPropertyString (value, filename, xmlNode, propName)) if (GetPropertyString (value, filename, xmlNode, propName))
@ -147,15 +151,15 @@ bool ReadFloat (const char *propName, float &result, const char *filename, xmlNo
// *************************************************************************** // ***************************************************************************
void WriteFloat (const char *propName, float value, xmlNodePtr xmlNode) void WriteFloat (const std::string &propName, float value, xmlNodePtr xmlNode)
{ {
// Set properties // Set properties
xmlSetProp (xmlNode, (const xmlChar*)propName, (const xmlChar*)(toString (value).c_str ())); xmlSetProp (xmlNode, (const xmlChar*)propName.c_str(), (const xmlChar*)(toString (value).c_str ()));
} }
// *************************************************************************** // ***************************************************************************
bool ReadVector (CPrimVector &point, const char *filename, xmlNodePtr xmlNode) bool ReadVector (CPrimVector &point, const std::string &filename, xmlNodePtr xmlNode)
{ {
CPrimVector pos; CPrimVector pos;
if (ReadFloat ("X", pos.x, filename, xmlNode)) if (ReadFloat ("X", pos.x, filename, xmlNode))
@ -194,7 +198,7 @@ void WriteVector (const CPrimVector &point, xmlNodePtr xmlNode)
// *************************************************************************** // ***************************************************************************
bool GetNodeString (string &result, const char *filename, xmlNodePtr xmlNode, const char *nodeName) bool GetNodeString (string &result, const std::string &filename, xmlNodePtr xmlNode, const std::string &nodeName)
{ {
// Look for the node // Look for the node
xmlNodePtr node = CIXml::getFirstChildNode (xmlNode, nodeName); xmlNodePtr node = CIXml::getFirstChildNode (xmlNode, nodeName);
@ -216,7 +220,7 @@ bool GetNodeString (string &result, const char *filename, xmlNodePtr xmlNode, co
// *************************************************************************** // ***************************************************************************
bool GetContentString (string &result, const char *filename, xmlNodePtr xmlNode) bool GetContentString (string &result, const std::string &filename, xmlNodePtr xmlNode)
{ {
// Get the node string // Get the node string
if (!CIXml::getContentString (result, xmlNode)) if (!CIXml::getContentString (result, xmlNode))
@ -232,11 +236,6 @@ bool GetContentString (string &result, const char *filename, xmlNodePtr xmlNode)
// CPropertyString // CPropertyString
// *************************************************************************** // ***************************************************************************
CPropertyString::CPropertyString (const char *str)
{
String = str;
}
CPropertyString::CPropertyString (const std::string &str) CPropertyString::CPropertyString (const std::string &str)
{ {
String = str; String = str;
@ -244,7 +243,7 @@ CPropertyString::CPropertyString (const std::string &str)
// *************************************************************************** // ***************************************************************************
CPropertyString::CPropertyString (const char *str, bool _default) CPropertyString::CPropertyString (const std::string &str, bool _default)
{ {
String = str; String = str;
Default = _default; Default = _default;
@ -386,7 +385,7 @@ bool CPrimZone::contains (const NLMISC::CVector &v, const std::vector<NLMISC::CV
// CPrimNode // CPrimNode
// *************************************************************************** // ***************************************************************************
bool CPrimNode::read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config) bool CPrimNode::read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config)
{ {
return IPrimitive::read (xmlNode, filename, version, config); return IPrimitive::read (xmlNode, filename, version, config);
} }
@ -484,7 +483,7 @@ NLLIGO::IPrimitive *CPrimPoint::copy () const
// *************************************************************************** // ***************************************************************************
bool CPrimPoint::read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config) bool CPrimPoint::read(xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config)
{ {
// Read points // Read points
xmlNodePtr ptNode = GetFirstChildNode (xmlNode, filename, "PT"); xmlNodePtr ptNode = GetFirstChildNode (xmlNode, filename, "PT");
@ -514,7 +513,7 @@ bool CPrimPoint::read (xmlNodePtr xmlNode, const char *filename, uint version, C
// *************************************************************************** // ***************************************************************************
void CPrimPoint::write (xmlNodePtr xmlNode, const char *filename) const void CPrimPoint::write (xmlNodePtr xmlNode, const std::string &filename) const
{ {
// Save the point // Save the point
xmlNodePtr ptNode = xmlNewChild ( xmlNode, NULL, (const xmlChar*)"PT", NULL); xmlNodePtr ptNode = xmlNewChild ( xmlNode, NULL, (const xmlChar*)"PT", NULL);
@ -566,7 +565,7 @@ CPrimVector *CPrimPath::getPrimVector ()
// *************************************************************************** // ***************************************************************************
bool CPrimPath::read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config) bool CPrimPath::read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config)
{ {
// Read points // Read points
VPoints.clear (); VPoints.clear ();
@ -591,7 +590,7 @@ bool CPrimPath::read (xmlNodePtr xmlNode, const char *filename, uint version, CL
// *************************************************************************** // ***************************************************************************
void CPrimPath::write (xmlNodePtr xmlNode, const char *filename) const void CPrimPath::write (xmlNodePtr xmlNode, const std::string &filename) const
{ {
// Save the points // Save the points
for (uint i=0; i<VPoints.size (); i++) for (uint i=0; i<VPoints.size (); i++)
@ -638,7 +637,7 @@ CPrimVector *CPrimZone::getPrimVector ()
// *************************************************************************** // ***************************************************************************
bool CPrimZone::read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config) bool CPrimZone::read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config)
{ {
// Read points // Read points
VPoints.clear (); VPoints.clear ();
@ -663,7 +662,7 @@ bool CPrimZone::read (xmlNodePtr xmlNode, const char *filename, uint version, CL
// *************************************************************************** // ***************************************************************************
void CPrimZone::write (xmlNodePtr xmlNode, const char *filename) const void CPrimZone::write (xmlNodePtr xmlNode, const std::string &filename) const
{ {
// Save the points // Save the points
for (uint i=0; i<VPoints.size (); i++) for (uint i=0; i<VPoints.size (); i++)
@ -1310,7 +1309,7 @@ bool IPrimitive::getProperty (uint index, std::string &property_name, IProperty
// *************************************************************************** // ***************************************************************************
bool IPrimitive::getPropertyByName (const char *property_name, const IProperty *&result) const bool IPrimitive::getPropertyByName (const std::string &property_name, const IProperty *&result) const
{ {
// Look for the property // Look for the property
std::map<std::string, IProperty*>::const_iterator ite = _Properties.find (property_name); std::map<std::string, IProperty*>::const_iterator ite = _Properties.find (property_name);
@ -1324,7 +1323,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, const IProperty *
// *************************************************************************** // ***************************************************************************
bool IPrimitive::getPropertyByName (const char *property_name, IProperty *&result) const bool IPrimitive::getPropertyByName (const std::string &property_name, IProperty *&result) const
{ {
// Look for the property // Look for the property
std::map<std::string, IProperty*>::const_iterator ite = _Properties.find (property_name); std::map<std::string, IProperty*>::const_iterator ite = _Properties.find (property_name);
@ -1338,7 +1337,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, IProperty *&resul
// *************************************************************************** // ***************************************************************************
bool IPrimitive::getPropertyByName (const char *property_name, std::string *&result) const bool IPrimitive::getPropertyByName (const std::string &property_name, std::string *&result) const
{ {
// Get the property // Get the property
IProperty *prop; IProperty *prop;
@ -1352,7 +1351,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, std::string *&res
} }
else else
{ {
nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name); nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name.c_str());
} }
} }
return false; return false;
@ -1360,7 +1359,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, std::string *&res
// *************************************************************************** // ***************************************************************************
bool IPrimitive::getPropertyByName (const char *property_name, std::string &result) const bool IPrimitive::getPropertyByName (const std::string &property_name, std::string &result) const
{ {
// Get the property // Get the property
const IProperty *prop; const IProperty *prop;
@ -1374,7 +1373,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, std::string &resu
} }
else else
{ {
nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name); nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name.c_str());
} }
} }
return false; return false;
@ -1382,7 +1381,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, std::string &resu
// *************************************************************************** // ***************************************************************************
bool IPrimitive::getPropertyByName (const char *property_name, std::vector<std::string> *&result) const bool IPrimitive::getPropertyByName (const std::string &property_name, std::vector<std::string> *&result) const
{ {
// Get the property // Get the property
IProperty *prop; IProperty *prop;
@ -1396,7 +1395,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, std::vector<std::
} }
else else
{ {
nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name); nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name.c_str());
} }
} }
return false; return false;
@ -1404,7 +1403,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, std::vector<std::
// *************************************************************************** // ***************************************************************************
bool IPrimitive::getPropertyByName (const char *property_name, const std::vector<std::string> *&result) const bool IPrimitive::getPropertyByName (const std::string &property_name, const std::vector<std::string> *&result) const
{ {
// Get the property // Get the property
IProperty *prop; IProperty *prop;
@ -1418,7 +1417,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, const std::vector
} }
else else
{ {
nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name); nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name.c_str());
} }
} }
return false; return false;
@ -1426,7 +1425,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, const std::vector
// *************************************************************************** // ***************************************************************************
bool IPrimitive::getPropertyByName (const char *property_name, NLMISC::CRGBA &result) const bool IPrimitive::getPropertyByName (const std::string &property_name, NLMISC::CRGBA &result) const
{ {
// Get the property // Get the property
IProperty *prop; IProperty *prop;
@ -1440,7 +1439,7 @@ bool IPrimitive::getPropertyByName (const char *property_name, NLMISC::CRGBA &re
} }
else else
{ {
nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a color.", property_name); nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a color.", property_name.c_str());
} }
} }
return false; return false;
@ -1468,7 +1467,7 @@ bool IPrimitive::removeProperty (uint index)
// *************************************************************************** // ***************************************************************************
bool IPrimitive::removePropertyByName (const char *property_name) bool IPrimitive::removePropertyByName (const std::string &property_name)
{ {
// Look for the property // Look for the property
std::map<std::string, IProperty*>::iterator ite = _Properties.find (property_name); std::map<std::string, IProperty*>::iterator ite = _Properties.find (property_name);
@ -1642,7 +1641,7 @@ bool IPrimitive::checkProperty(const std::string &property_name) const
// *************************************************************************** // ***************************************************************************
bool IPrimitive::addPropertyByName (const char *property_name, IProperty *result) bool IPrimitive::addPropertyByName (const std::string &property_name, IProperty *result)
{ {
bool inserted = _Properties.insert (std::map<std::string, IProperty*>::value_type (property_name, result)).second; bool inserted = _Properties.insert (std::map<std::string, IProperty*>::value_type (property_name, result)).second;
if (inserted) if (inserted)
@ -1654,7 +1653,7 @@ bool IPrimitive::addPropertyByName (const char *property_name, IProperty *result
// *************************************************************************** // ***************************************************************************
bool IPrimitive::read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config) bool IPrimitive::read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config)
{ {
// Erase old properties // Erase old properties
_Properties.clear (); _Properties.clear ();
@ -1915,7 +1914,7 @@ void IPrimitive::initDefaultValues (CLigoConfig &config)
// *************************************************************************** // ***************************************************************************
void IPrimitive::write (xmlNodePtr xmlNode, const char *filename) const void IPrimitive::write (xmlNodePtr xmlNode, const std::string &filename) const
{ {
// Save the expanded flag // Save the expanded flag
// if (!Expanded) // if (!Expanded)
@ -2112,7 +2111,7 @@ void CPrimAlias::regenAlias()
// Read the primitive // Read the primitive
bool CPrimAlias::read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config) bool CPrimAlias::read (xmlNodePtr xmlNode, const std::string &filename, uint version, CLigoConfig &config)
{ {
// Read alias // Read alias
xmlNodePtr ptNode = CIXml::getFirstChildNode (xmlNode, "ALIAS"); xmlNodePtr ptNode = CIXml::getFirstChildNode (xmlNode, "ALIAS");
@ -2146,7 +2145,7 @@ bool CPrimAlias::read (xmlNodePtr xmlNode, const char *filename, uint version, C
return IPrimitive::read (xmlNode, filename, version, config); return IPrimitive::read (xmlNode, filename, version, config);
} }
// Write the primitive // Write the primitive
void CPrimAlias::write (xmlNodePtr xmlNode, const char *filename) const void CPrimAlias::write (xmlNodePtr xmlNode, const std::string &filename) const
{ {
// Write alias // Write alias
xmlNodePtr ptNode = xmlNewChild(xmlNode, NULL, (const xmlChar*)"ALIAS", NULL); xmlNodePtr ptNode = xmlNewChild(xmlNode, NULL, (const xmlChar*)"ALIAS", NULL);
@ -2458,7 +2457,7 @@ CPrimitives& CPrimitives::operator= (const CPrimitives &other)
// *************************************************************************** // ***************************************************************************
bool CPrimitives::read (xmlNodePtr xmlNode, const char *filename, CLigoConfig &config) bool CPrimitives::read (xmlNodePtr xmlNode, const std::string &filename, CLigoConfig &config)
{ {
nlassert (xmlNode); nlassert (xmlNode);
@ -2531,7 +2530,7 @@ bool CPrimitives::read (xmlNodePtr xmlNode, const char *filename, CLigoConfig &c
// *************************************************************************** // ***************************************************************************
void CPrimitives::write (xmlDocPtr doc, const char *filename) const void CPrimitives::write (xmlDocPtr doc, const std::string &filename) const
{ {
nlassert (doc); nlassert (doc);
@ -2544,7 +2543,7 @@ void CPrimitives::write (xmlDocPtr doc, const char *filename) const
// *************************************************************************** // ***************************************************************************
void CPrimitives::write (xmlNodePtr root, const char *filename) const void CPrimitives::write (xmlNodePtr root, const std::string &filename) const
{ {
nlassert (root); nlassert (root);

View file

@ -14,7 +14,15 @@
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "nel/misc/types_nl.h" #ifndef STDLIGO_H
#define STDLIGO_H
#if defined(_MSC_VER) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>
@ -44,6 +52,7 @@
// Include from libxml2 // Include from libxml2
#include <libxml/parser.h> #include <libxml/parser.h>
#include "nel/misc/types_nl.h"
#include "nel/misc/debug.h" #include "nel/misc/debug.h"
#include "nel/misc/common.h" #include "nel/misc/common.h"
#include "nel/misc/fast_mem.h" #include "nel/misc/fast_mem.h"
@ -67,3 +76,5 @@
#endif #endif
#include <windows.h> #include <windows.h>
#endif #endif
#endif

View file

@ -22,6 +22,10 @@
#include "nel/ligo/ligo_error.h" #include "nel/ligo/ligo_error.h"
#include "nel/ligo/ligo_material.h" #include "nel/ligo/ligo_material.h"
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLLIGO namespace NLLIGO
{ {

View file

@ -28,6 +28,9 @@
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLLIGO namespace NLLIGO
{ {

View file

@ -25,6 +25,10 @@
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLLIGO namespace NLLIGO
{ {

View file

@ -14,8 +14,15 @@
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef NL_STDMISC_H #ifndef NL_STDLOGIC_H
#define NL_STDMISC_H #define NL_STDLOGIC_H
#if defined(_MSC_VER) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
#include <vector> #include <vector>
#include <map> #include <map>
@ -24,6 +31,12 @@
#include <libxml/parser.h> #include <libxml/parser.h>
#include "nel/misc/types_nl.h"
#include "nel/misc/entity_id.h"
#include "nel/misc/i_xml.h"
#include "nel/misc/o_xml.h"
#include "nel/misc/stream.h"
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
# define WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN
# define _WIN32_WINDOWS 0x0500 # define _WIN32_WINDOWS 0x0500

View file

@ -124,6 +124,27 @@ CApplicationContext::CApplicationContext()
contextReady(); contextReady();
} }
CApplicationContext::~CApplicationContext()
{
#ifdef NL_DEBUG
TSingletonRegistry::iterator it = _SingletonRegistry.begin(), iend = _SingletonRegistry.end();
while (it != iend)
{
// can't use nldebug there because it'll create new displayers
std::string message = toString("Instance '%s' still allocated at %p", it->first.c_str(), it->second);
#ifdef NL_OS_WINDOWS
OutputDebugStringW(utf8ToWide(message));
#else
printf("%s\n", message.c_str());
#endif
++it;
}
#endif
}
void *CApplicationContext::getSingletonPointer(const std::string &singletonName) void *CApplicationContext::getSingletonPointer(const std::string &singletonName)
{ {
TSingletonRegistry::iterator it(_SingletonRegistry.find(singletonName)); TSingletonRegistry::iterator it(_SingletonRegistry.find(singletonName));

View file

@ -339,6 +339,9 @@ bool CBigFile::BNP::readHeader(FILE *file)
it++; it++;
} }
if (FileNames)
delete[] FileNames;
FileNames = new char[nSize]; FileNames = new char[nSize];
memset(FileNames, 0, nSize); memset(FileNames, 0, nSize);
Files.resize(nNb); Files.resize(nNb);

View file

@ -213,6 +213,16 @@ namespace NLMISC
return _ThreadMainFiber.getPointer(); return _ThreadMainFiber.getPointer();
} }
#endif #endif
static void releaseInstance()
{
if (_Instance)
{
NLMISC::INelContext::getInstance().releaseSingletonPointer("CCurrentCoTask", _Instance);
delete _Instance;
_Instance = NULL;
}
}
}; };
NLMISC_SAFE_SINGLETON_IMPL(CCurrentCoTask); NLMISC_SAFE_SINGLETON_IMPL(CCurrentCoTask);
@ -560,5 +570,10 @@ namespace NLMISC
} }
} }
void CCoTask::releaseInstance()
{
CCurrentCoTask::releaseInstance();
}
} // namespace NLMISC } // namespace NLMISC

View file

@ -765,7 +765,8 @@ static bool createProcess(const std::string &programName, const std::string &arg
args = toString("\"%s\" ", programName.c_str()) + arguments; args = toString("\"%s\" ", programName.c_str()) + arguments;
} }
BOOL res = CreateProcessW(sProgramName, utf8ToWide(args), NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_NO_WINDOW, NULL, NULL, &si, &pi); // or 0 for a window
BOOL res = CreateProcessW(sProgramName, utf8ToWide(args), NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_NO_WINDOW, NULL, NULL /* current dir */, &si, &pi);
if (sProgramName) if (sProgramName)
{ {
@ -1012,20 +1013,32 @@ sint launchProgramAndWaitForResult(const std::string &programName, const std::st
if (!createProcess(programName, arguments, log, pi)) return -1; if (!createProcess(programName, arguments, log, pi)) return -1;
// Successfully created the process. Wait for it to finish. // Successfully created the process. Wait for it to finish.
WaitForSingleObject(pi.hProcess, INFINITE); DWORD ret = WaitForSingleObject(pi.hProcess, INFINITE);
// Get the exit code. if (ret == WAIT_OBJECT_0)
DWORD exitCode = 0; {
BOOL ok = GetExitCodeProcess(pi.hProcess, &exitCode); // Get the exit code.
DWORD exitCode = 0;
BOOL ok = GetExitCodeProcess(pi.hProcess, &exitCode);
//nldebug("LAUNCH: Successful launch '%s' with arg '%s'", programName.c_str(), arguments.c_str()); //nldebug("LAUNCH: Successful launch '%s' with arg '%s'", programName.c_str(), arguments.c_str());
CloseHandle(pi.hProcess); CloseHandle(pi.hProcess);
CloseHandle(pi.hThread); CloseHandle(pi.hThread);
if (ok) return (sint)exitCode; if (ok) return (sint)exitCode;
}
if (log) if (log)
nlwarning("LAUNCH: Failed launched '%s' with arg '%s'", programName.c_str(), arguments.c_str()); {
std::string error = toString((uint)ret);
if (ret == WAIT_FAILED)
{
error += "(" + formatErrorMessage(getLastError()) +")";
}
nlwarning("LAUNCH: Failed launched '%s' with arg '%s' and error: %s", programName.c_str(), arguments.c_str(), error.c_str());
}
return -1; return -1;
#else #else
@ -1535,7 +1548,7 @@ static bool openDocWithExtension (const std::string &document, const std::string
if (command.empty()) if (command.empty())
{ {
nlwarning("Unable to open %s", document); nlwarning("Unable to open %s", document.c_str());
return false; return false;
} }

View file

@ -3221,7 +3221,7 @@ static void *yy_flex_alloc( size )
yy_size_t size; yy_size_t size;
#endif #endif
{ {
return (void *) malloc( size ); // TODO: delete return (void *) malloc( size );
} }
#ifdef YY_USE_PROTOS #ifdef YY_USE_PROTOS

View file

@ -715,7 +715,7 @@ void CIXml::serialBuffer(uint8 *buf, uint len)
// *************************************************************************** // ***************************************************************************
bool CIXml::xmlPushBeginInternal (const char *nodeName) bool CIXml::xmlPushBeginInternal (const std::string &nodeName)
{ {
nlassert( isReading() ); nlassert( isReading() );
@ -744,12 +744,12 @@ bool CIXml::xmlPushBeginInternal (const char *nodeName)
nlassert (_CurrentNode->name); nlassert (_CurrentNode->name);
// Node element with the good name ? // Node element with the good name ?
if ( (_CurrentNode->type != XML_ELEMENT_NODE) || ( (const char*)_CurrentNode->name != string(nodeName)) ) if ( (_CurrentNode->type != XML_ELEMENT_NODE) || ( (const char*)_CurrentNode->name != nodeName) )
{ {
// Make an error message // Make an error message
char tmp[512]; char tmp[512];
smprintf (tmp, 512, "NeL XML Syntax error : root node has the wrong name : \"%s\" should have \"%s\"", smprintf (tmp, 512, "NeL XML Syntax error : root node has the wrong name : \"%s\" should have \"%s\"",
_CurrentNode->name, nodeName); _CurrentNode->name, nodeName.c_str());
throw EXmlParsingError (tmp); throw EXmlParsingError (tmp);
} }
} }
@ -769,7 +769,7 @@ bool CIXml::xmlPushBeginInternal (const char *nodeName)
nlassert (_CurrentNode->name); nlassert (_CurrentNode->name);
// Node with the good name // Node with the good name
if ( (_CurrentNode->type == XML_ELEMENT_NODE) && ( (const char*)_CurrentNode->name == string(nodeName)) ) if ( (_CurrentNode->type == XML_ELEMENT_NODE) && ( (const char*)_CurrentNode->name == nodeName) )
{ {
// Save current element // Save current element
_CurrentElement = _CurrentNode; _CurrentElement = _CurrentNode;
@ -789,7 +789,7 @@ bool CIXml::xmlPushBeginInternal (const char *nodeName)
// Make an error message // Make an error message
char tmp[512]; char tmp[512];
smprintf (tmp, 512, "NeL XML Syntax error in block line %d \nCan't open the node named %s in node named %s", smprintf (tmp, 512, "NeL XML Syntax error in block line %d \nCan't open the node named %s in node named %s",
(int)_CurrentElement->line, nodeName, _CurrentElement->name); (int)_CurrentElement->line, nodeName.c_str(), _CurrentElement->name);
throw EXmlParsingError (tmp); throw EXmlParsingError (tmp);
} }
@ -902,7 +902,7 @@ bool CIXml::xmlPopInternal ()
// *************************************************************************** // ***************************************************************************
bool CIXml::xmlSetAttribInternal (const char *attribName) bool CIXml::xmlSetAttribInternal (const std::string &attribName)
{ {
nlassert( isReading() ); nlassert( isReading() );
@ -951,7 +951,7 @@ bool CIXml::xmlBreakLineInternal ()
// *************************************************************************** // ***************************************************************************
bool CIXml::xmlCommentInternal (const char * /* comment */) bool CIXml::xmlCommentInternal (const std::string &/* comment */)
{ {
// Ok // Ok
return true; return true;
@ -959,12 +959,12 @@ bool CIXml::xmlCommentInternal (const char * /* comment */)
// *************************************************************************** // ***************************************************************************
xmlNodePtr CIXml::getFirstChildNode (xmlNodePtr parent, const char *childName) xmlNodePtr CIXml::getFirstChildNode (xmlNodePtr parent, const std::string &childName)
{ {
xmlNodePtr child = parent->children; xmlNodePtr child = parent->children;
while (child) while (child)
{ {
if (strcmp ((const char*)child->name, childName) == 0) if (childName == (const char*)child->name)
return child; return child;
child = child->next; child = child->next;
} }
@ -973,12 +973,12 @@ xmlNodePtr CIXml::getFirstChildNode (xmlNodePtr parent, const char *childName)
// *************************************************************************** // ***************************************************************************
xmlNodePtr CIXml::getNextChildNode (xmlNodePtr last, const char *childName) xmlNodePtr CIXml::getNextChildNode (xmlNodePtr last, const std::string &childName)
{ {
last = last->next; last = last->next;
while (last) while (last)
{ {
if (strcmp ((const char*)last->name, childName) == 0) if (childName == (const char*)last->name)
return last; return last;
last = last->next; last = last->next;
} }
@ -1015,7 +1015,7 @@ xmlNodePtr CIXml::getNextChildNode (xmlNodePtr last, sint /* xmlElementType */ t
// *************************************************************************** // ***************************************************************************
uint CIXml::countChildren (xmlNodePtr node, const char *childName) uint CIXml::countChildren (xmlNodePtr node, const std::string &childName)
{ {
uint count=0; uint count=0;
xmlNodePtr child = getFirstChildNode (node, childName); xmlNodePtr child = getFirstChildNode (node, childName);
@ -1053,10 +1053,10 @@ xmlNodePtr CIXml::getRootNode () const
// *************************************************************************** // ***************************************************************************
bool CIXml::getPropertyString (std::string &result, xmlNodePtr node, const char *property) bool CIXml::getPropertyString (std::string &result, xmlNodePtr node, const std::string &property)
{ {
// Get the value // Get the value
const char *value = (const char*)xmlGetProp (node, (xmlChar*)property); const char *value = (const char*)xmlGetProp (node, (xmlChar*)property.c_str());
if (value) if (value)
{ {
// Active value // Active value
@ -1073,7 +1073,7 @@ bool CIXml::getPropertyString (std::string &result, xmlNodePtr node, const char
// *************************************************************************** // ***************************************************************************
int CIXml::getIntProperty(xmlNodePtr node, const char *property, int defaultValue) int CIXml::getIntProperty(xmlNodePtr node, const std::string &property, int defaultValue)
{ {
CSString s; CSString s;
bool b; bool b;
@ -1095,7 +1095,7 @@ int CIXml::getIntProperty(xmlNodePtr node, const char *property, int defaultValu
// *************************************************************************** // ***************************************************************************
double CIXml::getFloatProperty(xmlNodePtr node, const char *property, float defaultValue) double CIXml::getFloatProperty(xmlNodePtr node, const std::string &property, float defaultValue)
{ {
CSString s; CSString s;
bool b; bool b;
@ -1109,7 +1109,7 @@ double CIXml::getFloatProperty(xmlNodePtr node, const char *property, float defa
// *************************************************************************** // ***************************************************************************
std::string CIXml::getStringProperty(xmlNodePtr node, const char *property, const std::string& defaultValue) std::string CIXml::getStringProperty(xmlNodePtr node, const std::string &property, const std::string& defaultValue)
{ {
std::string s; std::string s;
bool b; bool b;

View file

@ -268,7 +268,7 @@ namespace NLMISC
typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor; typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor;
// NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794 // NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794
// else, this is one of the way recommended by microsoft to solve the problem. // else, this is one of the way recommended by microsoft to solve the problem.
std::auto_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap)); CUniquePtr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
CMsgQueueIdent msgQueueIdent(ownerWindow, localId, foreignId); CMsgQueueIdent msgQueueIdent(ownerWindow, localId, foreignId);
if (messageQueueMap->value().count(msgQueueIdent)) if (messageQueueMap->value().count(msgQueueIdent))
{ {
@ -368,7 +368,7 @@ namespace NLMISC
typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor; typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor;
// NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794 // NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794
// else, this is one of the way recommended by microsoft to solve the problem. // else, this is one of the way recommended by microsoft to solve the problem.
std::auto_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap)); CUniquePtr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
TMessageQueueMap::iterator it = messageQueueMap->value().find(CMsgQueueIdent(_LocalWindow.getWnd(), _LocalWindow.getId(), _ForeignWindow.getId())); TMessageQueueMap::iterator it = messageQueueMap->value().find(CMsgQueueIdent(_LocalWindow.getWnd(), _LocalWindow.getId(), _ForeignWindow.getId()));
nlassert(it != messageQueueMap->value().end()); nlassert(it != messageQueueMap->value().end());
messageQueueMap->value().erase(it); messageQueueMap->value().erase(it);
@ -408,7 +408,7 @@ namespace NLMISC
typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor; typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor;
// NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794 // NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794
// else, this is one of the way recommended by microsoft to solve the problem. // else, this is one of the way recommended by microsoft to solve the problem.
std::auto_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap)); CUniquePtr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
TMessageQueueMap::iterator it = messageQueueMap->value().find(CMsgQueueIdent(hwnd, toId, fromId)); TMessageQueueMap::iterator it = messageQueueMap->value().find(CMsgQueueIdent(hwnd, toId, fromId));
if (it != messageQueueMap->value().end()) if (it != messageQueueMap->value().end())
{ {

View file

@ -152,7 +152,7 @@ void xmlGenericErrorFuncWrite (void *ctx, const char *msg, ...)
// *************************************************************************** // ***************************************************************************
bool COXml::init (IStream *stream, const char *version) bool COXml::init (IStream *stream, const std::string &version)
{ {
resetPtrTable(); resetPtrTable();
@ -201,7 +201,7 @@ COXml::~COXml ()
// *************************************************************************** // ***************************************************************************
void COXml::serialSeparatedBufferOut( const char *value ) void COXml::serialSeparatedBufferOut( const std::string &value )
{ {
nlassert( ! isReading() ); nlassert( ! isReading() );
@ -218,7 +218,7 @@ void COXml::serialSeparatedBufferOut( const char *value )
if (_AttribPresent) if (_AttribPresent)
{ {
// Set the attribute // Set the attribute
xmlSetProp (_CurrentNode, (const xmlChar*)_AttribName.c_str(), (const xmlChar*)value); xmlSetProp (_CurrentNode, (const xmlChar*)_AttribName.c_str(), (const xmlChar*)value.c_str());
// The attribute has been used // The attribute has been used
_AttribPresent = false; _AttribPresent = false;
@ -349,7 +349,8 @@ void COXml::serialBit(bool &bit)
#ifndef NL_OS_CYGWIN #ifndef NL_OS_CYGWIN
void COXml::serial(char &b) void COXml::serial(char &b)
{ {
char tmp[2] = {b , 0}; std::string tmp;
tmp += b;
serialSeparatedBufferOut( tmp ); serialSeparatedBufferOut( tmp );
} }
#endif // NL_OS_CYGWIN #endif // NL_OS_CYGWIN
@ -364,7 +365,7 @@ void COXml::serial(std::string &b)
if (_PushBegin) if (_PushBegin)
{ {
// Only serial the string // Only serial the string
serialSeparatedBufferOut( b.c_str() ); serialSeparatedBufferOut( b );
} }
else else
{ {
@ -372,7 +373,7 @@ void COXml::serial(std::string &b)
xmlPush ("S"); xmlPush ("S");
// Serial the string // Serial the string
serialSeparatedBufferOut( b.c_str() ); serialSeparatedBufferOut( b );
// Close the node // Close the node
xmlPop (); xmlPop ();
@ -415,7 +416,7 @@ void COXml::serialBuffer(uint8 *buf, uint len)
// *************************************************************************** // ***************************************************************************
bool COXml::xmlPushBeginInternal (const char *nodeName) bool COXml::xmlPushBeginInternal (const std::string &nodeName)
{ {
nlassert( ! isReading() ); nlassert( ! isReading() );
@ -439,7 +440,7 @@ bool COXml::xmlPushBeginInternal (const char *nodeName)
} }
// Create the first node // Create the first node
_CurrentNode=xmlNewDocNode (_Document, NULL, (const xmlChar*)nodeName, NULL); _CurrentNode=xmlNewDocNode (_Document, NULL, (const xmlChar*)nodeName.c_str(), NULL);
xmlDocSetRootElement (_Document, _CurrentNode); xmlDocSetRootElement (_Document, _CurrentNode);
// Return NULL if error // Return NULL if error
@ -451,7 +452,7 @@ bool COXml::xmlPushBeginInternal (const char *nodeName)
flushContentString (); flushContentString ();
// Create a new node // Create a new node
_CurrentNode=xmlNewChild (_CurrentNode, NULL, (const xmlChar*)nodeName, NULL); _CurrentNode=xmlNewChild (_CurrentNode, NULL, (const xmlChar*)nodeName.c_str(), NULL);
// Return NULL if error // Return NULL if error
nlassert (_CurrentNode); nlassert (_CurrentNode);
@ -543,7 +544,7 @@ bool COXml::xmlPopInternal ()
// *************************************************************************** // ***************************************************************************
bool COXml::xmlSetAttribInternal (const char *attribName) bool COXml::xmlSetAttribInternal (const std::string &attribName)
{ {
nlassert( ! isReading() ); nlassert( ! isReading() );
@ -608,7 +609,7 @@ bool COXml::xmlBreakLineInternal ()
// *************************************************************************** // ***************************************************************************
bool COXml::xmlCommentInternal (const char *comment) bool COXml::xmlCommentInternal (const std::string &comment)
{ {
nlassert( ! isReading() ); nlassert( ! isReading() );
@ -619,7 +620,7 @@ bool COXml::xmlCommentInternal (const char *comment)
if ( _CurrentNode != NULL) if ( _CurrentNode != NULL)
{ {
// Add a comment node // Add a comment node
xmlNodePtr commentPtr = xmlNewComment ((const xmlChar *)comment); xmlNodePtr commentPtr = xmlNewComment ((const xmlChar *)comment.c_str());
// Add the node // Add the node
xmlAddChild (_CurrentNode, commentPtr); xmlAddChild (_CurrentNode, commentPtr);
@ -665,15 +666,9 @@ void COXml::flush ()
// *************************************************************************** // ***************************************************************************
bool COXml::isStringValidForProperties (const char *str) bool COXml::isStringValidForProperties (const std::string &str)
{ {
while (*str) return str.find('\n') == std::string::npos;
{
if (*str == '\n')
return false;
str++;
}
return true;
} }
// *************************************************************************** // ***************************************************************************

View file

@ -50,8 +50,11 @@ struct CPMainThread : public CPThread
~CPMainThread() ~CPMainThread()
{ {
if(pthread_key_delete(threadSpecificKey) != 0) if (pthread_key_delete(threadSpecificKey) != 0)
throw EThread("cannot delete thread specific storage key."); {
nlwarning("cannot delete thread specific storage key.");
// throw EThread("cannot delete thread specific storage key.");
}
} }
}; };

View file

@ -2523,7 +2523,7 @@ bool CFile::createDirectoryTree(const std::string &filename)
return lastResult; return lastResult;
} }
bool CPath::makePathRelative (const char *basePath, std::string &relativePath) bool CPath::makePathRelative (const std::string &basePath, std::string &relativePath)
{ {
// Standard path with final slash // Standard path with final slash
string tmp = standardizePath (basePath, true); string tmp = standardizePath (basePath, true);

View file

@ -27,6 +27,9 @@
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLNET namespace NLNET
@ -69,7 +72,7 @@ namespace NLNET
friend class CL3ServerRoute; friend class CL3ServerRoute;
public: public:
/// The callback server that receive connection and dispatch message /// The callback server that receive connection and dispatch message
auto_ptr<CCallbackServer> _CallbackServer; CUniquePtr<CCallbackServer> _CallbackServer;
/// A static mapper to retrieve transport from the CCallbackServer pointer /// A static mapper to retrieve transport from the CCallbackServer pointer
typedef map<CCallbackNetBase*, CGatewayL3ServerTransport*> TDispatcherIndex; typedef map<CCallbackNetBase*, CGatewayL3ServerTransport*> TDispatcherIndex;
@ -221,7 +224,7 @@ namespace NLNET
throw ETransportError("openServer : The server is already open"); throw ETransportError("openServer : The server is already open");
// create a new callback server // create a new callback server
auto_ptr<CCallbackServer> cbs = auto_ptr<CCallbackServer> (new CCallbackServer()); CUniquePtr<CCallbackServer> cbs(new CCallbackServer());
// register the callbacks // register the callbacks
cbs->setConnectionCallback(cbConnection, static_cast<IGatewayTransport*>(this)); cbs->setConnectionCallback(cbConnection, static_cast<IGatewayTransport*>(this));
@ -231,7 +234,7 @@ namespace NLNET
// open the server // open the server
cbs->init(port); cbs->init(port);
_CallbackServer = cbs; _CallbackServer = CUniquePtrMove(cbs);
// register it in the dispatcher // register it in the dispatcher
_DispatcherIndex.insert(make_pair(_CallbackServer.get(), this)); _DispatcherIndex.insert(make_pair(_CallbackServer.get(), this));
@ -670,7 +673,7 @@ namespace NLNET
_FreeRoutesIds.pop_back(); _FreeRoutesIds.pop_back();
} }
auto_ptr<CL3ClientRoute> route = auto_ptr<CL3ClientRoute>(new CL3ClientRoute(this, addr, connId)); CUniquePtr<CL3ClientRoute> route(new CL3ClientRoute(this, addr, connId));
// set the callbacks // set the callbacks
route->CallbackClient.setDisconnectionCallback(cbDisconnection, static_cast<IGatewayTransport*>(this)); route->CallbackClient.setDisconnectionCallback(cbDisconnection, static_cast<IGatewayTransport*>(this));

View file

@ -250,7 +250,7 @@ namespace NLNET
// now, load the library // now, load the library
string fullName = NLMISC::CPath::standardizePath(path)+CLibrary::makeLibName(shortName); string fullName = NLMISC::CPath::standardizePath(path)+CLibrary::makeLibName(shortName);
std::auto_ptr<TModuleLibraryInfo> mli = auto_ptr<TModuleLibraryInfo>(new TModuleLibraryInfo); CUniquePtr<TModuleLibraryInfo> mli(new TModuleLibraryInfo);
if (!mli->LibraryHandler.loadLibrary(fullName, false, true, true)) if (!mli->LibraryHandler.loadLibrary(fullName, false, true, true))
{ {
nlwarning("CModuleManager : failed to load the library '%s' in '%s'", nlwarning("CModuleManager : failed to load the library '%s' in '%s'",
@ -399,7 +399,7 @@ namespace NLNET
IModuleFactory *mf = it->second; IModuleFactory *mf = it->second;
// sanity check // sanity check
nlassert(mf->getModuleClassName() == className); nlassert(mf->getModuleClassName() == className);
std::auto_ptr<IModule> module = auto_ptr<IModule>(mf->createModule()); CUniquePtr<IModule> module(mf->createModule());
if (module.get() == NULL) if (module.get() == NULL)
{ {
nlwarning("createModule : factory failed to create a module instance for class '%s'", className.c_str()); nlwarning("createModule : factory failed to create a module instance for class '%s'", className.c_str());
@ -623,7 +623,7 @@ namespace NLNET
const std::string &moduleManifest, const std::string &moduleManifest,
TModuleId foreignModuleId) TModuleId foreignModuleId)
{ {
std::auto_ptr<CModuleProxy> modProx = auto_ptr<CModuleProxy>(new CModuleProxy(localModule, ++_LastGeneratedId, moduleClassName, moduleFullyQualifiedName, moduleManifest)); CUniquePtr<CModuleProxy> modProx(new CModuleProxy(localModule, ++_LastGeneratedId, moduleClassName, moduleFullyQualifiedName, moduleManifest));
modProx->_Gateway = gateway; modProx->_Gateway = gateway;
modProx->_Route = route; modProx->_Route = route;
modProx->_Distance = distance; modProx->_Distance = distance;

View file

@ -63,6 +63,10 @@ typedef int SOCKET;
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLNET { namespace NLNET {

View file

@ -103,7 +103,7 @@ UPrimitiveBlock *UPrimitiveBlock::createPrimitiveBlock(NLMISC::IStream &src)
{ {
nlassert(src.isReading()); nlassert(src.isReading());
std::auto_ptr<CPrimitiveBlock> pb(new CPrimitiveBlock); CUniquePtr<CPrimitiveBlock> pb(new CPrimitiveBlock);
pb->serial(src); pb->serial(src);
return pb.release(); return pb.release();
} }

View file

@ -94,6 +94,10 @@ using namespace NLMISC;
using namespace NLLIGO; using namespace NLLIGO;
using namespace NL3D; using namespace NL3D;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
// APP DATA // APP DATA
#define NEL3D_APPDATA_LIGO_USE_BOUNDINGBOX ((uint32)1342141818) #define NEL3D_APPDATA_LIGO_USE_BOUNDINGBOX ((uint32)1342141818)

View file

@ -67,7 +67,7 @@ struct CDupObjPolicy
dest.serialPtr(obj); dest.serialPtr(obj);
/*if (dest.isReading()) /*if (dest.isReading())
{ {
std::auto_ptr<T> newObj(new T); CUniquePtr<T> newObj(new T);
newObj->serialPtr(dest); newObj->serialPtr(dest);
delete obj; delete obj;
obj = newObj.release(); obj = newObj.release();
@ -112,7 +112,7 @@ NL3D::CParticleSystemProcess *DupPSLocated(const CParticleSystemProcess *in)
/** Duplicate the system, and detach. /** Duplicate the system, and detach.
* We can't duplicate the object direclty (it may be referencing other objects in the system, so these objects will be copied too...) * We can't duplicate the object direclty (it may be referencing other objects in the system, so these objects will be copied too...)
*/ */
std::auto_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(in->getOwner())); CUniquePtr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(in->getOwner()));
// scene pointer is not serialised, but 'detach' may need the scene to be specified // scene pointer is not serialised, but 'detach' may need the scene to be specified
newPS->setScene(in->getOwner()->getScene()); newPS->setScene(in->getOwner()->getScene());
return newPS->detach(index); return newPS->detach(index);
@ -142,7 +142,7 @@ NL3D::CPSLocatedBindable *DupPSLocatedBindable(CPSLocatedBindable *in)
else else
{ {
CParticleSystem *srcPS = in->getOwner()->getOwner(); CParticleSystem *srcPS = in->getOwner()->getOwner();
std::auto_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(srcPS)); CUniquePtr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(srcPS));
// scene pointer is not serialised, but 'detach' may need the scene to be specified // scene pointer is not serialised, but 'detach' may need the scene to be specified
newPS->setScene(in->getOwner()->getOwner()->getScene()); newPS->setScene(in->getOwner()->getOwner()->getScene());
// //

View file

@ -764,7 +764,7 @@ void CLocatedBindableDialog::updateZBias()
m_ZBias.GetWindowText(value); m_ZBias.GetWindowText(value);
float zbias = 0.f; float zbias = 0.f;
int dummy; // to test if end of string as no not wanted extra characters int dummy; // to test if end of string as no not wanted extra characters
if (sscanf((LPCTSTR) (value + "\n0"), "%f\n%d", &zbias, &dummy) == 2) if (_stscanf((LPCTSTR)(value + _T("\n0")), _T("%f\n%d"), &zbias, &dummy) == 2)
{ {
NLMISC::safe_cast<NL3D::CPSParticle *>(_Bindable)->setZBias(-zbias); NLMISC::safe_cast<NL3D::CPSParticle *>(_Bindable)->setZBias(-zbias);
} }

View file

@ -469,7 +469,7 @@ void CObjectViewer::loadConfigFile()
try try
{ {
CConfigFile::CVar &var = cf.getVar("automatic_animation_path"); CConfigFile::CVar &var = cf.getVar("automatic_animation_path");
std::auto_ptr<CAnimationSet> as(new CAnimationSet); CUniquePtr<CAnimationSet> as(new CAnimationSet);
// //
bool loadingOk = as->loadFromFiles(var.asString(),true ,"anim",true); bool loadingOk = as->loadFromFiles(var.asString(),true ,"anim",true);
// //

View file

@ -574,7 +574,7 @@ void CParticleDlg::OnLoadPSWorkspace()
void CParticleDlg::loadWorkspace(const std::string &fullPath) void CParticleDlg::loadWorkspace(const std::string &fullPath)
{ {
// Add to the path // Add to the path
std::auto_ptr<CParticleWorkspace> newPW(new CParticleWorkspace); CUniquePtr<CParticleWorkspace> newPW(new CParticleWorkspace);
newPW->init(_ObjView, fullPath, _ObjView->getFontManager(), _ObjView->getFontGenerator()); newPW->init(_ObjView, fullPath, _ObjView->getFontManager(), _ObjView->getFontGenerator());
newPW->setModificationCallback(ParticleTreeCtrl); newPW->setModificationCallback(ParticleTreeCtrl);
// save empty workspace // save empty workspace

View file

@ -1006,7 +1006,7 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHA
// Add search path for the texture // Add search path for the texture
NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName()))); NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName())));
std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank); CUniquePtr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
CParticleSystemModel *psm = NULL; CParticleSystemModel *psm = NULL;
try try
{ {
@ -1147,7 +1147,7 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHA
{ {
float value; float value;
int dummy; // to avoid non numeric characters at the end int dummy; // to avoid non numeric characters at the end
if (sscanf ((LPCTSTR)(valueDlg.Value + "\n0"), "%f\n%d", &value, &dummy) == 2) if (_stscanf((LPCTSTR)(valueDlg.Value + _T("\n0")), _T("%f\n%d"), &value, &dummy) == 2)
{ {
nlassert(getOwnerNode(nt)->getPSPointer()); nlassert(getOwnerNode(nt)->getPSPointer());
getOwnerNode(nt)->getPSPointer()->setZBias(-value); getOwnerNode(nt)->getPSPointer()->setZBias(-value);
@ -1526,9 +1526,11 @@ void CParticleTreeCtrl::insertNewPS(CParticleWorkspace &pws)
{ {
static const TCHAR BASED_CODE szFilter[] = _T("NeL Particle systems (*.ps)|*.ps||"); static const TCHAR BASED_CODE szFilter[] = _T("NeL Particle systems (*.ps)|*.ps||");
CFileDialog fd(TRUE, _T(".ps"), _T("*.ps"), OFN_ALLOWMULTISELECT|OFN_FILEMUSTEXIST, szFilter, this); CFileDialog fd(TRUE, _T(".ps"), _T("*.ps"), OFN_ALLOWMULTISELECT|OFN_FILEMUSTEXIST, szFilter, this);
const uint MAX_NUM_CHAR = 65536; const uint MAX_NUM_CHAR = 65536;
TCHAR filenamesBuf[MAX_NUM_CHAR]; TCHAR filenamesBuf[MAX_NUM_CHAR];
_tcscpy(filenamesBuf, _T("*.ps")); _tcscpy_s(filenamesBuf, MAX_NUM_CHAR, _T("*.ps"));
fd.m_ofn.lpstrFile = filenamesBuf; fd.m_ofn.lpstrFile = filenamesBuf;
fd.m_ofn.nMaxFile = MAX_NUM_CHAR - 1; fd.m_ofn.nMaxFile = MAX_NUM_CHAR - 1;
if (fd.DoModal() == IDOK) if (fd.DoModal() == IDOK)

View file

@ -182,8 +182,8 @@ private:
// Matching infos for each nodes in the CTreeCtrl // Matching infos for each nodes in the CTreeCtrl
std::vector<CNodeType *> _NodeTypes; std::vector<CNodeType *> _NodeTypes;
// //
std::auto_ptr<NL3D::CPSLocated> _LocatedCopy; CUniquePtr<NL3D::CPSLocated> _LocatedCopy;
std::auto_ptr<NL3D::CPSLocatedBindable> _LocatedBindableCopy; CUniquePtr<NL3D::CPSLocatedBindable> _LocatedBindableCopy;
// //
DECLARE_MESSAGE_MAP() DECLARE_MESSAGE_MAP()
// from CParticleWorkspace::IModificationCallback // from CParticleWorkspace::IModificationCallback

View file

@ -202,7 +202,7 @@ void CParticleWorkspace::CNode::createEmptyPS()
NL3D::CParticleSystem emptyPS; NL3D::CParticleSystem emptyPS;
NL3D::CParticleSystemShape *pss = new NL3D::CParticleSystemShape; NL3D::CParticleSystemShape *pss = new NL3D::CParticleSystemShape;
pss->buildFromPS(emptyPS); pss->buildFromPS(emptyPS);
std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank); CUniquePtr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
std::string shapeName = NLMISC::CFile::getFilename(_RelativePath); std::string shapeName = NLMISC::CFile::getFilename(_RelativePath);
sb->add(shapeName, pss); sb->add(shapeName, pss);
NL3D::CShapeBank *oldSB = NL3D::CNELU::Scene->getShapeBank(); NL3D::CShapeBank *oldSB = NL3D::CNELU::Scene->getShapeBank();
@ -276,16 +276,7 @@ void CParticleWorkspace::CNode::savePSAs(const std::string &fullPath) throw(NLMI
std::string CParticleWorkspace::CNode::getFullPath() const std::string CParticleWorkspace::CNode::getFullPath() const
{ {
nlassert(_WS); nlassert(_WS);
char fullPath[MAX_PATH]; return NLMISC::CPath::makePathAbsolute(_RelativePath, _WS->getPath(), true);
std::string basePath = NLMISC::CPath::standardizeDosPath(_WS->getPath());
if (PathCombine(fullPath, basePath.c_str(), _RelativePath.c_str()))
{
return fullPath;
}
else
{
return _RelativePath.c_str();
}
} }
//*********************************************************************************************** //***********************************************************************************************
@ -298,7 +289,7 @@ bool CParticleWorkspace::CNode::loadPS()
// collapse name // collapse name
inputFile.open(getFullPath()); inputFile.open(getFullPath());
ss.serial(inputFile); ss.serial(inputFile);
std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank); CUniquePtr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
std::string shapeName = NLMISC::CFile::getFilename(_RelativePath); std::string shapeName = NLMISC::CFile::getFilename(_RelativePath);
sb->add(shapeName, ss.getShapePointer()); sb->add(shapeName, ss.getShapePointer());
NL3D::CShapeBank *oldSB = NL3D::CNELU::Scene->getShapeBank(); NL3D::CShapeBank *oldSB = NL3D::CNELU::Scene->getShapeBank();
@ -374,17 +365,19 @@ CParticleWorkspace::CNode *CParticleWorkspace::addNode(const std::string &filena
for(uint k = 0; k < _Nodes.size(); ++k) for(uint k = 0; k < _Nodes.size(); ++k)
{ {
if (NLMISC::nlstricmp(_Nodes[k]->getFilename(), fileName) == 0) return NULL; if (NLMISC::nlstricmp(_Nodes[k]->getFilename(), fileName) == 0) return NULL;
} }
char resultPath[MAX_PATH];
// TODO: replace with NeL methods
TCHAR resultPath[MAX_PATH];
std::string dosPath = NLMISC::CPath::standardizeDosPath(getPath()); std::string dosPath = NLMISC::CPath::standardizeDosPath(getPath());
std::string relativePath; std::string relativePath;
if (!PathRelativePathTo(resultPath, dosPath.c_str(), FILE_ATTRIBUTE_DIRECTORY, filenameWithFullPath.c_str(), 0)) if (!PathRelativePathTo(resultPath, utf8ToTStr(dosPath), FILE_ATTRIBUTE_DIRECTORY, utf8ToTStr(filenameWithFullPath), 0))
{ {
relativePath = filenameWithFullPath; relativePath = filenameWithFullPath;
} }
else else
{ {
relativePath = resultPath; relativePath = tStrToUtf8(resultPath);
} }
if (relativePath.size() >= 2) if (relativePath.size() >= 2)

View file

@ -121,7 +121,7 @@ void CSnapshotToolDlg::stringFromRegistry(HKEY hKey, const TCHAR *name, CString
return; return;
} }
std::auto_ptr<TCHAR> tmpDest(new TCHAR[size]); CUniquePtr<TCHAR[]> tmpDest(new TCHAR[size]);
result = RegQueryValueEx(hKey, name, NULL, &type, (BYTE*)tmpDest.get(), &size); result = RegQueryValueEx(hKey, name, NULL, &type, (BYTE*)tmpDest.get(), &size);
if (result != ERROR_SUCCESS) if (result != ERROR_SUCCESS)
@ -130,7 +130,7 @@ void CSnapshotToolDlg::stringFromRegistry(HKEY hKey, const TCHAR *name, CString
return; return;
} }
dest = *tmpDest; dest = tmpDest.get();
} }
@ -210,8 +210,8 @@ void CSnapshotToolDlg::toRegistry()
HKEY hKey; HKEY hKey;
if (RegCreateKey(HKEY_CURRENT_USER, NEL_OV_SNAPSHOT_TOOL_REGKEY, &hKey)==ERROR_SUCCESS) if (RegCreateKey(HKEY_CURRENT_USER, NEL_OV_SNAPSHOT_TOOL_REGKEY, &hKey)==ERROR_SUCCESS)
{ {
RegSetValueEx(hKey, _T("InputPath"), 0, REG_SZ, (BYTE*) (LPCTSTR) m_InputPath, m_InputPath.GetLength() + 1); RegSetValueEx(hKey, _T("InputPath"), 0, REG_SZ, (BYTE*) (LPCTSTR) m_InputPath, (m_InputPath.GetLength() + 1) * sizeof(TCHAR));
RegSetValueEx(hKey, _T("OutputPath"), 0, REG_SZ, (BYTE*) (LPCTSTR) m_OutputPath, m_OutputPath.GetLength() + 1); RegSetValueEx(hKey, _T("OutputPath"), 0, REG_SZ, (BYTE*) (LPCTSTR) m_OutputPath, (m_OutputPath.GetLength() + 1) * sizeof(TCHAR));
CString filters; CString filters;
for (uint k = 0; k < (uint) m_Filters.GetCount(); ++k) for (uint k = 0; k < (uint) m_Filters.GetCount(); ++k)
{ {
@ -221,7 +221,7 @@ void CSnapshotToolDlg::toRegistry()
filters += filter; filters += filter;
} }
RegSetValueEx(hKey, _T("Filters"), 0, REG_SZ, (BYTE*) (LPCTSTR) filters, filters.GetLength() + 1); RegSetValueEx(hKey, _T("Filters"), 0, REG_SZ, (BYTE*) (LPCTSTR) filters, (filters.GetLength() + 1) * sizeof(TCHAR));
DWORD recurseSubFolder = m_RecurseSubFolder; DWORD recurseSubFolder = m_RecurseSubFolder;
DWORD dumpTextureSets = m_DumpTextureSets; DWORD dumpTextureSets = m_DumpTextureSets;
DWORD width = (DWORD) m_OutputWidth; DWORD width = (DWORD) m_OutputWidth;

View file

@ -18,7 +18,7 @@
// //
#include "std_afx.h" #include "std_afx.h"
#include <tchar.h>
//#include "nel/3d/register_3d.h" //#include "nel/3d/register_3d.h"
//#include "nel/3d/scene.h" //#include "nel/3d/scene.h"
@ -29,9 +29,9 @@
using namespace NLMISC; using namespace NLMISC;
using namespace std; using namespace std;
int APIENTRY WinMain(HINSTANCE hInstance, int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, LPTSTR lpCmdLine,
int nCmdShow) int nCmdShow)
{ {
// Register 3d // Register 3d
@ -41,13 +41,13 @@ int APIENTRY WinMain(HINSTANCE hInstance,
// init3d (); // init3d ();
// Remove command line "" // Remove command line ""
char commandLine[512]; TCHAR commandLine[512];
char *commandLinePtr=commandLine; TCHAR *commandLinePtr=commandLine;
strcpy (commandLine, lpCmdLine); _tcscpy (commandLine, lpCmdLine);
if (commandLine[0]=='"') if (commandLine[0]==_T('"'))
commandLinePtr++; commandLinePtr++;
if (commandLinePtr[strlen (commandLinePtr)-1]=='"') if (commandLinePtr[_tcslen (commandLinePtr)-1]==_T('"'))
commandLinePtr[strlen (commandLinePtr)-1]=0; commandLinePtr[_tcslen (commandLinePtr)-1]=0;
// Create a object viewer // Create a object viewer
IObjectViewer *objectViewer=IObjectViewer::getInterface(); IObjectViewer *objectViewer=IObjectViewer::getInterface();
@ -58,11 +58,11 @@ int APIENTRY WinMain(HINSTANCE hInstance,
if (objectViewer->initUI ()) if (objectViewer->initUI ())
{ {
// Argument ? // Argument ?
if (strcmp (commandLinePtr, "")!=0) if (_tcscmp (commandLinePtr, _T(""))!=0)
{ {
// Make a string vector // Make a string vector
vector<string> strVector; vector<string> strVector;
strVector.push_back (commandLinePtr); strVector.push_back (tStrToUtf8(commandLinePtr));
// Try to load a shape // Try to load a shape
if (objectViewer->loadMesh (strVector, "")) if (objectViewer->loadMesh (strVector, ""))

View file

@ -18,103 +18,42 @@
#include "nel_export.h" #include "nel_export.h"
//-------------------------------------------------------------------------------------------------------------- #include "nel/misc/path.h"
ULONG CNelExport::ExtractFileName(char* Path, char* Name) #ifdef DEBUG_NEW
{ #define new DEBUG_NEW
long i,j; #endif
char temp[MAX_PATH];
for(j=0,i=strlen(Path)-1 ; i>=0 && Path[i]!='\\' && Path[i]!='//' ; i--,j++)
temp[j]=Path[i];
temp[j]=0;
for(i=strlen(temp)-1,j=0 ; i>=0 ; i--,j++)
Name[j]=temp[i];
Name[j]=0;
return(1);
}
//-------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::ExtractPath(char* FullPath, char* Path) ULONG CNelExport::SelectFileForSave(HWND Parent, TCHAR* Title, const TCHAR* Mask, std::string &FileName)
{ {
long i; TCHAR curdir[MAX_PATH];
TCHAR fname[MAX_PATH];
for(i=strlen(FullPath)-1 ; i>=0 && FullPath[i]!='\\' && FullPath[i]!='//' ; i--); std::string path, filename;
strncpy(Path,FullPath,i+1);
Path[i+1]=0;
return(1);
}
//--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::SelectFileForLoad(HWND Parent, char* Title, const char* Mask, char* FileName)
{
OPENFILENAME ofn;
char r;
char curdir[MAX_PATH];
char fname[MAX_PATH];
fname[0]=0;
if (!FileName[0]) if (!FileName[0])
{ {
GetCurrentDirectory(MAX_PATH,curdir); path = NLMISC::CPath::getCurrentPath();
} }
else else
{ {
ExtractPath(FileName,curdir); path = NLMISC::CFile::getPath(FileName);
if (!curdir[0])
if (path.empty())
{ {
GetCurrentDirectory(MAX_PATH,curdir); path = NLMISC::CPath::getCurrentPath();
} }
ExtractFileName(FileName,fname);
filename = NLMISC::CFile::getFilename(FileName);
} }
memset(&ofn,0,sizeof(OPENFILENAME)); // copy path and filename to temporary buffers
ofn.lStructSize = sizeof ( OPENFILENAME ); _tcscpy_s(curdir, MAX_PATH, utf8ToTStr(path));
ofn.hwndOwner = Parent; _tcscpy_s(fname, MAX_PATH, utf8ToTStr(filename));
ofn.hInstance = GetModuleHandle(NULL);
ofn.lpstrFilter = Mask;
ofn.lpstrCustomFilter = NULL;
ofn.nFilterIndex = 0;
ofn.lpstrFile = fname;
ofn.nMaxFile = 500;
ofn.lpstrTitle = Title;
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_OVERWRITEPROMPT;
ofn.lpstrDefExt = "*";
ofn.lpstrInitialDir = curdir;
r=GetOpenFileName ( &ofn );
strcpy(FileName,fname);
return(r);
}
//--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::SelectFileForSave(HWND Parent, char* Title, const char* Mask, char* FileName)
{
OPENFILENAME ofn;
char r;
char curdir[MAX_PATH];
char fname[MAX_PATH];
fname[0]=0;
if (!FileName[0])
{
GetCurrentDirectory(MAX_PATH,curdir);
}
else
{
ExtractPath(FileName,curdir);
if (!curdir[0])
{
GetCurrentDirectory(MAX_PATH,curdir);
}
ExtractFileName(FileName,fname);
}
OPENFILENAME ofn;
memset(&ofn,0,sizeof(OPENFILENAME)); memset(&ofn,0,sizeof(OPENFILENAME));
ofn.lStructSize = sizeof ( OPENFILENAME ); ofn.lStructSize = sizeof ( OPENFILENAME );
ofn.hwndOwner = Parent; ofn.hwndOwner = Parent;
@ -126,201 +65,40 @@ ULONG CNelExport::SelectFileForSave(HWND Parent, char* Title, const char* Mask,
ofn.nMaxFile = 500; ofn.nMaxFile = 500;
ofn.lpstrTitle = Title; ofn.lpstrTitle = Title;
ofn.Flags = OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_OVERWRITEPROMPT; ofn.Flags = OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_OVERWRITEPROMPT;
ofn.lpstrDefExt = "*"; ofn.lpstrDefExt = _T("*");
ofn.lpstrInitialDir = curdir; ofn.lpstrInitialDir = curdir;
r=GetSaveFileName ( &ofn ); BOOL r = GetSaveFileName ( &ofn );
strcpy(FileName,fname);
return(r); FileName = tStrToUtf8(fname);
return r;
} }
//-------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::SelectDir(HWND Parent, char* Title, char* Path) ULONG CNelExport::SelectDir(HWND Parent, TCHAR* Title, std::string &Path)
{ {
BROWSEINFO bi; TCHAR str[MAX_PATH];
char str[MAX_PATH]; _tcscpy_s(str, MAX_PATH, utf8ToTStr(Path));
ITEMIDLIST* pidl;
BROWSEINFO bi;
bi.hwndOwner=Parent; bi.hwndOwner=Parent;
bi.pidlRoot=NULL; bi.pidlRoot=NULL;
bi.pszDisplayName=Path; bi.pszDisplayName=str;
bi.lpszTitle=Title; bi.lpszTitle=Title;
bi.ulFlags=0; bi.ulFlags=0;
bi.lpfn=0; bi.lpfn=0;
bi.lParam=0; bi.lParam=0;
bi.iImage=0; bi.iImage=0;
pidl=SHBrowseForFolder(&bi);
ITEMIDLIST* pidl = SHBrowseForFolder(&bi);
if (!SHGetPathFromIDList(pidl,str) ) if (!SHGetPathFromIDList(pidl,str) )
{ {
return(0); return 0;
} }
strcpy(Path,str);
return(1); Path = tStrToUtf8(str);
return 1;
} }
//--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::FileExists(const char* FileName)
{
FILE *file;
if ( !strcmp(FileName,"") ) return(0);
file=fopen(FileName,"rb");
if (!file) return(0);
fclose(file);
return(1);
}
//--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::GetFileSize(char* FileName)
{
FILE *file;
unsigned long fsize;
file=fopen(FileName,"rb");
if (!file) return(0);
fseek(file,0,SEEK_END);
fsize=ftell(file);
fclose(file);
return(fsize);
}
//--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::ProcessDir(char* Dir, const char* Mask, unsigned long flag, ULONG Fnct(char* FileName) )
{
char ToFound[MAX_PATH];
char FullDir[MAX_PATH];
char str[MAX_PATH];
HANDLE h;
WIN32_FIND_DATA fi;
BOOL r;
GetFullPathName(Dir,MAX_PATH,FullDir,NULL);
// --- Directory
if (flag)
{
strcpy(ToFound,Dir);
if ( ToFound[strlen(ToFound)-1]!='\\')
strcat(ToFound,"\\");
strcat(ToFound,"*.*");
h=FindFirstFile(ToFound,&fi);
if (h!=INVALID_HANDLE_VALUE)
{
r=1;
while(r)
{
if ( strcmp(fi.cFileName,".") && strcmp(fi.cFileName,"..") )
{
if (
fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
!(fi.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
)
{
strcpy(str,Dir);
if ( str[strlen(str)-1]!='\\' ) strcat(str,"\\");
strcat(str,fi.cFileName);
if ( !ProcessDir(str,Mask,flag,Fnct) ) return(0);
}
}
r=FindNextFile(h,&fi);
}
FindClose(h);
}
}
// --- Files
strcpy(ToFound,Dir);
if ( ToFound[strlen(ToFound)-1]!='\\') strcat(ToFound,"\\");
strcat(ToFound,Mask);
h=FindFirstFile(ToFound,&fi);
if (h!=INVALID_HANDLE_VALUE)
{
r=1;
while(r)
{
if ( strcmp(fi.cFileName,".") && strcmp(fi.cFileName,"..") )
{
if ( !(fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
{
strcpy(str,FullDir);
if ( str[strlen(str)-1]!='\\' ) strcat(str,"\\");
strcat(str,fi.cFileName);
::strupr(str);
if ( !Fnct(str) ) return(0);
}
}
r=FindNextFile(h,&fi);
}
FindClose(h);
}
return(1);
}
//--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::CleanFileName(char* FileName)
{
char str[MAX_PATH];
unsigned long i,j,found;
j=0;
for(i=0 ; i<strlen(FileName) ; i++)
{
found=0;
if (FileName[i]=='\\' && i!=0 && FileName[i-1]!='\\') { str[j]='\\'; j++; found=1; }
if (FileName[i]=='/' && i!=0 && FileName[i-1]!='/') { str[j]='/'; j++; found=1; }
if (!found) { str[j]=FileName[i]; j++; }
}
return(1);
}
//--------------------------------------------------------------------------------------------------------------
ULONG CNelExport::CreateBAKFile(char* FileName)
{
FILE *fin,*fout;
unsigned long fsize;
char *block;
char str[MAX_PATH];
if ( !FileExists(FileName) )
{
return(1);
}
fin=fopen(FileName,"rb");
if (!fin)
{
//SetError("CreateBAKFile, unable to open %s",FileName);
return(0);
}
fsize=GetFileSize(FileName);
if (!fsize)
{
//SetError("CreateBAKFile, unable to get file size for %s",FileName);
return(0);
}
block=(char*)calloc(1,fsize);
if (!block)
{
//SetError("CreateBAKFile, not enough memory");
return(0);
}
fread(block,1,fsize,fin);
fclose(fin);
strcpy(str,FileName);
str[strlen(str)-1]='K';
str[strlen(str)-2]='A';
str[strlen(str)-3]='B';
fout=fopen(str,"w+b");
if (!fout)
{
//SetError("CreateBAKFile, unable to open %s",str);
return(0);
}
fwrite(block,1,fsize,fout);
fclose(fout);
return(1);
}

View file

@ -62,7 +62,8 @@ INT_PTR CALLBACK CalculatingDialogCallback (
(((uint32)TimeLeft)/60)%60, (((uint32)TimeLeft)/60)%60,
(((uint32)TimeLeft))%60 ); (((uint32)TimeLeft))%60 );
if (pClass->bCancelCalculation) if (pClass->bCancelCalculation)
_tcscpy (temp, _T("INTERRUPTED - Finishing current object...")); _tcscpy_s (temp, 256, _T("INTERRUPTED - Finishing current object..."));
SendMessage (GetDlgItem (hwndDlg, IDC_STATICTIMELEFT), WM_SETTEXT, 0, (LPARAM)temp); SendMessage (GetDlgItem (hwndDlg, IDC_STATICTIMELEFT), WM_SETTEXT, 0, (LPARAM)temp);
SendMessage (GetDlgItem (hwndDlg, IDC_BUTTONCANCEL), WM_PAINT, 0, 0); SendMessage (GetDlgItem (hwndDlg, IDC_BUTTONCANCEL), WM_PAINT, 0, 0);
} }

View file

@ -34,6 +34,10 @@
using namespace NLMISC; using namespace NLMISC;
using namespace NL3D; using namespace NL3D;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
static Class_ID DefNoteTrackClassID(NOTETRACK_CLASS_ID, 0); static Class_ID DefNoteTrackClassID(NOTETRACK_CLASS_ID, 0);
#define BOOL_CONTROL_CLASS_ID 0x984b8d27 #define BOOL_CONTROL_CLASS_ID 0x984b8d27

View file

@ -1180,7 +1180,7 @@ void CExportNel::getBSMeshBuild (std::vector<CMesh::CMeshBuild*> &bsList, INode
convertMatrix(finalSpace, node.GetNodeTM(time)); convertMatrix(finalSpace, node.GetNodeTM(time));
CMeshBase::CMeshBaseBuild *dummyMBB = NULL; CMeshBase::CMeshBaseBuild *dummyMBB = NULL;
std::auto_ptr<CMesh::CMeshBuild> baseMB(createMeshBuild (node, time, dummyMBB, finalSpace)); CUniquePtr<CMesh::CMeshBuild> baseMB(createMeshBuild (node, time, dummyMBB, finalSpace));
delete dummyMBB; delete dummyMBB;
dummyMBB = NULL; dummyMBB = NULL;
if (baseMB.get() == NULL) return; if (baseMB.get() == NULL) return;

View file

@ -20,7 +20,7 @@
#include <set> #include <set>
#include <vector> #include <vector>
#include <iterator>
#include "nel/misc/line.h" #include "nel/misc/line.h"
#include "nel/misc/polygon.h" #include "nel/misc/polygon.h"

View file

@ -39,7 +39,7 @@ static void buildRemanenceError(CExportNel *en, INode &node, const char *mess)
//============================================================================================= //=============================================================================================
NL3D::IShape *CExportNel::buildRemanence(INode& node, TimeValue time) NL3D::IShape *CExportNel::buildRemanence(INode& node, TimeValue time)
{ {
std::auto_ptr<CSegRemanenceShape> srs(new CSegRemanenceShape); CUniquePtr<CSegRemanenceShape> srs(new CSegRemanenceShape);
uint numSlices = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_SLICE_NUMBER, 2); uint numSlices = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_SLICE_NUMBER, 2);
float samplingPeriod = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_SAMPLING_PERIOD, 0.02f); float samplingPeriod = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_SAMPLING_PERIOD, 0.02f);
float rollupRatio = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_ROLLUP_RATIO, 1.f); float rollupRatio = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_ROLLUP_RATIO, 1.f);

View file

@ -1,6 +1,10 @@
#include "stdafx.h" #include "stdafx.h"
#include "editpat.h" #include "editpat.h"
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
// ------------------------------------------------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------------------------------------------------
#define DBGWELD_DUMPx #define DBGWELD_DUMPx

View file

@ -133,7 +133,10 @@ void SetBankPathName (const std::string& path)
HKEY hKey; HKEY hKey;
if (RegCreateKey(HKEY_CURRENT_USER, REGKEY_TILEDIT, &hKey)==ERROR_SUCCESS) if (RegCreateKey(HKEY_CURRENT_USER, REGKEY_TILEDIT, &hKey)==ERROR_SUCCESS)
{ {
RegSetValueEx(hKey, "Bank Path", 0, REG_SZ, (LPBYTE)path.c_str(), path.length()+1); TCHAR buffer[MAX_PATH];
_tcscpy_s(buffer, MAX_PATH, utf8ToTStr(path));
RegSetValueEx(hKey, _T("Bank Path"), 0, REG_SZ, (LPBYTE)buffer, (_tcslen(buffer)+1)*sizeof(TCHAR));
RegCloseKey (hKey); RegCloseKey (hKey);
} }
} }
@ -1972,7 +1975,7 @@ IOResult RPatchMesh::Load(ILoad *iload)
for (i=0; i<nSize; i++) for (i=0; i<nSize; i++)
{ {
bool bBinded; bool bBinded;
typeBind nType; uint /* typeBind */ nType;
uint nEdge; uint nEdge;
uint nPatch; uint nPatch;
uint nBefore; uint nBefore;
@ -2113,7 +2116,7 @@ IOResult RPatchMesh::Save(ISave *isave)
uint nAfter=getUIVertex (i).Binding.nAfter; uint nAfter=getUIVertex (i).Binding.nAfter;
uint nAfter2=getUIVertex (i).Binding.nAfter2; uint nAfter2=getUIVertex (i).Binding.nAfter2;
uint nT=getUIVertex (i).Binding.nT; uint nT=getUIVertex (i).Binding.nT;
typeBind nType=(typeBind)getUIVertex (i).Binding.nType; uint /* typeBind */ nType=(uint /* typeBind */)getUIVertex (i).Binding.nType;
uint nPrimVert=getUIVertex (i).Binding.nPrimVert; uint nPrimVert=getUIVertex (i).Binding.nPrimVert;
isave->Write(&bBinded, sizeof (bool), &nb); isave->Write(&bBinded, sizeof (bool), &nb);

Some files were not shown because too many files have changed in this diff Show more