r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Core] Discuss core issues

JaimeVargas
6-Jan-2006
[3166x2]
Optimizations welcome ;-)
It improved but not by much.
Henrik
7-Jan-2006
[3168x2]
ah the joys of BIND...

>> a: make object! [b: 0 c: b]
>> a/b
== 0
>> a/c
== 0
>> set in a 'b 7
== 7
>> a/c
== 0

How do I restore the context?
wait... that's not the problem
BrianH
7-Jan-2006
[3170x2]
The context is fine. When you do  c: b  you are setting c to the 
value of b (or rather a copy, since 0 is an immediate value). When 
you change the value of b the copy of the old value remains the same 
in c.
Bind isn't used here.
Henrik
7-Jan-2006
[3172]
I realized that just now. the problem was entirely different.
Robert
7-Jan-2006
[3173]
question concerning 'get: First, why doesn't get support something 
like "get my-object/user-data"? Next, how to get a path word?
Henrik
7-Jan-2006
[3174]
path word? such as

in my-object 'user-data

?
Robert
8-Jan-2006
[3175]
Forget the last question...
BrianH
12-Jan-2006
[3176]
Does the file execute setting of the secure native mean anything 
on Windows. What is it supposed to mean?
Pekr
13-Jan-2006
[3177x4]
how to easily do base conversion? e.g. working with bitmasks, I want 
to be easily able to obtain e.g. 255, #FF, "11111111"
... and convert between those ...
ah, probably enbase/base #{FF} 2 ..... I just wrongly tried with 
#FF ..... but then each char got converted separately ...
I also found Sunanda's 'base-convert.r script, so forget my question 
....
Gregg
13-Jan-2006
[3181]
From RAMBO group: I don't know about "pretty " versus loadable, but 
what specific issue does it cause that you don't want that extra 
information available? WRT "form 1.0"
Luca
22-Jan-2006
[3182]
I need to "filter" the content of an object. Any better idea on how 
to do it other the this one:
obj: make object! [
	bb: 1
	cc: 4
	dd: 7
]


block: [bb dd]

filter: func [obj block /local newobj][
	newobj: make object! []
	foreach [s v] third obj [
		if find block to-word s [
			newobj: make newobj reduce [
				s v
			]	
		]
	]
	newobj
]

probe filter obj block

Result:

make object! [
    bb: 1
    dd: 7
]
Gregg
22-Jan-2006
[3183]
Here's something I did that may work for you:

obj-spec: func [
    "Returns the object spec as a single line (flat) string."
    obj [object!]
    /only "no surrounding brackets"
    /mold "Multi-line MOLDed format"
    /local res
][
    res: copy find/tail system/words/mold obj "make object! "
    if not mold [trim/lines res]
    if only [res: trim/auto next head remove back tail next res]
    res
]

remove-words: func [

    "Returns a copy of the object with the specified words removed."
    object [object!]
    words  [word! block!] "The word, or words, to remove"
    /local spec
][
    spec: load obj-spec object
    foreach word compose [(words)] [
        remove/part find spec to set-word! word 2
    ]
    make object! spec
]


The reason it doesn't use THIRD on the object is because of how words 
are returned. I use OBJ-SPEC to save object spec blocks to disk for 
the same reason.
Henrik
22-Jan-2006
[3184x3]
if the solution gregg posts is better, use that, but:

a: make object! [
  bb: 1
  cc: 4
  dd: 7
]

block: [bb dd]


make object! foreach word difference first a block [head remove remove 
find third a to-set-word word]
nah, doesn't work
d: third a

make object! foreach word next difference first a block [head remove 
remove find d to-set-word word]

seems to work
Luca
22-Jan-2006
[3187]
Gregg: Thank you, you are right, I forgot the 'THIRD problem. In 
other scripts I used the following solution to bypass it.

'prefs is an object containing various data types.
'rp2pcprefs is the file to save it to

save-prefs: func [/local prefstmp][
	prefstmp: copy/deep [] 
	foreach w next first prefs [
		append prefstmp reduce [to-word w get in prefs to-word w]
	]
	save rp2pcprefs prefstmp
]

load-prefs: func [/local prefstmp][
	prefstmp: make object! [] 
	if exists? rp2pcprefs [
		foreach [w v] load rp2pcprefs [

   prefstmp: make prefstmp reduce [to-set-word w ""] set in prefstmp 
   to-word w v
		]
	]
	prefstmp
]


Henrik: 'difference is a good point I didn't think to, then I like 
the one-liner :), thank you.
Henrik
22-Jan-2006
[3188]
luca, check for stability and binding though. there are always a 
few holes, when messing with objects like that :-)
Luca
22-Jan-2006
[3189]
I will keep it in mind... :-)
Gabriele
23-Jan-2006
[3190x3]
i wrote this a few years ago:
extract-object:
    func [source [object!] dest-template [block! object!]]

    [   if block? dest-template [dest-template: context dest-template]
        foreach word next first dest-template

        [   set in dest-template word get any [in source word 'none]]
        dest-template
    ]
>> obj: make object! [
[     bb: 1
[     cc: 4
[     dd: 7
[    ]
>> probe extract-object obj [bb: dd: none]
make object! [
    bb: 1
    dd: 7
]
Volker
23-Jan-2006
[3193x2]
!>>obj: context[bb: 1 cc: 4 dd: 7]
!>>probe context intersect/skip third obj [bb: - cc: -] 2   
make object! [
    bb: 1
    cc: 4
]
(a few years later ;)
Henrik
23-Jan-2006
[3195]
I should advertise this group some more. Just insert some code, and 
it comes out optimized a few days later. :-)
Gregg
23-Jan-2006
[3196]
Volker, THIRD doesn't work with word! values though; great otherwise. 
:-)
Luca
23-Jan-2006
[3197]
'intersect is very cool. But what the - (minus) sign stay for? What 
does it mean?
Gregg
23-Jan-2006
[3198]
Just dummy values to match the skip 2 format.
Luca
23-Jan-2006
[3199]
Does the minus sign stay for dummy anywhere or just in the intersect? 
I never met it before?
JaimeVargas
23-Jan-2006
[3200]
the dash is just a value. You can put anything there: [NONE + word 
empty] are some options.
Gabriele
24-Jan-2006
[3201]
THIRD *does* work for words, as long as you use CONSTRUCT to rebuild 
the object.
Coccinelle
24-Jan-2006
[3202x2]
I wonder to know the kmeaning of the negative value returned by the 
read-io and write-io function.

- I understand that when a TCP port is close at the other end of 
the communication, the value is either 0 or -1.

- it seems that read-io return -4 when there is no available data 
on the port
But I am not sure to be right.
kmeaning = meaning (sorry)
Henrik
24-Jan-2006
[3204]
does anyone know what PATH is good for?
Gregg
24-Jan-2006
[3205]
Ah! Thanks Gabriele! I don't know why I didn't think of that. :-\
Allen
24-Jan-2006
[3206]
To illustrate for those who may not know what the issue is with third 
/ make

>> c: make object! [a: 'print b: "hi"]
>> ? c
C is an object of value:
   a               word!     print
   b               string!   "hi"

>> spec: third c
== [a: print b: "hi"]

;Using make object! fails
>> e: make object! spec
hi
** Script Error: a needs a value
** Near: a: print b: "hi"

;Contruct works
>> f: construct spec
>> ? f
F is an object of value:
   a               word!     print
   b               string!   "hi"
Anton
25-Jan-2006
[3207]
Henrik, PATH is a function used internally by rebol but probably 
accidentally exposed globally.
Luca
25-Jan-2006
[3208]
'Construct!!!!! How long I've searched for you. :-) Thank you Gabriele
Gabriele
25-Jan-2006
[3209x2]
Coccinelle: the only info available about read-io return codes is 
in the async case. from async:// :
0 or -1: peer closed (ssl:// seems to consider -1 an error and not 
close)
-2: error
-3: would block (i.e. no data ready)
< -3: error
Pekr
26-Jan-2006
[3211x5]
I tried Carl's site monitor - Gismo, but it converts sites to tcp 
ports, instead of staying with http ... how can I easily add proxy 
support to manually constructed tcp port? I do remember some tricks 
with subport where actually port is, but can't make it work easily 
...
looking at sterling's proxy script, I somehow can't understand that 
sub-port concept :-) Looking at rebol core manual, it does not make 
my life any easier :-) Although I can understand the concept of root-protocol 
and how to establish new scheme, it does not help with understanding 
of lower level issues ...
maybe that is why DocKimbel was thinking about dividing port model 
into two layers ....
simply put - scheme model is not so complicated, you can even rather 
easily go and use tpc and udp ... but unless you need something like 
a proxy support ....
can I prevent the black shell window appearance? I try to call/console 
"ping 10.0.0.10", but the black window always appears ...