расширенный препроцессор
От: niXman Ниоткуда https://github.com/niXman
Дата: 24.11.15 20:31
Оценка:
наверняка многие заметили, что я не равнодушен к препроцессору. но, в последнее время я становлюсь ленивым(старость, наверное)...и хочется препроцессора, чтоб не использовать boost.preprocessor, а можно было бы просто писать:
#ifdef __SUPER_PREPROCESSOR_NAME__

#define my_iterate(seq, proc) \
   for i in seq: \
      proc(i)

#define my_proc(i) \
   if i%2 == 0:
      std::cout << i << std::endl;

my_iterate((2)(6)(1)(9), my_proc)

#endif // __SUPER_PREPROCESSOR_NAME__


думается мне, этого можно запросто добиться, и, при этом, не ломая стандартный препроцессорный код.

кто-то встречал сабж?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 24.11.2015 21:24 niXman . Предыдущая версия . Еще …
Отредактировано 24.11.2015 21:23 niXman . Предыдущая версия .
Re: расширенный препроцессор
От: niXman Ниоткуда https://github.com/niXman
Дата: 24.11.15 21:09
Оценка:
вроде как boost.wave предназначен для сабжа. попробую кое-что расширить...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 24.11.2015 21:10 niXman . Предыдущая версия .
Re: расширенный препроцессор
От: Evgeny.Panasyuk Россия  
Дата: 24.11.15 21:23
Оценка: 7 (2) +1
X>кто-то встречал сабж?

http://nedbatchelder.com/code/cog/
https://www.python.org/about/success/cog/
Re[2]: расширенный препроцессор
От: Tasheehoo  
Дата: 25.11.15 11:05
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>http://nedbatchelder.com/code/cog/

EP>https://www.python.org/about/success/cog/

это даже лучше!
Re[2]: расширенный препроцессор
От: niXman Ниоткуда https://github.com/niXman
Дата: 25.11.15 17:14
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>http://nedbatchelder.com/code/cog/

EP>https://www.python.org/about/success/cog/

хм...интересная идея...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: расширенный препроцессор
От: enji  
Дата: 30.11.15 08:05
Оценка: +1
Здравствуйте, niXman, Вы писали:

X>хм...интересная идея...


штука удобная, вот только дефайны в ней недоступны.

Жаль все ж, что препроцессор остановился в развитии
Re: расширенный препроцессор
От: Sheridan Россия  
Дата: 01.12.15 12:03
Оценка:
Здравствуйте, niXman, Вы писали:

X>наверняка многие заметили, что я не равнодушен к препроцессору. но, в последнее время я становлюсь ленивым(старость, наверное)...и хочется препроцессора, чтоб не использовать boost.preprocessor, а можно было бы просто писать:


Я для подобного свой на перле писал...
void CMembers::memberAdd()
{
  if(DF_REQUEST_IS_POST)
  {
    DF_STOP_IF_NO_AUTH
    DFDB_R newmember = DFDB_Q("new_member", "insert into members ("
                                "name, "
                                "password, "
                                "email, "
                                "division_id"
                              ") values ($1, $2, $3, $4) returning id",
                               (postValue("fio"))
                               (postValue("pw"))
                               (postValue("email"))
                               (postValue("division_id")));
    int memberID = CMS_SQL_LAST_INSERT_ID(newmember);
    DFDB_R creator = DFDB_Q("member_name", "select name from members where id=$1", (DF_SESSION_MEMBER_ID_INT));
    updateChangelog(memberID, "member_created",
                    "Зарегестрирован пользователь <a href='/members/show/" + std::to_string(memberID) + "'>" + postValue("fio") + "</a>");
    setMemberRights(std::to_string(memberID), "task", "can_add", true);
    response().set_redirect_header("/members/", cppcms::http::response::see_other);
  }
  else
  {
    putBaseHeader();
    HTML
    (
      <!++
      <panel++ [Добавление пользователя] [ ] [visible] [useradd]>
       <f++ memberEditForm(<s++/members/add++s>); ++f>
      <++panel>
      ++!>
    );
    putBaseFooter();
  }
}

Обрабатывает оно у меня код между <!++ и ++!>.
Было дело, да До сих пор использую
Matrix has you...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.