Thread overview
Voldemort command structures
Apr 22, 2012
Gor Gyolchanyan
Apr 22, 2012
Gor Gyolchanyan
April 22, 2012
Voldemort types (coined by Andrei Alexandrescu) are types, which can't
be named. Like so:

auto getMisteriousData(int i)
{
    struct Mysterious
    {
        int i;
    }

    return Mysterious(i);
}

The only way to use mysterious structure is to either do this:

auto m = getMysteriousData(12);

or

ReturnTypeOf!getMysteriousData m;

Here's a very handsome use case of this setup:

class Set(T)
{
public:
    auto opIndex(T datum_)
    {
        struct Command
        {
        public:
            alias _datum this;

            bool contains() @property
            {
                return (_datum in _set) !is null;
            }

            void add()
            {
                _set._data[_datum] = false;
            }

            void remove()
            {
                _set._data.remove(_datum);
            }

        private:
            Set _set;
            T _datum;
        }
    }

private:
   bool[T] _data;
}

this will allow you do use Set class like this:

auto s = new Set!int;
assert(!s[6].contains);
s[6].add();
assert(s[6].contains);
s[6].remove();
assert(!s[6].contains);

This will get even better if the voldemort Command structure, returned by opIndex would include the same pattern, allowing to chain the parameters and actions in any way desirable.

-- 
Bye,
Gor Gyolchanyan.
April 22, 2012
On 4/22/12 5:24 AM, Gor Gyolchanyan wrote:
> Voldemort types (coined by Andrei Alexandrescu)

Walter did.

Andrei

April 22, 2012
Sorry. In any case this allows to effectively specify the parameters before the method being called.

On Sun, Apr 22, 2012 at 5:23 PM, Andrei Alexandrescu <SeeWebsiteForEmail@erdani.org> wrote:
> On 4/22/12 5:24 AM, Gor Gyolchanyan wrote:
>>
>> Voldemort types (coined by Andrei Alexandrescu)
>
>
> Walter did.
>
> Andrei
>



-- 
Bye,
Gor Gyolchanyan.