Changes in src/libcfa/containers/result.c [58daf53:64fc0ba]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/containers/result.c
r58daf53 r64fc0ba 8 8 // 9 9 // Author : Andrew Beach 10 // Created On : Wed May 2 415:40:00 201710 // Created On : Wed May 25 15:40:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr May 25 15:27:00 201712 // Last Modified On : Wed May 25 17:02:00 2017 13 13 // Update Count : 1 14 14 // … … 27 27 void ?{}(result(T, E) * this, one_t, T value) { 28 28 this->has_value = true; 29 (&this->value){value};29 this->value = value; 30 30 } 31 31 … … 33 33 void ?{}(result(T, E) * this, zero_t, E error) { 34 34 this->has_value = false; 35 (&this->error){error};35 this->error = error; 36 36 } 37 37 … … 40 40 this->has_value = other.has_value; 41 41 if (other.has_value) { 42 (&this->value){other.value};42 this->value = other.value; 43 43 } else { 44 (&this->error){other.error}; 45 } 46 } 47 48 forall(otype T, otype E) 49 result(T, E) ?=?(result(T, E) * this, result(T, E) that) { 50 if (this->has_value & that.has_value) { 51 this->value = that.value; 52 } else if (this->has_value) { 53 ^(&this->value){}; 54 this->has_value = false; 55 (&this->error){that.error}; 56 } else if (that.has_value) { 57 ^(&this->error){}; 58 this->has_value = true; 59 (&this->value){that.value}; 60 } else { 61 this->error = that.error; 44 this->error = other.error; 62 45 } 63 46 } … … 103 86 return this->error; 104 87 } 105 106 forall(otype T, otype E)107 void set(result(T, E) * this, T value) {108 if (this->has_value) {109 this->value = value;110 } else {111 ^(&this->error){};112 this->has_value = true;113 (&this->value){value};114 }115 }116 117 forall(otype T, otype E)118 void set_error(result(T, E) * this, E error) {119 if (this->has_value) {120 ^(&this->value){};121 this->has_value = false;122 (&this->error){error};123 } else {124 this->error = error;125 }126 }
Note: See TracChangeset
for help on using the changeset viewer.