Т.е. ты выполнял генерацию, а затем смотрел, отличается ли результат генерации от предшествующего результата?
Имхо, такой способ хорош, когда скоростью самой генерации можно пренебречь. И когда результат генерации не размазывается по нескольким файлам. А так же хорош, когда сам генератор меняется -- тогда при неизменной конфигурации все равно получается новое содержимое и файлы перезаписываются.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>Т.е. ты выполнял генерацию, а затем смотрел, отличается ли результат генерации от предшествующего результата?
Да. Тупо в лоб.
E>Имхо, такой способ хорош, когда скоростью самой генерации можно пренебречь.
В принципе да. У меня как-то всё быстро генерировалось, хотя там из базы данных много инфы забиралось.
E>И когда результат генерации не размазывается по нескольким файлам.
Я во все функции генерации передавал std::ostream&, и изначально он указывал на std::ofstream, потом переделал на std::ostringstream для борьбы с ошибками в середине генерации, а потом ещё доделал проверку, что содержимое реально изменилось.
Я не вижу вариантов, как может быть размазана генерация, т.ч. нельзя было применить такой приём. В любом случае сгенерированный файл должен записываться атомарно и целиком, что бы не было частично сгенерированных файлов.
E>А так же хорош, когда сам генератор меняется -- тогда при неизменной конфигурации все равно получается новое содержимое и файлы перезаписываются.
Меня результат более чем устроил. Максимально просто и никаких засад.
Здравствуйте, Left2, Вы писали:
R>>Но вот сейчас я подумал, что С++ в простейшем случае легко придать свойство скриптовости: L>Можно, но зачем нам искуственно делать то что скрипты умеют делать естественным образом? R>>Было бы неплохо. Можно даже не задачку, а просто кусочек задачи. L>Если хочешь — давай попробуем. Чтобы было совсем кратко и понятно предлагаю след. задачу: L>Название — "именованые enum-ы". L>Содержание — входной XML-файл содержит структуру след. вида: L>На выходе — h-файл вида L>и cpp-файл вида L>Думаю, задачка как раз для того чтобы сравнить удобство подходов к кодогенерации :) Небольшая (я намеренно ничего не усложнял) и при этом ИМХО вполне показательная.
За неимением под рукой парсера XML на C++, предположу, что кто-то добрый уже превратил XML-код в что-то вроде std::map<std::string, std::map<std::string, int> > (или в нечто, по чему можно так же ходить итераторами).
Здравствуйте, eao197, Вы писали:
E>Как это сделать с помощью макросов и шаблонов -- я не знаю.
ну вот видите, свои недостатки в квалификации восполняете весьма сомнительным образом, но пытаетесь убедить при этом, что предложенное вами решение офигенно правильное и безгрешное.
Здравствуйте, Qbit86, Вы писали:
Q>А функция str()
namespace boost {
template<class Ch, class Tr, class Alloc> inline
std::basic_string<Ch, Tr, Alloc> str(const basic_format<Ch, Tr, Alloc>& f) {
// adds up all pieces of strings and converted items, and return the formatted stringreturn f.str();
}