# Object

Provides functionality to work on object datatypes. Persistence is one of the main features. Currently supported data format: JSON (file extension “.json”) and MessagePack (file extension .msgpack)

Object.clone(obj)
  Argument:

    - obj (`const auto`)

  Return type:

    `auto`

  Creates a full deep copy clone of the provided object/handle. Can fail if the object/handle does not support cloning.

Object.deserialize(serializedData, dataFormat)
  Arguments:

    - serializedData (`binary`)

    - dataFormat (`enum`)

  Return type:

    `auto`

  De-Serializes an object from a byte array

Object.getType(obj)
  Argument:

    - obj (`const auto`)

  Return type:

    `string`

  Returns the type name of an object/handle which is the CROWN name assigned to the object

Object.load(fileName, dataFormat)
  Arguments:

    - fileName (`string`)

    - dataFormat (`enum`)

  Return type:

    `auto`

  Loads an object/handle content from a file. When the type parameter is not passed, the data format is guessed from the file extension.

Object.save(obj, fileName, dataFormat)
  Arguments:

    - obj (`const auto`)

    - fileName (`string`)

    - dataFormat (`enum`)

  Return type:

    `boolean`

  Saves an object content to a file. If the data type enumeration is not passed as argument, the file extension is used to guess the data format.

Object.serialize(obj, dataFormat)
  Arguments:

    - obj (`const auto`)

    - dataFormat (`enum`)

  Return type:

    `binary`

  Serializes an object to a byte array

Object.toConst(obj)
  Argument:

    - obj (`const object`)

  Return type:

    `const object`

  Return the provided object explicitly as const object. This is useful to guarantee further const usage of the object. The input object is not touched and stays non-const.