Page 10 of 25
					
				Re: wishlist for NXC
				Posted: 23 May 2011, 20:55
				by HaWe
				what about overloading functions? 
All function-types-problems and different-number-of-parameters-problems could be resolved.
ok, I admit: this is not ANSI C 99  - but C++ like...
it might get us 1 step closer to ACDC++
;)
examples: printf could work with unlimited numbers and sorts of parameters, min/max the same, even arithmetic operators could be overloaded to work with complex numbers as well... :)
			 
			
					
				Re: wishlist for NXC
				Posted: 24 May 2011, 23:42
				by muntoo
				Variable Arguments
By that, I mean that the arguments will be able to be passed as an array (as opposed to the traditional pointer).
Example:
Code: Select all
long sum(long list, ...)
{
    long out = 0;
    for(unsigned long i = 0; i < ArrayLen(list); ++i)
        out += list[i];
    return(out);
}
NumOut(0, 0, sum(1, 2, 3, 4));
// Is equivalent to:
NumOut(0, 0, 1 + 2 + 3 + 4);
In other words, we should be able to code our own 
ArrayBuild().
 
			 
			
					
				Re: wishlist for NXC
				Posted: 25 May 2011, 06:33
				by HaWe
				that's not the issue of my wish.
My wish was about a general way to overload functions and operators with multiple counts and sorts of parameters which work possibly different depending on the special case.
Some extreme examples:
float foo(int i, float f) { return (i*f);}
float foo(int i, int j, float f) {return ((i+j)/f);}
int foo (int i, int j, int h) {return(i+j+h);}
void foo(float &f){f=sin(f);}
float f[2], g[2], h[2];
h=f *g; // * overloaded by complex multiplication:  <=> h[0]=f[0]*g[0] - f[1]*g[1]; h[1]=f[0]*g[1] + f[1]*g[0];
			 
			
					
				Re: wishlist for NXC
				Posted: 25 May 2011, 08:53
				by mightor
				Doc,
John has already expressed his intention to implement function overloads a while back. I bugged him about it incessantly at LEGO World last year so I can port my driver suite to NXC 
- Xander
 
			 
			
					
				Re: wishlist for NXC
				Posted: 28 May 2011, 11:27
				by HaWe
				really?
:P
when?  (not when you bugged him but...)
;)
			 
			
					
				Re: wishlist for NXC
				Posted: 29 May 2011, 21:43
				by muntoo
				Explicit casting
Code: Select all
int pi = int(3.14);
// pi = 3;
float e = (float)2;
// e = 2.0;
 
			 
			
					
				Re: wishlist for NXC
				Posted: 30 May 2011, 07:06
				by HaWe
				muntoo, 
it's a typo probably:
int pi=(int)3.14;
or: 
Code: Select all
float pi=3.1415;
int pii;
pii=(int)pi;
for type conversion the new type is included in parenthesis, not the value ;)
but I wish to have that, too!
 
			 
			
					
				Re: wishlist for NXC
				Posted: 31 May 2011, 00:41
				by muntoo
				Actually, 
int(3.14) is legal. (Functional notation. I think it's 
C++ only...?)
EDIT: More 
here.
 
			 
			
					
				Re: wishlist for NXC
				Posted: 01 Jun 2011, 16:23
				by HaWe
				correct, it's exactly as you said by yourself, function type cast is C++, not C
;)
			 
			
					
				Re: wishlist for NXC
				Posted: 14 Jun 2011, 19:43
				by HaWe
				is there a chance to speed up the enh FW in relation to the std FW ?