github.com/jgarto/itcv@v0.0.0-20180826224514-4eea09c1aa0d/examples/sites/syntaxviewer/gen_app_immutableGen.go (about)

     1  // Code generated by immutableGen. DO NOT EDIT.
     2  
     3  package main
     4  
     5  //immutableVet:skipFile
     6  
     7  import (
     8  	"myitcv.io/immutable"
     9  )
    10  
    11  //
    12  // langState is an immutable type and has the following template:
    13  //
    14  // 	struct {
    15  // 		Code	string
    16  // 		Ast	string
    17  // 		Error	bool
    18  // 	}
    19  //
    20  type langState struct {
    21  	_Code  string
    22  	_Ast   string
    23  	_Error bool
    24  
    25  	mutable bool
    26  	__tmpl  _Imm_langState
    27  }
    28  
    29  var _ immutable.Immutable = new(langState)
    30  var _ = new(langState).__tmpl
    31  
    32  func (s *langState) AsMutable() *langState {
    33  	if s.Mutable() {
    34  		return s
    35  	}
    36  
    37  	res := *s
    38  	res.mutable = true
    39  	return &res
    40  }
    41  
    42  func (s *langState) AsImmutable(v *langState) *langState {
    43  	if s == nil {
    44  		return nil
    45  	}
    46  
    47  	if s == v {
    48  		return s
    49  	}
    50  
    51  	s.mutable = false
    52  	return s
    53  }
    54  
    55  func (s *langState) Mutable() bool {
    56  	return s.mutable
    57  }
    58  
    59  func (s *langState) WithMutable(f func(si *langState)) *langState {
    60  	res := s.AsMutable()
    61  	f(res)
    62  	res = res.AsImmutable(s)
    63  
    64  	return res
    65  }
    66  
    67  func (s *langState) WithImmutable(f func(si *langState)) *langState {
    68  	prev := s.mutable
    69  	s.mutable = false
    70  	f(s)
    71  	s.mutable = prev
    72  
    73  	return s
    74  }
    75  func (s *langState) IsDeeplyNonMutable(seen map[interface{}]bool) bool {
    76  	if s == nil {
    77  		return true
    78  	}
    79  
    80  	if s.Mutable() {
    81  		return false
    82  	}
    83  
    84  	if seen == nil {
    85  		return s.IsDeeplyNonMutable(make(map[interface{}]bool))
    86  	}
    87  
    88  	if seen[s] {
    89  		return true
    90  	}
    91  
    92  	seen[s] = true
    93  	return true
    94  }
    95  func (s *langState) Code() string {
    96  	return s._Code
    97  }
    98  
    99  // SetCode is the setter for Code()
   100  func (s *langState) SetCode(n string) *langState {
   101  	if s.mutable {
   102  		s._Code = n
   103  		return s
   104  	}
   105  
   106  	res := *s
   107  	res._Code = n
   108  	return &res
   109  }
   110  func (s *langState) Ast() string {
   111  	return s._Ast
   112  }
   113  
   114  // SetAst is the setter for Ast()
   115  func (s *langState) SetAst(n string) *langState {
   116  	if s.mutable {
   117  		s._Ast = n
   118  		return s
   119  	}
   120  
   121  	res := *s
   122  	res._Ast = n
   123  	return &res
   124  }
   125  func (s *langState) Error() bool {
   126  	return s._Error
   127  }
   128  
   129  // SetError is the setter for Error()
   130  func (s *langState) SetError(n bool) *langState {
   131  	if s.mutable {
   132  		s._Error = n
   133  		return s
   134  	}
   135  
   136  	res := *s
   137  	res._Error = n
   138  	return &res
   139  }