POV-Ray : Newsgroups : povray.newusers : strings in #if-directive Server Time
12 Oct 2026 08:20:42 EDT (-0400)
  strings in #if-directive (Message 1 to 14 of 14)  
From: marabou
Subject: strings in #if-directive
Date: 11 Dec 2001 14:18:25
Message: <3c165c01@news.povray.org>
hello,
how do i handle strings, if i want to create the following:

#macro mymacro(this)
        #if (this = "myvalue")
                ...
        #end
#end

mymacro(myvalue)

any hints? thanks.


Post a reply to this message

From: marabou
Subject: Re: strings in #if-directive
Date: 11 Dec 2001 14:34:53
Message: <3c165fdc@news.povray.org>
marabou wrote:

> 
> hello,
> how do i handle strings, if i want to create the following:
> 
> #macro mymacro(this)
>         #if (this = "myvalue")
>                 ...
>         #end
> #end
> 
> mymacro(myvalue)
> 
or is there anything like strcmp(A,B) in v3.1?


Post a reply to this message

From:
Subject: Re: strings in #if-directive
Date: 11 Dec 2001 14:37:26
Message: <hrnc1usqqc7sv5vo2b4l9h13e7a4kjpqol@4ax.com>
On Tue, 11 Dec 2001 20:20:05 +0100, marabou <not### [at] availableyet> wrote:
> how do i handle strings, if i want to create the following:
> #macro mymacro(this) #if (this = "myvalue") ... #end #end

iirc it is well documented in 3.1
and it works the same in 3.5
check strcmp function

ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35


Post a reply to this message

From: Warp
Subject: Re: strings in #if-directive
Date: 11 Dec 2001 16:52:45
Message: <3c16802d@news.povray.org>
Włodzimierz ABX Skiba <abx### [at] babilonorg> wrote:
: check strcmp function

  I agree that it would be really nice if (string1 = string2) would work.
I don't see why we should go the C-way in this thing. Better the C++-way.

-- 
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: marabou
Subject: Re: strings in #if-directive
Date: 12 Dec 2001 13:58:48
Message: <3c17a8e8@news.povray.org>
Warp wrote:

> W³odzimierz ABX Skiba <abx### [at] babilonorg> wrote:
> : check strcmp function
> 
>   I agree that it would be really nice if (string1 = string2) would work.
> I don't see why we should go the C-way in this thing. Better the C++-way.
> 

strcmp(a,b) is the C-way. (string1 == string2) give problems.
in the manual these functions relatively are hidden, that you have to 
install your own search-engine about it.


Post a reply to this message

From: Warp
Subject: Re: strings in #if-directive
Date: 12 Dec 2001 14:20:57
Message: <3c17ae19@news.povray.org>
marabou <not### [at] availableyet> wrote:
: strcmp(a,b) is the C-way. (string1 == string2) give problems.

  What problems? If I do it the C++-way, there are no problems:

string s1 = "abc";
string s2 = "def";

if(s1 == s2) { ... }
else { ... }

-- 
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: marabou
Subject: Re: strings in #if-directive
Date: 12 Dec 2001 14:27:01
Message: <3c17af7f@news.povray.org>
Warp wrote:

> marabou <not### [at] availableyet> wrote:
> : strcmp(a,b) is the C-way. (string1 == string2) give problems.
> 
>   What problems? If I do it the C++-way, there are no problems:
> 
> string s1 = "abc";
> string s2 = "def";
> 
> if(s1 == s2) { ... }
> else { ... }
> 
sorry, i missunderstood your post. i thought you meant strcmp(a,b) is 
c++-way.
in my opinion the c-way is better, because coders then have less problems 
with type-casts.


Post a reply to this message

From: Warp
Subject: Re: strings in #if-directive
Date: 12 Dec 2001 15:47:00
Message: <3c17c243@news.povray.org>
marabou <not### [at] availableyet> wrote:
: in my opinion the c-way is better, because coders then have less problems 
: with type-casts.

  The c-way is awful.

-- 
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: marabou
Subject: Re: strings in #if-directive
Date: 12 Dec 2001 15:52:40
Message: <3c17c398@news.povray.org>
Warp wrote:

>   The c-way is awful.

...but logical. (i think)


Post a reply to this message

From: Warp
Subject: Re: strings in #if-directive
Date: 12 Dec 2001 15:59:33
Message: <3c17c535@news.povray.org>
marabou <not### [at] availableyet> wrote:
:>   The c-way is awful.

: ...but logical. (i think)

  So you would prefer it also this way:

int a=1, b=2;

if(intcmp(a, b) == 0) { ... }

-- 
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: JRG
Subject: Re: strings in #if-directive
Date: 12 Dec 2001 16:21:04
Message: <3c17ca40@news.povray.org>
It's a pain having to study C, when your teacher spends most time saying:
"next year, when you study C++, you will discover that this, this and this
has got a much more friendly syntax..."

--
Jonathan.

"Warp" <war### [at] tagpovrayorg> ha scritto nel messaggio
news:3c17c535@news.povray.org...
> marabou <not### [at] availableyet> wrote:
> :>   The c-way is awful.
>
> : ...but logical. (i think)
>
>   So you would prefer it also this way:
>
> int a=1, b=2;
>
> if(intcmp(a, b) == 0) { ... }
>
> --
> #macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
> rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
> ],13),8)-3,10>#end blob{N(array[6]{11117333955,
> 7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: Chaps
Subject: Re: strings in #if-directive
Date: 13 Dec 2001 06:15:55
Message: <3c188deb$1@news.povray.org>
"marabou" <not### [at] availableyet> wrote in message
news:3c17af7f@news.povray.org...
> Warp wrote:
>
> > marabou <not### [at] availableyet> wrote:
> > : strcmp(a,b) is the C-way. (string1 == string2) give problems.
> >
> >   What problems? If I do it the C++-way, there are no problems:
> >
> > string s1 = "abc";
> > string s2 = "def";
> >
> > if(s1 == s2) { ... }

In this case, in C, you are comparing pointers.
whatever the content of S1 and S2 are, the result is false.

> > else { ... }
> >
> sorry, i missunderstood your post. i thought you meant strcmp(a,b) is
> c++-way.
> in my opinion the c-way is better, because coders then have less problems
> with type-casts.
>
Chaps.


Post a reply to this message

From: Warp
Subject: Re: strings in #if-directive
Date: 13 Dec 2001 06:32:39
Message: <3c1891d6@news.povray.org>
Chaps <cha### [at] yahoocom> wrote:
:> > string s1 = "abc";
:> > string s2 = "def";
:> >
:> > if(s1 == s2) { ... }

: In this case, in C, you are comparing pointers.
: whatever the content of S1 and S2 are, the result is false.

  But C has no string class, so it can't be C. That's C++ code. And it works.

-- 
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: Chaps
Subject: Re: strings in #if-directive
Date: 14 Dec 2001 04:00:24
Message: <3c19bfa8$1@news.povray.org>
>   But C has no string class, so it can't be C. That's C++ code. And it
works.
Dear Warp,
I know that.
I think that my english is too poor, so I misunderstand sometimes the
questions :o(, and I shorten always my answers :o).

Chaps


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.