pike.git/
src/
builtin.cmod
Branch:
Tag:
Non-build tags
All tags
No tags
2001-06-20
2001-06-20 01:13:00 by Per Hedbor <ph@opera.com>
3301b1327f2dae50622b4b7dcc97efc0e829f985 (
109
lines) (+
56
/-
53
)
[
Show
|
Annotate
]
Branch:
7.9
String.Buffer()->add is now varargs
Rev: src/builtin.cmod:1.43
1:
/* -*- c -*-
-
* $Id: builtin.cmod,v 1.
42
2001/06/
19
22
:
48
:
14
per Exp $
+
* $Id: builtin.cmod,v 1.
43
2001/06/
20
01
:
13
:
00
per Exp $
*/ #include "global.h"
1101:
REF_RETURN fp->current_object; }
-
PIKEFUN int add( string
a
)
-
/*! @decl void add(string data)
+
PIKEFUN int add( string
...
arg1
)
+
/*! @decl void add(string
...
data)
*! *! Adds @[data] to the buffer. Returns the size of the buffer. *!
1110:
{ struct Buffer_struct *str = THIS; size_t l;
+
int j;
+
struct pike_string *a;
-
+
for( j = 0; j<args; j++ )
+
{
+
a = Pike_sp[-args+j].u.string;
+
if( Pike_sp[-args+j].type != T_STRING )
+
Pike_error("Illegal argument %d, expected string\n", j );
if(!(l = (size_t)a->len) )
-
return
;
+
continue
;
-
+
if( !str->size ) { str->shift = a->size_shift;
1130:
f_Buffer_get( 0 ); stack_swap(); f_add( 2 );
-
f_Buffer_add(
1
);
+
f_Buffer_add(
args-j
);
return; }
1149:
} }
-
#ifdef PIKE_DEBUG
-
if( str->shift < a->size_shift )
-
fatal("Impossible!\n");
-
#endif
-
+
if( a->size_shift == str->shift ) MEMCPY( (str->data+str->len), a->str, l ); else
1168:
convert_0_to_2((p_wchar2 *)(str->data+str->len), (p_wchar0 *)a->str, a->len); str->len += l;
-
RETURN str->len;
+
}
-
+
RETURN str->len-sizeof( struct pike_string )+PIKE_STRING_STR_SIZE;
+
}
PIKEFUN string get_copy() /*! @decl string get_copy()