Packages

A high-performance Elixir library for decoding Garmin .fit files using a C++ NIF.

Current section

Files

Jump to
fit_decoder c_src fit_sdk cpp fit_developer_field_definition.cpp
Raw

c_src/fit_sdk/cpp/fit_developer_field_definition.cpp

/////////////////////////////////////////////////////////////////////////////////////////////
// Copyright 2025 Garmin International, Inc.
// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you
// may not use this file except in compliance with the Flexible and Interoperable Data
// Transfer (FIT) Protocol License.
/////////////////////////////////////////////////////////////////////////////////////////////
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
// Profile Version = 21.171.0Release
// Tag = production/release/21.171.0-0-g57fed75
/////////////////////////////////////////////////////////////////////////////////////////////
#include <ostream>
#include "fit_developer_field_definition.hpp"
#include "fit_developer_field.hpp"
namespace fit
{
DeveloperFieldDefinition::DeveloperFieldDefinition()
: num( FIT_FIELD_NUM_INVALID )
, size( 0 )
, developerDataIndex( FIT_UINT8_INVALID )
, mesg( nullptr )
, developer( nullptr )
{
}
DeveloperFieldDefinition::DeveloperFieldDefinition(const DeveloperFieldDefinition& other)
: num( other.num )
, size( other.size )
, developerDataIndex( other.developerDataIndex )
, mesg( nullptr )
, developer( nullptr )
{
if (nullptr != other.mesg)
{
mesg = new FieldDescriptionMesg( *other.mesg );
}
if ( nullptr != other.developer )
{
developer = new DeveloperDataIdMesg( *other.developer );
}
}
DeveloperFieldDefinition::DeveloperFieldDefinition(FIT_UINT8 fieldNum, FIT_UINT8 size, FIT_UINT8 developerDataIndex)
: num( fieldNum )
, size( size )
, developerDataIndex( developerDataIndex )
, mesg( nullptr )
, developer( nullptr )
{
}
DeveloperFieldDefinition::DeveloperFieldDefinition( const FieldDescriptionMesg& desc, const DeveloperDataIdMesg& developer, FIT_UINT8 size )
: num( desc.GetFieldDefinitionNumber() )
, size( size )
, developerDataIndex( desc.GetDeveloperDataIndex() )
, mesg( new FieldDescriptionMesg( desc ) )
, developer( new DeveloperDataIdMesg( developer ) )
{
}
DeveloperFieldDefinition::DeveloperFieldDefinition(const DeveloperField& field)
: DeveloperFieldDefinition(field.GetDefinition())
{
size = field.GetSize();
}
DeveloperFieldDefinition::~DeveloperFieldDefinition()
{
if ( nullptr != mesg )
{
delete mesg;
mesg = nullptr;
}
if ( nullptr != developer )
{
delete developer;
developer = nullptr;
}
}
FIT_BOOL DeveloperFieldDefinition::IsDefined() const
{
return nullptr != mesg &&
nullptr != developer;
}
FIT_UINT8 DeveloperFieldDefinition::GetNum() const
{
return num;
}
FIT_UINT8 DeveloperFieldDefinition::GetSize() const
{
return size;
}
FIT_UINT8 DeveloperFieldDefinition::GetType() const
{
if (IsDefined())
{
return mesg->GetFitBaseTypeId();
}
return FIT_BASE_TYPE_UINT8;
}
FIT_UINT8 DeveloperFieldDefinition::GetDeveloperDataIndex() const
{
return developerDataIndex;
}
const FieldDescriptionMesg& DeveloperFieldDefinition::GetDescription() const
{
return *mesg;
}
const DeveloperDataIdMesg& DeveloperFieldDefinition::GetDeveloper() const
{
return *developer;
}
FIT_BOOL DeveloperFieldDefinition::operator==(const DeveloperFieldDefinition& field) const
{
if (num != field.num)
return FIT_FALSE;
if (developerDataIndex != field.developerDataIndex)
return FIT_FALSE;
return FIT_TRUE;
}
FIT_BOOL DeveloperFieldDefinition::operator!=(const DeveloperFieldDefinition& field) const
{
return !(*this == field);
}
FIT_UINT8 DeveloperFieldDefinition::Write(std::ostream &file) const
{
file.put(num);
file.put(size);
file.put(developerDataIndex);
return 3;
}
DeveloperFieldDefinition& DeveloperFieldDefinition::operator=(const DeveloperFieldDefinition& other)
{
if (this != &other)
{
num = other.num;
size = other.size;
developerDataIndex = other.developerDataIndex;
if (other.mesg != nullptr)
{
if (mesg != nullptr)
{
delete mesg;
}
mesg = new FieldDescriptionMesg(*other.mesg);
}
if (other.developer != nullptr)
{
if(developer != nullptr)
{
delete developer;
};
developer = new DeveloperDataIdMesg(*other.developer);
}
}
return *this;
}
} // namespace fit