@@ -98,7 +98,7 @@ func StateName(state uint32, name string) string {
9898
9999// CompileBlock compile the source code into the CodeBlock structure with a byte-code
100100func (vm * VM ) CompileBlock (input []rune , owner * OwnerInfo ) (* CodeBlock , error ) {
101- root := & CodeBlock {Info : owner .StateID , Owner : owner }
101+ root := & CodeBlock {Info : newCodeBlockInfo ( owner .StateID ) , Owner : owner }
102102 lexems , err := lexParser (input )
103103 if err != nil {
104104 return nil , err
@@ -195,8 +195,8 @@ func (vm *VM) CompileBlock(input []rune, owner *OwnerInfo) (*CodeBlock, error) {
195195 }
196196 for _ , item := range root .Objects {
197197 if item .Type == ObjectType_Contract {
198- if cond , ok := item .Value .( * CodeBlock ).Objects [`conditions` ]; ok {
199- if cond .Type == ObjectType_Func && cond .Value .( * CodeBlock ).Info .( * FuncInfo ).CanWrite {
198+ if cond , ok := item .Value .CodeBlock ( ).Objects [`conditions` ]; ok {
199+ if cond .Type == ObjectType_Func && cond .Value .CodeBlock ( ).Info .FuncInfo ( ).CanWrite {
200200 return nil , errCondWrite
201201 }
202202 }
@@ -212,9 +212,9 @@ func (vm *VM) FlushBlock(root *CodeBlock) {
212212 if cur , ok := vm .Objects [key ]; ok {
213213 switch item .Type {
214214 case ObjectType_Contract :
215- root .Objects [key ].Value .( * CodeBlock ).Info .( * ContractInfo ).ID = cur .Value .( * CodeBlock ).Info .( * ContractInfo ).ID + flushMark
215+ root .Objects [key ].Value .CodeBlock ( ).Info .ContractInfo ( ).ID = cur .Value .CodeBlock ( ).Info .ContractInfo ( ).ID + flushMark
216216 case ObjectType_Func :
217- root .Objects [key ].Value .( * CodeBlock ).Info .( * FuncInfo ).ID = cur .Value .( * CodeBlock ).Info .( * FuncInfo ).ID + flushMark
217+ root .Objects [key ].Value .CodeBlock ( ).Info .FuncInfo ( ).ID = cur .Value .CodeBlock ( ).Info .FuncInfo ( ).ID + flushMark
218218 vm .Objects [key ].Value = root .Objects [key ].Value
219219 }
220220 }
@@ -223,23 +223,23 @@ func (vm *VM) FlushBlock(root *CodeBlock) {
223223 for _ , item := range root .Children {
224224 switch item .Type {
225225 case ObjectType_Contract :
226- if item .Info .( * ContractInfo ).ID > flushMark {
227- item .Info .( * ContractInfo ).ID -= flushMark
228- vm .Children [item .Info .( * ContractInfo ).ID ] = item
226+ if item .Info .ContractInfo ( ).ID > flushMark {
227+ item .Info .ContractInfo ( ).ID -= flushMark
228+ vm .Children [item .Info .ContractInfo ( ).ID ] = item
229229 shift --
230230 continue
231231 }
232232 item .Parent = vm .CodeBlock
233- item .Info .( * ContractInfo ).ID += uint32 (shift )
233+ item .Info .ContractInfo ( ).ID += uint32 (shift )
234234 case ObjectType_Func :
235- if item .Info .( * FuncInfo ).ID > flushMark {
236- item .Info .( * FuncInfo ).ID -= flushMark
237- vm .Children [item .Info .( * FuncInfo ).ID ] = item
235+ if item .Info .FuncInfo ( ).ID > flushMark {
236+ item .Info .FuncInfo ( ).ID -= flushMark
237+ vm .Children [item .Info .FuncInfo ( ).ID ] = item
238238 shift --
239239 continue
240240 }
241241 item .Parent = vm .CodeBlock
242- item .Info .( * FuncInfo ).ID += uint32 (shift )
242+ item .Info .FuncInfo ( ).ID += uint32 (shift )
243243 }
244244 vm .Children = append (vm .Children , item )
245245 }
@@ -273,7 +273,7 @@ func findVar(name string, block *CodeBlocks) (ret *ObjInfo, owner *CodeBlock) {
273273}
274274
275275func (vm * VM ) findObj (name string , block * CodeBlocks ) (ret * ObjInfo , owner * CodeBlock ) {
276- sname := StateName ((* block )[0 ].Info .( uint32 ), name )
276+ sname := StateName ((* block )[0 ].Info .Uint32 ( ), name )
277277 ret , owner = findVar (name , block )
278278 if ret != nil {
279279 return
@@ -545,11 +545,11 @@ main:
545545 var tail * ByteCode
546546 if prev := buffer [len (buffer )- 1 ]; prev .Cmd == cmdCall || prev .Cmd == cmdCallVari {
547547 objInfo := prev .Value .(* ObjInfo )
548- if (objInfo .Type == ObjectType_Func && objInfo .Value .( * CodeBlock ).Info .( * FuncInfo ).CanWrite ) ||
549- (objInfo .Type == ObjectType_ExtFunc && objInfo .Value .( ExtFuncInfo ).CanWrite ) {
548+ if (objInfo .Type == ObjectType_Func && objInfo .Value .CodeBlock ( ).Info .FuncInfo ( ).CanWrite ) ||
549+ (objInfo .Type == ObjectType_ExtFunc && objInfo .Value .ExtFuncInfo ( ).CanWrite ) {
550550 setWritable (block )
551551 }
552- if objInfo .Type == ObjectType_Func && objInfo .Value .( * CodeBlock ).Info .( * FuncInfo ).Names != nil {
552+ if objInfo .Type == ObjectType_Func && objInfo .Value .CodeBlock ( ).Info .FuncInfo ( ).Names != nil {
553553 if len (bytecode ) == 0 || bytecode [len (bytecode )- 1 ].Cmd != cmdFuncName {
554554 bytecode .push (newByteCode (cmdPush , lexem .Line , nil ))
555555 }
@@ -558,7 +558,7 @@ main:
558558 log .WithFields (log.Fields {"type" : consts .ParseError }).Error ("must be the name of the tail" )
559559 return fmt .Errorf (`must be the name of the tail` )
560560 }
561- names := prev .Value .(* ObjInfo ).Value .( * CodeBlock ).Info .( * FuncInfo ).Names
561+ names := prev .Value .(* ObjInfo ).Value .CodeBlock ( ).Info .FuncInfo ( ).Names
562562 if _ , ok := (* names )[(* lexems )[i + 2 ].Value .(string )]; ! ok {
563563
564564 if i < len (* lexems )- 5 && (* lexems )[i + 3 ].Type == isLPar {
@@ -588,7 +588,7 @@ main:
588588 parcount = parcount [:len (parcount )- 1 ]
589589 if prev .Value .(* ObjInfo ).Type == ObjectType_ExtFunc {
590590 var errtext string
591- extinfo := prev .Value .(* ObjInfo ).Value .( ExtFuncInfo )
591+ extinfo := prev .Value .(* ObjInfo ).Value .ExtFuncInfo ( )
592592 wantlen := len (extinfo .Params )
593593 for _ , v := range extinfo .Auto {
594594 if len (v ) > 0 {
@@ -732,14 +732,14 @@ main:
732732 }
733733 if objInfo .Type == ObjectType_Contract {
734734 if objInfo .Value != nil {
735- objContract = objInfo .Value .( * CodeBlock )
735+ objContract = objInfo .Value .CodeBlock ( )
736736 }
737737 objInfo , tobj = vm .findObj (`ExecContract` , block )
738738 isContract = true
739739 }
740740 cmdCall := uint16 (cmdCall )
741- if (objInfo .Type == ObjectType_ExtFunc && objInfo .Value .( ExtFuncInfo ).Variadic ) ||
742- (objInfo .Type == ObjectType_Func && objInfo .Value .( * CodeBlock ).Info .( * FuncInfo ).Variadic ) {
741+ if (objInfo .Type == ObjectType_ExtFunc && objInfo .Value .ExtFuncInfo ( ).Variadic ) ||
742+ (objInfo .Type == ObjectType_Func && objInfo .Value .CodeBlock ( ).Info .FuncInfo ( ).Variadic ) {
743743 cmdCall = cmdCallVari
744744 }
745745 count := 0
@@ -748,20 +748,20 @@ main:
748748 }
749749 buffer .push (newByteCode (cmdCall , lexem .Line , objInfo ))
750750 if isContract {
751- name := StateName ((* block )[0 ].Info .( uint32 ), lexem .Value .(string ))
751+ name := StateName ((* block )[0 ].Info .Uint32 ( ), lexem .Value .(string ))
752752 for j := len (* block ) - 1 ; j >= 0 ; j -- {
753753 topblock := (* block )[j ]
754754 if topblock .Type == ObjectType_Contract {
755- if name == topblock .Info .( * ContractInfo ).Name {
755+ if name == topblock .Info .ContractInfo ( ).Name {
756756 return errRecursion
757757 }
758- if topblock .Info .( * ContractInfo ).Used == nil {
759- topblock .Info .( * ContractInfo ).Used = make (map [string ]bool )
758+ if topblock .Info .ContractInfo ( ).Used == nil {
759+ topblock .Info .ContractInfo ( ).Used = make (map [string ]bool )
760760 }
761- topblock .Info .( * ContractInfo ).Used [name ] = true
761+ topblock .Info .ContractInfo ( ).Used [name ] = true
762762 }
763763 }
764- if objContract != nil && objContract .Info .( * ContractInfo ).CanWrite {
764+ if objContract != nil && objContract .Info .ContractInfo ( ).CanWrite {
765765 setWritable (block )
766766 }
767767 bytecode .push (newByteCode (cmdPush , lexem .Line , name ))
@@ -774,7 +774,7 @@ main:
774774 }
775775 if lexem .Value .(string ) == `CallContract` {
776776 count ++
777- bytecode .push (newByteCode (cmdPush , lexem .Line , (* block )[0 ].Info .( uint32 )))
777+ bytecode .push (newByteCode (cmdPush , lexem .Line , (* block )[0 ].Info .Uint32 ( )))
778778 }
779779 parcount = append (parcount , count )
780780 call = true
@@ -784,7 +784,7 @@ main:
784784 logger .WithFields (log.Fields {"lex_value" : lexem .Value .(string ), "type" : consts .ParseError }).Error ("unknown variable" )
785785 return fmt .Errorf (`unknown variable %s` , lexem .Value .(string ))
786786 }
787- buffer .push (newByteCode (cmdIndex , lexem .Line , & IndexInfo {VarOffset : objInfo .Value .( int ), Owner : tobj }))
787+ buffer .push (newByteCode (cmdIndex , lexem .Line , & IndexInfo {VarOffset : objInfo .Value .Int ( ), Owner : tobj }))
788788 }
789789 }
790790 if ! call {
0 commit comments