Example #1
0
struct pvm_object     pvm_create_string_object_binary_cat(
		const char *value1, int n_bytes1,
		const char *value2, int n_bytes2
)
{
	int das = sizeof(struct data_area_4_string)+n_bytes1+n_bytes2;
	struct pvm_object string_class = pvm_get_string_class();

	struct pvm_object	_data = pvm_object_create_dynamic( string_class, das );

	struct data_area_4_string* data_area = (struct data_area_4_string*)&(_data.data->da);

	pvm_internal_init_string(_data.data);

	if(value1)
	{
		memcpy(data_area->data, value1, data_area->length = n_bytes1 );
		if(value2)
		{
			memcpy(data_area->data+n_bytes1, value2, n_bytes2 );
			data_area->length += n_bytes2;
		}
	}

	return _data;

}
Example #2
0
// returns ord or -1
int pvm_get_method_ordinal( pvm_object_t tclass, pvm_object_t mname )
{
    struct data_area_4_class *cda= pvm_object_da( tclass, class );
    pvm_object_t mnames = cda->method_names;

    if( pvm_is_null(mnames) )
        return -1;

    if( pvm_is_null(mname) )
        return -1;

    if( !pvm_object_class_exactly_is( mname, pvm_get_string_class() ) )
        return -1;


    int nitems = get_array_size( mnames.data );
    int i;

    for( i = 0; i < nitems; i++ )
    {
        pvm_object_t curr_mname = pvm_get_ofield( mnames, i );

        int diff = pvm_strcmp( curr_mname, mname);
        if( diff == 0 )
            return i;
    }

    return -1;
}
Example #3
0
struct pvm_object     pvm_create_string_object_binary(const char *value, int n_bytes)
{
	int das = sizeof(struct data_area_4_string)+n_bytes;
	struct pvm_object string_class = pvm_get_string_class();

	struct pvm_object	_data = pvm_object_create_dynamic( string_class, das );

	struct data_area_4_string* data_area = (struct data_area_4_string*)&(_data.data->da);

	pvm_internal_init_string(_data.data);

	if(value)
		memcpy(data_area->data, value, data_area->length = n_bytes );

	return _data;

}