# HG changeset patch # User Chris Cannam # Date 1426066184 0 # Node ID cafd65fc411bb13953bec4c611d771a5ed678677 # Parent 5ad98be7f635c3abe7b8f577fe1a5ee237052988 Comments etc diff -r 5ad98be7f635 -r cafd65fc411b base/BaseTypes.h --- a/base/BaseTypes.h Tue Mar 10 20:03:08 2015 +0000 +++ b/base/BaseTypes.h Wed Mar 11 09:29:44 2015 +0000 @@ -1,12 +1,34 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ #ifndef BASE_TYPES_H #define BASE_TYPES_H #include +/** Frame index, the unit of our time axis. This is signed because the + axis conceptually extends below zero: zero represents the start of + the main loaded audio model, not the start of time; a windowed + transform could legitimately produce results before then. We also + use this for frame counts, simply to avoid error-prone arithmetic + between signed and unsigned types. +*/ typedef int64_t sv_frame_t; -typedef double sv_samplerate_t; +/** Check whether an integer index is in range for a container, + avoiding overflows and signed/unsigned comparison warnings. +*/ template bool in_range_for(const C &container, T i) { @@ -18,4 +40,11 @@ } } +/** Sample rate. We have to deal with sample rates provided as float + or (unsigned) int types, so we might as well have a type that can + represent both. Storage size isn't an issue anyway. +*/ +typedef double sv_samplerate_t; + #endif +