# Data type-independent read function

bool `readAnything`(uint32_t _addr, T &data, bool fastRead = false)

## Parameters `Mandatory & Optional`

uint32_t `_addr`

Address in memory where the data is to be read from. `Mandatory`

T &`data`

Variable to save the data to. `Mandatory`

bool `fastRead`

Refer to Advanced use `Optional`

## What it does

Reads any type of variable / struct (any sized value) (starting) from a specific address and saves it to the variable `T& data` provided as an argument.

### Returns `boolean`

Returns `TRUE` if successful, `FALSE` if unsuccessful

Note

This function can be used to replace any of the other read functions (except `readByteArray()` and `readCharArray()`). However, if used for anything other than structs, this function runs slower than the data type-specific ones.

## Example code:

    #include <SPIMemory.h>

    SPIFlash flash;

    struct testStruct {
      uint8_t _byte = 8;
      uint16_t _int = 269;
      uint32_t _long = 99432;
      float _float = 3.14;
      String _str = "This is a test string";
      uint8_t _array[8] = {0,1,2,3,4,5,6,7};
    } dataIn;
    uint32_t _address;

    void setup() {
      flash.begin();
      _address = flash.getAddress(sizeof(dataIn));
      Serial.print("Address = ");
      Serial.println(_address);
      Serial.print("readAnything()");
      if (!flash.readAnything(_address, dataIn)) { // Function is used to get the data from
                                                 // address '_address' and save it to the struct 'test'
        Serial.println("Failed");
      }
      else {
        Serial.println("Passed");
      }
      ...
    }

    void loop() {
      ...
    }