• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[#Red] Red language group

Bo
29-Apr-2013
[7454]
I was looking to take cover just in case a battle of the wizards 
was going to happen!  Glad to hear it has been avoided.
DocKimbel
29-Apr-2013
[7455]
I used to be a Dragon-Wizard level 37 in CircleMUD back when Internet 
was mainly text-only, so this could have become nasty indeed. ;-)
Paul
29-Apr-2013
[7456]
Is there comprehensive updated documentation for RED?
PeterWood
29-Apr-2013
[7457]
Not yet Paul. Though there is for  Red/System.
Pekr
30-Apr-2013
[7458]
interesting new plans and strategies
  sounds good :-)
DideC
30-Apr-2013
[7459]
Doc: what do you mean when you say Textpad doesn't support  Unicode 
? I use Textpad 5.4.2 and see options to set UTF-8 as default text 
encoding and others options for BOM and so on.
DocKimbel
30-Apr-2013
[7460x4]
Didier: see http://stackoverflow.com/questions/8879277/textpad-and-unicode-full-support
Huh, there are versions 6.x and 7.0 for Textpad, I've missed that, 
but the feature page is not mentioning Unicode at all: http://www.textpad.com/products/textpad/features.html
Sadly the recent (March 2013) TextPad v7 release doesn't fix this 
problem.
Got a reply from Avira, they have processed my report and the fix 
should be soon available: 

https://analysis.avira.com/en/status?uniqueid=KwPWqW429CmT1fNpbHWQgDxQ8ryDHO4T&incidentid=1412216
Pekr
30-Apr-2013
[7464]
btw, just curious - what is it generally usefull for, to call Red 
from R/S? I can imagine it in reverse direction, but when you would 
need any such callback?
DocKimbel
30-Apr-2013
[7465x3]
Mainly for external (from bindings) events propagation to Red level.
It will be also used in the Java and obj-c bridges.
Added new #call compilation directive to enable calling Red functions 
from Red/System.

Syntax:
    #call [<red-fun-name> <arg1> <arg2> ...]

Notes:
- it can be used only in routines body or #system body block.

- only function! value can be invoked (refinements not supported).

- arguments are either literal values or Red/System global/local 
variables.

- type casting (to a Red internal datatype) is allowed in arguments 
(avoids wasting an extra variable).
PeterWood
30-Apr-2013
[7468]
I think it is worth stressing that this is a feature of the Red compiler 
and is not available to Red/System programs compiled with the Red/System 
compiler.
Gregg
30-Apr-2013
[7469]
So you can call Red apps from Red/System, but you can't call Red/System 
apps from Red/System, correct?
DocKimbel
30-Apr-2013
[7470x3]
Peter: right, I've forgot to mention it.
Gregg: not sure what you mean by "Red/System app".
The #call directive invokes a Red function, it has nothing to do 
with Rebol's CALL native.
Gregg
30-Apr-2013
[7473]
R is a compiled Red app. RS and RS2 are compiled Red/System apps. 
From RS2, I can #call into R, but not RS, correct?
DocKimbel
30-Apr-2013
[7474]
No, it's not Rebol's CALL native.
Gregg
30-Apr-2013
[7475x2]
Because it invokes a Red function.
Right, I understand that. I don't mean CALL, I mean #call.
DocKimbel
30-Apr-2013
[7477x2]
There's no way you can call any function from one process to another.
#call is meant for calling Red code from Red/System in the same app.
Gregg
30-Apr-2013
[7479]
Ah, I see my confusion. I thought this was some tricky IPC thing, 
but it's just a callback def in Red, correct?
DocKimbel
30-Apr-2013
[7480]
Yes. :)
Gregg
30-Apr-2013
[7481]
Oh, I get it now. Thanks.
Kaj
30-Apr-2013
[7482]
Petr, in the currently available code, the GTK binding can't function 
without a callback from Red/System into Red; as Doc says, to pass 
GTK events into the Red GUI dialect engine. So far I constructed 
the callback the ugly way, but there's official support now
DocKimbel
30-Apr-2013
[7483]
BTW, I've hesitated to name it #callback instead of #call.
Gregg
30-Apr-2013
[7484x2]
It sounded like deep voodoo required for your bridging needs.
I guess it is still deep voodoo, just a different kind. :-)
DocKimbel
30-Apr-2013
[7486]
Actually, it's fairly simple, think about a GUI app that sends a 
click event to your Red/System binding, how do you pass the event 
to Red code if you can't call it from Red/System. ;-)
Gregg
30-Apr-2013
[7487x2]
Right, easy for people like me to use, but voodoo under the hood.
If you do voodoo, I can call you WitchDoc. ;-)
Kaj
30-Apr-2013
[7489x3]
It replaces this:
; Call back into Red
			stack/mark-func ~on-action
			integer/push as-integer face
			integer/push action
			f_on-action
			stack/unwind
			stack/reset
For a callback with two arguments
DocKimbel
30-Apr-2013
[7492]
It just pushes the Red/System arguments on a new Red stack frame 
and invokes the Red function. No black magic required. ;)
Gregg
30-Apr-2013
[7493]
Don't tell me that. I want to imagine that it's *reeeallly* hard 
and bad things will happen if I even try to understand it. :-)
Kaj
30-Apr-2013
[7494]
I was convinced about that for Unicode, and it didn't work out well 
;-)
DocKimbel
30-Apr-2013
[7495x2]
Ah, one thing to not, the type casting shortcuts like: as-integer, 
as-byte, etc.. won't work within #call because the Red/System preprocessor 
is invoked too late.
not => note
Gregg
30-Apr-2013
[7497]
That sounds important to document.
Pekr
30-Apr-2013
[7498]
I would probably prefer it being called #callback, or some ppl might 
relate it to REBOL's  CALL :-)
DocKimbel
30-Apr-2013
[7499]
Actually, it is related a bit, because in both cases, you are making 
an "external" call.
Kaj
30-Apr-2013
[7500]
#call is more generic; you're not necessarily calling back
DocKimbel
30-Apr-2013
[7501]
That's why I've opted finally for just #call.
Kaj
30-Apr-2013
[7502]
A Red/System logic! is stored as integer!, right, not byte!?
DocKimbel
30-Apr-2013
[7503]
Integer! yes.