v

Зеркало из https://github.com/vlang/v
Форк
0
/
memory.c.v 
39 строк · 1.5 Кб
1
module memory
2

3
pub type FnAllocatorAlloc = fn (size usize, user_data voidptr) voidptr
4

5
pub type FnAllocatorFree = fn (ptr voidptr, user_data voidptr)
6

7
pub type FnLogCb = fn (const_tag &char, log_level u32, log_item_id u32, const_message_or_null &char, line_nr u32, const_filename_or_null &char, user_data voidptr)
8

9
// salloc - used in the allocator structs, that the SOKOL libraries use, for allocating new memory blocks
10
pub fn salloc(size usize, user_data voidptr) voidptr {
11
	res := unsafe { malloc(int(size)) }
12
	$if trace_sokol_memory ? {
13
		eprintln('sokol.memory.salloc | user_data: ${user_data:x} | size: ${size:10} | res: ${res:x}')
14
	}
15
	$if trace_sokol_memory_salloc_backtrace ? {
16
		print_backtrace()
17
	}
18
	return res
19
}
20

21
// sfree - used in the allocator structs, that the SOKOL libraries use, for freeing memory
22
pub fn sfree(ptr voidptr, user_data voidptr) {
23
	$if trace_sokol_memory ? {
24
		eprintln(' sokol.memory.sfree | user_data: ${user_data:x} |                    ptr: ${ptr:x}')
25
	}
26
	$if trace_sokol_memory_sfree_backtrace ? {
27
		print_backtrace()
28
	}
29
	unsafe { free(ptr) }
30
}
31

32
fn C.SOKOL_LOG(const_message &char)
33

34
pub fn slog(const_tag &char, log_level u32, log_item_id u32, const_message_or_null &char, line_nr u32,
35
	const_filename_or_null &char, user_data voidptr) {
36
	C.fprintf(C.stderr, c'sokol.memory.slog | user_data: %p, const_tag: %s, level: %d, item_id: %d, fname: %s, line: %d, message: %s\n',
37
		user_data, const_tag, log_level, log_item_id, const_filename_or_null, line_nr,
38
		const_message_or_null)
39
}
40

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.