acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
nanosecond.h
1// Created by camilo on 2023-07-04 18:45 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5struct nanosecond_t {};
6
7struct nanosecond
8{
9
10 ::i64 m_iNanosecond;
11
12 constexpr nanosecond() : m_iNanosecond(0) {}
13 constexpr nanosecond(no_initialize_t) {}
14 template < prototype_integral INTEGRAL >
15 constexpr nanosecond(nanosecond_t, INTEGRAL iNanosecond) : m_iNanosecond(iNanosecond) {}
16 constexpr nanosecond(const nanosecond &) = default;
17
18
19 constexpr nanosecond operator + (nanosecond nanosecond) const
20 {
21 return { nanosecond_t{}, m_iNanosecond + nanosecond.m_iNanosecond };
22 }
23
24 constexpr nanosecond operator - (nanosecond nanosecond) const
25 {
26 return { nanosecond_t {}, m_iNanosecond - nanosecond.m_iNanosecond };
27 }
28
29 constexpr nanosecond & operator += (nanosecond nanosecond)
30 {
31 m_iNanosecond += nanosecond.m_iNanosecond;
32 return *this;
33 }
34
35 constexpr nanosecond & operator -=(nanosecond nanosecond)
36 {
37 m_iNanosecond -= nanosecond.m_iNanosecond;
38 return *this;
39 }
40
41 constexpr nanosecond & operator =(const nanosecond & nanosecond)
42 {
43 m_iNanosecond = nanosecond.m_iNanosecond;
44 return *this;
45 }
46
47 template < prototype_integral INTEGRAL >
48 constexpr nanosecond operator * (INTEGRAL i) const
49 {
50 return { nanosecond_t{}, m_iNanosecond * i };
51 }
52
53
54};
55
56
57
Definition aaa_nanosecond.h:9
Definition nanosecond.h:5