Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Toggle main menu visibility
Loading...
Searching...
No Matches
printer.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2022 Roc Streaming authors
3
*
4
* This Source Code Form is subject to the terms of the Mozilla Public
5
* License, v. 2.0. If a copy of the MPL was not distributed with this
6
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
*/
8
9
//! @file roc_core/printer.h
10
//! @brief Console printer.
11
12
#ifndef ROC_CORE_PRINTER_H_
13
#define ROC_CORE_PRINTER_H_
14
15
#include "
roc_core/attributes.h
"
16
#include "
roc_core/noncopyable.h
"
17
#include "
roc_core/stddefs.h
"
18
19
namespace
roc
{
20
namespace
core
{
21
22
//! Printer.
23
class
Printer
:
public
NonCopyable<> {
24
public
:
25
enum
{
26
BufferSize
= 1024,
//!< Maximum buffer size.
27
};
28
29
//! Printing function.
30
typedef
void (*
PrintlnFunc
)(
const
char
* buf,
size_t
bufsz);
31
32
//! Initialize printer.
33
//! If @p println_func is NULL, prints text to console.
34
Printer
(
PrintlnFunc
println_func = NULL);
35
36
//! Flush and destroy.
37
~Printer
();
38
39
//! Write text.
40
//! @returns size of formatted string (excluding terminating zero byte).
41
ROC_ATTR_PRINTF
(2, 3) size_t
writef
(const
char
* format, ...);
42
43
private:
44
void
flush_(
bool
force);
45
46
PrintlnFunc
println_;
47
48
char
buf_[
BufferSize
+ 1];
49
size_t
bufsz_;
50
};
51
52
}
// namespace core
53
}
// namespace roc
54
55
#endif
// ROC_CORE_PRINTER_H_
attributes.h
Compiler attributes.
ROC_ATTR_PRINTF
#define ROC_ATTR_PRINTF(fmt_pos, args_pos)
Function gets printf-like arguments.
Definition
attributes.h:35
roc::core::Printer::writef
size_t writef(const char *format,...)
Write text.
roc::core::Printer::BufferSize
@ BufferSize
Maximum buffer size.
Definition
printer.h:26
roc::core::Printer::PrintlnFunc
void(* PrintlnFunc)(const char *buf, size_t bufsz)
Printing function.
Definition
printer.h:30
roc::core::Printer::Printer
Printer(PrintlnFunc println_func=NULL)
Initialize printer. If println_func is NULL, prints text to console.
roc::core::Printer::~Printer
~Printer()
Flush and destroy.
roc::core
General-purpose building blocks and platform abstraction layer.
roc
Root namespace.
noncopyable.h
Non-copyable object.
stddefs.h
Commonly used types and functions.
roc_core
printer.h
Generated by
1.17.0