2000-07-28
2000-07-28 17:16:56 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>
-
1f21335d77ba21a17d4aafbc236b50418322b885
(137 lines)
(+69/-68)
[
Show
| Annotate
]
Branch: 7.9
JUMBOPATCH: dynamic loading now works on Win* !!!! (somewhat experimental :)
Rev: src/.cvsignore:1.24
Rev: src/Makefile.in:1.198
Rev: src/aclocal.m4:1.17
Rev: src/array.c:1.79
Rev: src/array.h:1.22
Rev: src/backend.c:1.53
Rev: src/backend.h:1.9
Rev: src/bignum.c:1.17
Rev: src/bignum.h:1.14
Rev: src/builtin_functions.c:1.293
Rev: src/builtin_functions.h:1.14
Rev: src/callback.c:1.20
Rev: src/configure.in:1.387
Rev: src/constants.c:1.22
Rev: src/dynamic_buffer.c:1.10
Rev: src/dynamic_load.c:1.41
Rev: src/error.c:1.56
Rev: src/error.h:1.46
Rev: src/fd_control.c:1.32
Rev: src/fdlib.c:1.37
Rev: src/fdlib.h:1.34
Rev: src/fsort.c:1.13
Rev: src/fsort_template.h:1.7
Rev: src/gc.c:1.110
Rev: src/gc.h:1.57
Rev: src/global.h:1.44
Rev: src/interpret.c:1.158
Rev: src/interpret.h:1.52
Rev: src/main.c:1.94
Rev: src/mapping.c:1.94
Rev: src/mapping.h:1.28
Rev: src/module_magic.h:1.1
Rev: src/module_support.c:1.34
Rev: src/module_support.h:1.7
Rev: src/multiset.c:1.26
Rev: src/object.c:1.137
Rev: src/object.h:1.50
Rev: src/opcodes.c:1.78
Rev: src/operators.c:1.93
Rev: src/operators.h:1.8
Rev: src/pike_macros.h:1.17
Rev: src/pike_memory.c:1.71
Rev: src/pike_memory.h:1.14
Rev: src/pike_types.c:1.132
Rev: src/port.c:1.28
Rev: src/precompile.sh.in:1.2
Rev: src/program.c:1.252
Rev: src/program.h:1.97
Rev: src/signal_handler.c:1.173
Rev: src/stralloc.c:1.85
Rev: src/stralloc.h:1.42
Rev: src/stuff.c:1.11
Rev: src/svalue.c:1.85
Rev: src/svalue.h:1.62
Rev: src/testsuite.in:1.316
Rev: src/threads.c:1.133
Rev: src/threads.h:1.99
25:
#define HUGE HUGE_VAL
#endif /*!HUGE*/
- RCSID("$Id: stralloc.c,v 1.84 2000/07/06 23:25:26 mast Exp $");
+ RCSID("$Id: stralloc.c,v 1.85 2000/07/28 17:16:55 hubbe Exp $");
#define BEGIN_HASH_SIZE 997
#define MAX_AVG_LINK_LENGTH 3
103:
return 0;
}
- INLINE unsigned INT32 index_shared_string(struct pike_string *s, int pos)
+ PMOD_EXPORT INLINE unsigned INT32 index_shared_string(struct pike_string *s, int pos)
{
#ifdef PIKE_DEBUG
if(pos > s->len || pos<0) {
117:
return generic_extract(s->str,s->size_shift,pos);
}
- INLINE void low_set_index(struct pike_string *s, int pos, int value)
+ PMOD_EXPORT INLINE void low_set_index(struct pike_string *s, int pos, int value)
{
#ifdef PIKE_DEBUG
if(pos > s->len || pos<0)
137:
}
#ifdef PIKE_DEBUG
- INLINE struct pike_string *debug_check_size_shift(struct pike_string *a,int shift)
+ PMOD_EXPORT INLINE struct pike_string *debug_check_size_shift(struct pike_string *a,int shift)
{
if(a->size_shift != shift)
fatal("Wrong STRX macro used!\n");
160:
CONVERT(2,1)
- int generic_compare_strings(const void *a,int alen, int asize,
+ PMOD_EXPORT int generic_compare_strings(const void *a,int alen, int asize,
const void *b,int blen, int bsize)
{
#define TWO_SIZES(X,Y) (((X)<<2)+(Y))
178:
}
- void generic_memcpy(PCHARP to,
+ PMOD_EXPORT void generic_memcpy(PCHARP to,
PCHARP from,
int len)
{
221:
}
}
- INLINE void pike_string_cpy(PCHARP to,
+ PMOD_EXPORT INLINE void pike_string_cpy(PCHARP to,
struct pike_string *from)
{
generic_memcpy(to,MKPCHARP_STR(from),from->len);
334:
return 0; /* not found */
}
- struct pike_string *binary_findstring(const char *foo, INT32 l)
+ PMOD_EXPORT struct pike_string *binary_findstring(const char *foo, INT32 l)
{
return internal_findstring(foo, l, 0, StrHash(foo,l));
}
- struct pike_string *findstring(const char *foo)
+ PMOD_EXPORT struct pike_string *findstring(const char *foo)
{
return binary_findstring(foo, strlen(foo));
}
411:
/* note that begin_shared_string expects the _exact_ size of the string,
* not the maximum size
*/
- struct pike_string *debug_begin_shared_string(int len)
+ PMOD_EXPORT struct pike_string *debug_begin_shared_string(int len)
{
struct pike_string *t;
#ifdef PIKE_DEBUG
471:
#endif
}
- struct pike_string *debug_begin_wide_shared_string(int len, int shift)
+ PMOD_EXPORT struct pike_string *debug_begin_wide_shared_string(int len, int shift)
{
struct pike_string *t;
#ifdef PIKE_DEBUG
490:
* This function assumes that the shift size is already the minimum it
* can be.
*/
- struct pike_string *low_end_shared_string(struct pike_string *s)
+ PMOD_EXPORT struct pike_string *low_end_shared_string(struct pike_string *s)
{
int len,h;
struct pike_string *s2;
520:
* This function checks if the shift size can be decreased before
* entering the string in the shared string table
*/
- struct pike_string *end_shared_string(struct pike_string *s)
+ PMOD_EXPORT struct pike_string *end_shared_string(struct pike_string *s)
{
struct pike_string *s2;
565:
}
- struct pike_string * debug_make_shared_binary_string(const char *str,int len)
+ PMOD_EXPORT struct pike_string * debug_make_shared_binary_string(const char *str,int len)
{
struct pike_string *s;
int h=StrHash(str,len);
583:
return s;
}
- struct pike_string * debug_make_shared_binary_pcharp(const PCHARP str,int len)
+ PMOD_EXPORT struct pike_string * debug_make_shared_binary_pcharp(const PCHARP str,int len)
{
switch(str.shift)
{
600:
return NULL; /* Keep the compiler happy */
}
- struct pike_string * debug_make_shared_pcharp(const PCHARP str)
+ PMOD_EXPORT struct pike_string * debug_make_shared_pcharp(const PCHARP str)
{
return debug_make_shared_binary_pcharp(str, pcharp_strlen(str));
}
- struct pike_string * debug_make_shared_binary_string0(const p_wchar0 *str,int len)
+ PMOD_EXPORT struct pike_string * debug_make_shared_binary_string0(const p_wchar0 *str,int len)
{
return debug_make_shared_binary_string((const char *)str, len);
}
- struct pike_string * debug_make_shared_binary_string1(const p_wchar1 *str,int len)
+ PMOD_EXPORT struct pike_string * debug_make_shared_binary_string1(const p_wchar1 *str,int len)
{
struct pike_string *s;
int h;
638:
return s;
}
- struct pike_string * debug_make_shared_binary_string2(const p_wchar2 *str,int len)
+ PMOD_EXPORT struct pike_string * debug_make_shared_binary_string2(const p_wchar2 *str,int len)
{
struct pike_string *s;
int h;
673:
return s;
}
- struct pike_string *debug_make_shared_string(const char *str)
+ PMOD_EXPORT struct pike_string *debug_make_shared_string(const char *str)
{
return make_shared_binary_string(str, strlen(str));
}
- struct pike_string *debug_make_shared_string0(const p_wchar0 *str)
+ PMOD_EXPORT struct pike_string *debug_make_shared_string0(const p_wchar0 *str)
{
return debug_make_shared_string((const char *)str);
}
- struct pike_string *debug_make_shared_string1(const p_wchar1 *str)
+ PMOD_EXPORT struct pike_string *debug_make_shared_string1(const p_wchar1 *str)
{
INT32 len;
for(len=0;str[len];len++);
return debug_make_shared_binary_string1(str,len);
}
- struct pike_string *debug_make_shared_string2(const p_wchar2 *str)
+ PMOD_EXPORT struct pike_string *debug_make_shared_string2(const p_wchar2 *str)
{
INT32 len;
for(len=0;str[len];len++);
699:
/*** Free strings ***/
- void unlink_pike_string(struct pike_string *s)
+ PMOD_EXPORT void unlink_pike_string(struct pike_string *s)
{
unsigned int h=s->hval % htable_size;
propagate_shared_string(s,h);
710:
num_strings--;
}
- void do_free_string(struct pike_string *s)
+ PMOD_EXPORT void do_free_string(struct pike_string *s)
{
if (s)
free_string(s);
}
- void really_free_string(struct pike_string *s)
+ PMOD_EXPORT void really_free_string(struct pike_string *s)
{
#ifdef PIKE_DEBUG
extern int d_flag;
738:
debug_free((char *)s,DMALLOC_LOCATION(),1);
}
- void debug_free_string(struct pike_string *s)
+ PMOD_EXPORT void debug_free_string(struct pike_string *s)
{
if(--s->refs<=0)
really_free_string(s);
801: Inside #if defined(PIKE_DEBUG)
/*** PIKE_DEBUG ***/
#ifdef PIKE_DEBUG
- void check_string(struct pike_string *s)
+ PMOD_EXPORT void check_string(struct pike_string *s)
{
do_hash(s);
if(full_hash_value != s->hval)
820: Inside #if defined(PIKE_DEBUG)
}
}
- void verify_shared_strings_tables(void)
+ PMOD_EXPORT void verify_shared_strings_tables(void)
{
unsigned INT32 e, h, num=0;
unsigned INT32 orig_full_hash = full_hash_value;
872: Inside #if defined(PIKE_DEBUG)
full_hash_value = orig_full_hash;
}
- int safe_debug_findstring(struct pike_string *foo)
+ PMOD_EXPORT int safe_debug_findstring(struct pike_string *foo)
{
unsigned INT32 e;
if(!base_table) return 0;
885: Inside #if defined(PIKE_DEBUG)
return 0;
}
- struct pike_string *debug_findstring(const struct pike_string *foo)
+ PMOD_EXPORT struct pike_string *debug_findstring(const struct pike_string *foo)
{
struct pike_string *tmp;
tmp=propagate_shared_string(foo, foo->hval % htable_size);
928: Inside #if defined(PIKE_DEBUG)
return tmp;
}
- void debug_dump_pike_string(struct pike_string *s, INT32 max)
+ PMOD_EXPORT void debug_dump_pike_string(struct pike_string *s, INT32 max)
{
INT32 e;
fprintf(stderr,"0x%p: %ld refs, len=%ld, size_shift=%d, hval=%lux (%lx)\n",
981:
/*** String compare functions ***/
/* does not take locale into account */
- int low_quick_binary_strcmp(char *a,INT32 alen,
+ PMOD_EXPORT int low_quick_binary_strcmp(char *a,INT32 alen,
char *b,INT32 blen)
{
int tmp;
1001:
/* does not take locale into account */
- int generic_quick_binary_strcmp(const char *a,INT32 alen, int asize,
+ PMOD_EXPORT int generic_quick_binary_strcmp(const char *a,INT32 alen, int asize,
const char *b,INT32 blen, int bsize)
{
if(!asize && !bsize)
1031:
}
}
- int c_compare_string(struct pike_string *s, char *foo, int len)
+ PMOD_EXPORT int c_compare_string(struct pike_string *s, char *foo, int len)
{
return s->len == len && s->size_shift == 0 && !MEMCMP(s->str,foo,len);
}
#ifndef HAVE_STRCOLL
/* No locale function available */
- static int low_binary_strcmp(char *a,INT32 alen,
+ int low_binary_strcmp(char *a,INT32 alen,
char *b,INT32 blen)
{
low_quick_binary_strcmp(a,alen,b,blen);
1068:
/* Does not take locale into account */
- int my_quick_strcmp(struct pike_string *a,struct pike_string *b)
+ PMOD_EXPORT int my_quick_strcmp(struct pike_string *a,struct pike_string *b)
{
if(a==b) return 0;
1077:
}
/* Does take locale into account */
- int my_strcmp(struct pike_string *a,struct pike_string *b)
+ PMOD_EXPORT int my_strcmp(struct pike_string *a,struct pike_string *b)
{
if(a==b) return 0;
1114:
}
}
- struct pike_string *realloc_unlinked_string(struct pike_string *a, INT32 size)
+ PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, INT32 size)
{
struct pike_string *r;
r=(struct pike_string *)realloc((char *)a,
1134:
}
/* Returns an unlinked string ready for end_shared_string */
- struct pike_string *realloc_shared_string(struct pike_string *a, INT32 size)
+ PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, INT32 size)
{
struct pike_string *r;
if(a->refs==1)
1149:
}
}
- struct pike_string *new_realloc_shared_string(struct pike_string *a, INT32 size, int shift)
+ PMOD_EXPORT struct pike_string *new_realloc_shared_string(struct pike_string *a, INT32 size, int shift)
{
struct pike_string *r;
if(shift == a->size_shift) return realloc_shared_string(a,size);
1168:
* Phew, this function become complicated when I inserted magic for wide
* characters...
*/
- struct pike_string *modify_shared_string(struct pike_string *a,
+ PMOD_EXPORT struct pike_string *modify_shared_string(struct pike_string *a,
INT32 index,
INT32 c)
{
1304:
}
/*** Add strings ***/
- struct pike_string *add_shared_strings(struct pike_string *a,
+ PMOD_EXPORT struct pike_string *add_shared_strings(struct pike_string *a,
struct pike_string *b)
{
struct pike_string *ret;
1319:
return end_shared_string(ret);
}
- struct pike_string *add_and_free_shared_strings(struct pike_string *a,
+ PMOD_EXPORT struct pike_string *add_and_free_shared_strings(struct pike_string *a,
struct pike_string *b)
{
INT32 alen=a->len;
1338:
}
- int string_search(struct pike_string *haystack,
+ PMOD_EXPORT int string_search(struct pike_string *haystack,
struct pike_string *needle,
int start)
{
1365:
return (r-haystack->str)>>haystack->size_shift;
}
- struct pike_string *string_slice(struct pike_string *s,
+ PMOD_EXPORT struct pike_string *string_slice(struct pike_string *s,
INT32 start,
INT32 len)
{
1398:
}
/*** replace function ***/
- struct pike_string *string_replace(struct pike_string *str,
+ PMOD_EXPORT struct pike_string *string_replace(struct pike_string *str,
struct pike_string *del,
struct pike_string *to)
{
1585:
}
}
- void init_string_builder(struct string_builder *s, int mag)
+ PMOD_EXPORT void init_string_builder(struct string_builder *s, int mag)
{
s->malloced=256;
s->s=begin_wide_shared_string(256,mag);
1619:
}
}
- void *string_builder_allocate(struct string_builder *s, int chars, int mag)
+ PMOD_EXPORT void *string_builder_allocate(struct string_builder *s, int chars, int mag)
{
void *ret;
string_build_mkspace(s,chars,mag);
1629:
return ret;
}
- void string_builder_putchar(struct string_builder *s, int ch)
+ PMOD_EXPORT void string_builder_putchar(struct string_builder *s, int ch)
{
INT32 i;
string_build_mkspace(s,1,min_magnitude(ch));
1639:
}
- void string_builder_binary_strcat(struct string_builder *s, char *str, INT32 len)
+ PMOD_EXPORT void string_builder_binary_strcat(struct string_builder *s, char *str, INT32 len)
{
string_build_mkspace(s,len,0);
switch(s->s->size_shift)
1654:
}
- void string_builder_append(struct string_builder *s,
+ PMOD_EXPORT void string_builder_append(struct string_builder *s,
PCHARP from,
INT32 len)
{
1663:
s->s->len+=len;
}
- void string_builder_fill(struct string_builder *s,
+ PMOD_EXPORT void string_builder_fill(struct string_builder *s,
int howmany,
PCHARP from,
INT32 len,
1717:
}
}
- void string_builder_strcat(struct string_builder *s, char *str)
+ PMOD_EXPORT void string_builder_strcat(struct string_builder *s, char *str)
{
string_builder_binary_strcat(s,str,strlen(str));
}
- void string_builder_shared_strcat(struct string_builder *s, struct pike_string *str)
+ PMOD_EXPORT void string_builder_shared_strcat(struct string_builder *s, struct pike_string *str)
{
string_build_mkspace(s,str->len,str->size_shift);
1732:
}
- void reset_string_builder(struct string_builder *s)
+ PMOD_EXPORT void reset_string_builder(struct string_builder *s)
{
s->known_shift=0;
s->s->len=0;
}
- void free_string_builder(struct string_builder *s)
+ PMOD_EXPORT void free_string_builder(struct string_builder *s)
{
free((char *)s->s);
}
- struct pike_string *finish_string_builder(struct string_builder *s)
+ PMOD_EXPORT struct pike_string *finish_string_builder(struct string_builder *s)
{
low_set_index(s->s,s->s->len,0);
if(s->known_shift == s->s->size_shift)
1751:
return end_shared_string(s->s);
}
- PCHARP MEMCHR_PCHARP(PCHARP ptr, int chr, int len)
+ PMOD_EXPORT PCHARP MEMCHR_PCHARP(PCHARP ptr, int chr, int len)
{
switch(ptr.shift)
{
1767:
WIDE_ISLOWER(x) ? (x) + 10 - 'a' : (x) + 10 - 'A')
#define MBASE ('z' - 'a' + 1 + 10)
- long STRTOL_PCHARP(PCHARP str, PCHARP *ptr, int base)
+ PMOD_EXPORT long STRTOL_PCHARP(PCHARP str, PCHARP *ptr, int base)
{
register long val;
register int c;
1822:
return (neg ? val : -val);
}
- int string_to_svalue_inumber(struct svalue *r,
+ PMOD_EXPORT int string_to_svalue_inumber(struct svalue *r,
char * str,
char **ptr,
int base,
1838:
return ret;
}
- int wide_string_to_svalue_inumber(struct svalue *r,
+ PMOD_EXPORT int wide_string_to_svalue_inumber(struct svalue *r,
void * str,
void **ptr,
int base,
1855:
return ret;
}
- int pcharp_to_svalue_inumber(struct svalue *r,
+ PMOD_EXPORT int pcharp_to_svalue_inumber(struct svalue *r,
PCHARP str,
PCHARP *ptr,
int base,
1990:
return 1;
}
- int convert_stack_top_string_to_inumber(int base)
+ PMOD_EXPORT int convert_stack_top_string_to_inumber(int base)
{
struct svalue r;
int i;
2008:
/* Convert PCHARP to a double. If ENDPTR is not NULL, a pointer to the
character after the last one used in the number is put in *ENDPTR. */
- double STRTOD_PCHARP(PCHARP nptr, PCHARP *endptr)
+ PMOD_EXPORT double STRTOD_PCHARP(PCHARP nptr, PCHARP *endptr)
{
register PCHARP s;
short int sign;
2156:
}
- p_wchar0 *require_wstring0(struct pike_string *s,
+ PMOD_EXPORT p_wchar0 *require_wstring0(struct pike_string *s,
char **to_free)
{
switch(s->size_shift)
2174:
return 0;
}
- p_wchar1 *require_wstring1(struct pike_string *s,
+ PMOD_EXPORT p_wchar1 *require_wstring1(struct pike_string *s,
char **to_free)
{
switch(s->size_shift)
2198:
}
- p_wchar2 *require_wstring2(struct pike_string *s,
+ PMOD_EXPORT p_wchar2 *require_wstring2(struct pike_string *s,
char **to_free)
{
switch(s->size_shift)