ad_map_access
SerializeGeneratedPointTypes.hpp
Go to the documentation of this file.
1 // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 //
3 // Copyright (C) 2018-2021 Intel Corporation
4 //
5 // SPDX-License-Identifier: MIT
6 //
7 // ----------------- END LICENSE BLOCK -----------------------------------
12 #pragma once
13 
28 
30 namespace ad {
32 namespace map {
34 namespace serialize {
35 
39 inline bool doSerialize(ISerializer &serializer, point::ECEFCoordinate &x)
40 {
41  return serializer.serializeGeneratedType<point::ECEFCoordinate, double, SerializeableMagic::ECEFCoordinate>(x);
42 }
43 
47 inline bool doSerialize(ISerializer &serializer, point::ENUCoordinate &x)
48 {
49  return serializer.serializeGeneratedType<point::ENUCoordinate, double, SerializeableMagic::ENUCoordinate>(x);
50 }
51 
55 inline bool doSerialize(ISerializer &serializer, point::Longitude &x)
56 {
57  return serializer.serializeGeneratedType<point::Longitude, double, SerializeableMagic::Longitude>(x);
58 }
59 
63 inline bool doSerialize(ISerializer &serializer, point::Latitude &x)
64 {
65  return serializer.serializeGeneratedType<point::Latitude, double, SerializeableMagic::Latitude>(x);
66 }
67 
71 inline bool doSerialize(ISerializer &serializer, point::Altitude &x)
72 {
73  return serializer.serializeGeneratedType<point::Altitude, double, SerializeableMagic::Altitude>(x);
74 }
75 
79 inline bool doSerialize(ISerializer &serializer, point::ParaPoint &paraPoint)
80 {
81  return serializer.serialize(SerializeableMagic::ParaPoint) && doSerialize(serializer, paraPoint.laneId)
82  && doSerialize(serializer, paraPoint.parametricOffset);
83 }
84 
88 inline bool doSerialize(ISerializer &serializer, point::ENUPoint &enuPoint)
89 {
90  //@todo: fix ENUCoordinate -> ENUPoint: currently here for backward compat
91  return serializer.serialize(SerializeableMagic::ENUCoordinate) && doSerialize(serializer, enuPoint.x)
92  && doSerialize(serializer, enuPoint.y) && doSerialize(serializer, enuPoint.z);
93 }
94 
98 inline bool doSerialize(ISerializer &serializer, point::ECEFPoint &ecefPoint)
99 {
100  //@todo: fix ECEFCoordinate -> ECEFPoint: currently here for backward compat
101  return serializer.serialize(SerializeableMagic::ECEFCoordinate) && doSerialize(serializer, ecefPoint.x)
102  && doSerialize(serializer, ecefPoint.y) && doSerialize(serializer, ecefPoint.z);
103 }
104 
108 inline bool doSerialize(ISerializer &serializer, point::GeoPoint &geoPoint)
109 {
110  return serializer.serialize(SerializeableMagic::GeoPoint) && doSerialize(serializer, geoPoint.longitude)
111  && doSerialize(serializer, geoPoint.latitude) && doSerialize(serializer, geoPoint.altitude);
112 }
113 
117 inline bool doSerialize(ISerializer &serializer, point::BoundingSphere &boundingSphere)
118 {
119  // @todo: keep original format, so no magic for bounding sphere for now
120  return doSerialize(serializer, boundingSphere.center) && doSerialize(serializer, boundingSphere.radius);
121 }
122 
126 inline bool doSerialize(ISerializer &serializer, point::Geometry &geometry)
127 {
128  if (!serializer.isStoring())
129  {
130  // clear cache when reading
131  geometry.private_enuEdgeCache.enuVersion = 0;
132  geometry.private_enuEdgeCache.enuEdge.clear();
133  }
134  bool ok = serializer.serialize(SerializeableMagic::Geometry) && serializer.serialize(geometry.isValid)
135  && serializer.serialize(geometry.isClosed) && serialize::doSerialize(serializer, geometry.length);
136 
137  if (serializer.isStoring())
138  {
139  if (serializer.useEmbeddedPoints())
140  {
141  ok = ok && serializer.serializeObjectVector(geometry.ecefEdge);
142  }
143  else
144  {
145  static point::ECEFEdge empty;
146  ok = ok && serializer.serializeObjectVector(empty);
147  }
148  }
149  else
150  {
151  ok = ok && serializer.serializeObjectVector(geometry.ecefEdge);
152  }
153  return ok;
154 }
155 
156 } // namespace serialize
157 } // namespace map
158 } // namespace ad
ad
namespace ad
Definition: GeometryStoreItem.hpp:28
GeoPoint.hpp
Altitude.hpp
ad::map::point::ECEFPoint::z
::ad::map::point::ECEFCoordinate z
Definition: ECEFPoint.hpp:132
ad::map::serialize::ISerializer::useEmbeddedPoints
bool useEmbeddedPoints() const
retunrs the setting if embedded points should be used or not on serialization
Definition: ISerializer.hpp:238
ad::map::serialize::ISerializer
Interface for Serializer.
Definition: ISerializer.hpp:34
ISerializer.hpp
ECEFPoint.hpp
ad::map::point::ECEFPoint::y
::ad::map::point::ECEFCoordinate y
Definition: ECEFPoint.hpp:127
ad::map::point::BoundingSphere::center
::ad::map::point::ECEFPoint center
Definition: BoundingSphere.hpp:123
ad::map::point::GeoPoint::latitude
::ad::map::point::Latitude latitude
Definition: GeoPoint.hpp:129
ad::map::point::ParaPoint
DataType ParaPoint.
Definition: ParaPoint.hpp:48
ad::map::point::Geometry::private_enuEdgeCache
::ad::map::point::ENUEdgeCache private_enuEdgeCache
Definition: Geometry.hpp:130
ad::map::point::ECEFPoint::x
::ad::map::point::ECEFCoordinate x
Definition: ECEFPoint.hpp:122
ad::map::point::GeoPoint
DataType GeoPoint.
Definition: GeoPoint.hpp:47
Latitude.hpp
SerializeGeneratedPhysicsTypes.hpp
ad::map::point::GeoPoint::longitude
::ad::map::point::Longitude longitude
Definition: GeoPoint.hpp:124
ad::map::point::ENUPoint::y
::ad::map::point::ENUCoordinate y
Definition: ENUPoint.hpp:133
ad::map::point::ECEFCoordinate
DataType ECEFCoordinate.
Definition: ECEFCoordinate.hpp:68
ad::map::point::ENUPoint
DataType ENUPoint.
Definition: ENUPoint.hpp:51
ad::map::point::ENUPoint::z
::ad::map::point::ENUCoordinate z
Definition: ENUPoint.hpp:138
Geometry.hpp
ad::map::point::BoundingSphere
DataType BoundingSphere.
Definition: BoundingSphere.hpp:46
ENUCoordinate.hpp
ad::map::point::ENUPoint::x
::ad::map::point::ENUCoordinate x
Definition: ENUPoint.hpp:128
ad::map::point::GeoPoint::altitude
::ad::map::point::Altitude altitude
Definition: GeoPoint.hpp:134
ad::map::point::BoundingSphere::radius
::ad::physics::Distance radius
Definition: BoundingSphere.hpp:128
ad::map::point::Latitude
DataType Latitude.
Definition: Latitude.hpp:65
BoundingSphere.hpp
ParaPoint.hpp
ad::map::point::Geometry
DataType Geometry.
Definition: Geometry.hpp:45
ad::map::point::ECEFPoint
DataType ECEFPoint.
Definition: ECEFPoint.hpp:45
SerializeGeneratedBasicTypes.hpp
ad::map::point::Altitude
DataType Altitude.
Definition: Altitude.hpp:67
ad::map::point::ECEFEdge
std::vector<::ad::map::point::ECEFPoint > ECEFEdge
DataType ECEFEdge.
Definition: ECEFEdge.hpp:42
ad::map::point::Longitude
DataType Longitude.
Definition: Longitude.hpp:65
Longitude.hpp
ENUPoint.hpp
ECEFCoordinate.hpp
ad::map::point::ParaPoint::parametricOffset
::ad::physics::ParametricValue parametricOffset
Definition: ParaPoint.hpp:136
ad::map::point::ParaPoint::laneId
::ad::map::lane::LaneId laneId
Definition: ParaPoint.hpp:125
ad::map::point::ENUCoordinate
DataType ENUCoordinate.
Definition: ENUCoordinate.hpp:65