ADD: added parent number to the ID

This commit is contained in:
Henry Winkel
2023-01-17 10:28:05 +01:00
parent 6c7b9aee04
commit f07a07b8d8
14 changed files with 218 additions and 123 deletions

View File

@@ -10,25 +10,60 @@ namespace SimCore {
class Identifier{ class Identifier{
public: public:
Identifier() = default;
Identifier(int number,SimCore::ObjectSource ObjectSource) ; Identifier() ;
Identifier(std::pair<int, SimCore::ObjectSource> id);
/**
* @brief constructs an object
*
*/
Identifier(std::uint32_t parent,std::uint32_t number,bool external) ;
/**
* @brief constructs the ID out of an string
*
*/
Identifier(std::string str); Identifier(std::string str);
/**
* @brief returns the number of the object, this plus the number of the parent make it unique
* @return uint32_t
*/
std::uint32_t getNumber();
int getNumber(); /**
SimCore::ObjectSource getObjectSource(); * @brief return the number of the parent, if 0 the parent is the Sim Manager
* @return uint32_t
*/
std::uint32_t getParentNumber();
/**
* @brief returns true if the ID belongs to an external ofject
* @return bool
*/
bool isExternal(); bool isExternal();
/**
* @brief return true if the number is bigger than 0
*
*/
bool isValid(); bool isValid();
std::pair<int, SimCore::ObjectSource> getPair(); /**
* @brief returns the serilaized string of the ID
* @brief string
*/
std::string serialize(); std::string serialize();
friend bool operator==(const Identifier &lhs,const Identifier &rhs); friend bool operator==(const Identifier &lhs,const Identifier &rhs);
private: private:
SimCore::ObjectSource objectSource_; /// indicates if ID is from an external source
int number_ = 0; bool external_ = false;
/// the number of the object related to his parent object
std::uint32_t number_ = 0;
/// the number of the parent, all ID from an external source the parent is the same
std::uint32_t parent_ = 0;
}; };
} }

View File

@@ -15,7 +15,7 @@ namespace SimCore {
public: public:
IdentifierMaker(); IdentifierMaker();
std::shared_ptr<SimCore::Identifier> getNewIdentifier(SimCore::ObjectSource); std::shared_ptr<SimCore::Identifier> getNewIdentifier(std::uint32_t parent,SimCore::ObjectSource);
bool isInList(std::shared_ptr<SimCore::Identifier>); bool isInList(std::shared_ptr<SimCore::Identifier>);

View File

@@ -24,8 +24,9 @@ namespace messages {
namespace track { namespace track {
PROTOBUF_CONSTEXPR Identifier::Identifier( PROTOBUF_CONSTEXPR Identifier::Identifier(
::_pbi::ConstantInitialized): _impl_{ ::_pbi::ConstantInitialized): _impl_{
/*decltype(_impl_.number_)*/int64_t{0} /*decltype(_impl_.parent_)*/0u
, /*decltype(_impl_.external_)*/0u , /*decltype(_impl_.number_)*/0u
, /*decltype(_impl_.external_)*/false
, /*decltype(_impl_._cached_size_)*/{}} {} , /*decltype(_impl_._cached_size_)*/{}} {}
struct IdentifierDefaultTypeInternal { struct IdentifierDefaultTypeInternal {
PROTOBUF_CONSTEXPR IdentifierDefaultTypeInternal() PROTOBUF_CONSTEXPR IdentifierDefaultTypeInternal()
@@ -49,6 +50,7 @@ const uint32_t TableStruct_Identifier_2eproto::offsets[] PROTOBUF_SECTION_VARIAB
~0u, // no _oneof_case_ ~0u, // no _oneof_case_
~0u, // no _weak_field_map_ ~0u, // no _weak_field_map_
~0u, // no _inlined_string_donated_ ~0u, // no _inlined_string_donated_
PROTOBUF_FIELD_OFFSET(::messages::track::Identifier, _impl_.parent_),
PROTOBUF_FIELD_OFFSET(::messages::track::Identifier, _impl_.number_), PROTOBUF_FIELD_OFFSET(::messages::track::Identifier, _impl_.number_),
PROTOBUF_FIELD_OFFSET(::messages::track::Identifier, _impl_.external_), PROTOBUF_FIELD_OFFSET(::messages::track::Identifier, _impl_.external_),
}; };
@@ -61,13 +63,13 @@ static const ::_pb::Message* const file_default_instances[] = {
}; };
const char descriptor_table_protodef_Identifier_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = const char descriptor_table_protodef_Identifier_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
"\n\020Identifier.proto\022\016messages.track\".\n\nId" "\n\020Identifier.proto\022\016messages.track\">\n\nId"
"entifier\022\016\n\006number\030\001 \001(\003\022\020\n\010external\030\002 \001" "entifier\022\016\n\006parent\030\001 \001(\r\022\016\n\006number\030\002 \001(\r"
"(\rb\006proto3" "\022\020\n\010external\030\003 \001(\010b\006proto3"
; ;
static ::_pbi::once_flag descriptor_table_Identifier_2eproto_once; static ::_pbi::once_flag descriptor_table_Identifier_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_Identifier_2eproto = { const ::_pbi::DescriptorTable descriptor_table_Identifier_2eproto = {
false, false, 90, descriptor_table_protodef_Identifier_2eproto, false, false, 106, descriptor_table_protodef_Identifier_2eproto,
"Identifier.proto", "Identifier.proto",
&descriptor_table_Identifier_2eproto_once, nullptr, 0, 1, &descriptor_table_Identifier_2eproto_once, nullptr, 0, 1,
schemas, file_default_instances, TableStruct_Identifier_2eproto::offsets, schemas, file_default_instances, TableStruct_Identifier_2eproto::offsets,
@@ -99,14 +101,15 @@ Identifier::Identifier(const Identifier& from)
: ::PROTOBUF_NAMESPACE_ID::Message() { : ::PROTOBUF_NAMESPACE_ID::Message() {
Identifier* const _this = this; (void)_this; Identifier* const _this = this; (void)_this;
new (&_impl_) Impl_{ new (&_impl_) Impl_{
decltype(_impl_.number_){} decltype(_impl_.parent_){}
, decltype(_impl_.number_){}
, decltype(_impl_.external_){} , decltype(_impl_.external_){}
, /*decltype(_impl_._cached_size_)*/{}}; , /*decltype(_impl_._cached_size_)*/{}};
_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
::memcpy(&_impl_.number_, &from._impl_.number_, ::memcpy(&_impl_.parent_, &from._impl_.parent_,
static_cast<size_t>(reinterpret_cast<char*>(&_impl_.external_) - static_cast<size_t>(reinterpret_cast<char*>(&_impl_.external_) -
reinterpret_cast<char*>(&_impl_.number_)) + sizeof(_impl_.external_)); reinterpret_cast<char*>(&_impl_.parent_)) + sizeof(_impl_.external_));
// @@protoc_insertion_point(copy_constructor:messages.track.Identifier) // @@protoc_insertion_point(copy_constructor:messages.track.Identifier)
} }
@@ -115,8 +118,9 @@ inline void Identifier::SharedCtor(
(void)arena; (void)arena;
(void)is_message_owned; (void)is_message_owned;
new (&_impl_) Impl_{ new (&_impl_) Impl_{
decltype(_impl_.number_){int64_t{0}} decltype(_impl_.parent_){0u}
, decltype(_impl_.external_){0u} , decltype(_impl_.number_){0u}
, decltype(_impl_.external_){false}
, /*decltype(_impl_._cached_size_)*/{} , /*decltype(_impl_._cached_size_)*/{}
}; };
} }
@@ -144,9 +148,9 @@ void Identifier::Clear() {
// Prevent compiler warnings about cached_has_bits being unused // Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits; (void) cached_has_bits;
::memset(&_impl_.number_, 0, static_cast<size_t>( ::memset(&_impl_.parent_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&_impl_.external_) - reinterpret_cast<char*>(&_impl_.external_) -
reinterpret_cast<char*>(&_impl_.number_)) + sizeof(_impl_.external_)); reinterpret_cast<char*>(&_impl_.parent_)) + sizeof(_impl_.external_));
_internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
} }
@@ -156,18 +160,26 @@ const char* Identifier::_InternalParse(const char* ptr, ::_pbi::ParseContext* ct
uint32_t tag; uint32_t tag;
ptr = ::_pbi::ReadTag(ptr, &tag); ptr = ::_pbi::ReadTag(ptr, &tag);
switch (tag >> 3) { switch (tag >> 3) {
// int64 number = 1; // uint32 parent = 1;
case 1: case 1:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) { if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
_impl_.number_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); _impl_.parent_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
CHK_(ptr); CHK_(ptr);
} else } else
goto handle_unusual; goto handle_unusual;
continue; continue;
// uint32 external = 2; // uint32 number = 2;
case 2: case 2:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) { if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
_impl_.external_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); _impl_.number_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
CHK_(ptr);
} else
goto handle_unusual;
continue;
// bool external = 3;
case 3:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
_impl_.external_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
CHK_(ptr); CHK_(ptr);
} else } else
goto handle_unusual; goto handle_unusual;
@@ -201,16 +213,22 @@ uint8_t* Identifier::_InternalSerialize(
uint32_t cached_has_bits = 0; uint32_t cached_has_bits = 0;
(void) cached_has_bits; (void) cached_has_bits;
// int64 number = 1; // uint32 parent = 1;
if (this->_internal_number() != 0) { if (this->_internal_parent() != 0) {
target = stream->EnsureSpace(target); target = stream->EnsureSpace(target);
target = ::_pbi::WireFormatLite::WriteInt64ToArray(1, this->_internal_number(), target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray(1, this->_internal_parent(), target);
} }
// uint32 external = 2; // uint32 number = 2;
if (this->_internal_number() != 0) {
target = stream->EnsureSpace(target);
target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_number(), target);
}
// bool external = 3;
if (this->_internal_external() != 0) { if (this->_internal_external() != 0) {
target = stream->EnsureSpace(target); target = stream->EnsureSpace(target);
target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_external(), target); target = ::_pbi::WireFormatLite::WriteBoolToArray(3, this->_internal_external(), target);
} }
if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
@@ -229,14 +247,19 @@ size_t Identifier::ByteSizeLong() const {
// Prevent compiler warnings about cached_has_bits being unused // Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits; (void) cached_has_bits;
// int64 number = 1; // uint32 parent = 1;
if (this->_internal_number() != 0) { if (this->_internal_parent() != 0) {
total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_number()); total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_parent());
} }
// uint32 external = 2; // uint32 number = 2;
if (this->_internal_number() != 0) {
total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_number());
}
// bool external = 3;
if (this->_internal_external() != 0) { if (this->_internal_external() != 0) {
total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_external()); total_size += 1 + 1;
} }
return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
@@ -257,6 +280,9 @@ void Identifier::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PRO
uint32_t cached_has_bits = 0; uint32_t cached_has_bits = 0;
(void) cached_has_bits; (void) cached_has_bits;
if (from._internal_parent() != 0) {
_this->_internal_set_parent(from._internal_parent());
}
if (from._internal_number() != 0) { if (from._internal_number() != 0) {
_this->_internal_set_number(from._internal_number()); _this->_internal_set_number(from._internal_number());
} }
@@ -283,9 +309,9 @@ void Identifier::InternalSwap(Identifier* other) {
::PROTOBUF_NAMESPACE_ID::internal::memswap< ::PROTOBUF_NAMESPACE_ID::internal::memswap<
PROTOBUF_FIELD_OFFSET(Identifier, _impl_.external_) PROTOBUF_FIELD_OFFSET(Identifier, _impl_.external_)
+ sizeof(Identifier::_impl_.external_) + sizeof(Identifier::_impl_.external_)
- PROTOBUF_FIELD_OFFSET(Identifier, _impl_.number_)>( - PROTOBUF_FIELD_OFFSET(Identifier, _impl_.parent_)>(
reinterpret_cast<char*>(&_impl_.number_), reinterpret_cast<char*>(&_impl_.parent_),
reinterpret_cast<char*>(&other->_impl_.number_)); reinterpret_cast<char*>(&other->_impl_.parent_));
} }
::PROTOBUF_NAMESPACE_ID::Metadata Identifier::GetMetadata() const { ::PROTOBUF_NAMESPACE_ID::Metadata Identifier::GetMetadata() const {

View File

@@ -180,25 +180,35 @@ class Identifier final :
// accessors ------------------------------------------------------- // accessors -------------------------------------------------------
enum : int { enum : int {
kNumberFieldNumber = 1, kParentFieldNumber = 1,
kExternalFieldNumber = 2, kNumberFieldNumber = 2,
kExternalFieldNumber = 3,
}; };
// int64 number = 1; // uint32 parent = 1;
void clear_number(); void clear_parent();
int64_t number() const; uint32_t parent() const;
void set_number(int64_t value); void set_parent(uint32_t value);
private: private:
int64_t _internal_number() const; uint32_t _internal_parent() const;
void _internal_set_number(int64_t value); void _internal_set_parent(uint32_t value);
public: public:
// uint32 external = 2; // uint32 number = 2;
void clear_external(); void clear_number();
uint32_t external() const; uint32_t number() const;
void set_external(uint32_t value); void set_number(uint32_t value);
private: private:
uint32_t _internal_external() const; uint32_t _internal_number() const;
void _internal_set_external(uint32_t value); void _internal_set_number(uint32_t value);
public:
// bool external = 3;
void clear_external();
bool external() const;
void set_external(bool value);
private:
bool _internal_external() const;
void _internal_set_external(bool value);
public: public:
// @@protoc_insertion_point(class_scope:messages.track.Identifier) // @@protoc_insertion_point(class_scope:messages.track.Identifier)
@@ -209,8 +219,9 @@ class Identifier final :
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
struct Impl_ { struct Impl_ {
int64_t number_; uint32_t parent_;
uint32_t external_; uint32_t number_;
bool external_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
}; };
union { Impl_ _impl_; }; union { Impl_ _impl_; };
@@ -227,42 +238,62 @@ class Identifier final :
#endif // __GNUC__ #endif // __GNUC__
// Identifier // Identifier
// int64 number = 1; // uint32 parent = 1;
inline void Identifier::clear_number() { inline void Identifier::clear_parent() {
_impl_.number_ = int64_t{0}; _impl_.parent_ = 0u;
} }
inline int64_t Identifier::_internal_number() const { inline uint32_t Identifier::_internal_parent() const {
return _impl_.parent_;
}
inline uint32_t Identifier::parent() const {
// @@protoc_insertion_point(field_get:messages.track.Identifier.parent)
return _internal_parent();
}
inline void Identifier::_internal_set_parent(uint32_t value) {
_impl_.parent_ = value;
}
inline void Identifier::set_parent(uint32_t value) {
_internal_set_parent(value);
// @@protoc_insertion_point(field_set:messages.track.Identifier.parent)
}
// uint32 number = 2;
inline void Identifier::clear_number() {
_impl_.number_ = 0u;
}
inline uint32_t Identifier::_internal_number() const {
return _impl_.number_; return _impl_.number_;
} }
inline int64_t Identifier::number() const { inline uint32_t Identifier::number() const {
// @@protoc_insertion_point(field_get:messages.track.Identifier.number) // @@protoc_insertion_point(field_get:messages.track.Identifier.number)
return _internal_number(); return _internal_number();
} }
inline void Identifier::_internal_set_number(int64_t value) { inline void Identifier::_internal_set_number(uint32_t value) {
_impl_.number_ = value; _impl_.number_ = value;
} }
inline void Identifier::set_number(int64_t value) { inline void Identifier::set_number(uint32_t value) {
_internal_set_number(value); _internal_set_number(value);
// @@protoc_insertion_point(field_set:messages.track.Identifier.number) // @@protoc_insertion_point(field_set:messages.track.Identifier.number)
} }
// uint32 external = 2; // bool external = 3;
inline void Identifier::clear_external() { inline void Identifier::clear_external() {
_impl_.external_ = 0u; _impl_.external_ = false;
} }
inline uint32_t Identifier::_internal_external() const { inline bool Identifier::_internal_external() const {
return _impl_.external_; return _impl_.external_;
} }
inline uint32_t Identifier::external() const { inline bool Identifier::external() const {
// @@protoc_insertion_point(field_get:messages.track.Identifier.external) // @@protoc_insertion_point(field_get:messages.track.Identifier.external)
return _internal_external(); return _internal_external();
} }
inline void Identifier::_internal_set_external(uint32_t value) { inline void Identifier::_internal_set_external(bool value) {
_impl_.external_ = value; _impl_.external_ = value;
} }
inline void Identifier::set_external(uint32_t value) { inline void Identifier::set_external(bool value) {
_internal_set_external(value); _internal_set_external(value);
// @@protoc_insertion_point(field_set:messages.track.Identifier.external) // @@protoc_insertion_point(field_set:messages.track.Identifier.external)
} }

View File

@@ -2,6 +2,7 @@
package messages.track; package messages.track;
message Identifier{ message Identifier{
int64 number = 1; uint32 parent = 1;
uint32 external = 2; uint32 number = 2;
bool external = 3;
} }

View File

@@ -20,15 +20,15 @@ Z
}; };
enum ObjectSource : std::uint32_t { enum ObjectSource : bool{
EXTERNAL = 1, EXTERNAL = true,
INTERNAL = 2 INTERNAL = false
}; };
enum ContactEnvironment : std::uint32_t{ enum ContactEnvironment : std::uint8_t{
UNKNOWN = 0, UNKNOWN = 0,
SURFACE = 1, SURFACE = 1,
SUBSURFACE = 2, SUBSURFACE = 2,

View File

@@ -8,43 +8,50 @@
namespace SimCore { namespace SimCore {
Identifier::Identifier(int number, SimCore::ObjectSource ObjectSource):number_(number),objectSource_(ObjectSource) Identifier::Identifier()
{}
Identifier::Identifier(std::uint32_t parent,std::uint32_t number, bool external):parent_(parent),number_(number),external_(external)
{ {
} }
Identifier::Identifier(std::pair<int, SimCore::ObjectSource> id):number_(id.first),objectSource_(id.second)
{
}
Identifier::Identifier(std::string str) Identifier::Identifier(std::string str)
{ {
std::vector<std::string> var = UtilFunctions::explode(str,StringDelimiter); std::vector<std::string> var = UtilFunctions::explode(str,StringDelimiter);
if (UtilFunctions::isNumber(var[0])) { if (UtilFunctions::isNumber(var[0])) {
number_ = stoi(var[0]); parent_ = stoi(var[0]);
} }
if (UtilFunctions::isNumber(var[1])) { if (UtilFunctions::isNumber(var[1])) {
objectSource_ = (SimCore::ObjectSource)stoi(var[1]); number_ = stoi(var[1]);
}
if (UtilFunctions::isNumber(var[2])) {
external_ = (bool)stoi(var[2]);
} }
} }
std::string Identifier::serialize() std::string Identifier::serialize()
{ {
return std::to_string(number_) + StringDelimiter + std::to_string(objectSource_); return std::to_string(parent_) + StringDelimiter + std::to_string(number_) + StringDelimiter + std::to_string(external_);
} }
int Identifier::getNumber() std::uint32_t Identifier::getNumber()
{ {
return number_; return number_;
} }
std::uint32_t Identifier::getParentNumber()
{
return parent_;
}
bool Identifier::isValid() bool Identifier::isValid()
{ {
if (number_>0 && objectSource_ != 0) { if (number_ > 0) {
return true; return true;
}else }else
{ {
@@ -55,30 +62,22 @@ bool Identifier::isValid()
bool Identifier::isExternal() bool Identifier::isExternal()
{ {
if (objectSource_ == SimCore::EXTERNAL) { if (external_ == true) {
return true; return true;
}else { }else {
return false; return false;
} }
} }
std::pair<int, SimCore::ObjectSource> Identifier::getPair()
{
return std::pair<int, SimCore::ObjectSource>(number_,objectSource_);
}
bool operator==(const Identifier &lhs,const Identifier &rhs){ bool operator==(const Identifier &lhs,const Identifier &rhs){
if (lhs.number_ == rhs.number_ && lhs.objectSource_ == rhs.objectSource_) { if (lhs.number_ == rhs.number_ && lhs.external_ == rhs.external_ && lhs.parent_ == rhs.parent_) {
return true; return true;
}else{ }else{
return false; return false;
} }
} }
SimCore::ObjectSource Identifier::getObjectSource()
{
return objectSource_;
}
} }

View File

@@ -6,9 +6,10 @@
namespace SimCore { namespace SimCore {
IdentifierMaker::IdentifierMaker(){} IdentifierMaker::IdentifierMaker()
{}
std::shared_ptr<SimCore::Identifier> IdentifierMaker::getNewIdentifier(SimCore::ObjectSource ObjectSource){ std::shared_ptr<SimCore::Identifier> IdentifierMaker::getNewIdentifier(std::uint32_t parent,SimCore::ObjectSource ObjectSource){
std::lock_guard<std::mutex> lock(mx_); std::lock_guard<std::mutex> lock(mx_);
@@ -16,20 +17,21 @@ std::shared_ptr<SimCore::Identifier> IdentifierMaker::getNewIdentifier(SimCore::
int lastNumber = 0; int lastNumber = 0;
if (size > 0) { if (size > 0) {
for (std::list<std::shared_ptr<SimCore::Identifier>>::iterator it=IDList_.begin(); it != IDList_.end(); ++it){ for (std::list<std::shared_ptr<SimCore::Identifier>>::iterator it=IDList_.begin(); it != IDList_.end(); ++it){
if (ObjectSource == it->get()->getObjectSource()) { if (ObjectSource == it->get()->isExternal()) {
lastNumber = it->get()->getNumber(); lastNumber = it->get()->getNumber();
} }
} }
int newNumber = lastNumber+1; int newNumber = lastNumber+1;
auto id_ = std::make_shared<SimCore::Identifier>(newNumber,ObjectSource); auto id_ = std::make_shared<SimCore::Identifier>(parent,newNumber,ObjectSource);
IDList_.push_back(id_); IDList_.push_back(id_);
return id_; return id_;
}else{ }else{
auto id_ = std::make_shared<SimCore::Identifier>(1,ObjectSource); auto id_ = std::make_shared<SimCore::Identifier>(parent,1,ObjectSource);
IDList_.push_back(id_); IDList_.push_back(id_);
return id_; return id_;
} }

View File

@@ -29,9 +29,9 @@ RadarTrack::RadarTrack(std::string receivedMessage) {
} }
} }
messages::track::Identifier ID = trackMessage.entityidentifier(); // messages::track::Identifier ID = trackMessage.entityidentifier();
ID_ = SimCore::Identifier( ID_ = SimCore::Identifier(trackMessage.mutable_entityidentifier()->parent(),
trackMessage.mutable_entityidentifier()->number(), trackMessage.mutable_entityidentifier()->number(),
(SimCore::ObjectSource)trackMessage.mutable_entityidentifier() (SimCore::ObjectSource)trackMessage.mutable_entityidentifier()
->external()); ->external());
@@ -61,7 +61,7 @@ RadarTrack::RadarTrack(std::uint32_t deviceID, WHISPER::SourceType src,
void RadarTrack::packToMessage() { void RadarTrack::packToMessage() {
radarTrackMessage_.mutable_entityidentifier()->set_number(ID_.getNumber()); radarTrackMessage_.mutable_entityidentifier()->set_number(ID_.getNumber());
radarTrackMessage_.mutable_entityidentifier()->set_external((uint32_t)ID_.getObjectSource()); radarTrackMessage_.mutable_entityidentifier()->set_external((uint32_t)ID_.isExternal());
radarTrackMessage_.mutable_geocentricposition()->set_x( radarTrackMessage_.mutable_geocentricposition()->set_x(
position_.getGeocentricPos()(SimCore::X)); position_.getGeocentricPos()(SimCore::X));

View File

@@ -30,9 +30,10 @@ namespace SimCore {
} }
} }
messages::track::Identifier ID = trackMessage.entityidentifier(); // messages::track::Identifier ID = trackMessage.entityidentifier();
ID_ = SimCore::Identifier(trackMessage.mutable_entityidentifier()->parent(),
ID_ = SimCore::Identifier(trackMessage.mutable_entityidentifier()->number(),(SimCore::ObjectSource)trackMessage.mutable_entityidentifier()->external()); trackMessage.mutable_entityidentifier()->number(),
(SimCore::ObjectSource)trackMessage.mutable_entityidentifier()->external());
external_ = trackMessage.mutable_entityidentifier()->external(); external_ = trackMessage.mutable_entityidentifier()->external();
// trackNo_ = trackMessage.trackno(); // trackNo_ = trackMessage.trackno();
// external_ = trackMessage.external(); // external_ = trackMessage.external();

View File

@@ -11,10 +11,10 @@ SCENARIO("Testing the SimCorePositionClass")
GIVEN("different position in different forms") GIVEN("different position in different forms")
{ {
SimCore::Identifier ID1(100,SimCore::ObjectSource::EXTERNAL); SimCore::Identifier ID1(0,100,SimCore::ObjectSource::EXTERNAL);
SimCore::Identifier ID2(100,SimCore::ObjectSource::EXTERNAL); SimCore::Identifier ID2(0,100,SimCore::ObjectSource::EXTERNAL);
SimCore::Identifier ID3(100,SimCore::ObjectSource::INTERNAL); SimCore::Identifier ID3(1,100,SimCore::ObjectSource::INTERNAL);
SimCore::Identifier ID4(200,SimCore::ObjectSource::INTERNAL); SimCore::Identifier ID4(1,200,SimCore::ObjectSource::INTERNAL);
WHEN("constructing Position Object with data") WHEN("constructing Position Object with data")
@@ -27,8 +27,8 @@ SCENARIO("Testing the SimCorePositionClass")
{ {
REQUIRE(ID1.getNumber() == 100); REQUIRE(ID1.getNumber() == 100);
REQUIRE(ID1.isExternal() == true); REQUIRE(ID1.isExternal() == true);
REQUIRE(ID1.getPair().first == 100); REQUIRE(ID1.getParentNumber() == 0);
REQUIRE(ID1.getPair().second == true); REQUIRE(ID1.isExternal() == true);
REQUIRE(ID1 == ID2); REQUIRE(ID1 == ID2);
REQUIRE(ID1 != ID3); REQUIRE(ID1 != ID3);

View File

@@ -14,12 +14,12 @@ SCENARIO("Testing the SimCorePositionClass")
{ {
SimCore::IdentifierMaker IDList; SimCore::IdentifierMaker IDList;
auto ID1 = IDList.getNewIdentifier(SimCore::EXTERNAL); auto ID1 = IDList.getNewIdentifier(1,SimCore::EXTERNAL);
auto ID2 = IDList.getNewIdentifier(SimCore::EXTERNAL); auto ID2 = IDList.getNewIdentifier(1,SimCore::EXTERNAL);
auto ID3 = IDList.getNewIdentifier(SimCore::EXTERNAL); auto ID3 = IDList.getNewIdentifier(1,SimCore::EXTERNAL);
auto ID4 = IDList.getNewIdentifier(SimCore::INTERNAL); auto ID4 = IDList.getNewIdentifier(0,SimCore::INTERNAL);
auto ID5 = std::make_shared<SimCore::Identifier>(100, SimCore::EXTERNAL); auto ID5 = std::make_shared<SimCore::Identifier>(0,100, SimCore::EXTERNAL);
WHEN("constructing Position Object with data") WHEN("constructing Position Object with data")
{ {

View File

@@ -23,7 +23,7 @@ SCENARIO("Testing the SimCore Track") {
SimCore::IdentifierMaker IDMaker; SimCore::IdentifierMaker IDMaker;
std::shared_ptr<SimCore::Identifier> ID = std::shared_ptr<SimCore::Identifier> ID =
IDMaker.getNewIdentifier(SimCore::ObjectSource::INTERNAL); IDMaker.getNewIdentifier(0,SimCore::ObjectSource::INTERNAL);
LOG_S(INFO)<<"ID: " << ID->getNumber(); LOG_S(INFO)<<"ID: " << ID->getNumber();
std::shared_ptr<SimCore::RadarTrack> RadartrackPtr = std::shared_ptr<SimCore::RadarTrack> RadartrackPtr =
@@ -41,11 +41,11 @@ SCENARIO("Testing the SimCore Track") {
SimCore::RadarTrack radarTrack2(serializedMSG); SimCore::RadarTrack radarTrack2(serializedMSG);
SimCore::Identifier ID1(radarTrack2.getIdentifier().getPair()); SimCore::Identifier ID1(radarTrack2.getIdentifier());
auto tr0 = *RadartrackPtr.get(); auto tr0 = *RadartrackPtr.get();
SimCore::Identifier ID2(tr0.getIdentifier().getPair()); SimCore::Identifier ID2(tr0.getIdentifier());
LOG_S(INFO)<<"ID2 source: " << ID2.getObjectSource(); LOG_S(INFO)<<"ID2 source: " << ID2.isExternal();
if (ID1 == ID2) { if (ID1 == ID2) {
isEqual = true; isEqual = true;

View File

@@ -31,7 +31,7 @@ SCENARIO("Testing the SimCore Track")
std::shared_ptr<SimCore::Track> trackPtr = NULL; std::shared_ptr<SimCore::Track> trackPtr = NULL;
SimCore::IdentifierMaker IDMaker; SimCore::IdentifierMaker IDMaker;
auto ID = IDMaker.getNewIdentifier(SimCore::ObjectSource::EXTERNAL); auto ID = IDMaker.getNewIdentifier(1,SimCore::ObjectSource::EXTERNAL);
std::string serializedMSG; std::string serializedMSG;