From 28ad79c97ab273d5077847cc81ca969c63474219 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sun, 1 Dec 2013 19:29:55 +0100
Subject: pcm/Traits: add typedef long_type

---
 src/pcm/Traits.hxx | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/pcm/Traits.hxx b/src/pcm/Traits.hxx
index b102b41ab..58a61c9c5 100644
--- a/src/pcm/Traits.hxx
+++ b/src/pcm/Traits.hxx
@@ -50,6 +50,13 @@ struct SampleTraits<SampleFormat::S8> {
 	 */
 	typedef const value_type *const_pointer_type;
 
+	/**
+	 * A "long" type that is large and accurate enough for
+	 * arithmetic without risking an (integer) overflow or
+	 * (floating point) precision loss.
+	 */
+	typedef int long_type;
+
 	/**
 	 * The size of one sample in bytes.
 	 */
@@ -68,6 +75,8 @@ struct SampleTraits<SampleFormat::S16> {
 	typedef value_type *pointer_type;
 	typedef const value_type *const_pointer_type;
 
+	typedef int long_type;
+
 	static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
 	static constexpr unsigned BITS = sizeof(value_type) * 8;
 };
@@ -78,6 +87,8 @@ struct SampleTraits<SampleFormat::S32> {
 	typedef value_type *pointer_type;
 	typedef const value_type *const_pointer_type;
 
+	typedef int64_t long_type;
+
 	static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
 	static constexpr unsigned BITS = sizeof(value_type) * 8;
 };
@@ -88,6 +99,8 @@ struct SampleTraits<SampleFormat::S24_P32> {
 	typedef value_type *pointer_type;
 	typedef const value_type *const_pointer_type;
 
+	typedef int long_type;
+
 	static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
 	static constexpr unsigned BITS = 24;
 };
-- 
cgit v1.2.3