diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nolocale.h | 49 | ||||
| -rw-r--r-- | src/rangemap.h | 90 | 
2 files changed, 71 insertions, 68 deletions
| diff --git a/src/nolocale.h b/src/nolocale.h index 4d6fc75..ec49ec6 100644 --- a/src/nolocale.h +++ b/src/nolocale.h @@ -24,55 +24,52 @@   *  along with DrumGizmo; if not, write to the Free Software   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.   */ -#ifndef __DRUMGIZMO_NOLOCALE_H__ -#define __DRUMGIZMO_NOLOCALE_H__ +#pragma once  #include <locale.h>  #include <stdarg.h> -static inline double atof_nol(const char *nptr) +static inline double atof_nol(const char* nptr)  {  	double res; -  const char *locale = setlocale(LC_NUMERIC, "C"); +	const char* locale = setlocale(LC_NUMERIC, "C"); -  res = atof(nptr); +	res = atof(nptr); -  setlocale(LC_NUMERIC, locale); +	setlocale(LC_NUMERIC, locale);  	return res;  } -static inline int sprintf_nol(char *str, const char *format, ...) +static inline int sprintf_nol(char* str, const char* format, ...)  { -  int ret; +	int ret; -  const char *locale = setlocale(LC_NUMERIC, "C"); +	const char* locale = setlocale(LC_NUMERIC, "C"); -  va_list vl; -  va_start(vl, format); -  ret = vsprintf(str, format, vl); -  va_end(vl); +	va_list vl; +	va_start(vl, format); +	ret = vsprintf(str, format, vl); +	va_end(vl); -  setlocale(LC_NUMERIC, locale); +	setlocale(LC_NUMERIC, locale); -  return ret; +	return ret;  } -static inline int snprintf_nol(char *str, size_t size, const char *format, ...) +static inline int snprintf_nol(char* str, size_t size, const char* format, ...)  { -  int ret; +	int ret; -  const char *locale = setlocale(LC_NUMERIC, "C"); +	const char* locale = setlocale(LC_NUMERIC, "C"); -  va_list vl; -  va_start(vl, format); -  ret = vsnprintf(str, size, format, vl); -  va_end(vl); +	va_list vl; +	va_start(vl, format); +	ret = vsnprintf(str, size, format, vl); +	va_end(vl); -  setlocale(LC_NUMERIC, locale); +	setlocale(LC_NUMERIC, locale); -  return ret; +	return ret;  } - -#endif/*__DRUMGIZMO_NOLOCALE_H__*/ diff --git a/src/rangemap.h b/src/rangemap.h index 34a50b1..4c427e7 100644 --- a/src/rangemap.h +++ b/src/rangemap.h @@ -24,68 +24,74 @@   *  along with DrumGizmo; if not, write to the Free Software   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.   */ -#ifndef __DRUMGIZMO_RANGEMAP_H__ -#define __DRUMGIZMO_RANGEMAP_H__ +#pragma once  #include <vector>  #include <map> -template<typename T1, typename T2>  -class RangeMap { +template <typename T1, typename T2> class RangeMap +{  public: -  void insert(T1 from, T1 to, T2 value); -  std::vector<T2> get(T1 from, T1 to); -  std::vector<T2> get(T1 at); +	void insert(T1 from, T1 to, T2 value); +	std::vector<T2> get(T1 from, T1 to); +	std::vector<T2> get(T1 at);  private: -  std::multimap<std::pair<T1, T1>, T2> values; +	std::multimap<std::pair<T1, T1>, T2> values;  }; -template<typename T1, typename T2> +template <typename T1, typename T2>  void RangeMap<T1, T2>::insert(T1 from, T1 to, T2 value)  { -  if(from < to) values.insert(std::make_pair(std::make_pair(from, to), value)); -  else values.insert(std::make_pair(std::make_pair(to, from), value)); +	if(from < to) +	{ +		values.insert(std::make_pair(std::make_pair(from, to), value)); +	} +	else +	{ +		values.insert(std::make_pair(std::make_pair(to, from), value)); +	}  } -template<typename T1, typename T2>  +template <typename T1, typename T2>  std::vector<T2> RangeMap<T1, T2>::get(T1 from, T1 to)  { -  std::vector<T2> res; +	std::vector<T2> res; -  typename std::multimap<std::pair<T1, T1>, T2>::iterator i = values.begin(); -  while(i != values.end()) { -    T1 a = i->first.first; -    T1 b = i->first.second; -    if( -       (from >= a && to <= b) || // inside -       (from <= a && to >= b) || // containing -       (from <= a && to >= a && to <= b) || // overlapping lower -       (from >= a && from <= b && to >= b)  // overlapping upper -       ) -      res.push_back(i->second); -    i++; -  } +	typename std::multimap<std::pair<T1, T1>, T2>::iterator i = values.begin(); +	while(i != values.end()) +	{ +		T1 a = i->first.first; +		T1 b = i->first.second; +		if((from >= a && to <= b) ||             // inside +		    (from <= a && to >= b) ||            // containing +		    (from <= a && to >= a && to <= b) || // overlapping lower +		    (from >= a && from <= b && to >= b)  // overlapping upper +		    ) +		{ +			res.push_back(i->second); +		} +		i++; +	} -  return res; +	return res;  } -template<typename T1, typename T2>  -std::vector<T2> RangeMap<T1, T2>::get(T1 at) +template <typename T1, typename T2> std::vector<T2> RangeMap<T1, T2>::get(T1 at)  { -  std::vector<T2> res; +	std::vector<T2> res; -  typename std::multimap<std::pair<T1, T1>, T2>::iterator i = values.begin(); -  while(i != values.end()) { -    T1 a = i->first.first; -    T1 b = i->first.second; -    if(at >= a && at <= b) -      res.push_back(i->second); -    i++; -  } +	typename std::multimap<std::pair<T1, T1>, T2>::iterator i = values.begin(); +	while(i != values.end()) +	{ +		T1 a = i->first.first; +		T1 b = i->first.second; +		if(at >= a && at <= b) +		{ +			res.push_back(i->second); +		} +		i++; +	} -  return res; +	return res;  } - - -#endif/*__DRUMGIZMO_RANGEMAP_H__*/ | 
