Open Search
    newobj.h File Reference

    Classes

    class  ForwardFree< IS_DELETABLE >
     
    class  ForwardFree< true >
     
    class  NewDelete< T >
     

    Namespaces

     maxon
     
     maxon::details
     

    Macros

    #define NewObj(T, ...)
     
    #define NewObjPtr(T, ...)
     
    #define DeleteObj(obj)
     

    Functions

    template<typename T >
    void PrivateFreeWithDestructor (const T *obj)
     
    Bool PrivateClearAllWeakReferences (const void *obj)
     
    template<typename T , typename... ARGS>
    ResultPtr< T > NewObjWithLocation (MAXON_SOURCE_LOCATION_DECLARATION, ARGS &&... args)
     
    template<typename T , typename... ARGS>
    ResultPtr< T > NewObjT (ARGS &&... args)
     
    template<typename T >
    MAXON_ATTRIBUTE_FORCE_INLINE void DeleteConstPtrObj (T *o)
     

    Macro Definition Documentation

    ◆ NewObj

    #define NewObj (   T,
      ... 
    )

    Creates an object with constructor parameters (using new or T::Alloc, depending on the type). This does not throw any kind of exception, it returns null if the allocation fails. NewObj does not clear the memory. Usage: MyType* x = NewObj(MyType, optional constructor parameters);

    Note
    Creating a template object will not compile if the template contains a comma, e.g. NewObj(MyType<1,2>). This is due to the nature of how the preprocessor works. To make it work either use NewObjT<>() or declare an alias using MyAllocType = MyType<1,2>; and then pass MyAllocType for the allocation itself.
    NewObj does not support objects which might throw exceptions. THREADSAFE.
    Parameters
    [in]TType of object.
    [in]...Additional constructor parameters.
    Returns
    Pointer to object (null if allocation failed)

    ◆ NewObjPtr

    #define NewObjPtr (   T,
      ... 
    )

    Deprecated.

    ◆ DeleteObj

    #define DeleteObj (   obj)

    Deletes an object. This expects a pointer as argument, the object is deleted using the destructor or T::Free, depending on the type of the object. If the destructor is private System::FreeWithDestructor() cannot be called; the destructor is called inline (after clearing weak references) and then the memory is released.

    Note
    DeleteObj does not support objects which might throw exceptions. THREADSAFE.
    Parameters
    [in,out]objObject pointer (can be nullptr, will be nullptr after return)