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 }