| // {{esc .Name}} {{printf "implements %s (%s|%s) [%s]" .Name .OGF .OCF .Spec}} |
| type {{esc .Name}} struct { |
| {{range .Param}}{{range $k, $v := .}}{{printf "\t%s\t%s\n" (esc $k) $v}}{{end}}{{end}} |
| } |
| |
| func (c *{{esc .Name}}) String() string { |
| return {{printf "\"%s (%s|%s)\"" .Name .OGF .OCF}} |
| } |
| |
| // OpCode returns the opcode of the command. |
| func (c *{{esc .Name}}) OpCode() int { return {{printf "%s<<10 | %s" .OGF .OCF}} } |
| |
| // Len returns the length of the command. |
| func (c *{{esc .Name}}) Len() int { return {{.Len}} } |
| {{if ge .Len 0}} |
| // Marshal serializes the command parameters into binary form. |
| func (c *{{esc .Name}}) Marshal(b []byte) error { |
| return marshal(c, b) |
| } |
| {{end}} |
| {{if .Return}} |
| // {{esc .Name}}RP returns the return parameter of {{.Name}} |
| type {{esc .Name}}RP struct { |
| {{range .Return}}{{range $k, $v := .}}{{printf "\t%s\t%s\n" (esc $k) $v}}{{end}}{{end}} |
| } |
| // Unmarshal de-serializes the binary data and stores the result in the receiver. |
| func (c *{{esc .Name}}RP) Unmarshal(b []byte) error { |
| return unmarshal(c, b) |
| }{{end}} |