Макрос tswitch
От: IROV..  
Дата: 12.02.05 13:41
Оценка:
#    include <stdio.h>
#    include <string>

/*
[tswitch( T , V )]
T - тип перебора.
V - значение с которым сравниваем.
*/
#    define tswitch( T , V )\
    if( int __tswitch_check = 0 );\
    else for(\
        const T &__tswitch_value(V);\
        __tswitch_check == 0;\
        ++__tswitch_check )\
    {int __tswitch_open = 0;

#    define tcase( D )\
    }if( __tswitch_open || __tswitch_value == D ){__tswitch_open = 1;

#    define tdefault break;__tswitch_open = 0;};
#    define tbreak break;__tswitch_open = 0;


void main()
{
    
    std::string name = "True";

    tswitch(std::string, name)
    {
        tcase("True")
        tcase("Vasya")
        {
            printf("fff");
        }tbreak;


        tcase("Guull")
            printf("ggg");
        tbreak;

        tdefault
            printf("dds");    
    }
}


Вот выставил на критику..
Имеет ли это шанс на жизнь?

Есть ограничение.. =(

tdefault
    printf("dds");


tdefault Обязателен.. и обязательно в конце! =)

А так кажеться.. все ок. =)

З.Ы. Есть вариант где можно перебрать масивы. ([],STL)
FOR_EACH(_Winnie) + tswitch(IROV..) = tforswitch;
я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.