[WT] [Архив] [Поиск] [Главная] [Управление]
[Совместно с IIchan.ru]

[Назад]
Ответ в нить

Имя
Адрес  [sage] [noko]
Animapcha image [?]
Тема   (reply to 391)
Сообщение
Файл 
Пароль  (для удаления файлов и сообщений)
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаемые типы файлов: 7Z, BZ, GIF, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP
  • Максимально допустимый размер файлов: 10000 кБ.
  • Изображения, размер которых превышает 200 на 200 пикселей, будут уменьшены.
  • Ныне 1672 unique user posts. Посмотреть каталог
  • Радио:

Файл: 1.png-(2KB, 200x200, 124486476116.jpg, 317 x 372, madskills_progerepta..png)
391 No. 391 watch
Накидал за ночь удобный враппер?
Потратил драгоценные месяцы своей жизни и десятки блоков курева на фреймворк?
Набрал команду программистов на удаленной основе, дождался, пока они напишут движок, и свалил с исходниками?

Анон, если чуешь, что что-то твое может пригодиться общественности - расскажи здесь.
У других и такого г-вна нет, лол.
Пикрилейтед - ориджинал.
>> No. 394
Вечерком наложу своих идей, которые в жизнь воплощать раздумал.
>> No. 396
Генератор враппера
#!/usr/bin/python
import sys;

def make_separated_list(list, function, comma ):
""" Build string that consist of <comma>-separated <list>'s values"""
return "".join( function(j) + comma for j in list[:-1] ) + function(list[-1])

def generate( counter ):
# header
print """
#ifndef INCLUDED_stringof
#define INCLUDED_stringof

#include <string>
#include <sstream>
"""

# body
for items in [ range(1,i+1) for i in xrange(1,counter+1) ]:
template_arguments = make_separated_list(items, (lambda z: "class C%d" % z ), ", ")
function_arguments = make_separated_list(items, (lambda z: "const C%d& c%d" % (z,z)) , ", " )
elements_to_stream = make_separated_list(items, (lambda z: "c%d" % (z)) , " << " )

print """
template<%(template_arguments)s>
std::string stringof( %(function_arguments)s )
{
std::ostringstream oss;
oss << %(elements_to_stream)s;
return oss.str();
}
""" % locals(),

# footer
print "#endif"

items = 20
if len(sys.argv) > 1 :
items = int( sys.argv[1] )
generate( items )


Генерирует

template< class C1 >
std::string stringof( const C1& c1 ) {
std::ostringstream oss;
oss << c1;
return oss.str();
}

template< class C1, class C2 >
std::string stringof( const C1& c1, const C2& c2 ) {
std::ostringstream oss;
oss << c1 << c2;
return oss.str();
}...


используется для

throw std::logic_error(stringof(42, "это серьезно"));
и для
cout << stringof("x:", x, "y:",y).
вообщем всегда когда надо строку слепить из нескольких элементов.

Никогда не использую stream'ы без враппирования в sstringstream потому что

#include <iostream>
#include <iomanip>
using namespace std;

void printSomething() {
cout << 100 << " интернетов осталось ";
}

void debug() {
cout << "flags: " << setbase(16) << 123 << " ";
}

int main() {
printSomething();
debug();
printSomething();
}


печает
> 100 интернетов осталось
> flags: 7b
> 64 интернетов осталось
в результате чего может возникнуть вопрос "куда делись 36 интернетов"
>> No. 397
>>396
>using namespace std;
ты чо такой дерзкий, бля? а если у тебя в классе есть поле count, например, что, вместо него поюзаешь std::count и не заметишь, да?
>> No. 410
Не знаю какова вероятность, того, что такая странная хренотень может кому-то понадобится, но вот граббер данборы на позиксном sh: http://danbooru-v7sh-grabber.googlecode.com/files/danbooru-v7sh-grabber-v0.10.10.tar.gz
>> No. 411
>>396
а что,
void debug() {
cout << "flags: " << setbase(16) << 123 << setbase(10) <<" ";
}
некошерно, да? Из-за того, что жопу за собой не подтираешь, нужно скребок, отскребающий засохшее говно с жопы изобретать?
[Назад]


Удалить сообщение []
Пароль  
[Mod]