1111
1212namespace pl ::lib::libstd::time {
1313
14- static u128 packTMValue (const std::tm &tm, pl::PatternLanguage &runtime) {
15- auto endian = runtime.getInternals ().evaluator ->getDefaultEndian ();
14+ static u128 packTMValue (const std::tm &tm, std::endian endian = std::endian::native) {
1615 std::tm tmCopy = tm;
1716 tmCopy.tm_year = hlp::changeEndianess (tm.tm_year , 2 , endian);
1817 tmCopy.tm_yday = hlp::changeEndianess (tm.tm_yday , 2 , endian);
@@ -30,8 +29,7 @@ namespace pl::lib::libstd::time {
3029 return hlp::changeEndianess (result, 16 , endian);
3130 }
3231
33- static tm unpackTMValue (u128 value, pl::PatternLanguage &runtime) {
34- auto endian = runtime.getInternals ().evaluator ->getDefaultEndian ();
32+ static tm unpackTMValue (u128 value, std::endian endian = std::endian::native) {
3533 value = hlp::changeEndianess (value, 16 , endian);
3634 tm tm = { };
3735 tm.tm_sec = (int )(value >> 0 ) & 0xFF ;
@@ -63,48 +61,48 @@ namespace pl::lib::libstd::time {
6361 });
6462
6563 /* to_local(time) */
66- runtime.addFunction (nsStdTime, " to_local" , FunctionParameterCount::exactly (1 ), [&runtime ](Evaluator *, auto params) -> std::optional<Token::Literal> {
64+ runtime.addFunction (nsStdTime, " to_local" , FunctionParameterCount::exactly (1 ), [](Evaluator *ctx , auto params) -> std::optional<Token::Literal> {
6765 auto time = time_t (params[0 ].toUnsigned ());
6866
6967 try {
7068 auto localTime = std::localtime (&time);
7169 if (localTime == nullptr ) return u128 (0 );
7270
73- return { packTMValue (*localTime, runtime ) };
71+ return { packTMValue (*localTime, ctx-> getDefaultEndian () ) };
7472 } catch (const fmt::format_error&) {
7573 return u128 (0 );
7674 }
7775 });
7876
7977 /* to_utc(time) */
80- runtime.addFunction (nsStdTime, " to_utc" , FunctionParameterCount::exactly (1 ), [&runtime ](Evaluator *, auto params) -> std::optional<Token::Literal> {
78+ runtime.addFunction (nsStdTime, " to_utc" , FunctionParameterCount::exactly (1 ), [](Evaluator *ctx , auto params) -> std::optional<Token::Literal> {
8179 auto time = time_t (params[0 ].toUnsigned ());
8280
8381 try {
8482 auto gmTime = std::gmtime (&time);
8583 if (gmTime == nullptr ) return u128 (0 );
8684
87- return { packTMValue (*gmTime, runtime ) };
85+ return { packTMValue (*gmTime, ctx-> getDefaultEndian () ) };
8886 } catch (const fmt::format_error&) {
8987 return u128 (0 );
9088 }
9189 });
9290
9391 /* to_epoch(structured_time) */
94- runtime.addFunction (nsStdTime, " to_epoch" , FunctionParameterCount::exactly (1 ), [&runtime ](Evaluator *, auto params) -> std::optional<Token::Literal> {
92+ runtime.addFunction (nsStdTime, " to_epoch" , FunctionParameterCount::exactly (1 ), [](Evaluator *ctx , auto params) -> std::optional<Token::Literal> {
9593 u128 structuredTime = params[0 ].toUnsigned ();
9694
97- tm time = unpackTMValue (structuredTime, runtime );
95+ tm time = unpackTMValue (structuredTime, ctx-> getDefaultEndian () );
9896
9997 return { u128 (std::mktime (&time)) };
10098 });
10199
102100 /* format(format_string, structured_time) */
103- runtime.addFunction (nsStdTime, " format" , FunctionParameterCount::exactly (2 ), [&runtime ](Evaluator *, auto params) -> std::optional<Token::Literal> {
101+ runtime.addFunction (nsStdTime, " format" , FunctionParameterCount::exactly (2 ), [](Evaluator *ctx , auto params) -> std::optional<Token::Literal> {
104102 auto formatString = params[0 ].toString (false );
105103 u128 structuredTime = params[1 ].toUnsigned ();
106104
107- auto time = unpackTMValue (structuredTime, runtime );
105+ auto time = unpackTMValue (structuredTime, ctx-> getDefaultEndian () );
108106
109107 if (time.tm_sec < 0 || time.tm_sec > 61 ||
110108 time.tm_min < 0 || time.tm_min > 59 ||
0 commit comments