gorgonia.org/tensor@v0.9.24/array_getset.go (about)

     1  // Code generated by genlib2. DO NOT EDIT.
     2  
     3  package tensor
     4  
     5  import (
     6  	"reflect"
     7  	"unsafe"
     8  
     9  	"github.com/pkg/errors"
    10  	"gorgonia.org/tensor/internal/storage"
    11  )
    12  
    13  // Set sets the value of the underlying array at the index i.
    14  func (a *array) Set(i int, x interface{}) {
    15  	switch a.t.Kind() {
    16  	case reflect.Bool:
    17  		xv := x.(bool)
    18  		a.SetB(i, xv)
    19  	case reflect.Int:
    20  		xv := x.(int)
    21  		a.SetI(i, xv)
    22  	case reflect.Int8:
    23  		xv := x.(int8)
    24  		a.SetI8(i, xv)
    25  	case reflect.Int16:
    26  		xv := x.(int16)
    27  		a.SetI16(i, xv)
    28  	case reflect.Int32:
    29  		xv := x.(int32)
    30  		a.SetI32(i, xv)
    31  	case reflect.Int64:
    32  		xv := x.(int64)
    33  		a.SetI64(i, xv)
    34  	case reflect.Uint:
    35  		xv := x.(uint)
    36  		a.SetU(i, xv)
    37  	case reflect.Uint8:
    38  		xv := x.(uint8)
    39  		a.SetU8(i, xv)
    40  	case reflect.Uint16:
    41  		xv := x.(uint16)
    42  		a.SetU16(i, xv)
    43  	case reflect.Uint32:
    44  		xv := x.(uint32)
    45  		a.SetU32(i, xv)
    46  	case reflect.Uint64:
    47  		xv := x.(uint64)
    48  		a.SetU64(i, xv)
    49  	case reflect.Uintptr:
    50  		xv := x.(uintptr)
    51  		a.SetUintptr(i, xv)
    52  	case reflect.Float32:
    53  		xv := x.(float32)
    54  		a.SetF32(i, xv)
    55  	case reflect.Float64:
    56  		xv := x.(float64)
    57  		a.SetF64(i, xv)
    58  	case reflect.Complex64:
    59  		xv := x.(complex64)
    60  		a.SetC64(i, xv)
    61  	case reflect.Complex128:
    62  		xv := x.(complex128)
    63  		a.SetC128(i, xv)
    64  	case reflect.String:
    65  		xv := x.(string)
    66  		a.SetStr(i, xv)
    67  	case reflect.UnsafePointer:
    68  		xv := x.(unsafe.Pointer)
    69  		a.SetUnsafePointer(i, xv)
    70  	default:
    71  		xv := reflect.ValueOf(x)
    72  		val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size()))
    73  		val = reflect.Indirect(val)
    74  		val.Set(xv)
    75  	}
    76  }
    77  
    78  // Get returns the ith element of the underlying array of the *Dense tensor.
    79  func (a *array) Get(i int) interface{} {
    80  	switch a.t.Kind() {
    81  	case reflect.Bool:
    82  		return a.GetB(i)
    83  
    84  	case reflect.Int:
    85  		return a.GetI(i)
    86  
    87  	case reflect.Int8:
    88  		return a.GetI8(i)
    89  
    90  	case reflect.Int16:
    91  		return a.GetI16(i)
    92  
    93  	case reflect.Int32:
    94  		return a.GetI32(i)
    95  
    96  	case reflect.Int64:
    97  		return a.GetI64(i)
    98  
    99  	case reflect.Uint:
   100  		return a.GetU(i)
   101  
   102  	case reflect.Uint8:
   103  		return a.GetU8(i)
   104  
   105  	case reflect.Uint16:
   106  		return a.GetU16(i)
   107  
   108  	case reflect.Uint32:
   109  		return a.GetU32(i)
   110  
   111  	case reflect.Uint64:
   112  		return a.GetU64(i)
   113  
   114  	case reflect.Uintptr:
   115  		return a.GetUintptr(i)
   116  
   117  	case reflect.Float32:
   118  		return a.GetF32(i)
   119  
   120  	case reflect.Float64:
   121  		return a.GetF64(i)
   122  
   123  	case reflect.Complex64:
   124  		return a.GetC64(i)
   125  
   126  	case reflect.Complex128:
   127  		return a.GetC128(i)
   128  
   129  	case reflect.String:
   130  		return a.GetStr(i)
   131  
   132  	case reflect.UnsafePointer:
   133  		return a.GetUnsafePointer(i)
   134  
   135  	default:
   136  		val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size()))
   137  		val = reflect.Indirect(val)
   138  		return val.Interface()
   139  	}
   140  }
   141  
   142  // Memset sets all values in the array.
   143  func (a *array) Memset(x interface{}) error {
   144  	switch a.t {
   145  	case Bool:
   146  		if xv, ok := x.(bool); ok {
   147  			data := a.Bools()
   148  			for i := range data {
   149  				data[i] = xv
   150  			}
   151  			return nil
   152  		}
   153  
   154  	case Int:
   155  		if xv, ok := x.(int); ok {
   156  			data := a.Ints()
   157  			for i := range data {
   158  				data[i] = xv
   159  			}
   160  			return nil
   161  		}
   162  
   163  	case Int8:
   164  		if xv, ok := x.(int8); ok {
   165  			data := a.Int8s()
   166  			for i := range data {
   167  				data[i] = xv
   168  			}
   169  			return nil
   170  		}
   171  
   172  	case Int16:
   173  		if xv, ok := x.(int16); ok {
   174  			data := a.Int16s()
   175  			for i := range data {
   176  				data[i] = xv
   177  			}
   178  			return nil
   179  		}
   180  
   181  	case Int32:
   182  		if xv, ok := x.(int32); ok {
   183  			data := a.Int32s()
   184  			for i := range data {
   185  				data[i] = xv
   186  			}
   187  			return nil
   188  		}
   189  
   190  	case Int64:
   191  		if xv, ok := x.(int64); ok {
   192  			data := a.Int64s()
   193  			for i := range data {
   194  				data[i] = xv
   195  			}
   196  			return nil
   197  		}
   198  
   199  	case Uint:
   200  		if xv, ok := x.(uint); ok {
   201  			data := a.Uints()
   202  			for i := range data {
   203  				data[i] = xv
   204  			}
   205  			return nil
   206  		}
   207  
   208  	case Uint8:
   209  		if xv, ok := x.(uint8); ok {
   210  			data := a.Uint8s()
   211  			for i := range data {
   212  				data[i] = xv
   213  			}
   214  			return nil
   215  		}
   216  
   217  	case Uint16:
   218  		if xv, ok := x.(uint16); ok {
   219  			data := a.Uint16s()
   220  			for i := range data {
   221  				data[i] = xv
   222  			}
   223  			return nil
   224  		}
   225  
   226  	case Uint32:
   227  		if xv, ok := x.(uint32); ok {
   228  			data := a.Uint32s()
   229  			for i := range data {
   230  				data[i] = xv
   231  			}
   232  			return nil
   233  		}
   234  
   235  	case Uint64:
   236  		if xv, ok := x.(uint64); ok {
   237  			data := a.Uint64s()
   238  			for i := range data {
   239  				data[i] = xv
   240  			}
   241  			return nil
   242  		}
   243  
   244  	case Uintptr:
   245  		if xv, ok := x.(uintptr); ok {
   246  			data := a.Uintptrs()
   247  			for i := range data {
   248  				data[i] = xv
   249  			}
   250  			return nil
   251  		}
   252  
   253  	case Float32:
   254  		if xv, ok := x.(float32); ok {
   255  			data := a.Float32s()
   256  			for i := range data {
   257  				data[i] = xv
   258  			}
   259  			return nil
   260  		}
   261  
   262  	case Float64:
   263  		if xv, ok := x.(float64); ok {
   264  			data := a.Float64s()
   265  			for i := range data {
   266  				data[i] = xv
   267  			}
   268  			return nil
   269  		}
   270  
   271  	case Complex64:
   272  		if xv, ok := x.(complex64); ok {
   273  			data := a.Complex64s()
   274  			for i := range data {
   275  				data[i] = xv
   276  			}
   277  			return nil
   278  		}
   279  
   280  	case Complex128:
   281  		if xv, ok := x.(complex128); ok {
   282  			data := a.Complex128s()
   283  			for i := range data {
   284  				data[i] = xv
   285  			}
   286  			return nil
   287  		}
   288  
   289  	case String:
   290  		if xv, ok := x.(string); ok {
   291  			data := a.Strings()
   292  			for i := range data {
   293  				data[i] = xv
   294  			}
   295  			return nil
   296  		}
   297  
   298  	case UnsafePointer:
   299  		if xv, ok := x.(unsafe.Pointer); ok {
   300  			data := a.UnsafePointers()
   301  			for i := range data {
   302  				data[i] = xv
   303  			}
   304  			return nil
   305  		}
   306  
   307  	}
   308  
   309  	xv := reflect.ValueOf(x)
   310  	l := a.Len()
   311  	for i := 0; i < l; i++ {
   312  		val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size()))
   313  		val = reflect.Indirect(val)
   314  		val.Set(xv)
   315  	}
   316  	return nil
   317  }
   318  
   319  func (a *array) memsetIter(x interface{}, it Iterator) (err error) {
   320  	var i int
   321  	switch a.t {
   322  	case Bool:
   323  		xv, ok := x.(bool)
   324  		if !ok {
   325  			return errors.Errorf(dtypeMismatch, a.t, x)
   326  		}
   327  		data := a.Bools()
   328  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   329  			data[i] = xv
   330  		}
   331  		err = handleNoOp(err)
   332  	case Int:
   333  		xv, ok := x.(int)
   334  		if !ok {
   335  			return errors.Errorf(dtypeMismatch, a.t, x)
   336  		}
   337  		data := a.Ints()
   338  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   339  			data[i] = xv
   340  		}
   341  		err = handleNoOp(err)
   342  	case Int8:
   343  		xv, ok := x.(int8)
   344  		if !ok {
   345  			return errors.Errorf(dtypeMismatch, a.t, x)
   346  		}
   347  		data := a.Int8s()
   348  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   349  			data[i] = xv
   350  		}
   351  		err = handleNoOp(err)
   352  	case Int16:
   353  		xv, ok := x.(int16)
   354  		if !ok {
   355  			return errors.Errorf(dtypeMismatch, a.t, x)
   356  		}
   357  		data := a.Int16s()
   358  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   359  			data[i] = xv
   360  		}
   361  		err = handleNoOp(err)
   362  	case Int32:
   363  		xv, ok := x.(int32)
   364  		if !ok {
   365  			return errors.Errorf(dtypeMismatch, a.t, x)
   366  		}
   367  		data := a.Int32s()
   368  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   369  			data[i] = xv
   370  		}
   371  		err = handleNoOp(err)
   372  	case Int64:
   373  		xv, ok := x.(int64)
   374  		if !ok {
   375  			return errors.Errorf(dtypeMismatch, a.t, x)
   376  		}
   377  		data := a.Int64s()
   378  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   379  			data[i] = xv
   380  		}
   381  		err = handleNoOp(err)
   382  	case Uint:
   383  		xv, ok := x.(uint)
   384  		if !ok {
   385  			return errors.Errorf(dtypeMismatch, a.t, x)
   386  		}
   387  		data := a.Uints()
   388  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   389  			data[i] = xv
   390  		}
   391  		err = handleNoOp(err)
   392  	case Uint8:
   393  		xv, ok := x.(uint8)
   394  		if !ok {
   395  			return errors.Errorf(dtypeMismatch, a.t, x)
   396  		}
   397  		data := a.Uint8s()
   398  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   399  			data[i] = xv
   400  		}
   401  		err = handleNoOp(err)
   402  	case Uint16:
   403  		xv, ok := x.(uint16)
   404  		if !ok {
   405  			return errors.Errorf(dtypeMismatch, a.t, x)
   406  		}
   407  		data := a.Uint16s()
   408  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   409  			data[i] = xv
   410  		}
   411  		err = handleNoOp(err)
   412  	case Uint32:
   413  		xv, ok := x.(uint32)
   414  		if !ok {
   415  			return errors.Errorf(dtypeMismatch, a.t, x)
   416  		}
   417  		data := a.Uint32s()
   418  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   419  			data[i] = xv
   420  		}
   421  		err = handleNoOp(err)
   422  	case Uint64:
   423  		xv, ok := x.(uint64)
   424  		if !ok {
   425  			return errors.Errorf(dtypeMismatch, a.t, x)
   426  		}
   427  		data := a.Uint64s()
   428  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   429  			data[i] = xv
   430  		}
   431  		err = handleNoOp(err)
   432  	case Uintptr:
   433  		xv, ok := x.(uintptr)
   434  		if !ok {
   435  			return errors.Errorf(dtypeMismatch, a.t, x)
   436  		}
   437  		data := a.Uintptrs()
   438  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   439  			data[i] = xv
   440  		}
   441  		err = handleNoOp(err)
   442  	case Float32:
   443  		xv, ok := x.(float32)
   444  		if !ok {
   445  			return errors.Errorf(dtypeMismatch, a.t, x)
   446  		}
   447  		data := a.Float32s()
   448  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   449  			data[i] = xv
   450  		}
   451  		err = handleNoOp(err)
   452  	case Float64:
   453  		xv, ok := x.(float64)
   454  		if !ok {
   455  			return errors.Errorf(dtypeMismatch, a.t, x)
   456  		}
   457  		data := a.Float64s()
   458  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   459  			data[i] = xv
   460  		}
   461  		err = handleNoOp(err)
   462  	case Complex64:
   463  		xv, ok := x.(complex64)
   464  		if !ok {
   465  			return errors.Errorf(dtypeMismatch, a.t, x)
   466  		}
   467  		data := a.Complex64s()
   468  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   469  			data[i] = xv
   470  		}
   471  		err = handleNoOp(err)
   472  	case Complex128:
   473  		xv, ok := x.(complex128)
   474  		if !ok {
   475  			return errors.Errorf(dtypeMismatch, a.t, x)
   476  		}
   477  		data := a.Complex128s()
   478  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   479  			data[i] = xv
   480  		}
   481  		err = handleNoOp(err)
   482  	case String:
   483  		xv, ok := x.(string)
   484  		if !ok {
   485  			return errors.Errorf(dtypeMismatch, a.t, x)
   486  		}
   487  		data := a.Strings()
   488  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   489  			data[i] = xv
   490  		}
   491  		err = handleNoOp(err)
   492  	case UnsafePointer:
   493  		xv, ok := x.(unsafe.Pointer)
   494  		if !ok {
   495  			return errors.Errorf(dtypeMismatch, a.t, x)
   496  		}
   497  		data := a.UnsafePointers()
   498  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   499  			data[i] = xv
   500  		}
   501  		err = handleNoOp(err)
   502  	default:
   503  		xv := reflect.ValueOf(x)
   504  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   505  			val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size()))
   506  			val = reflect.Indirect(val)
   507  			val.Set(xv)
   508  		}
   509  		err = handleNoOp(err)
   510  	}
   511  	return
   512  }
   513  
   514  // Eq checks that any two arrays are equal
   515  func (a array) Eq(other interface{}) bool {
   516  	if oa, ok := other.(*array); ok {
   517  		if oa.t != a.t {
   518  			return false
   519  		}
   520  
   521  		if oa.Len() != a.Len() {
   522  			return false
   523  		}
   524  		/*
   525  			if oa.C != a.C {
   526  				return false
   527  			}
   528  		*/
   529  
   530  		// same exact thing
   531  		if uintptr(unsafe.Pointer(&oa.Header.Raw[0])) == uintptr(unsafe.Pointer(&a.Header.Raw[0])) {
   532  			return true
   533  		}
   534  
   535  		switch a.t.Kind() {
   536  		case reflect.Bool:
   537  			for i, v := range a.Bools() {
   538  				if oa.GetB(i) != v {
   539  					return false
   540  				}
   541  			}
   542  		case reflect.Int:
   543  			for i, v := range a.Ints() {
   544  				if oa.GetI(i) != v {
   545  					return false
   546  				}
   547  			}
   548  		case reflect.Int8:
   549  			for i, v := range a.Int8s() {
   550  				if oa.GetI8(i) != v {
   551  					return false
   552  				}
   553  			}
   554  		case reflect.Int16:
   555  			for i, v := range a.Int16s() {
   556  				if oa.GetI16(i) != v {
   557  					return false
   558  				}
   559  			}
   560  		case reflect.Int32:
   561  			for i, v := range a.Int32s() {
   562  				if oa.GetI32(i) != v {
   563  					return false
   564  				}
   565  			}
   566  		case reflect.Int64:
   567  			for i, v := range a.Int64s() {
   568  				if oa.GetI64(i) != v {
   569  					return false
   570  				}
   571  			}
   572  		case reflect.Uint:
   573  			for i, v := range a.Uints() {
   574  				if oa.GetU(i) != v {
   575  					return false
   576  				}
   577  			}
   578  		case reflect.Uint8:
   579  			for i, v := range a.Uint8s() {
   580  				if oa.GetU8(i) != v {
   581  					return false
   582  				}
   583  			}
   584  		case reflect.Uint16:
   585  			for i, v := range a.Uint16s() {
   586  				if oa.GetU16(i) != v {
   587  					return false
   588  				}
   589  			}
   590  		case reflect.Uint32:
   591  			for i, v := range a.Uint32s() {
   592  				if oa.GetU32(i) != v {
   593  					return false
   594  				}
   595  			}
   596  		case reflect.Uint64:
   597  			for i, v := range a.Uint64s() {
   598  				if oa.GetU64(i) != v {
   599  					return false
   600  				}
   601  			}
   602  		case reflect.Uintptr:
   603  			for i, v := range a.Uintptrs() {
   604  				if oa.GetUintptr(i) != v {
   605  					return false
   606  				}
   607  			}
   608  		case reflect.Float32:
   609  			for i, v := range a.Float32s() {
   610  				if oa.GetF32(i) != v {
   611  					return false
   612  				}
   613  			}
   614  		case reflect.Float64:
   615  			for i, v := range a.Float64s() {
   616  				if oa.GetF64(i) != v {
   617  					return false
   618  				}
   619  			}
   620  		case reflect.Complex64:
   621  			for i, v := range a.Complex64s() {
   622  				if oa.GetC64(i) != v {
   623  					return false
   624  				}
   625  			}
   626  		case reflect.Complex128:
   627  			for i, v := range a.Complex128s() {
   628  				if oa.GetC128(i) != v {
   629  					return false
   630  				}
   631  			}
   632  		case reflect.String:
   633  			for i, v := range a.Strings() {
   634  				if oa.GetStr(i) != v {
   635  					return false
   636  				}
   637  			}
   638  		case reflect.UnsafePointer:
   639  			for i, v := range a.UnsafePointers() {
   640  				if oa.GetUnsafePointer(i) != v {
   641  					return false
   642  				}
   643  			}
   644  		default:
   645  			for i := 0; i < a.Len(); i++ {
   646  				if !reflect.DeepEqual(a.Get(i), oa.Get(i)) {
   647  					return false
   648  				}
   649  			}
   650  		}
   651  		return true
   652  	}
   653  	return false
   654  }
   655  
   656  func (a *array) zeroIter(it Iterator) (err error) {
   657  	var i int
   658  	switch a.t {
   659  	case Bool:
   660  		data := a.Bools()
   661  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   662  			data[i] = false
   663  		}
   664  		err = handleNoOp(err)
   665  	case Int:
   666  		data := a.Ints()
   667  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   668  			data[i] = 0
   669  		}
   670  		err = handleNoOp(err)
   671  	case Int8:
   672  		data := a.Int8s()
   673  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   674  			data[i] = 0
   675  		}
   676  		err = handleNoOp(err)
   677  	case Int16:
   678  		data := a.Int16s()
   679  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   680  			data[i] = 0
   681  		}
   682  		err = handleNoOp(err)
   683  	case Int32:
   684  		data := a.Int32s()
   685  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   686  			data[i] = 0
   687  		}
   688  		err = handleNoOp(err)
   689  	case Int64:
   690  		data := a.Int64s()
   691  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   692  			data[i] = 0
   693  		}
   694  		err = handleNoOp(err)
   695  	case Uint:
   696  		data := a.Uints()
   697  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   698  			data[i] = 0
   699  		}
   700  		err = handleNoOp(err)
   701  	case Uint8:
   702  		data := a.Uint8s()
   703  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   704  			data[i] = 0
   705  		}
   706  		err = handleNoOp(err)
   707  	case Uint16:
   708  		data := a.Uint16s()
   709  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   710  			data[i] = 0
   711  		}
   712  		err = handleNoOp(err)
   713  	case Uint32:
   714  		data := a.Uint32s()
   715  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   716  			data[i] = 0
   717  		}
   718  		err = handleNoOp(err)
   719  	case Uint64:
   720  		data := a.Uint64s()
   721  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   722  			data[i] = 0
   723  		}
   724  		err = handleNoOp(err)
   725  	case Uintptr:
   726  		data := a.Uintptrs()
   727  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   728  			data[i] = 0
   729  		}
   730  		err = handleNoOp(err)
   731  	case Float32:
   732  		data := a.Float32s()
   733  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   734  			data[i] = 0
   735  		}
   736  		err = handleNoOp(err)
   737  	case Float64:
   738  		data := a.Float64s()
   739  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   740  			data[i] = 0
   741  		}
   742  		err = handleNoOp(err)
   743  	case Complex64:
   744  		data := a.Complex64s()
   745  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   746  			data[i] = 0
   747  		}
   748  		err = handleNoOp(err)
   749  	case Complex128:
   750  		data := a.Complex128s()
   751  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   752  			data[i] = 0
   753  		}
   754  		err = handleNoOp(err)
   755  	case String:
   756  		data := a.Strings()
   757  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   758  			data[i] = ""
   759  		}
   760  		err = handleNoOp(err)
   761  	case UnsafePointer:
   762  		data := a.UnsafePointers()
   763  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   764  			data[i] = nil
   765  		}
   766  		err = handleNoOp(err)
   767  	default:
   768  		for i, err = it.Next(); err == nil; i, err = it.Next() {
   769  			val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size()))
   770  			val = reflect.Indirect(val)
   771  			val.Set(reflect.Zero(a.t))
   772  		}
   773  		err = handleNoOp(err)
   774  	}
   775  	return
   776  }