source: libcfa/src/containers/maybe.hfa @ fd54fef

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since fd54fef was fd54fef, checked in by Michael Brooks <mlbrooks@…>, 3 years ago

Converting the project to use the new syntax for otype, dtype and ttytpe.

Changed prelude (gen), libcfa and test suite to use it. Added a simple deprecation rule of the old syntax to the parser; we might wish to support both syntaxes "officially," like with an extra CLI switch, but this measure should serve as a simple reminder for our team to try the new syntax.

  • Property mode set to 100644
File size: 1.2 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// maybe -- May contain a value.
8//
9// Author           : Andrew Beach
10// Created On       : Wed May 24 14:43:00 2017
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Sat Jul 22 10:00:52 2017
13// Update Count     : 4
14//
15
16#pragma once
17
18#include <stdbool.h>
19
20// DO NOT USE DIRECTLY!
21forall(T)
22struct maybe {
23    bool has_value;
24    T value;
25};
26
27
28forall(T)
29void ?{}(maybe(T) & this);
30
31forall(T)
32void ?{}(maybe(T) & this, T value);
33
34forall(T)
35void ?{}(maybe(T) & this, maybe(T) other);
36
37forall(T)
38void ^?{}(maybe(T) & this);
39
40forall(T)
41maybe(T) ?=?(maybe(T) & this, maybe(T) other);
42
43forall(T)
44bool ?!=?(maybe(T) this, zero_t);
45
46/* Waiting for bug#11 to be fixed.
47forall(T)
48maybe(T) maybe_value(T value);
49
50forall(T)
51maybe(T) maybe_none();
52*/
53
54forall(T)
55bool has_value(maybe(T) * this);
56
57forall(T)
58T get(maybe(T) * this);
59
60forall(T)
61void set(maybe(T) * this, T value);
62
63forall(T)
64void set_none(maybe(T) * this);
65
66// Local Variables: //
67// mode: c //
68// tab-width: 4 //
69// End: //
Note: See TracBrowser for help on using the repository browser.