src/misc/autocopyptr.hpp
branchgamebalance
changeset 9907 3b068c3a1c74
parent 5884 be0c8467aeb4
child 6308 646711c5feaa
equal deleted inserted replaced
9906:6f41b8713b65 9907:3b068c3a1c74
     6 #if 0 // reenable when needed
     6 #if 0 // reenable when needed
     7 /** CAutoCopyPtrT - kind of CoW (Copy on Write) pointer.
     7 /** CAutoCopyPtrT - kind of CoW (Copy on Write) pointer.
     8  *  It is non-invasive smart pointer (reference counter is held outside
     8  *  It is non-invasive smart pointer (reference counter is held outside
     9  *  of Tdata).
     9  *  of Tdata).
    10  *  When copied, its new copy shares the same underlaying structure Tdata.
    10  *  When copied, its new copy shares the same underlaying structure Tdata.
    11  *  When dereferenced, its behavior depends on 2 factors:
    11  *  When dereferenced, its behaviour depends on 2 factors:
    12  *     - whether the data is shared (used by more than one pointer)
    12  *     - whether the data is shared (used by more than one pointer)
    13  *     - type of access (read/write)
    13  *     - type of access (read/write)
    14  *    When shared pointer is dereferenced for write, new clone of Tdata
    14  *    When shared pointer is dereferenced for write, new clone of Tdata
    15  *  is made first.
    15  *  is made first.
    16  *  Can't be used for polymorphic data types (interfaces).
    16  *  Can't be used for polymorphic data types (interfaces).