1#if !defined(RESIP_INSERTER_HXX)
2#define RESIP_INSERTER_HXX
9#include <unordered_map>
10#include <unordered_set>
62#ifdef REASONABLE_TEMPLATES
79 for (
typename std::vector <T>::const_iterator i = c.begin();
98 for (
typename std::deque <T>::const_iterator i = c.begin();
117 for (
typename std::list <T>::const_iterator i = c.begin();
131#if !defined(__INTEL_COMPILER)
132template <
class K,
class C>
137 for (
typename std::set <K, C>::const_iterator i = c.begin();
151#if !defined(__INTEL_COMPILER)
152template <
class K,
class C>
157 for (
typename std::multiset <K, C>::const_iterator i = c.begin();
171template <
class K,
class V,
class H>
176 for (
auto i = c.begin(); i != c.end(); i++)
190template <
class V,
class H>
195 for (
auto i = c.begin(); i != c.end(); i++)
207template <
class K,
class V,
class H,
class P>
212 for (
auto i = c.
begin(); i != c.
end(); i++)
227template <
class K,
class V,
class H>
232 for (
typename std::map<K,V, H>::const_iterator i = c.begin();
258template <
class T,
class U>
299#if defined(WIN32) && defined(_MSC_VER) && (_MSC_VER < 1310)
327#ifdef REASONABLE_TEMPLATES
344 for (
typename std::vector <T>::const_iterator i = c.begin();
363 for (
typename std::deque <T>::const_iterator i = c.begin();
382 for (
typename std::list <T>::const_iterator i = c.begin();
396#if !defined(__INTEL_COMPILER)
397template <
class K,
class C>
402 for (
typename std::set <K, C>::const_iterator i = c.begin();
416#if !defined(__INTEL_COMPILER)
417template <
class K,
class C>
422 for (
typename std::multiset <K, C>::const_iterator i = c.begin();
436template <
class K,
class V,
class H>
441 for (
auto i = c.begin(); i != c.end(); i++)
455template <
class V,
class H>
460 for (
auto i = c.begin(); i != c.end(); i++)
473template <
class K,
class V,
class H>
478 for (
typename std::map<K,V, H>::const_iterator i = c.begin();
504template <
class T,
class U>
545#if defined(WIN32) && defined(_MSC_VER) && (_MSC_VER < 1310)
#define resip_assert(x)
This file needs to work for both C and C++ code.
Allows a (possibly recursive) container of anything with operator<< to be dumped to a stream.
InserterClass(const T &t)
Allows a (possibly recursive) container of anything with operator<< to be dumped to a stream.
InserterPClass(const T &t)
A hash map that iterates in insertion order, so a container filled while parsing (eg.
This file is used to handle compatibility fixes/tweaks so reSIProcate can function on multiple platfo...
dcm! – add UnusedChecking(_enum) below;
static const char * sparrowsp(" -> ")
EncodeStream & insert(EncodeStream &s, const std::vector< T > &c)
Completely generic insert function.
InserterClass< T > Inserter(const T &t)
Templatized function to construct an instance of InserterClass for a container to be inserted.
static const char * leftsqbracket("[")
static const char * commaspace(", ")
static const char * leftanglebracket("<")
static const char * rightsqbracket("]")
InserterPClass< T > InserterP(const T &t)
Templatized function to construct an instance of InserterClass for a container to be inserted.
EncodeStream & insertP(EncodeStream &s, const std::vector< T > &c)
The following functions are more or less the same as the above, but add P to the naming and treat dat...
static const char * rightanglebracket(">")
EncodeStream & operator<<(EncodeStream &strm, const BaseException &e)
Replaces STL streams for general encoding purposes.