示例#1
0
rl_entry_t* rl_find_entry( void* data, const char* name )
{
  rl_header_t* header = (rl_header_t*)data;
  
  if ( !( header->runtime_flags & RL_ENDIAN_CONVERTED ) )
  {
    if ( isle() )
    {
      header->num_entries = be32( header->num_entries );
      
      for ( uint32_t i = 0; i < header->num_entries; i++ )
      {
        header->entries[ i ].name_hash     = be32( header->entries[ i ].name_hash );
        header->entries[ i ].name_offset   = be32( header->entries[ i ].name_offset );
        header->entries[ i ].data_offset   = be32( header->entries[ i ].data_offset );
        header->entries[ i ].data_size     = be32( header->entries[ i ].data_size );
        header->entries[ i ].runtime_flags = 0;
      }
    }
    
    header->runtime_flags = RL_ENDIAN_CONVERTED;
  }
  
  uint32_t name_hash = djb2( name );
  
  for ( uint32_t i = 0; i < header->num_entries - 1; i++ )
  {
    uint32_t ndx = ( name_hash + i ) % header->num_entries;
    rl_entry_t* entry = header->entries + ndx;
    
    if ( entry->name_hash == name_hash )
    {
      const char* entry_name = (char*)data + entry->name_offset;
      
      if ( !strcmp( name, entry_name ) )
      {
        return entry;
      }
    }
  }
  
  return NULL;
}
示例#2
0
int isro(unsigned long int n)
{
	int step,i=0,k=0;
	/* Conver to String */
	len=0;
	do{
		if(n%10==0)return 0;
		for(i=0;i<len;i++)
			if(n%10==m[i])return 0;
		s[len] = 0;
		m[len++]=n%10;
	}while(n/=10);

	k = len*10-1;
	for(i=0;i<len;i++)
	{
		step=m[k%len];
		s[k%len]++;
		k-=step;
		if(k%len==len-1&&isle())return 1;
	}
	return 0;
}
示例#3
0
文件: sqrt.hpp 项目: francescog/nt2
namespace nt2 { namespace ext
{
  template<class Dummy>
  struct call<tag::sqrt_(tag::simd_<tag::uint8_, tag::xop_)),
              tag::cpu_, Dummy> : callable
  {
    template<class Sig> struct result;
    template<class This,class A0>
    struct result<This(A0)>  : meta::strip<A0>{};//

    NT2_FUNCTOR_CALL(1)
    {
      A0 const na  = isnez(a0);
      A0 n   = add(shri(a0, 4), Four<A0>());
      A0 n1  = shri(n+a0/n, 1);
      A0 msk = b_and(isle(n1,n), na);

      n   = select(msk,n1,n);
      n1  = sqr(n);
      msk = b_or(isgt(n1,a0), b_and(iseqz(n1), na));
      n   = seladd( msk, n, Mone<A0>());

      return seladd(na, Zero<A0>(), n);
    }
  };
} }

/////////////////////////////////////////////////////////////////////////////
// Implementation when type A0 is arithmetic_
/////////////////////////////////////////////////////////////////////////////
NT2_REGISTER_DISPATCH(tag::sqrt_, tag::cpu_,