Skip to content
Snippets Groups Projects
Select Git revision
  • chacha96
  • master default
  • support_pre_UAL_arm_asm
  • skein
  • rsa-crt-hardening
  • fat-library
  • versioned-symbols
  • curve25519
  • dsa-reorg
  • aead-api
  • set_key-changes
  • poly1305
  • aes-reorg
  • nettle-2.7-fixes
  • size_t-changes
  • ecc-support
  • experimental-20050201
  • lsh-1.4.2
  • nettle_3.3_release_20161001
  • nettle_3.2_release_20160128
  • nettle_3.1.1_release_20150424
  • nettle_3.1_release_20150407
  • nettle_3.1rc3
  • nettle_3.1rc2
  • nettle_3.1rc1
  • nettle_3.0_release_20140607
  • nettle_2.7.1_release_20130528
  • nettle_2.7_release_20130424
  • nettle_2.6_release_20130116
  • nettle_2.5_release_20120707
  • converted-master-branch-to-git
  • nettle_2.4_release_20110903
  • nettle_2.3_release_20110902
  • nettle_2.2_release_20110711
  • nettle_2.1_release_20100725
  • camellia_32bit_20100720
  • nettle_2.0_release_20090608
  • nettle_1.15_release_20061128
38 results

ecc-pm1-redc.c

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    Array.pmod 2.70 KiB
    #define error(X) throw( ({ (X), backtrace()[0..sizeof(backtrace())-2] }) )
    
    mixed map(mixed arr, mixed fun, mixed ... args)
    {
      int e;
      mixed *ret;
    
      if(mappingp(arr))
        return mkmapping(indices(arr),map(values(arr),fun,@args));
    
      switch(sprintf("%t",fun))
      {
      case "int":
        return arr(@args);
    
      case "string":
        return column(arr, fun)(@args);
    
      case "function":
      case "program":
      case "object":
        ret=allocate(sizeof(arr));
        for(e=0;e<sizeof(arr);e++)
          ret[e]=fun(arr[e],@args);
        return ret;
    
      default:
        error("Bad argument 2 to map_array().\n");
      }
    }
    
    mixed filter(mixed arr, mixed fun, mixed ... args)
    {
      int e;
      mixed *ret;
    
      if(mappingp(arr))
      {
        mixed *i, *v, r;
        i=indices(arr);
        ret=map(v=values(arr),fun,@args);
        r=([]);
        for(e=0;e<sizeof(ret);e++) if(ret[e]) r[i[e]]=v[e];
    
        return ret;
      }else{
        int d;
        ret=map(arr,fun,@args);
        for(e=0;e<sizeof(arr);e++) if(ret[e]) ret[d++]=arr[e];
        
        return ret[..d-1];
      }
    }
    
    
    int search_array(mixed *arr, mixed fun, mixed ... args)
    {
      int e;
    
      if(stringp(fun))
      {
        for(e=0;e<sizeof(arr);e++)
          if(arr[e][fun](@args))
    	return e;
        return -1;
      }
      else if(functionp(fun))
      {
        for(e=0;e<sizeof(arr);e++)
          if(fun(arr[e],@args))