Skip to content

Commit 50a5190

Browse files
Fix for #16 (#17)
Adding support for parsing unsigned values SessionID and SessionVersion now parsed as unsigned value
1 parent d045684 commit 50a5190

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

src/grammar.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ namespace sdptransform
4343
// names:
4444
{ "username", "sessionId", "sessionVersion", "netType", "ipVer", "address" },
4545
// types:
46-
{ 's', 'd', 'd', 's', 'd', 's' },
46+
{ 's', 'u', 'u', 's', 'd', 's' },
4747
// format:
4848
"%s %d %d %s IP%d %s"
4949
}

src/parser.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <ios> // std::noskipws
77
#include <algorithm> // std::find_if()
88
#include <cctype> // std::isspace()
9+
#include <cstdint> // std::uint64_t
910

1011
namespace sdptransform
1112
{
@@ -293,15 +294,28 @@ namespace sdptransform
293294
return str;
294295
}
295296

297+
case 'u':
298+
{
299+
std::istringstream iss(str);
300+
std::uint64_t ll;
301+
302+
iss >> std::noskipws >> ll;
303+
304+
if (iss.eof() && !iss.fail())
305+
return ll;
306+
else
307+
return 0u;
308+
}
309+
296310
case 'd':
297311
{
298312
std::istringstream iss(str);
299-
long long ll;
313+
std::int64_t ll;
300314

301315
iss >> std::noskipws >> ll;
302316

303317
if (iss.eof() && !iss.fail())
304-
return std::stoll(str);
318+
return ll;
305319
else
306320
return 0;
307321
}

0 commit comments

Comments
 (0)