Public Member Functions | Protected Member Functions | Protected Attributes

CargoRemoval< Tsource > Class Template Reference

Abstract action of removing cargo from a vehicle or a station. More...

#include <cargoaction.h>

Public Member Functions

 CargoRemoval (Tsource *source, uint max_move)
uint MaxMove ()
 Returns how much more cargo can be removed with this action.
bool operator() (CargoPacket *cp)
template<>
bool operator() (CargoPacket *cp)

Protected Member Functions

uint Preprocess (CargoPacket *cp)
 Determines the amount of cargo to be removed from a packet and removes that from the metadata of the list.
bool Postprocess (CargoPacket *cp, uint remove)
 Finalize cargo removal.

Protected Attributes

Tsource * source
 Source of the cargo.
uint max_move
 Maximum amount of cargo to be removed with this action.

Detailed Description

template<class Tsource>
class CargoRemoval< Tsource >

Abstract action of removing cargo from a vehicle or a station.

Template Parameters:
Tinst Actual instantiation of this action.
Tsource CargoList subclass to remove cargo from.

Definition at line 23 of file cargoaction.h.


Member Function Documentation

template<class Tsource>
uint CargoRemoval< Tsource >::MaxMove (  )  [inline]

Returns how much more cargo can be removed with this action.

Returns:
Amount of cargo this action can still remove.

Definition at line 36 of file cargoaction.h.

template<>
bool CargoRemoval< StationCargoList >::operator() ( CargoPacket cp  ) 
Parameters:
cp Packet to be removed.
Returns:
True if the packet was completely delivered, false if only part of it was.

Definition at line 79 of file cargoaction.cpp.

References CargoRemoval< Tsource >::Postprocess(), CargoRemoval< Tsource >::Preprocess(), and CargoRemoval< Tsource >::source.

template<class Tsource >
template bool CargoRemoval< Tsource >::Postprocess ( CargoPacket cp,
uint  remove 
) [protected]

Finalize cargo removal.

Either delete the packet or reduce it.

Parameters:
cp Packet to be removed or reduced.
remove Amount of cargo to be removed.
Returns:
True if the packet was deleted, False if it was reduced.

Definition at line 61 of file cargoaction.cpp.

References CargoPacket::Count(), and CargoPacket::Reduce().

Referenced by CargoRemoval< Tsource >::operator()().

template<class Tsource >
template uint CargoRemoval< Tsource >::Preprocess ( CargoPacket cp  )  [protected]

Determines the amount of cargo to be removed from a packet and removes that from the metadata of the list.

Parameters:
cp Packet to be removed completely or partially.
Returns:
Amount of cargo to be removed.

Definition at line 42 of file cargoaction.cpp.

References CargoPacket::Count(), and CargoRemoval< Tsource >::max_move.

Referenced by CargoRemoval< Tsource >::operator()().


The documentation for this class was generated from the following files: