Beispiel #1
0
 virtual const object&  create(const std::function<void(object&)>& constructor )override
 {
    ObjectType item;
    item.id = get_next_id();
    constructor( item );
    auto insert_result = _indices.insert( std::move(item) );
    FC_ASSERT(insert_result.second, "Could not create object! Most likely a uniqueness constraint is violated.");
    use_next_id();
    return *insert_result.first;
 }
Beispiel #2
0
 virtual const object&  create( const std::function<void(object&)>& constructor ) override
 {
     auto id = get_next_id();
     auto instance = id.instance();
     if( instance >= _objects.size() ) _objects.resize( instance + 1 );
     _objects[instance].id = id;
     constructor( _objects[instance] );
     use_next_id();
     return _objects[instance];
 }
 virtual const object&  create( const std::function<void(object&)>& constructor ) override
 {
     auto id = get_next_id();
     auto instance = id.instance();
     if( instance >= _objects.size() ) _objects.resize( instance + 1 );
     _objects[instance].reset(new T);
     _objects[instance]->id = id;
     constructor( *_objects[instance] );
     _objects[instance]->id = id; // just in case it changed
     use_next_id();
     return *_objects[instance];
 }