///////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2002-2025, Open Design Alliance (the "Alliance").
// All rights reserved.
//
// This software and its documentation and related materials are owned by
// the Alliance. The software may only be incorporated into application
// programs owned by members of the Alliance, subject to a signed
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable
// trade secrets of the Alliance and its suppliers. The software is also
// protected by copyright law and international treaty provisions. Application
// programs incorporating this software must include the following statement
// with their copyright notices:
//
// This application incorporates Open Design Alliance software pursuant to a license
// agreement with Open Design Alliance.
// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.
// All rights reserved.
//
// By use of this software, its documentation or related materials, you
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
// This file is generated automatically.
#ifndef _IFC4X3_RC1_IFCCURRENCYRELATIONSHIP_AUTO_IMPL_H
#define _IFC4X3_RC1_IFCCURRENCYRELATIONSHIP_AUTO_IMPL_H
#include "IfcResourceLevelRelationshipAutoImpl.h"
#include "IfcMonetaryUnitAutoImpl.h"
#include "IfcLibraryInformationAutoImpl.h"
#include "TD_PackPush.h"
/** \details
The namespace contains schema-dependent classes, definitions and sub routines
for work with IFC4X3_RC1 express schema definitions.
*/
namespace OdIfc4x3_rc1 {
/** \details
IfcCurrencyRelationship defines the rate of exchange that applies between two
designated currencies at a particular time and as published by a particular source.
An IfcCurrencyRelationship is used where there can be a need to reference an IfcCostValue
in one currency to an IfcCostValue in another currency.
It takes into account the fact that currency exchange rates can vary by requiring the recording
the date and time of the currency exchange rate used and the source that publishes the rate.
There can be many sources and there are different strategies for currency conversion
(spot rate, forward buying of currency at a fixed rate).
\changes
* IFC4 changes:
* Attribute RateDateTime is optional
* Type of the RateDateTime attribute changed from "IfcDateAndTime" to "IfcDateTime"
*/
class IFC4X3_RC1_EXPORT IfcCurrencyRelationship : public IfcResourceLevelRelationship
{
//DOM-IGNORE-BEGIN
OD_EXP_DECLARE_MEMBERS(OdIfc4x3_rc1::IfcCurrencyRelationship);
//DOM-IGNORE-END
public:
//
// OdDAI early binding accessors
//
/** \details
Returns the value of RelatingMonetaryUnit attribute.
This attribute represents the monetary unit from which an exchange is derived.
For instance, in the case of a conversion from GBP to USD, the relating monetary unit is GBP.
\returns
Returns the value of RelatingMonetaryUnit attribute.
*/
const OdDAIObjectId& getRelatingMonetaryUnit() const;
/** \details
Sets the value of RelatingMonetaryUnit attribute.
This attribute represents the monetary unit from which an exchange is derived.
For instance, in the case of a conversion from GBP to USD, the relating monetary unit is GBP.
\param RelatingMonetaryUnit [in] Relating monetary unit to set.
*/
void setRelatingMonetaryUnit(const OdDAIObjectId& RelatingMonetaryUnit);
/** \details
Returns the value of RelatedMonetaryUnit attribute.
This attribute represents the monetary unit to which an exchange results.
For instance, in the case of a conversion from GBP to USD, the related monetary unit is USD.
\returns
Returns the value of RelatedMonetaryUnit attribute.
*/
const OdDAIObjectId& getRelatedMonetaryUnit() const;
/** \details
Sets the value of RelatedMonetaryUnit attribute.
This attribute represents the monetary unit to which an exchange results.
For instance, in the case of a conversion from GBP to USD, the related monetary unit is USD.
\param RelatedMonetaryUnit [in] Related monetary unit to set.
*/
void setRelatedMonetaryUnit(const OdDAIObjectId& RelatedMonetaryUnit);
/** \details
Returns the value of ExchangeRate attribute.
This attribute represents the currently agreed ratio of the amount of a related monetary unit
that is equivalent to a unit amount of the relating monetary unit in a currency relationship.
For instance, in the case of a conversion from GBP to USD, the value of the exchange rate can be 1.486 (USD) : 1 (GBP).
\returns
Returns the value of ExchangeRate attribute.
*/
double getExchangeRate() const;
/** \details
Sets the value of ExchangeRate attribute.
This attribute represents the currently agreed ratio of the amount of a related monetary unit
that is equivalent to a unit amount of the relating monetary unit in a currency relationship.
For instance, in the case of a conversion from GBP to USD, the value of the exchange rate can be 1.486 (USD) : 1 (GBP).
\param ExchangeRate [in] Exchange rate to set.
*/
void setExchangeRate(double ExchangeRate);
/** \details
Returns the value of RateDateTime attribute.
This attribute represents the date and time at which an exchange rate applies.
\returns
Returns the value of RateDateTime attribute.
*/
const OdAnsiString& getRateDateTime() const;
/** \details
Sets the value of RateDateTime attribute.
This attribute represents the date and time at which an exchange rate applies.
\param RateDateTime [in] Rate date time to set.
*/
void setRateDateTime(const OdAnsiString& RateDateTime);
/** \details
Returns the value of RateSource attribute.
This attribute represents the source from which an exchange rate is obtained.
\returns
Returns the value of RateSource attribute.
*/
const OdDAIObjectId& getRateSource() const;
/** \details
Sets the value of RateSource attribute.
This attribute represents the source from which an exchange rate is obtained.
\param RateSource [in] Rate source to set.
*/
void setRateSource(const OdDAIObjectId& RateSource);
public:
/** \details
Default constructor for the IfcCurrencyRelationship class.
*/
IfcCurrencyRelationship();
/** \details
Reads object's data from the specified filer.
\param rdFiler [in] Pointer to a filer from which to read the data.
\returns
A value of OdResult type that contains the result of the method execution.
*/
virtual OdResult inFields(OdDAI::OdSpfFilerBase* rdFiler) override;
/** \details
Writes object's data the the specified filer.
\param wrFiler [in] Pointer to a filer to which to write the data.
\returns
A value of OdResult type that contains the result of the method execution.
*/
virtual OdResult outFields(OdDAI::OdSpfFilerBase* wrFiler) override;
/** \details
Returns a type of a class instance.
\returns
Pointer to the