digitalmars.D - std.boxed
- bobef (2/2) May 19 2005 So what is the use of these boxes? I can not undestand? Can someone help...
- Unknown W. Brackets (5/9) May 19 2005 Boxing is basically wannabe loose typing. It's for use when you want to...
- Andrew Fedoniouk (21/28) May 19 2005 Synonims:
- Ben Hinkle (6/29) May 19 2005 I agree Box is like discriminated unions in that they store data whose t...
- Andrew Fedoniouk (22/61) May 19 2005 :) Well, well, well, back to roots....
- bobef (6/35) May 20 2005 So why don't we just use void*-s? Their content is also know at run time...
- Unknown W. Brackets (14/19) May 20 2005 The idea is simply to have a class to put both a void* in and a
- bobef (2/21) May 20 2005
- Ben Hinkle (7/9) May 20 2005 A small clarification: an important feature is that integer types like i...
- Paul Bonser (9/62) May 24 2005 Dang, I'm gone for a while, and a neat feature like this gets added...
So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...
May 19 2005
Boxing is basically wannabe loose typing. It's for use when you want to pass something around without the baton holders having to know the type of it. It's like a void*, except with type information. Or, so I understand. -[Unknown]So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...
May 19 2005
So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...Synonims: VARIANT, discriminated union. Box is a structure which stores polymorphic data (not known at compile time) Typically implemented as struct box { byte type; // type of data in the box union { int intVal; double dblVal; void* ptrVal; } data; int getIntData() { if(type == INT) return data.intVal; .... } double getDblData() { .... } } Almost all scripting languages use kind of boxes as a representation of values. Andrew. "bobef" <bobef_member pathlink.com> wrote in message news:d6is5q$2gt9$1 digitaldaemon.com...So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...
May 19 2005
"Andrew Fedoniouk" <news terrainformatica.com> wrote in message news:d6jglj$2v9l$1 digitaldaemon.com...I agree Box is like discriminated unions in that they store data whose type is only known at run time but I wouldn't say it's a synonym since as you pointed out in a previous thread unions wrap a small number of known types and Boxes wrap all types. Maybe I'm nit-picking...So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...Synonims: VARIANT, discriminated union. Box is a structure which stores polymorphic data (not known at compile time) Typically implemented as struct box { byte type; // type of data in the box union { int intVal; double dblVal; void* ptrVal; } data; int getIntData() { if(type == INT) return data.intVal; .... } double getDblData() { .... } } Almost all scripting languages use kind of boxes as a representation of values. Andrew.
May 19 2005
I agree Box is like discriminated unions in that they store data whose type is only known at run time but I wouldn't say it's a synonym since as you pointed out in a previous thread unions wrap a small number of known types and Boxes wrap all types. Maybe I'm nit-picking...:) Well, well, well, back to roots.... ... let me to take my place on the rostrum... ok... (who the hell left this chalk here?) .... khm-khm.... Dear students! ... Discriminated union is such a type (especially an algebraic data type) might be described as a discriminated union if it is a sum type whose objects consist of a tag to say which part of the union they belong to and a value of the corresponding type. ... (Hooh, too long statement... not for use in MSDN...) To be serious: Andrew's Alexandrescu discriminated unions implementation based on type lists is just a particular case of them. The Box is another implementation of DU limited by type system of D language. :-P Andrew. "Ben Hinkle" <ben.hinkle gmail.com> wrote in message news:d6jiik$306n$1 digitaldaemon.com..."Andrew Fedoniouk" <news terrainformatica.com> wrote in message news:d6jglj$2v9l$1 digitaldaemon.com...I agree Box is like discriminated unions in that they store data whose type is only known at run time but I wouldn't say it's a synonym since as you pointed out in a previous thread unions wrap a small number of known types and Boxes wrap all types. Maybe I'm nit-picking...So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...Synonims: VARIANT, discriminated union. Box is a structure which stores polymorphic data (not known at compile time) Typically implemented as struct box { byte type; // type of data in the box union { int intVal; double dblVal; void* ptrVal; } data; int getIntData() { if(type == INT) return data.intVal; .... } double getDblData() { .... } } Almost all scripting languages use kind of boxes as a representation of values. Andrew.
May 19 2005
So why don't we just use void*-s? Their content is also know at run time. I mean we know what we put in there so we know what we expect to put out. Or at least most of the cases. Anyway I think I understand it better now but I still can't think of any use.. I don't say it is useless I just can't think of one in this moment... In article <d6jglj$2v9l$1 digitaldaemon.com>, Andrew Fedoniouk says...So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...Synonims: VARIANT, discriminated union. Box is a structure which stores polymorphic data (not known at compile time) Typically implemented as struct box { byte type; // type of data in the box union { int intVal; double dblVal; void* ptrVal; } data; int getIntData() { if(type == INT) return data.intVal; .... } double getDblData() { .... } } Almost all scripting languages use kind of boxes as a representation of values. Andrew. "bobef" <bobef_member pathlink.com> wrote in message news:d6is5q$2gt9$1 digitaldaemon.com...So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...
May 20 2005
The idea is simply to have a class to put both a void* in and a TypeInfo, essentially. The use might be for something like this: Box coolfunction(int mode) { if (mode == 1) return box(5); elseif (mode == 2) return box("testing"); else return box(false); } Or similar. For class members too. -[Unknown]So why don't we just use void*-s? Their content is also know at run time. I mean we know what we put in there so we know what we expect to put out. Or at least most of the cases. Anyway I think I understand it better now but I still can't think of any use.. I don't say it is useless I just can't think of one in this moment...
May 20 2005
Thanks. I understand now. It is cool. I like it. In article <d6k5fl$fda$1 digitaldaemon.com>, Unknown W. Brackets says...The idea is simply to have a class to put both a void* in and a TypeInfo, essentially. The use might be for something like this: Box coolfunction(int mode) { if (mode == 1) return box(5); elseif (mode == 2) return box("testing"); else return box(false); } Or similar. For class members too. -[Unknown]So why don't we just use void*-s? Their content is also know at run time. I mean we know what we put in there so we know what we expect to put out. Or at least most of the cases. Anyway I think I understand it better now but I still can't think of any use.. I don't say it is useless I just can't think of one in this moment...
May 20 2005
"Unknown W. Brackets" <unknown simplemachines.org> wrote in message news:d6k5fl$fda$1 digitaldaemon.com...The idea is simply to have a class to put both a void* in and a TypeInfo, essentially.A small clarification: an important feature is that integer types like ints, longs and doubles and array-references (ptr + length) are stored "inline" meaning what is stored is not a void* pointing to an int but the actual int is stored. So it is very efficient to pass around boxes of small types like ints.
May 20 2005
bobef wrote:So why don't we just use void*-s? Their content is also know at run time. I mean we know what we put in there so we know what we expect to put out. Or at least most of the cases. Anyway I think I understand it better now but I still can't think of any use.. I don't say it is useless I just can't think of one in this moment... In article <d6jglj$2v9l$1 digitaldaemon.com>, Andrew Fedoniouk says...Dang, I'm gone for a while, and a neat feature like this gets added... This'll be great for implementing a scripting language in my game engine.. :) -- -PIB -- "C++ also supports the notion of *friends*: cooperative classes that are permitted to see each other's private parts." - Grady BoochSo what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...Synonims: VARIANT, discriminated union. Box is a structure which stores polymorphic data (not known at compile time) Typically implemented as struct box { byte type; // type of data in the box union { int intVal; double dblVal; void* ptrVal; } data; int getIntData() { if(type == INT) return data.intVal; .... } double getDblData() { .... } } Almost all scripting languages use kind of boxes as a representation of values. Andrew. "bobef" <bobef_member pathlink.com> wrote in message news:d6is5q$2gt9$1 digitaldaemon.com...So what is the use of these boxes? I can not undestand? Can someone help me... maybe a little example and explanation why it is needed? Thank you...
May 24 2005