Няшная / Говнокод #29082 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
// https://github.com/AlexCeleste/C99-Lambda
// # C99-Lambda: nested functions, lambdas, and closures, in ISO C99

// https://github.com/AlexCeleste/C99-Lambda/blob/57583080392d5f3f626034bbb3292eb0070ba304/c_lambda.h#L110
// Internal lambda builder functions

#define FN_8CL_ARG_TYPE(T) , T

#define FN_8FEXP(call, p, f, R) { FN_8GETTYPE_8fn f = fn f; call(M_ID p M_IF(M_2ORMORE R, (_fun, M_REST_ R), (_fun))); }
#define FN_8CLEXP(call, p, c, R) { void * _fun = cl c; call(M_ID p M_IF(M_2ORMORE R, (_fun, M_REST_ R), (_fun))); }

#define FN_8EMIT_NS(N, H, B, Q) FN_8EMIT_NS_((FN_8GET_NL(N, B)), H, (M_ZIP_W2(FN_8EMIT_ELEM, B, M_ILIST)), Q)
#define FN_8EMIT_NS_(NL, H, BL, Q) (8ZIPNE,(NL, BL, Q), FN_8EMIT_BODY(NL, H, BL))

#define FN_8GET_NL(N, B) M_ZIP_W2(FN_8GET_NL_1, M_ENLIST(_8anon_##N##_, M_NARGS B), M_ILIST)
#define FN_8GET_NL_1(A, B) , M_CONC_(A, B)
#define FN_8EMIT_BODY(NL, H, BL) M_ID H M_ZIP_WITH(FN_8EMIT_BLOCK, BL, NL)

#define FN_8EMIT_ELEM(E, _) ,M_CONC_(FN_8EMIT_, E)
#define FN_8EMIT_8blk(...) (1, 0, __VA_ARGS__)
#define FN_8EMIT_8fn(...) (0, 0, __VA_ARGS__)
#define FN_8EMIT_8cl(...) (0, 1, __VA_ARGS__)
#define FN_8EMIT_BLOCK(P, N) M_IF(M_FIRST P, (M_REST2 P), (FN_8EMIT_NAME((M_REST P, r, a, o), N)))
#define FN_8EMIT_NAME(P, N) M_IF(M_FIRST P, (FN_8EMIT_CL(N, M_ID P)), (N))
#define FN_8EMIT_CL(...) FN_8EMIT_CL_(__VA_ARGS__)
#define FN_8EMIT_CL_(n, _, r, a, o, ...) (void*)&(struct n##_env_t){ \
  n,sizeof(struct n##_env_t) M_FOR_EACH(FN_8CL_SND, M_ID o) }
#define FN_8CL_SND(P) , M_REST_ P

#define FN_8EMIT_ENV(E, Q) (8DO_Q, (Q), FN_8EMIT_ENV_(E))
#define FN_8EMIT_ENV_(n, rt, a, o) struct n##_env_t { \
  FN_8CTYPE(rt, n, a, _fun); size_t _size; M_FOR_EACH(FN_8FLDS, M_ID o) };
#define FN_8FLDS(F) M_FIRST_ F M_REST_ F;
#define FN_8CL_DEC(rt, n, a) static rt n(void * _envV, M_ID a) { struct n##_env_t * _env = _envV; 

#define FN_8FTYPE(rt, C, a, pn) rt(* C pn)a
#define FN_8CTYPE(rt, n, a, pn) rt(* pn)(void *, M_ID a)
#define FN_8FN_TYPE(F) M_CONC(FN_8GETTYPE_, M_FIRST(M_REST((F))))
#define FN_8GETTYPE_8fn(rt, a, ...) rt(* _fun)a
#define FN_8CLSZ(T, N) T M_CONC(_, N);

#define FN_8ZIPNE(NL, BL, Q) (8FLTNE, ((M_ZIP_W2(FN_8ZIPNE_, NL, BL)), Q))
#define FN_8ZIPNE_(N, B) ,(M_FIRST_ B, N, M_REST_ B)

#define FN_8FLTNE(EL, Q) (8POPEM, ((0 M_FOR_EACH(FN_8FLTNE_, M_ID EL)), Q))
#define FN_8FLTNE_(E) M_IF(M_FIRST_ E, (), (,(M_REST_ E)))

#define FN_8POPEM(FL, Q) M_IF(M_2ORMORE(M_ID FL), ((8F2NS, ((M_REST_ FL), Q))), ((8DO_Q, (Q))))

#define FN_8F2NS(FL, Q) (8DO_Q, ((M_FOR_E2(FN_8F2NS_1, M_ID FL), M_ID Q)))
#define FN_8F2NS_1(F) ,FN_8F2NS_2 F
#define FN_8F2NS_2(n, isC, rt, a, ...) M_IF(isC, \
  ((8EMIT_NS_NX, (n, (FN_8CL_DEC(rt, n, a)), M_REST(__VA_ARGS__))), (8EMIT_ENV,(n, rt, a, M_FIRST(__VA_ARGS__)))), \
  ((8EMIT_NS_NX, (n, (static rt n a), __VA_ARGS__))))

#define FN_8DO_Q(Q) (M_ID(M_FIRST_ M_FIRST_ Q),(M_ID M_REST_ M_FIRST_ Q, (M_REST_ Q)))

#define FN_8EMIT_NS_NX(...) (8EMIT_NS, (__VA_ARGS__))

Ммм, дерьмецо

Запостил: j123123 j123123, (Updated )

Комментарии (82) RSS

  • Ну справедливости ради это internal, и ты не обязан это всё пчитать, но я не понимаю: автору самому удобно типа писать макросы с именами типа `FN_8EMIT_CL_`?

    ЗЫ:
    >...you probably really shouldn't abuse poor innocent C in this way.
    this^^

    Серьезно, зачем вы доебались до старого системного языка, и тащите туда смузи?


    PPS: А вообще может быть у автора есть конвенция наименования, и если ее изучить, то всё станет на свои места
    Ответить
      • 1. Убрать старые восьмеричные литералы давно пора, ибо они часто являются источниками ошибок. Нужно сделать по аналогии с шестнадцатеричными или как в языке Ада (если кому-то восьмеричные нужны).

        2. Диапазоны в case нужны. Для сравнения в Паскале начали вводить диапазоны повсюду, но на полпути остановились. Но даже то, что Вирт успел сделать, уже удобно.

        3. Проблема брейка в циклах существует, надо решать.

        4. А вот усложнение ифа — какое-то говно и не нужно. Иф должен быть лаконичным. В сишке хватает странной конструкции for.
        Ответить
        • Серьёзно, у for содержимое первого аргумента можно вынести перед циклом, а последнего — перенести в тело. Ну ладно, первый аргумент можно оставить для сохранения блочности. А третий чем отличается от тела цикла?
          Ответить
        • Тоже заметил. Элгэбэтэшникам мало сосать хуи и ебаться в жопу, им хочется на каждом перекрёстке орать о своей сексуальной ориентации. Зачем они заявляют о себе на ресурсах для программистов? Чтобы их программами нормальные люди не пользовались?
          Ответить
          • Прикиньте, было бы такое правило, что TLD должен отражать сексуальные предпочтения владельца?

            Допустим, был бы форум `devops.anal`
            или `seo.watersport` (лучше тебе не гуглить что такое watersport, если ты не знаешь)

            или например svtv.pedo
            Ответить
            • > 14-летняя кобыла
              > .редо
              Ебать ты льстец!
              Ответить
              • Эфебофилы почти такие же мудаки, как педофилы. Нафиг их различать?
                Ответить
                • Нет, эфебе давно замуж пора, но мешают кафирские положняки (введённые жирными котами типа мануфактурщика Энгельса, между прочим).
                  Ответить
              • гологуб у нас теперь ещё и либертарианец?
                Ответить
                • Да. Ебать детей и любить диктатуру путина -- вот главные ценности либертарианства.

                  Кто против -- тот левак.
                  Ответить
          • >There is some sort of perverse pleasure in knowing that it's basically impossible to send a piece of hate mail through the Internet without its being touched by a gay program. That's kind of funny.
            — Eric Allman
            Ответить
            • После того, как появился «Postfix», «Sendmail» больше не нужен.
              Ответить
              • Там была серия "ненужностей".

                Сначала был qmail. Там чувак сделал миллион отдельных процессов, которые все друг-другу не доверяют, и стало безопасно. Потом он окуклился.

                Потом появились exim и postfix (он кстати тоже делает сложную эквилибристику чтобы не работать от рута, там тоже много процессов с разными правами).

                Когда я последний раз проверял, Sendmail был еще MTA по-умолчанию во фряхе. Но там вообще консерваторы с бородами до пупа: там например csh до сих пор.
                Ответить
                • Да, 100500 процессов, запущенных от разных пользователей, я у Постфикса заметил. Но даже со всем этим оверинжинирингом он никогда не занимал всю оперативку, как это иногда делал sand male.
                  Ответить
                • > Sendmail был еще MTA по-умолчанию во фряхе.

                  Один пидор написал Sendmail, его сопидар написал фряху.

                  Зашкварно таким пользоваться.
                  Ответить
            • Есть некоторое извращенное удовольствие знать что невозможно написать критический комментарий про "PHP" на сайте говнокод не затронув его движок на "PHP".
              Ответить
          • Гологубу и Макаке можно, почему тогда другим нельзя
            Ответить
    • Я тоже против состояния гонки в коде.
      Ответить
      • --Что ты сейчас слушаешь?
        --Б.Дилана
        --О, мне тоже нравится Дима Билан
        --не пиши мне больше
        Ответить
          • Цимерман это пианюга который:? Или из фюрерских холуев?
            Ответить
          • Будем честны, Гологуб: все мы немного циммерман. Настоящих нордических ариейцев довольно мало.
            Ответить
            • Даже в верхушке Третьего Рейха не все были истинными арийцами (вроде ты Кукрыниксов приносил).
              Ответить
        • То есть ты понемногу начинаешь понимать, что Б. Дилан и Д. Билан это примерно одно и то же?
          Ответить
          • Б. Дилан позиционировался как голос протеста, а Д. Билан — как попса голимая. А как всё на самом деле — х. з.
            Ответить
            • P.S. Я понимаю, что протест коммерчески успешным быть не может, значит, где-то наёбка.
              Ответить
  • Сын начальника Свердловской железной дороги Павла Бурцева стал жертвой телефонных мошенников, отдав им деньги в разной валюте на 27 миллионов рублей. Об этом сообщает Telegram-канал Baza.

    По его информации, преступники связались с 22-летним Алексеем во вторник, 11 марта, заявив, что ему нужно обновить привязку телефона к порталу «Госуслуги».
    Ответить
  • иканус, а ты пробовал Лёпадо­тэмахо­сэляхо­галео­кранио­лейпсано­дрим­юпо­триммато­сильфио­карабо­мэлито­катакэхю­мэно­кихль­эпи­коссюфо­фатто­пэристэр­алектрюон­опто­кэфаллио­кинклё­пэлейо­лягоо­сирайо­бафэ­трагано­птэрю́гон?
    Ответить
      • Имею желание купить машину, но не имею возможности
        Ответить
    • Это учебная коза, она беленькая.
      Ответить
    • Грустная история это то, что ты сам плюшевая обезьяна
      Ответить
      • Какой же ты токсичный говноед! Я в за Интернет плачу чтбы меня тут обсирали что ли??
        Ответить
        • Хуй знает, зачем ты за него платишь. Даже вчитываться в то, что копипастишь, не хочешь

          Например, про

          > погибшую мать

          это пиздёж
          Ответить
          • > это пиздёж
            и правда пиздеж: он брошенный
            Ответить
  • «Вавилонское братство» — это тайная организация, созданная рептилоидами (или одной из их рас) с целью централизовать их власть на Земле.
    Ответить
  • А зачем здесь дефайны?
    Ответить
  • А почему утка-утка-уйди такое бесполезное говно? Почему чтобы я ни уткил -- одна хуйня находится. Просто блядь словно бы я откатился в альтавитсту образца 2001-го года. Гугл блядь настолько же лучше утки, насколько хром лучше четвертого эксплорера.
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8