My C++ sensible prelude.
1/* ========================================================================
2 *
3 * Filename: prelude.hpp
4 * Description: C++ sensible prelude - Definitions
5 * Author: Diego A. Estrada Rivera
6 * Version: 0.0.4
7 *
8 * ======================================================================== */
9#include "prelude.hpp"
10#include <span>
11
12/* type-safe main */
13I32 main(const I32 argc, const Handle<const CString> argv)
14{
15 proc Main(std::span<const std::string_view>) noexcept -> I32;
16 let args = std::vector<std::string_view>(
17 argv, std::next(argv, static_cast<std::ptrdiff_t>(argc)));
18 return Main(args);
19}
20
21/* Sensible IO */
22#include <iostream>
23
24proc getLine() noexcept -> String
25{
26 var str = String();
27 getline(std::cin, str);
28 return str;
29}
30
31proc getChar() noexcept -> Char
32{
33 var c = Char();
34 std::cin >> c;
35 return c;
36}
37
38proc print(const std::string_view& f) noexcept -> Unit
39{
40 std::cout << f;
41 return Unit();
42}
43
44proc println(const std::string_view& f) noexcept -> Unit
45{
46 std::cout << f << std::endl;
47 return Unit();
48}