PetaVision
Alpha
|
HyPerLayer Parameters | |
List of parameters needed from the HyPerLayer class | |
virtual void | ioParam_dataType (enum ParamsIOFlag ioFlag) |
virtual void | ioParam_updateGpu (enum ParamsIOFlag ioFlag) |
updateGpu: When compiled using CUDA or OpenCL GPU acceleration, this flag tells whether this layer's updateState method should use the GPU. If PetaVision was compiled without GPU acceleration, it is an error to set this flag to true. | |
virtual void | ioParam_nxScale (enum ParamsIOFlag ioFlag) |
nxScale: Defines the relationship between the x column size and the layer size. More... | |
virtual void | ioParam_nyScale (enum ParamsIOFlag ioFlag) |
nyScale: Defines the relationship between the y column size and the layer size. More... | |
virtual void | ioParam_nf (enum ParamsIOFlag ioFlag) |
nf: Defines how many features this layer has | |
virtual void | ioParam_phase (enum ParamsIOFlag ioFlag) |
phase: Defines the ordering in which each layer is updated | |
virtual void | ioParam_mirrorBCflag (enum ParamsIOFlag ioFlag) |
mirrorBCflag: If set to true, the margin will mirror the data | |
virtual void | ioParam_valueBC (enum ParamsIOFlag ioFlag) |
valueBC: If mirrorBC is set to true, Uses the specified value for the margin area | |
virtual void | ioParam_initializeFromCheckpointFlag (enum ParamsIOFlag ioFlag) |
initializeFromCheckpointFlag: If set to true, initialize using checkpoint direcgtory set in HyPerCol. More... | |
virtual void | ioParam_triggerFlag (enum ParamsIOFlag ioFlag) |
triggerFlag: (Deprecated) Specifies if this layer is being triggered More... | |
virtual void | ioParam_triggerLayerName (enum ParamsIOFlag ioFlag) |
triggerLayerName: Specifies the name of the layer that this layer triggers off of. If set to NULL or the empty string, the layer does not trigger but updates its state on every timestep. | |
virtual void | ioParam_triggerOffset (enum ParamsIOFlag ioFlag) |
triggerOffset: If triggerLayer is set, triggers <triggerOffset> timesteps before target trigger More... | |
virtual void | ioParam_triggerBehavior (enum ParamsIOFlag ioFlag) |
triggerBehavior: If triggerLayerName is set, this parameter specifies how the trigger is handled. More... | |
virtual void | ioParam_triggerResetLayerName (enum ParamsIOFlag ioFlag) |
triggerResetLayerName: If triggerLayerName is set, this parameter specifies the layer to use for updating the state when the trigger happens. If set to NULL or the empty string, use triggerLayerName. | |
virtual void | ioParam_writeStep (enum ParamsIOFlag ioFlag) |
writeStep: Specifies how often to output a pvp file for this layer More... | |
virtual void | ioParam_initialWriteTime (enum ParamsIOFlag ioFlag) |
initialWriteTime: Specifies the first timestep to start outputing pvp files | |
virtual void | ioParam_sparseLayer (enum ParamsIOFlag ioFlag) |
sparseLayer: Specifies if the layer should be considered sparese for optimization and output | |
virtual void | ioParam_writeSparseValues (enum ParamsIOFlag ioFlag) |
writeSparseValues: No longer used. | |
Public Member Functions | |
CloneVLayer (const char *name, HyPerCol *hc) | |
virtual bool | activityIsSpiking () override |
virtual double | addGpuTimers () |
void | addRecvConn (BaseConnection *conn) |
virtual Response::Status | allocateDataStructures () override |
virtual void | allocateGSyn () override |
Response::Status | callUpdateState (double simTime, double dt) |
void | clearProgressFlags () |
virtual Response::Status | communicateInitInfo (std::shared_ptr< CommunicateInitInfoMessage const > message) override |
void | copyAllActivityFromDevice () |
void | copyAllGSynFromDevice () |
void | copyAllGSynToDevice () |
void | copyAllVFromDevice () |
float * | getActivity () |
float * | getChannel (ChannelType ch) |
virtual float | getChannelTimeConst (enum ChannelType channel_type) |
PVLayer * | getCLayer () |
bool | getDataStructuresAllocatedFlag () const |
PVDataType | getDataType () |
virtual double | getDeltaTriggerTime () |
virtual double | getDeltaUpdateTime () |
std::string const & | getDescription () const |
char const * | getDescription_c () const |
PVCuda::CudaBuffer * | getDeviceActiveIndices () |
PVCuda::CudaBuffer * | getDeviceActivity () |
PVCuda::CudaBuffer * | getDeviceDatastore () |
PVCuda::CudaBuffer * | getDeviceGSyn () |
PVCuda::CudaBuffer * | getDeviceNumActive () |
PVCuda::CudaBuffer * | getDeviceV () |
bool | getInitialValuesSetFlag () const |
bool | getInitInfoCommunicatedFlag () const |
double | getLastUpdateTime () |
const float * | getLayerData (int delay=0) |
PVLayerLoc const * | getLayerLoc () const |
MPIBlock const * | getMPIBlock () |
char const * | getName () const |
double | getNextUpdateTime () |
int | getNumChannels () |
int | getNumDelayLevels () |
int | getNumExtended () |
int | getNumExtendedAllBatches () |
int | getNumGlobalExtended () |
int | getNumGlobalNeurons () |
int | getNumNeurons () |
int | getNumNeuronsAllBatches () |
int | getNumProbes () |
std::string const & | getObjectType () const |
HyPerLayer * | getOriginalLayer () |
int | getPhase () |
LayerProbe * | getProbe (int n) |
Publisher * | getPublisher () |
bool | getSparseFlag () |
virtual double | getTimeScale (int batchIdx) |
bool | getUpdatedDeviceActivityFlag () |
bool | getUpdatedDeviceDatastoreFlag () |
bool | getUpdatedDeviceGSynFlag () |
float * | getV () |
float | getValueBC () |
int | getXScale () |
int | getYScale () |
int | increaseDelayLevels (int neededDelay) |
virtual int | insertProbe (LayerProbe *probe) |
void | ioParams (enum ParamsIOFlag ioFlag, bool printHeader, bool printFooter) |
bool | isExchangeFinished (int delay=0) |
bool | isExtended () |
bool | isUsingGPU () const |
char const * | lookupKeyword () const |
int | mirrorInteriorToBorder (PVLayerCube *cube, PVLayerCube *borderCube) |
virtual int | mirrorToEast (PVLayerCube *dest, PVLayerCube *src) |
virtual int | mirrorToNorth (PVLayerCube *dest, PVLayerCube *src) |
virtual int | mirrorToNorthEast (PVLayerCube *dest, PVLayerCube *src) |
virtual int | mirrorToNorthWest (PVLayerCube *dest, PVLayerCube *src) |
virtual int | mirrorToSouth (PVLayerCube *dest, PVLayerCube *src) |
virtual int | mirrorToSouthEast (PVLayerCube *dest, PVLayerCube *src) |
virtual int | mirrorToSouthWest (PVLayerCube *dest, PVLayerCube *src) |
virtual int | mirrorToWest (PVLayerCube *dest, PVLayerCube *src) |
virtual bool | needUpdate (double simTime, double dt) |
Response::Status | outputProbeParams () |
virtual Response::Status | outputState (double timef) |
virtual int | publish (Communicator *comm, double simTime) |
void | readParams () |
virtual int | recvAllSynapticInput () |
virtual int | requireChannel (int channelNeeded, int *numChannelsResult) override |
virtual int | requireMarginWidth (int marginWidthNeeded, int *marginWidthResult, char axis) override |
int | resetBuffer (float *buf, int numItems) |
virtual int | resetGSynBuffers (double timef, double dt) |
virtual Response::Status | respond (std::shared_ptr< BaseMessage const > message) override |
Response::Status | respondLayerAdvanceDataStore (std::shared_ptr< LayerAdvanceDataStoreMessage const > message) |
Response::Status | respondLayerCheckNotANumber (std::shared_ptr< LayerCheckNotANumberMessage const > message) |
Response::Status | respondLayerClearProgressFlags (std::shared_ptr< LayerClearProgressFlagsMessage const > message) |
Response::Status | respondLayerCopyFromGpu (std::shared_ptr< LayerCopyFromGpuMessage const > message) |
Response::Status | respondLayerOutputState (std::shared_ptr< LayerOutputStateMessage const > message) |
Response::Status | respondLayerProbeWriteParams (std::shared_ptr< LayerProbeWriteParamsMessage const > message) |
Response::Status | respondLayerPublish (std::shared_ptr< LayerPublishMessage const > message) |
Response::Status | respondLayerRecvSynapticInput (std::shared_ptr< LayerRecvSynapticInputMessage const > message) |
Response::Status | respondLayerSetMaxPhase (std::shared_ptr< LayerSetMaxPhaseMessage const > message) |
Response::Status | respondLayerUpdateState (std::shared_ptr< LayerUpdateStateMessage const > message) |
Response::Status | respondLayerWriteParams (std::shared_ptr< LayerWriteParamsMessage const > message) |
void | setAllocDeviceActiveIndices () |
void | setAllocDeviceActivity () |
void | setAllocDeviceDatastore () |
void | setAllocDeviceGSyn () |
void | setAllocDeviceV () |
void | setUpdatedDeviceActivityFlag (bool in) |
void | setUpdatedDeviceDatastoreFlag (bool in) |
void | setUpdatedDeviceGSynFlag (bool in) |
virtual void | syncGpu () |
void | synchronizeMarginWidth (HyPerLayer *layer) |
void | updateActiveIndices () |
virtual void | updateAllActiveIndices () |
bool | useMirrorBCs () |
virtual int | waitOnPublish (Communicator *comm) |
virtual int | writeActivity (double timed) |
virtual int | writeActivitySparse (double timed) |
void | writeParams () |
Static Public Member Functions | |
static bool | localDimensionsEqual (PVLayerLoc const *loc1, PVLayerLoc const *loc2) |
Data Fields | |
PVLayer * | clayer |
Protected Member Functions | |
void | addPublisher () |
virtual void | allocateActivity () |
template<typename T > | |
void | allocateBuffer (T **buf, int bufsize, const char *bufname) |
virtual void | allocateBuffers () |
virtual int | allocateClayerBuffers () |
virtual int | allocateDeviceBuffers () |
void | allocateExtendedBuffer (float **buf, const char *bufname) |
virtual void | allocatePrevActivity () |
void | allocateRestrictedBuffer (float **buf, const char *bufname) |
virtual int | allocateUpdateKernel () |
virtual void | allocateV () override |
void | calcNumExtended () |
void | checkpointPvpActivityFloat (Checkpointer *checkpointer, char const *bufferName, float *pvpBuffer, bool extended) |
void | checkpointRandState (Checkpointer *checkpointer, char const *bufferName, Random *randState, bool extendedFlag) |
virtual Response::Status | cleanup () |
virtual Response::Status | copyInitialStateToGPU () override |
template<typename T > | |
int | freeBuffer (T **buf) |
void | freeChannels () |
int | freeClayer () |
int | freeExtendedBuffer (float **buf) |
int | freeRestrictedBuffer (float **buf) |
virtual int | initClayer () |
int | initialize (const char *name, HyPerCol *hc) |
virtual void | initializeActivity () |
virtual Response::Status | initializeState () override |
virtual void | initializeV () override |
virtual void | ioParam_InitVType (enum ParamsIOFlag ioFlag) override |
initVType: Specifies how to initialize the V buffer. More... | |
virtual void | ioParam_originalLayerName (enum ParamsIOFlag ioFlag) |
virtual int | ioParamsFillGroup (enum ParamsIOFlag ioFlag) override |
bool | isAllInputReady () |
virtual bool | needReset (double timed, double dt) |
int | openOutputStateFile (Checkpointer *checkpointer) |
virtual Response::Status | prepareCheckpointWrite () |
virtual Response::Status | processCheckpointRead () override |
virtual void | readActivityFromCheckpoint (Checkpointer *checkpointer) |
virtual void | readDelaysFromCheckpoint (Checkpointer *checkpointer) |
virtual Response::Status | readStateFromCheckpoint (Checkpointer *checkpointer) override |
virtual void | readVFromCheckpoint (Checkpointer *checkpointer) override |
virtual Response::Status | registerData (Checkpointer *checkpointer) override |
virtual void | resetStateOnTrigger () |
Response::Status | respondAllocateData (std::shared_ptr< AllocateDataMessage const > message) |
Response::Status | respondCleanup (std::shared_ptr< CleanupMessage const > message) |
Response::Status | respondCommunicateInitInfo (std::shared_ptr< CommunicateInitInfoMessage const > message) |
Response::Status | respondCopyInitialStateToGPU (std::shared_ptr< CopyInitialStateToGPUMessage const > message) |
Response::Status | respondInitializeState (std::shared_ptr< InitializeStateMessage const > message) |
Response::Status | respondPrepareCheckpointWrite (std::shared_ptr< PrepareCheckpointWriteMessage const > message) |
Response::Status | respondProcessCheckpointRead (std::shared_ptr< ProcessCheckpointReadMessage const > message) |
Response::Status | respondReadStateFromCheckpoint (std::shared_ptr< ReadStateFromCheckpointMessage< Checkpointer > const > message) |
Response::Status | respondRegisterData (std::shared_ptr< RegisterDataMessage< Checkpointer > const > message) |
Response::Status | respondSetCudaDevice (std::shared_ptr< SetCudaDeviceMessage const > message) |
virtual int | runUpdateKernel () |
virtual int | setActivity () |
virtual Response::Status | setCudaDevice (std::shared_ptr< SetCudaDeviceMessage const > message) |
void | setDataStructuresAllocatedFlag () |
void | setDescription () |
void | setInitialValuesSetFlag () |
void | setInitInfoCommunicatedFlag () |
int | setLayerLoc (PVLayerLoc *layerLoc, float nxScale, float nyScale, int nf, int numBatches) |
virtual Response::Status | setMaxPhase (int *maxPhase) |
int | setName (char const *name) |
virtual void | setObjectType () |
int | setParent (HyPerCol *hc) |
void | updateNBands (int numCalls) |
virtual Response::Status | updateState (double timed, double dt) override |
virtual Response::Status | updateStateGpu (double timef, double dt) |
Static Protected Member Functions | |
static int | equalizeMargins (HyPerLayer *layer1, HyPerLayer *layer2) |
Protected Attributes | |
bool | allocDeviceActiveIndices |
bool | allocDeviceActivity |
bool | allocDeviceDatastore |
bool | allocDeviceGSyn |
bool | allocDeviceV |
PVCuda::CudaBuffer * | d_ActiveIndices |
PVCuda::CudaBuffer * | d_Activity |
PVCuda::CudaBuffer * | d_Datastore |
PVCuda::CudaBuffer * | d_GSyn |
PVCuda::CudaBuffer * | d_numActive |
PVCuda::CudaBuffer * | d_V |
PVDataType | dataType |
char * | dataTypeString |
std::string | description |
PVCuda::CudaTimer * | gpu_recvsyn_timer |
PVCuda::CudaTimer * | gpu_update_timer |
float ** | GSyn |
bool | initializeFromCheckpointFlag = true |
double | initialWriteTime |
char * | initVTypeString = nullptr |
Timer * | io_timer |
PVCuda::CudaKernel * | krUpdate |
int * | marginIndices |
PVCuda::CudaDevice * | mCudaDevice = nullptr |
bool | mDataStructuresAllocatedFlag = false |
bool | mHasReceived = false |
bool | mHasUpdated = false |
bool | mInitialValuesSetFlag = false |
bool | mInitInfoCommunicatedFlag = false |
BaseInitV * | mInitVObject = nullptr |
bool | mirrorBCflag |
double | mLastTriggerTime |
double | mLastUpdateTime |
bool | mNeedToPublish = true |
std::string | mObjectType |
CheckpointableFileStream * | mOutputStateStream = nullptr |
bool | mRecvGpu |
bool | mUpdateGpu |
bool | mUsingGPUFlag = false |
char * | name = nullptr |
int | numChannels |
int | numDelayLevels |
int | numFeatures |
int | numMargin |
int | numProbes |
int | numSynchronizedMarginWidthLayers |
float | nxScale |
float | nyScale |
HyPerLayer * | originalLayer |
char * | originalLayerName |
HyPerCol * | parent = nullptr |
int | phase |
LayerProbe ** | probes |
Timer * | publish_timer |
Publisher * | publisher = nullptr |
std::vector< BaseConnection * > | recvConns |
Timer * | recvsyn_timer |
unsigned int | rngSeedBase |
bool | sparseLayer |
HyPerLayer ** | synchronizedMarginWidthLayers |
float ** | thread_gSyn |
Timer * | timescale_timer |
char * | triggerBehavior |
TriggerBehaviorType | triggerBehaviorType |
bool | triggerFlag |
HyPerLayer * | triggerLayer |
char * | triggerLayerName |
double | triggerOffset |
HyPerLayer * | triggerResetLayer |
char * | triggerResetLayerName |
Timer * | update_timer |
bool | updatedDeviceActivity |
bool | updatedDeviceDatastore |
bool | updatedDeviceGSyn |
float | valueBC |
int | writeActivityCalls |
int | writeActivitySparseCalls |
double | writeStep |
double | writeTime |
int | xmargin |
int | ymargin |
Private Member Functions | |
int | initialize_base () |
Definition at line 15 of file CloneVLayer.hpp.
|
inherited |
Adds the given connection to the vector of connections to receive input from. The connection's post-synaptic layer must be the layer for which this member function is called.
Definition at line 1235 of file HyPerLayer.cpp.
|
protectedvirtualinherited |
Allocate GPU buffers. This must be called after PVLayer data have been allocated.
Definition at line 1090 of file HyPerLayer.cpp.
|
protectedinherited |
Allocates an extended buffer (that is, buffer's length is getNumExtendedAllBatches()).
Definition at line 329 of file HyPerLayer.cpp.
|
protectedinherited |
Allocates a restricted buffer (that is, buffer's length is getNumNeuronsAllBatches()).
Definition at line 325 of file HyPerLayer.cpp.
|
protectedinherited |
Frees a buffer created by allocateRestrictedBuffer(). Note that there is no checking whether the buffer was created by allocateExtendedBuffer(), or any other allocateBuffer()-related method.
Definition at line 256 of file HyPerLayer.cpp.
|
protectedinherited |
Frees a buffer created by allocateRestrictedBuffer(). Note that there is no checking whether the buffer was created by allocateRestrictedBuffer(), or any other allocateBuffer()-related method.
Definition at line 254 of file HyPerLayer.cpp.
|
inlineinherited |
Get-method for mDataStructuresAllocatedFlag, which is false on initialization and then becomes true once setDataStructuresAllocatedFlag() is called.
Definition at line 102 of file BaseObject.hpp.
|
virtualinherited |
A function to return the interval between triggering times. A negative value means that the layer never triggers (either there is no triggerLayer or the triggerLayer never updates).
Definition at line 1686 of file HyPerLayer.cpp.
|
virtualinherited |
A function to return the interval between times when updateState is needed.
Reimplemented in PV::InputLayer, PV::ISTALayer, and PV::HyPerLCALayer.
Definition at line 1677 of file HyPerLayer.cpp.
|
inlineinherited |
Get-method for mInitialValuesSetFlag, which is false on initialization and then becomes true once setInitialValuesSetFlag() is called.
Definition at line 108 of file BaseObject.hpp.
|
inlineinherited |
Get-method for mInitInfoCommunicatedFlag, which is false on initialization and then becomes true once setInitInfoCommunicatedFlag() is called.
Definition at line 95 of file BaseObject.hpp.
|
inherited |
Returns the activity data for the layer. This data is in the extended space (with margins).
Definition at line 1573 of file HyPerLayer.cpp.
|
protectedvirtualinherited |
initializeFromCheckpointFlag: If set to true, initialize using checkpoint direcgtory set in HyPerCol.
Checkpoint read directory must be set in HyPerCol to initialize from checkpoint.
Definition at line 671 of file HyPerLayer.cpp.
|
overrideprotectedvirtual |
initVType: Specifies how to initialize the V buffer.
Possible choices include
Further parameters are needed depending on initialization type.
Reimplemented from PV::HyPerLayer.
Definition at line 45 of file CloneVLayer.cpp.
|
protectedvirtualinherited |
nxScale: Defines the relationship between the x column size and the layer size.
Must be 2^n or 1/2^n
Definition at line 639 of file HyPerLayer.cpp.
|
protectedvirtualinherited |
nyScale: Defines the relationship between the y column size and the layer size.
Must be 2^n or 1/2^n
Definition at line 643 of file HyPerLayer.cpp.
|
protectedvirtualinherited |
triggerBehavior: If triggerLayerName is set, this parameter specifies how the trigger is handled.
The possible values of triggerBehavior are:
Definition at line 774 of file HyPerLayer.cpp.
|
protectedvirtualinherited |
triggerFlag: (Deprecated) Specifies if this layer is being triggered
Defaults to false. This flag is deprecated. To turn triggering off, set triggerLayer to NULL or the empty string. It is an error to set this flag to false and triggerLayer to a nonempty string.
Definition at line 724 of file HyPerLayer.cpp.
|
protectedvirtualinherited |
triggerOffset: If triggerLayer is set, triggers <triggerOffset> timesteps before target trigger
Defaults to 0
Definition at line 761 of file HyPerLayer.cpp.
|
protectedvirtualinherited |
writeStep: Specifies how often to output a pvp file for this layer
Defaults to every timestep. -1 specifies not to write at all.
Definition at line 825 of file HyPerLayer.cpp.
|
inherited |
Method for reading or writing the params from group in the parent HyPerCol's parameters. The group from params is selected using the name of the connection.
If ioFlag is set to write, the printHeader and printFooter flags control whether a header and footer for the parameter group is produces. These flags are set to true for layers, connections, and probes; and set to false for weight initializers and normalizers. If ioFlag is set to read, the printHeader and printFooter flags are ignored.
Note that ioParams is not virtual. To add parameters in a derived class, override ioParamFillGroup.
Definition at line 74 of file BaseObject.cpp.
|
overrideprotectedvirtual |
The function that calls all ioParam functions
Reimplemented from PV::HyPerLayer.
Reimplemented in PV::RescaleLayer, PV::BackgroundLayer, PV::GapLayer, and PV::SigmoidLayer.
Definition at line 34 of file CloneVLayer.cpp.
|
protectedinherited |
Returns true if each layer that delivers input to this layer has finished its MPI exchange for its delay; false if any of them has not.
Definition at line 1923 of file HyPerLayer.cpp.
|
inherited |
Returns true if the MPI exchange for the specified delay has finished; false if it is still in process.
Definition at line 1921 of file HyPerLayer.cpp.
|
inlineinherited |
Returns true if the object requires the GPU; false otherwise. HyPerCol will not initialize the GPU unless one of the objects in its hierarchy returns true
Definition at line 116 of file BaseObject.hpp.
|
inherited |
Look up the keyword of the params group with the same name as the object.
Definition at line 42 of file BaseObject.cpp.
|
protectedvirtualinherited |
Returns true if the trigger behavior is resetStateOnTrigger and the layer was triggered.
Definition at line 1718 of file HyPerLayer.cpp.
|
virtualinherited |
A virtual function to determine if callUpdateState method needs to be called Default behavior is dependent on the triggering method. If there is no triggering, always returns true. If there is triggering and the trigger behavior is updateOnlyOnTrigger, returns true only when there is a triggering event. If there is triggering and the trigger behavior is resetStateOnTrigger, returns true only when there is not a trigger event.
time | The current timestep of the run |
dt | The current non-adaptive dt of the run |
Reimplemented in PV::InputRegionLayer, PV::FilenameParsingGroundTruthLayer, and PV::ConstantLayer.
Definition at line 1695 of file HyPerLayer.cpp.
|
inlineinherited |
A method that reads the parameters for the group whose name matches the name of the object. It, along with writeParams(), is a wrapper around ioParams, so that readParams and writeParams automatically run through the same parameters in the same order.
Definition at line 62 of file BaseObject.hpp.
|
protectedvirtualinherited |
Called instead of updateState when triggerBehavior is "resetStateOnTrigger" and a triggering event occurs. Copies the membrane potential V from triggerResetLayer and then calls setActivity to update A.
Definition at line 1769 of file HyPerLayer.cpp.
|
inlineprotectedinherited |
This method sets mDataStructuresAllocatedFlag to true.
Definition at line 175 of file BaseObject.hpp.
|
inlineprotectedinherited |
This method sets the flag returned by getInitialValuesSetFlag to true.
Definition at line 180 of file BaseObject.hpp.
|
inlineprotectedinherited |
This method sets mInitInfoCommunicatedFlag to true.
Definition at line 170 of file BaseObject.hpp.
|
inlineinherited |
A method that writes the parameters for the group whose name matches the name of the object. It, along with readParams(), is a wrapper around ioParams, so that readParams and writeParams automatically run through the same parameters in the same order.
Definition at line 69 of file BaseObject.hpp.