Оцените библиотеку для работы с реестром

Тема в разделе "LANGS.C", создана пользователем _DEN_, 9 май 2009.

  1. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Красивый интерфейс. Даже придраться не к чему особо. :) Но exception'ы прикрутить надо обязательно.
     
  2. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Респект.
    Тоже залез в тред с целью предраться, но даже не придумал к чему)
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Для перечисления параметров нужны итераторы.
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Ustus
    Booster

    О чем вы говорите, это же ахтунг)))


    Ну вообще-то всю жизнь юзалась функция RegQueryValueEx. Функция RegGetValue появилась только с W2k3/WXP64.


    На счет операторов - все несколько интереснее. Т.к. функции енумерации работают по индексу, то есть мысль сделать итераторы рандомными, на оператор [] возложить доступ к чайлдам, и предоставить функции ::empty и ::size. Тоже самое относится и к значениям.


    О каких параметрах идет речь? Ключи (keys) сейчас перебираются итераторами. Значения (values) - тоже. Что такое "параметр"?
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Почему?

    Не понял связи.

    Снова не понял логики. Реестр - дерево, параметры(имя, значение). Зачем в принципе тут нужен произвольный доступ по индексу? Что это даст?

    Да values. Плохо посмотрел.
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Можешь привести хотя бы одну уважаемую библиотеку (читай - stl, boost, loki), где в _паблик интерфейсе_ точит какая конструкция?


    Связь здесь очень простая. Цель либы - обобщить работу с реестром наиболее естественным образом с точки зрения семантики языка C++. Реестр - штука которая есть только под виндой. Соответсвенно, с либой будет работать человек, который 1) умеет работать с реестром под виндой и 2) "знает" язык С++. Помимо всего прочего, библиотека должна быть максимально проста. Один из методов достижения простоты - оправдывание интуитивных ожиданий пользователя от ее публичного интерфейса. Иными словами, если человек всю жизнь писал RegQueryValueEx, то вполне логично предположить, что именно "query" будет тем именем, которое покажется пользователю, знакомому с работой с реестром, наиболее естественным и подходящим. Мои рассуждения в чем-то грешат?


    Опять же, оправдывание ожиданий. Апи предоставляет рандомный доступ по индексу, следовательно человеку, знакомому с RegAPI, логично ожитать некоего подобного поведения и от библиотеки. Любая подсистема так или иначе предоставляет какой-то набор концепций. Обобщая работу с подсистемой каким-то высокоуровневым способом, очень желательно не отрубать эти концепции, если на это нет действительно веских оснований.
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Она торчит пользовательском коде. Ничего не вижу плохого в шаблоне члене оператора. Дело не в синтаксисе, а в удобстве. Я не настаиваю на этом методе, но лично мне было-бы удобно его иметь.

    Проблемы microsoft, что они считают реестр бд. Для меня же более естественно, работать с библиотеками унифицированным образом, и требовать чтобы пользователь до этого работал с RegQueryValue несколько странно. Я например давно не работал с реестром, и уже забыл что там RegQueryValue и искал get. К тому-же этому интерфейсу по-моему ничто не мешает быть кросплатформенным, по крайней мере с виду.

    Рандомный доступ там сделан для перечисления, более не для чего он не нужен. У нас для этого есть итераторы. Ради чего поддерживать ненужный интерфейс? Разве человек не будет знать как работать с итераторами? Отрубать нужный функционал действительно не стоит, но зачем тащить не нужный. Интересно почему в stl всем контейнерам не сделали рандомного доступа, наверно были на то причины.

    Это конечно моё имхо, но лично я предпочитаю делать как можно более универсальные, не завязанные на внутренней реализации фейсы. Это как минимум более удобно, и сохраняет пользователю библиотеки немного времени и нервов.
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Тебе не кажется, что у тебя слишком много аргументов начинается с "Но для меня... Но лично мне... Для меня же..."? :derisive:

    Еще непонятно, по какому принципу, руководствуясь какими объективными критериями, ты с такой легкостью разделил функциональность на "нужную" и "ненужную"? Опять "лично для меня..."? :derisive:

    Конечно! Массивы в большинстве языков имеют доступ с константной сложностью. От оператора [] ожидается константная (или _хотя_бы_ логарифмическая, то есть "почти константная") сложность исполнения. У контейнера не будет такого оператора если он не в состоянии справиться с такими требованиями (Или если такой оператор просто не имеет смысла - std::multimap). Если мне апи предоставляет индексированный доступ к чему-либо, то я вправе ожидать константной, или хотя бы логарифмической сложности доступа. Нет никаких объективных причин, которые запретили бы рассматривать определенный этаж дерева как плоский вектор.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Это плохо?

    Вроде я аргументировал. Давай ещё раз. Индекс принимает только RegEnumKey.
    Because subkeys are not ordered, any new subkey will have an arbitrary index. This means that the function may return subkeys in any order. Всё это говорит о том, что назначение индекса только перечисление. Но есть же итераторы, зачем иметь абсолютно идентичный интерфейс? Чтобы доступ был идентичен виндовому реестру? Зачем? Ты фанат mfc?
    Разве не лучше стремиться к стандартному С++ интерфейсу, а не симбиозу WinApi + C++?

    Рассматривай, но опять, для чего?
     
  10. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    По идее Booster прав, если бы для интерфейса ставилась цель быть идентичной интерфейсу предоставляемому апи ф-циями для работы с реестром, то хватило бы просто написать класс-враппер над ними и все...
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Это необъективно. Пока ты что-то делаешь для себя - это одно, тут нормально. Если же ты делаешь что-то для всех - это совсем другое, тут плохо.


    Не только. Еще RegEnumValue.


    TSS

    Такая задача не ставится. Вообще, нужна ли тут семантика вектора, я пока что не решил. Этот вопрос имеет более так скажем глубокие корни. Нужно проанализировать модель и понять, где интерфейс апи-функций является просто интерфейсом апи-функций, а где интерфейс говорит о существовании некоторой концепции. Не все так просто.


    Кстати, Booster, оператор [] с явным вызовом и указанием типа - это слишком маргинальных ход конем. Никто из уважаемых людей такие вещи в паблике не выставляет.
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    _DEN_
    Ну и что там(где ?) секретного скажи, щаc опишем и выложем если нужно будет.
     
  13. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Гы :) Просто некошерно.
     
  14. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    А я думал что бан в Гугле это сказки )
    Windows Registry Library
     
  15. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    J0E

    А я думал что шутки про бан в гугле уже устарели лет 10 назад. Так себе библиотечка-то.
     
  16. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Дело не в смешно, поинт в том, что ты не первый, а Гугла 10 лет назад не было :)

    А про библиотечку написал бы, что там так себе, а? Без этого критика ближе к старческому ворчанию. Как по мне (я исходники ни от одной не видел) stlsoft в разы лучше твоей, поскольку юзабельна.