Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

108 Neutral

About abrakadabra

  • Rank
  1. I am trying to set my environment variable using cmake but the result from this string PATH=%PATH%;C:/Program Files/Autodesk/Maya2015/bin/   results in PATH=%PATH% C:/Program Files/Autodesk/Maya2015/bin/   CMake thinks the string is a list because of the semicolon. Another CMake wtf moment. Any idea how to prevent this and force the string be a string and not a list?
  2. I have never understood the point of blocking sockets. Even in a multithreading setting the socket would block indefinitely and force you to terminate the thread.   Apart from toy programs - is there a use for blocking sockets?
  3.   I tried it but cpp11_delete still evaluates to (m_setOwner (__FILE__,__LINE__,__FUNCTION__),false) ? m_setOwner("",0,"") : delete.
  4. To remember where allocations and deallocations occured paul nettle redefine new and delete like this: // --------------------------------------------------------------------------------------------------------------------------------- // Variations of global operators new & delete // --------------------------------------------------------------------------------------------------------------------------------- void *operator new(size_t reportedSize); void *operator new[](size_t reportedSize); void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine); void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine); void operator delete(void *reportedAddress); void operator delete[](void *reportedAddress); #endif // _H_MMGR // --------------------------------------------------------------------------------------------------------------------------------- // Macros -- "Kids, please don't try this at home. We're trained professionals here." :) // --------------------------------------------------------------------------------------------------------------------------------- #include "nommgr.h" #define new (m_setOwner (__FILE__,__LINE__,__FUNCTION__),false) ? NULL : new #define delete (m_setOwner (__FILE__,__LINE__,__FUNCTION__),false) ? m_setOwner("",0,"") : delete #define malloc(sz) m_allocator (__FILE__,__LINE__,__FUNCTION__,m_alloc_malloc,sz) #define calloc(sz) m_allocator (__FILE__,__LINE__,__FUNCTION__,m_alloc_calloc,sz) #define realloc(ptr,sz) m_reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr) #define free(ptr) m_deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr) However, in C++11 you can delete constructors like this: class TestClass { public: TestClass() = delete; //Breaks the memory tracker! TestClass(int i) { } virtual ~TestClass() { cout << "Destructor called." << endl; } }; Any idea how to modify the memory tracker to work with C++11? Wasn't it pretty damn stupid to choose "delete" for deleting constructors when it is already a keyword for freeing memory?
  5. The goal is for every component system contain the components without having to define the std::map<int, component> and accessory methods in every system. That is 100's of lines of cut and paste for every component system (create_component(), component_exists(), etc).   Thank you Hodgman for your help, I will rethink my approach.
  6. I am trying to design a component-based entity system and I came up with a solution that looks similar to this: class base_component { }; template <class T> class base_system { public: protected: std::map<int, T> m_components; }; class spacial_component : public base_component { public: }; class spacial_system : public base_system<spacial_component> { };   This way I was hoping the base_system class would create an std::map with the components for every component system.   What I am wondering is if it is valid to design it like this and then use polymorphism like the following:   spacial_system ss; base_system<base_component>* bs = (base_system<base_component>*) ss;   My hope would be that this is possible since my entity_system class should store a vector of all available systems for dispatching messages to the systems using virtual functions. I have it implemented in VS 2012 and it works there. Then I tried to use the same code on VS 2010 and got random crashes. I suspect the cast to base_system<base_component>* is not actually valid C++. So my question is, is the cast valid? Should I use another solution?
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!