Class HostEnvironment

Class Documentation

class HostEnvironment

This class provides host function access to Environment Properties It acts as a wrapper to EnvironmentManager, proxying calls, converting variable name and model_name into a combined hash Pairs with EnvironmentManager, AgentEnvironment and EnvironmentDescription This class is only to be constructed by HostAPI

Note

Not thread-safe

Public Functions

template<typename T>
T getProperty(const std::string &name) const

Gets an environment property

Getters

Parameters

name – name used for accessing the property

Template Parameters

T – Type of the environment property

Throws

exception::InvalidEnvProperty – If a property of the name does not exist

template<typename T, flamegpu::size_type N>
std::array<T, N> getProperty(const std::string &name) const

Gets an environment property array

Parameters

name – name used for accessing the property

Template Parameters
  • T – Type of the elements of the environment property array

  • N – Length of the environment property array

Throws

exception::InvalidEnvProperty – If a property array of the name does not exist

template<typename T, flamegpu::size_type N = 0>
T getProperty(const std::string &name, flamegpu::size_type index) const

Gets an element of an environment property array

See also

get(const std::string &)

Parameters
  • name – name used for accessing the property

  • index – Index of the element within the environment property array to return

Template Parameters
  • T – Type of the elements of the environment property array

  • N – (Optional) The length of the array variable, available for parity with other APIs, checked if provided

Throws
  • exception::InvalidEnvProperty – If a property of the name does not exist

  • std::out_of_range

template<typename T>
T setProperty(const std::string &name, T value) const

Sets an environment property

Setters

Parameters
  • name – name used for accessing the property

  • value – to set the property

Template Parameters

T – Type of the elements of the environment property

Throws
Returns

Returns the previous value

template<typename T, flamegpu::size_type N>
std::array<T, N> setProperty(const std::string &name, const std::array<T, N> &value) const

Sets an environment property array

Parameters
  • name – name used for accessing the property array

  • value – to set the property array

Template Parameters
  • T – Type of the elements of the environment property array

  • N – Length of the environmental property array

Throws
Returns

Returns the previous value

template<typename T, flamegpu::size_type N = 0>
T setProperty(const std::string &name, flamegpu::size_type index, T value) const

Sets an element of an environment property array

See also

get(const std::string &)

Parameters
  • name – name used for accessing the property array

  • index – element within the environment property array to set

  • value – to set the element of the property array

Template Parameters
  • T – Type of the environmental property array

  • N – (Optional) The length of the array variable, available for parity with other APIs, checked if provided

Throws
  • exception::InvalidEnvProperty – If a property of the name does not exist

  • std::out_of_range

Returns

Returns the previous value

template<typename T, unsigned int I = 1, unsigned int J = 1, unsigned int K = 1, unsigned int W = 1>
HostMacroProperty<T, I, J, K, W> getMacroProperty(const std::string &name) const

Returns an interface for accessing the named host macro property

Parameters

name – The name of the environment macro property to return

Protected Functions

explicit HostEnvironment(unsigned int instance_id, const std::shared_ptr<EnvironmentManager> &env, CUDAMacroEnvironment &_macro_env)

Constructor, to be called by HostAPI

Protected Attributes

const std::shared_ptr<EnvironmentManager> env_mgr

Provides access to EnvironmentManager singleton

CUDAMacroEnvironment &macro_env

Provides access to macro properties for the instance

const unsigned int instance_id

Access to instance id of the CUDASimulation This is used to augment all variable names