.. _program_listing_file_src_knx_table_object.h: Program Listing for File table_object.h ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/knx/table_object.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "interface_object.h" class Memory; typedef void (*BeforeTablesUnloadCallback)(); class TableObject: public InterfaceObject { friend class Memory; public: TableObject(Memory& memory, uint32_t staticTableAdr = 0, uint32_t staticTableSize = 0); virtual ~TableObject(); LoadState loadState(); uint8_t* save(uint8_t* buffer) override; const uint8_t* restore(const uint8_t* buffer) override; uint16_t saveSize() override; static void beforeTablesUnloadCallback(BeforeTablesUnloadCallback func); static BeforeTablesUnloadCallback beforeTablesUnloadCallback(); protected: virtual void beforeStateChange(LoadState& newState); uint8_t* data(); void errorCode(ErrorCode errorCode); void initializeProperties(size_t propertiesSize, Property** properties) override; static BeforeTablesUnloadCallback _beforeTablesUnload; Memory& _memory; private: uint32_t tableReference(); bool allocTable(uint32_t size, bool doFill, uint8_t fillByte); void allocTableStatic(); void initializeDynTableProperties(size_t propertiesSize, Property** properties); void loadEvent(const uint8_t* data); void loadEventUnloaded(const uint8_t* data); void loadEventLoading(const uint8_t* data); void loadEventLoaded(const uint8_t* data); void loadEventError(const uint8_t* data); void additionalLoadControls(const uint8_t* data); void loadState(LoadState newState); LoadState _state = LS_UNLOADED; uint8_t* _data = 0; static uint8_t _tableUnloadCount; uint32_t _staticTableAdr; uint32_t _staticTableSize; uint32_t _size = 0; };