summaryrefslogtreecommitdiff
path: root/indra/test/print.h
blob: 7577698cc8ff991b6b838608f203c11da48b71e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
 * @file   print.h
 * @author Nat Goodspeed
 * @date   2020-01-02
 * @brief  print() function for debugging
 *
 * $LicenseInfo:firstyear=2020&license=viewerlgpl$
 * Copyright (c) 2020, Linden Research, Inc.
 * $/LicenseInfo$
 */

#if ! defined(LL_PRINT_H)
#define LL_PRINT_H

#include <iostream>

// print(..., NONL);
// leaves the output dangling, suppressing the normally appended std::endl
struct NONL_t {};
#define NONL (NONL_t())

// normal recursion end
inline
void print()
{
    std::cerr << std::endl;
}

// print(NONL) is a no-op
inline
void print(NONL_t)
{
}

template <typename T, typename... ARGS>
void print(T&& first, ARGS&&... rest)
{
    std::cerr << first;
    print(std::forward<ARGS>(rest)...);
}

#endif /* ! defined(LL_PRINT_H) */