aaronthesisarmehcleanupdtorsdeferred_resndemanglerenumforallpointerdecayjacob/cs343translationjenkinssandboxnewastnewastuniqueexprnewenvno_listpersistentindexerpthreademulationqualifiedEnumresolvnewwith_gc
Last change
on this file since 58daf53 was
58daf53,
checked in by Andrew Beach <ajbeach@…>, 6 years ago

Made maybe and result mutable, they should now qualify as otypes. Also added a few details to cfa.nanorc.


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 : Andrew Beach 

12  // Last Modified On : Thr May 25 16:36:00 2017 

13  // Update Count : 1 

14  // 

15  

16  

17  #ifndef MAYBE_H 

18  #define MAYBE_H 

19  

20  #include <stdbool.h> 

21  

22  // DO NOT USE DIRECTLY! 

23  forall(otype T) 

24  struct maybe { 

25  bool has_value; 

26  T value; 

27  }; 

28  

29  

30  forall(otype T) 

31  void ?{}(maybe(T) * this); 

32  

33  forall(otype T) 

34  void ?{}(maybe(T) * this, T value); 

35  

36  forall(otype T) 

37  void ?{}(maybe(T) * this, maybe(T) other); 

38  

39  forall(otype T) 

40  void ^?{}(maybe(T) * this); 

41  

42  forall(otype T) 

43  maybe(T) ?=?(maybe(T) * this, maybe(T) other); 

44  

45  forall(otype T) 

46  bool ?!=?(maybe(T) this, zero_t); 

47  

48  forall(otype T) 

49  maybe(T) maybe_value(T value); 

50  

51  forall(otype T) 

52  maybe(T) maybe_none(); 

53  

54  forall(otype T) 

55  bool has_value(maybe(T) * this); 

56  

57  forall(otype T) 

58  T get(maybe(T) * this); 

59  

60  forall(otype T) 

61  void set(maybe(T) * this, T value); 

62  

63  forall(otype T) 

64  void set_none(maybe(T) * this); 

65  

66  #endif // MAYBE_H 

Note: See
TracBrowser
for help on using the repository browser.