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

@@ -9,26 +9,61 @@
namespace SimCore {
class Identifier{
public:
Identifier() = default;
Identifier(int number,SimCore::ObjectSource ObjectSource) ;
Identifier(std::pair<int, SimCore::ObjectSource> id);
public:
Identifier() ;
/**
* @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);
/**
* @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();
/**
* @brief return true if the number is bigger than 0
*
*/
bool isValid();
std::pair<int, SimCore::ObjectSource> getPair();
/**
* @brief returns the serilaized string of the ID
* @brief string
*/
std::string serialize();
friend bool operator==(const Identifier &lhs,const Identifier &rhs);
private:
SimCore::ObjectSource objectSource_;
int number_ = 0;
/// indicates if ID is from an external source
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:
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>);

View File

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

View File

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

View File

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

View File

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