Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/containers/result.c

    r58daf53 r64fc0ba  
    88//
    99// Author           : Andrew Beach
    10 // Created On       : Wed May 24 15:40:00 2017
     10// Created On       : Wed May 25 15:40:00 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Thr May 25 15:27:00 2017
     12// Last Modified On : Wed May 25 17:02:00 2017
    1313// Update Count     : 1
    1414//
     
    2727void ?{}(result(T, E) * this, one_t, T value) {
    2828        this->has_value = true;
    29         (&this->value){value};
     29        this->value = value;
    3030}
    3131
     
    3333void ?{}(result(T, E) * this, zero_t, E error) {
    3434        this->has_value = false;
    35         (&this->error){error};
     35        this->error = error;
    3636}
    3737
     
    4040        this->has_value = other.has_value;
    4141        if (other.has_value) {
    42                 (&this->value){other.value};
     42                this->value = other.value;
    4343        } 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;
    6245        }
    6346}
     
    10386        return this->error;
    10487}
    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.