• 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?