pike.git / src / post_modules / Nettle / hash.H

version» Context lines:

pike.git/src/post_modules/Nettle/hash.H:1:   /* -*- C -*-    *    * Cmod header-file acting as a template for the hash classes.    */    - DOCSTART() @class cmod_CONCAT_EVAL(PIKE_NAME, _Info) + DOCSTART() @class PIKE_NAME    *! -  *! Internal mixin class, intended to be multiply inherited -  *! together with HashInfo. +  *! Implementation of the PIKE_NAME hash algorithm. +  *!   DOCEND() - PIKECLASS cmod_CONCAT_EVAL(PIKE_NAME, _Info) + PIKECLASS PIKE_NAME   { -  +  DOCSTART() @decl inherit Hash +  DOCEND() +  INHERIT Hash; +     INIT    { -  struct HashInfo_struct *HashInfo -  = (struct HashInfo_struct *) get_storage(Pike_fp->current_object, -  HashInfo_program); +  struct Hash_struct *hash; +  ASSIGN_CURRENT_STORAGE(hash, struct Hash_struct, 1, Hash_program);    -  werror(cmod_STRFY_EVAL(PIKE_NAME) "_Info->INIT\n"); +  werror(cmod_STRFY_EVAL(PIKE_NAME) "->INIT\n");    -  if (HashInfo && !HashInfo->meta) -  HashInfo->meta = &cmod_CONCAT_EVAL(nettle_, NETTLE_NAME); -  else { -  /* Can't call Pike_error here. -  * Pike_error("Can't initialize this object.\n"); */ -  werror(cmod_STRFY_EVAL(PIKE_NAME) "_Info->INIT failed\n"); +  hash->meta = &cmod_CONCAT_EVAL(nettle_, NETTLE_NAME);    } -  } - } +     - DOCSTART() @endclass cmod_CONCAT_EVAL(PIKE_NAME, _Info) - DOCEND() -  - DOCSTART() @class cmod_CONCAT_EVAL(PIKE_NAME, _State) +  DOCSTART() @class State    *!    *! State for PIKE_NAME hashing. -  +  *!    DOCEND() - PIKECLASS cmod_CONCAT_EVAL(PIKE_NAME, _State) +  PIKECLASS State +  program_flags PROGRAM_NEEDS_PARENT|PROGRAM_USES_PARENT;    { -  INHERIT cmod_CONCAT_EVAL(PIKE_NAME, _Info); -  INHERIT HashState; +  DOCSTART() @decl inherit Hash::State +  DOCEND() +  +  EXTRA +  { +  /* Perform an inherit of the Hash.State class that our parent +  * contains via its inherit of Hash. +  */ +  struct program *parent_prog = Pike_compiler->previous->new_program; +  struct object *parent_obj = Pike_compiler->previous->fake_object; +  int parent_State_fun_num = +  really_low_find_shared_string_identifier(MK_STRING("State"), +  parent_prog, +  SEE_PROTECTED|SEE_PRIVATE); +  if (parent_State_fun_num >= 0) { +  struct program *parent_State_prog = +  low_program_from_function(parent_obj, parent_State_fun_num); +  if (parent_State_prog) { +  low_inherit(parent_State_prog, 0, +  parent_State_fun_num + +  parent_prog->inherits[1].identifier_level, +  1 + 42, 0, NULL); +  } +  } +  } +     CVAR struct cmod_CONCAT_EVAL(NETTLE_NAME, _ctx) NETTLE_NAME;       INIT    { -  struct HashState_struct *instance -  = (struct HashState_struct *) get_storage(Pike_fp->current_object, -  HashState_program); -  werror(cmod_STRFY_EVAL(PIKE_NAME) "_State->INIT\n"); +  struct Hash_State_struct *instance; +  ASSIGN_CURRENT_STORAGE(instance, struct Hash_State_struct, 1, +  Hash_State_program);    -  assert(instance); +  werror(cmod_STRFY_EVAL(PIKE_NAME) ".State->INIT\n");       cmod_CONCAT_EVAL(NETTLE_NAME, _init)(&THIS->NETTLE_NAME);    instance->ctx = &THIS->NETTLE_NAME;    }    } - DOCSTART() @endclass cmod_CONCAT_EVAL(PIKE_NAME, _State) +  DOCSTART() @endclass State    DOCEND() -  +  + } + DOCSTART() @endclass PIKE_NAME + DOCEND() +