help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: implementation of char()


From: Thorsten Meyer
Subject: Re: implementation of char()
Date: Fri, 02 Jan 2009 10:11:37 +0100
User-agent: Mozilla-Thunderbird 2.0.0.17 (X11/20081018)

Thorsten Meyer wrote:
> I have a question regarding the implementation of the char() function:
> 
> in the source code (in src/strfns.cc) for char() the one argument case is 
> treated specially:
>  - for one argument, the convert_to_str method is used directly with three 
> arguments, the third
> being args(0).is_dq_string () ? '"' : '\''
>  - for more than one argument, the all_strings method is used for each 
> argument individually, and
> within all_strings (defined in ovbase.cc) convert_to_str is used with two 
> arguments.
> 
> What is the purpose of this special treatment of the on argument case?

Now I found a difference between the one-argument-case and the 
more-than-one-argument case:

octave:7> clear
octave:8> a(1,1,1,1)=100;
octave:9> a(3,3,3,3)=101;
octave:10> b=char(a);
octave:11> b=char(a, 102);
error: invalid conversion of charNDArray to string_vector
error: char: unable to convert some args to strings
octave:11>

So convert_to_str can deal with more than 2 dimensions, while all_strings 
cannot. But why, when
all_strings uses convert_to_str to do the actual conversion? I suspect, that 
the answer lies in the
way both functions are overloaded for different kind of data. But I am 
hopelessly lost in the source
code. Can somebody give me a hint where to look?

thanks

Thorsten



reply via email to

[Prev in Thread] Current Thread [Next in Thread]