Download
Documentation
Development
Examples
Donations
Contributions
Forum
Main Page
Related Pages
Modules
Classes
Sources
API
Core
System
system.h
1
/*
2
** ClanLib SDK
3
** Copyright (c) 1997-2013 The ClanLib Team
4
**
5
** This software is provided 'as-is', without any express or implied
6
** warranty. In no event will the authors be held liable for any damages
7
** arising from the use of this software.
8
**
9
** Permission is granted to anyone to use this software for any purpose,
10
** including commercial applications, and to alter it and redistribute it
11
** freely, subject to the following restrictions:
12
**
13
** 1. The origin of this software must not be misrepresented; you must not
14
** claim that you wrote the original software. If you use this software
15
** in a product, an acknowledgment in the product documentation would be
16
** appreciated but is not required.
17
** 2. Altered source versions must be plainly marked as such, and must not be
18
** misrepresented as being the original software.
19
** 3. This notice may not be removed or altered from any source distribution.
20
**
21
** Note: Some of the libraries ClanLib may link to may have additional
22
** requirements or restrictions.
23
**
24
** File Author(s):
25
**
26
** Magnus Norddahl
27
** Animehunter
28
*/
29
30
31
32
#pragma once
33
34
#include "../api_core.h"
35
#include "../System/cl_platform.h"
36
#include <vector>
37
38
namespace
clan
39
{
42
43
class
Mutex;
44
46
class
CL_API_CORE
System
47
{
50
51
public
:
53
static
ubyte64
get_time();
54
56
static
ubyte64
get_microseconds();
57
58
enum
CPU_ExtensionX86
{ mmx, mmx_ex, _3d_now, _3d_now_ex, sse, sse2, sse3, ssse3, sse4_a, sse4_1, sse4_2,
xop
, avx, aes, fma3, fma4 };
59
enum
CPU_ExtensionPPC
{ altivec };
60
61
static
bool
detect_cpu_extension(CPU_ExtensionX86 ext);
62
static
bool
detect_cpu_extension(CPU_ExtensionPPC ext);
63
65
static
int
get_num_cores();
66
67
71
72
public
:
74
static
void
*aligned_alloc(
size_t
size,
size_t
alignment = 16);
75
77
static
void
aligned_free(
void
*ptr);
78
80
static
int
capture_stack_trace(
int
frames_to_skip,
int
max_frames,
void
**out_frames,
unsigned
int
*out_hash = 0);
81
83
84
static
std::vector<std::string> get_stack_frames_text(
void
**frames,
int
num_frames);
85
90
static
void
sleep(
int
millis);
91
97
static
void
pause(
int
millis);
98
101
107
static
std::string get_exe_path();
108
112
113
private
:
115
};
116
117
}
118
clan::System::CPU_ExtensionPPC
CPU_ExtensionPPC
Definition:
system.h:59
clan::ubyte64
unsigned long long ubyte64
Definition:
cl_platform.h:66
clan::System::CPU_ExtensionX86
CPU_ExtensionX86
Definition:
system.h:58
clan::System
General system helper functions.
Definition:
system.h:46
clan::System::xop
Definition:
system.h:58