go-hep.org/x/hep@v0.38.1/groot/rtree/rfunc/rfunc_f64_gen.go (about)

     1  // Copyright ©2020 The go-hep Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Automatically generated. DO NOT EDIT.
     6  
     7  package rfunc
     8  
     9  import (
    10  	"fmt"
    11  )
    12  
    13  // FuncI32ToF64 implements rfunc.Formula
    14  type FuncI32ToF64 struct {
    15  	rvars []string
    16  	arg0  *int32
    17  	fct   func(arg00 int32) float64
    18  }
    19  
    20  // NewFuncI32ToF64 return a new formula, from the provided function.
    21  func NewFuncI32ToF64(rvars []string, fct func(arg00 int32) float64) *FuncI32ToF64 {
    22  	return &FuncI32ToF64{
    23  		rvars: rvars,
    24  		fct:   fct,
    25  	}
    26  }
    27  
    28  // RVars implements rfunc.Formula
    29  func (f *FuncI32ToF64) RVars() []string { return f.rvars }
    30  
    31  // Bind implements rfunc.Formula
    32  func (f *FuncI32ToF64) Bind(args []any) error {
    33  	if got, want := len(args), 1; got != want {
    34  		return fmt.Errorf(
    35  			"rfunc: invalid number of bind arguments (got=%d, want=%d)",
    36  			got, want,
    37  		)
    38  	}
    39  	{
    40  		ptr, ok := args[0].(*int32)
    41  		if !ok {
    42  			return fmt.Errorf(
    43  				"rfunc: argument type 0 (name=%s) mismatch: got=%T, want=*int32",
    44  				f.rvars[0], args[0],
    45  			)
    46  		}
    47  		f.arg0 = ptr
    48  	}
    49  	return nil
    50  }
    51  
    52  // Func implements rfunc.Formula
    53  func (f *FuncI32ToF64) Func() any {
    54  	return func() float64 {
    55  		return f.fct(
    56  			*f.arg0,
    57  		)
    58  	}
    59  }
    60  
    61  var (
    62  	_ Formula = (*FuncI32ToF64)(nil)
    63  )
    64  
    65  // FuncF32ToF64 implements rfunc.Formula
    66  type FuncF32ToF64 struct {
    67  	rvars []string
    68  	arg0  *float32
    69  	fct   func(arg00 float32) float64
    70  }
    71  
    72  // NewFuncF32ToF64 return a new formula, from the provided function.
    73  func NewFuncF32ToF64(rvars []string, fct func(arg00 float32) float64) *FuncF32ToF64 {
    74  	return &FuncF32ToF64{
    75  		rvars: rvars,
    76  		fct:   fct,
    77  	}
    78  }
    79  
    80  // RVars implements rfunc.Formula
    81  func (f *FuncF32ToF64) RVars() []string { return f.rvars }
    82  
    83  // Bind implements rfunc.Formula
    84  func (f *FuncF32ToF64) Bind(args []any) error {
    85  	if got, want := len(args), 1; got != want {
    86  		return fmt.Errorf(
    87  			"rfunc: invalid number of bind arguments (got=%d, want=%d)",
    88  			got, want,
    89  		)
    90  	}
    91  	{
    92  		ptr, ok := args[0].(*float32)
    93  		if !ok {
    94  			return fmt.Errorf(
    95  				"rfunc: argument type 0 (name=%s) mismatch: got=%T, want=*float32",
    96  				f.rvars[0], args[0],
    97  			)
    98  		}
    99  		f.arg0 = ptr
   100  	}
   101  	return nil
   102  }
   103  
   104  // Func implements rfunc.Formula
   105  func (f *FuncF32ToF64) Func() any {
   106  	return func() float64 {
   107  		return f.fct(
   108  			*f.arg0,
   109  		)
   110  	}
   111  }
   112  
   113  var (
   114  	_ Formula = (*FuncF32ToF64)(nil)
   115  )
   116  
   117  // FuncToF64 implements rfunc.Formula
   118  type FuncToF64 struct {
   119  	fct func() float64
   120  }
   121  
   122  // NewFuncToF64 return a new formula, from the provided function.
   123  func NewFuncToF64(rvars []string, fct func() float64) *FuncToF64 {
   124  	return &FuncToF64{
   125  		fct: fct,
   126  	}
   127  }
   128  
   129  // RVars implements rfunc.Formula
   130  func (f *FuncToF64) RVars() []string { return nil }
   131  
   132  // Bind implements rfunc.Formula
   133  func (f *FuncToF64) Bind(args []any) error {
   134  	if got, want := len(args), 0; got != want {
   135  		return fmt.Errorf(
   136  			"rfunc: invalid number of bind arguments (got=%d, want=%d)",
   137  			got, want,
   138  		)
   139  	}
   140  	return nil
   141  }
   142  
   143  // Func implements rfunc.Formula
   144  func (f *FuncToF64) Func() any {
   145  	return func() float64 {
   146  		return f.fct()
   147  	}
   148  }
   149  
   150  var (
   151  	_ Formula = (*FuncToF64)(nil)
   152  )
   153  
   154  // FuncF64ToF64 implements rfunc.Formula
   155  type FuncF64ToF64 struct {
   156  	rvars []string
   157  	arg0  *float64
   158  	fct   func(arg00 float64) float64
   159  }
   160  
   161  // NewFuncF64ToF64 return a new formula, from the provided function.
   162  func NewFuncF64ToF64(rvars []string, fct func(arg00 float64) float64) *FuncF64ToF64 {
   163  	return &FuncF64ToF64{
   164  		rvars: rvars,
   165  		fct:   fct,
   166  	}
   167  }
   168  
   169  // RVars implements rfunc.Formula
   170  func (f *FuncF64ToF64) RVars() []string { return f.rvars }
   171  
   172  // Bind implements rfunc.Formula
   173  func (f *FuncF64ToF64) Bind(args []any) error {
   174  	if got, want := len(args), 1; got != want {
   175  		return fmt.Errorf(
   176  			"rfunc: invalid number of bind arguments (got=%d, want=%d)",
   177  			got, want,
   178  		)
   179  	}
   180  	{
   181  		ptr, ok := args[0].(*float64)
   182  		if !ok {
   183  			return fmt.Errorf(
   184  				"rfunc: argument type 0 (name=%s) mismatch: got=%T, want=*float64",
   185  				f.rvars[0], args[0],
   186  			)
   187  		}
   188  		f.arg0 = ptr
   189  	}
   190  	return nil
   191  }
   192  
   193  // Func implements rfunc.Formula
   194  func (f *FuncF64ToF64) Func() any {
   195  	return func() float64 {
   196  		return f.fct(
   197  			*f.arg0,
   198  		)
   199  	}
   200  }
   201  
   202  var (
   203  	_ Formula = (*FuncF64ToF64)(nil)
   204  )
   205  
   206  // FuncF64F64ToF64 implements rfunc.Formula
   207  type FuncF64F64ToF64 struct {
   208  	rvars []string
   209  	arg0  *float64
   210  	arg1  *float64
   211  	fct   func(arg00 float64, arg01 float64) float64
   212  }
   213  
   214  // NewFuncF64F64ToF64 return a new formula, from the provided function.
   215  func NewFuncF64F64ToF64(rvars []string, fct func(arg00 float64, arg01 float64) float64) *FuncF64F64ToF64 {
   216  	return &FuncF64F64ToF64{
   217  		rvars: rvars,
   218  		fct:   fct,
   219  	}
   220  }
   221  
   222  // RVars implements rfunc.Formula
   223  func (f *FuncF64F64ToF64) RVars() []string { return f.rvars }
   224  
   225  // Bind implements rfunc.Formula
   226  func (f *FuncF64F64ToF64) Bind(args []any) error {
   227  	if got, want := len(args), 2; got != want {
   228  		return fmt.Errorf(
   229  			"rfunc: invalid number of bind arguments (got=%d, want=%d)",
   230  			got, want,
   231  		)
   232  	}
   233  	{
   234  		ptr, ok := args[0].(*float64)
   235  		if !ok {
   236  			return fmt.Errorf(
   237  				"rfunc: argument type 0 (name=%s) mismatch: got=%T, want=*float64",
   238  				f.rvars[0], args[0],
   239  			)
   240  		}
   241  		f.arg0 = ptr
   242  	}
   243  	{
   244  		ptr, ok := args[1].(*float64)
   245  		if !ok {
   246  			return fmt.Errorf(
   247  				"rfunc: argument type 1 (name=%s) mismatch: got=%T, want=*float64",
   248  				f.rvars[1], args[1],
   249  			)
   250  		}
   251  		f.arg1 = ptr
   252  	}
   253  	return nil
   254  }
   255  
   256  // Func implements rfunc.Formula
   257  func (f *FuncF64F64ToF64) Func() any {
   258  	return func() float64 {
   259  		return f.fct(
   260  			*f.arg0,
   261  			*f.arg1,
   262  		)
   263  	}
   264  }
   265  
   266  var (
   267  	_ Formula = (*FuncF64F64ToF64)(nil)
   268  )
   269  
   270  // FuncF64F64F64ToF64 implements rfunc.Formula
   271  type FuncF64F64F64ToF64 struct {
   272  	rvars []string
   273  	arg0  *float64
   274  	arg1  *float64
   275  	arg2  *float64
   276  	fct   func(arg00 float64, arg01 float64, arg02 float64) float64
   277  }
   278  
   279  // NewFuncF64F64F64ToF64 return a new formula, from the provided function.
   280  func NewFuncF64F64F64ToF64(rvars []string, fct func(arg00 float64, arg01 float64, arg02 float64) float64) *FuncF64F64F64ToF64 {
   281  	return &FuncF64F64F64ToF64{
   282  		rvars: rvars,
   283  		fct:   fct,
   284  	}
   285  }
   286  
   287  // RVars implements rfunc.Formula
   288  func (f *FuncF64F64F64ToF64) RVars() []string { return f.rvars }
   289  
   290  // Bind implements rfunc.Formula
   291  func (f *FuncF64F64F64ToF64) Bind(args []any) error {
   292  	if got, want := len(args), 3; got != want {
   293  		return fmt.Errorf(
   294  			"rfunc: invalid number of bind arguments (got=%d, want=%d)",
   295  			got, want,
   296  		)
   297  	}
   298  	{
   299  		ptr, ok := args[0].(*float64)
   300  		if !ok {
   301  			return fmt.Errorf(
   302  				"rfunc: argument type 0 (name=%s) mismatch: got=%T, want=*float64",
   303  				f.rvars[0], args[0],
   304  			)
   305  		}
   306  		f.arg0 = ptr
   307  	}
   308  	{
   309  		ptr, ok := args[1].(*float64)
   310  		if !ok {
   311  			return fmt.Errorf(
   312  				"rfunc: argument type 1 (name=%s) mismatch: got=%T, want=*float64",
   313  				f.rvars[1], args[1],
   314  			)
   315  		}
   316  		f.arg1 = ptr
   317  	}
   318  	{
   319  		ptr, ok := args[2].(*float64)
   320  		if !ok {
   321  			return fmt.Errorf(
   322  				"rfunc: argument type 2 (name=%s) mismatch: got=%T, want=*float64",
   323  				f.rvars[2], args[2],
   324  			)
   325  		}
   326  		f.arg2 = ptr
   327  	}
   328  	return nil
   329  }
   330  
   331  // Func implements rfunc.Formula
   332  func (f *FuncF64F64F64ToF64) Func() any {
   333  	return func() float64 {
   334  		return f.fct(
   335  			*f.arg0,
   336  			*f.arg1,
   337  			*f.arg2,
   338  		)
   339  	}
   340  }
   341  
   342  var (
   343  	_ Formula = (*FuncF64F64F64ToF64)(nil)
   344  )