This is link.c in view mode; [Download] [Up]
/*
* PCN System Linker -- pcnlink
* Author: Steve Tuecke
* Argonne National Laboratory
*
* Please see the DISCLAIMER file in the top level directory of the
* distribution regarding the provisions under which this software
* is distributed.
*
* link.c - Support routines for link.pcn
*
* Foreign procedures used by the PCN linker code.
*/
#include "link_internal.h"
/*
* _p_link_get_table_index()
*
* This procedure uses the 'module_name', 'proc_name' (strings), and
* 'table_size' (integer) to return the appropriate index
* a procedure lookup hash table.
*/
void _p_link_get_table_index(module_name, proc_name, table_size,
table_index)
char_t *module_name;
char_t *proc_name;
int_t *table_size;
int_t *table_index;
{
u_int_t y = 0;
int_t i;
while ((i = (int_t) (*module_name++)) != 0)
{
y <<= 1;
y += i;
}
while ((i = (int_t) (*proc_name++)) != 0)
{
y <<= 1;
y += i;
}
*table_index = (int_t) (y % *table_size);
} /* _p_link_get_table_index() */
/******** This should move into the emulator *************/
/*
* _p_hash_index_for_procedure_name()
*
* This procedure uses the 'module_name', 'proc_name' (strings), and
* 'table_size' (pointer to integer) to return the appropriate
* hash table index for this procedure name in 'hash_index'.
*/
void _p_hash_index_for_procedure_name(module_name, proc_name, table_size,
hash_index)
char_t *module_name;
char_t *proc_name;
int_t *table_size;
int_t *hash_index;
{
u_int_t y = 0;
int_t i;
while ((i = (int_t) (*module_name++)) != 0)
{
y <<= 1;
y += i;
}
while ((i = (int_t) (*proc_name++)) != 0)
{
y <<= 1;
y += i;
}
*hash_index = (int_t) (y % *table_size);
} /* _p_hash_index_for_procedure_name() */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.