@@ -83,32 +83,78 @@ namespace qlibs {
8383 };
8484
8585
86+ /* *
87+ * @brief Represents a time delay value for use in transportDelay constructor.
88+ *
89+ * This utility provides a convenient way to convert a continuous-time delay
90+ * (in seconds) into a discrete-time delay step count based on a given time step `dt`.
91+ *
92+ * Example usage:
93+ * @code
94+ * transportDelay< 2.5_td(dt) > processDelay;
95+ * @endcode
96+ */
8697 struct timeDelay {
98+ // / Delay duration in seconds.
8799 real_t value;
100+
101+ /* *
102+ * @brief Construct a new timeDelay object.
103+ * @param v The delay value in seconds.
104+ */
88105 constexpr explicit timeDelay (real_t v) : value(v) {}
89- /* * @cond **/
106+
107+ /* *
108+ * @brief Computes the number of discrete steps equivalent to the delay.
109+ * @param dt The time step used in the simulation.
110+ * @return The delay expressed in number of steps, rounded to the nearest integer.
111+ */
90112 constexpr size_t operator ()(const real_t dt) const {
91113 return static_cast <size_t >( ( value/dt ) + 0 .5_re);
92114 }
115+
116+ /* *
117+ * @brief Alternate syntax to compute delay in steps using indexing operator.
118+ * @param dt The time step used in the simulation.
119+ * @return The delay expressed in number of steps, rounded to the nearest integer.
120+ */
93121 constexpr size_t operator [](const real_t dt) const {
94122 return static_cast <size_t >( ( value/dt ) + 0 .5_re);
95123 }
96- /* * @endcond **/
97124 };
98- /* * @cond **/
125+
126+ /* *
127+ * @brief Literal for creating a timeDelay from a floating-point value.
128+ *
129+ * Example:
130+ * @code
131+ * auto d = 0.2_td; // same as timeDelay(0.2_re)
132+ * @endcode
133+ *
134+ * @param v The delay value in seconds.
135+ * @return A timeDelay instance.
136+ */
99137 constexpr timeDelay operator " " _td(long double v) {
100138 return timeDelay (static_cast <real_t >(v));
101139 }
102140
141+ /* *
142+ * @brief Computes the delay in discrete steps using the comma operator.
143+ *
144+ * This allows concise syntax like:
145+ * @code
146+ * constexpr real_t dt = 0.01_re;
147+ * size_t steps = 0.2_td, dt; // same as timeDelay(0.2_re)(dt)
148+ * @endcode
149+ *
150+ * @param td A timeDelay object.
151+ * @param dt The time step.
152+ * @return The delay in steps.
153+ */
103154 constexpr size_t operator ,(const timeDelay td, const real_t dt) {
104155 return static_cast <size_t >( ( td.value /dt ) + 0 .5_re );
105156 }
106157
107- constexpr size_t operator +(const timeDelay td, const real_t dt) {
108- return static_cast <size_t >( ( td.value /dt ) + 0 .5_re );
109- }
110- /* * @endcond **/
111-
112158 /* *
113159 * @brief Computes the number of discrete delays required for a specified
114160 * amount of time using a defined time-step.
@@ -152,11 +198,14 @@ namespace qlibs {
152198 * class to simulate a time delay.
153199 * @see delayFromTime
154200 * @tparam numberOfDelay The number of discrete delays to be used. Use the
155- * delayFromTime() function to determine the number of discrete delays required
156- * for a specified amount of time.
201+ * timeDelay facility or delayFromTime() function to determine the number
202+ * of discrete delays required for a specified amount of time.
157203 * Example :
158204 * @code{.cpp}
159- * transportDelay<delayFromTime( 2.5f, dt )> myDelay1;
205+ * constexpr real_t dt = 0.1_re;
206+ * transportDelay< 2.5_td(dt) )> myDelay1;
207+ * transportDelay< delayFromTime(5.2, dt) )> myDelay2;
208+ * transportDelay< 4.3_td[dt] )> myDelay2;
160209 * @endcode
161210 */
162211 template <size_t numberOfDelays>
0 commit comments