Objectively
1.0.0
Ultra-lightweight object oriented framework for GNU C.
Sources
Objectively
Once.h
Go to the documentation of this file.
1
/*
2
* Objectively: Ultra-lightweight object oriented framework for GNU C.
3
* Copyright (C) 2014 Jay Dolan <jay@jaydolan.com>
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
*
18
* 2. Altered source versions must be plainly marked as such, and must not be
19
* misrepresented as being the original software.
20
*
21
* 3. This notice may not be removed or altered from any source distribution.
22
*/
23
24
#pragma once
25
26
#include <
Objectively/Types.h
>
27
37
typedef
long
Once
;
38
43
#define do_once(once, block) \
44
if (__sync_val_compare_and_swap(once, 0, -1) == 0) { \
45
block; *once = 1; \
46
} else { \
47
while (*once != 1) ; \
48
}
Types.h
Objectively base types.
Once
long Once
The Once type.
Definition:
Once.h:37
Generated on Mon Aug 29 2022 09:48:30 for Objectively by
1.9.3