dememax: (glider)
Как в glib, в GStreamer имя "parent_class" используется для определения первого поля структуры нового класса, например:
struct _GTypeModuleClass
{
  GObjectClass parent_class;
...
Для нового элемента в GStreamer используется макро G_DEFINE_TYPE (которое раскрывается в DEFINE_TYPE_EXTENDED) из GObject:
https://gitlab.gnome.org/GNOME/glib/-/blob/main/gobject/gtype.h
Read more... )
Update: Совсем забыл сказать, для чего это всё делается (define ..._parent_class parent_class), чтобы не писать длинно:
G_OBJECT_CLASS (some_class_parent_class)->finalize (object);
а коратко
  G_OBJECT_CLASS (parent_class)->finalize (object);
Всё!
Но иногда в исходнике других упоминаний parent_class нет вообще, и это ещё больше меня расстраивает.
Зачем?!
"Один ответ на это есть!" Boilerplate! В смысле, copy-past technology!

Update 2: Мло того, есть ещё и в обратную сторону:
> git grep -n -H -E "^ *# *define +parent_class +.*_parent_class *$" | wc
    146     438   16605
> git grep -n -H -E "^ *# *define +.*_parent_class +parent_class *$" | wc
    748    2244   83736


https://mpd.livejournal.com/190287.html
Имеется код примера:
void function(int * array, int index)
{
    array[index] = 23;
}

int main(void)
{
    int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    function(array, 75);
    return 0;
}
Вопрос: как штатными средствами выявить выход за пределы массива в функции примера? (штатными: т.е., взял и поставил недостающий пакет в систему; компилятор, линкер, valgrind, ...)
Условие: изменить пример - не предлагать. Read more... )
Долго не мог понять, почему кросс-компиляция пакета, который зависит от libpcap приводит к тому, что включаются заголовочные файлы из хоста (/usr/include вместо локальных для кросс-компиляции).

Нашёл, что откуда-то появляется "-I/usr/include" в CXXFLAGS. Read more... )
dememax: (Hacker Emblem)
Да, что-то я не думал, что для отправки через сишный libcurl сжатого содержимого с помощью gzip по http(s) на Линуксе будет столько проблем.
Думал, ну, поставлю там какой-то признак у библиотеки при отправке - "сжать таким-то способом" - и всё! А фиг там! Read more... )
void MediaLookupTable::generateNewName(char* mediumName,
				       unsigned /*maxLen*/) {
  // We should really use snprintf() here, but not all systems have it
  sprintf(mediumName, "liveMedia%d", fNameGenerator++);
}
dememax: (ночь)
...и один из мировых лидеров производителей SoC на ARM предлагал добавлять в код ядра линукс такое:
enum enable_disable_t {
	DISABLE,
	ENABLE
};
https://gitorious.org/medium_platform/linux/source/69a118f042a7b05b831e07348e0a8ed3142f3923:include/media/davinci/dm365_ipipe.h#L1164
(это я взял рафинированный пример, где ни добавить, ни убавить; в последних версиях ядра, как можно догадаться, этот тип упразднён с заменой на bool)

P.S.: Дорогие френды! Обескуражен реакцией на публикацию.
На просьбу о помощи - никто не отреагировал (по крайней мере, в он-лайне), а тут, на какое-то снобистское ворчание - уже трое высказали своё несогласие с посылкой поста.
Видимо, всё же я - сошёл с ума... :-(
Мне и вправду сейчас на испытательном сроке - нелегко.
Думаю, многие из вас в курсе, что в NPTL механизм pthread_cancel() реализован с помощью исключений. Таким образом, следует избегать нейтрализации catch(...).

Знающие люди, а скажите, есть ли в мелко-мягкой среде какие-то подводные камни, из-за которых тоже следует избегать такой нейтрализации?

Заранее благодарен! :-)

Update: Обратные ссылки: alextutubalin: Об исключениях (C++)
ASCII Code Chart. Anomie, 29 August 2008

(Натолкнула на размышления вот эта строка из chrome/content/filterClasses.js проекта Adblock Plus. В POSIX API regcomp()/regexec() всё также работает, как и в JavaScript.)


Почему срабатывает следующее выражение?
> echo "a.b" | grep -E '[ -#]'
a.b
Ведь в ASCII и UTF-8 точка находится после диеза.
Поправить легко:
> echo "a.b" | LANG= grep -E '[ -#]'

Оказывается, это устойчивое поведение.
> touch 'a ' ; touch 'a!' ; touch 'a"' ; touch 'a#' ; touch 'a.' ; touch 'a,'
> ls
a   a,  a!  a.  a"  a#
> LANG= ls
a   a!  a"  a#  a,  a.


Братцы, как называется эта Collating sequence для этих знаков, отличная от ASCII/Unicode?

Update: http://www.collation-charts.org/ (Спасибо Яше!)
Specially for [livejournal.com profile] kirhgoff

Господа, а кто знает, какие библиотеки контейнеров (списки, хэштейблы, мэпы, ...) существуют для обычных сей, да так, чтобы их можно было бы использовать во встроенных средах, без специфичных особенностей GCC (и иже с ним)?

Что является стандартом де-факто сейчас для Си?

Спасибо!
(написано в ответ на Re: C++ умирает... из предыдущего поста)
1. Я решил скачать openjdk-7-ea-src-b39-06_nov_2008 и посмотреть на некоторые разделы (значимые на мой личный взгляд) кодовой базы в разрезе файлов с расширениями java, h, c, hpp, cpp (такой разрез не говорит обо всём, но он говорит о многом). Вот, что у меня получилось.Read more... )В этой связи возникает вопрос о будущем сей относительно будущего плюсов, явы, Erlang и Haskell.
* Upd: Взял CCCC версии 3.1.4 чтобы посчитать две дополнительные колонки: кол-во строк кода и комментариев. Не спрашивайте меня о гарантиях правильности подсчета этих колонок, обращайтесь к авторам CCCC. И парочку файликов пришлось выкинуть, т.к. CCCC зависал или падал.

Дайджест блога '11
Самая лучшая программа состоит из "пустой инструкции".
Read more... )

Update: См. [:]||||[:] Юрий Нестеренко: Почему глючат программы?

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 4th, 2025 07:11 pm
Powered by Dreamwidth Studios