- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
#include <iostream>
using namespace std;
// -- robot`s internal closed implementation --
int data1[] = { 0, 1, 2 }; char data2[] = { 42 };
// -- robot`s API
const int *GetMechaData1() { return data1; }
size_t GetMechaData1Size() { return 3; }
const char *GetMechaData2(){ return data2; }
size_t GetMechaData2Size() { return 1; }
// -- pentagon`s internal closed implementation --
//--------------------если T равно U, то результат будет D, а иначе - G------------//
template<class T, class U, class D, class G> struct SelectIF { typedef G type; };
template<class T, class D, class G> struct SelectIF<T, T, D, G> { typedef D type; };
// -- pentagon`s API
enum { eMAXBUFER = 200 * sizeof(int) };
template<class T, size_t N>void AcceptData(const T(&src)[N])
{
typedef typename SelectIF<T, char, int, T>::type Cast;
enum { is_char = std::is_same<T,char>::value };
cout << "received data:\n";
const size_t num = (N<eMAXBUFER) ? N : eMAXBUFER;
if (is_char)
for (size_t n = 0; n < num; ++n)
cout << "char code = " << (Cast)src[n] << " : char = '" << src[n] << "'\n";
else
for (size_t n = 0; n<num; ++n)
cout << "item = " << src[n] << endl;
}
// client code
template<class T, size_t N> struct Adapter
{
typedef Adapter<T, N + 1> Next;
void Pass(const T* data, const size_t num)
{
if (N < num)
{
Next().Pass(data, num);
return;
}
T(&arr)[N] = reinterpret_cast< T(&)[N] > (mBuf);
for (size_t n = 0; n< N; ++n) arr[n] = data[n];
AcceptData(arr);
}
size_t mLen;
T mBuf[eMAXBUFER];
};
template<class T> struct Adapter<T, eMAXBUFER>
{
void Pass(const T* data, const size_t)
{
for (size_t n = 0; n< eMAXBUFER; ++n) mBuf[n] = data[n];
AcceptData(mBuf);
}
size_t mLen;
T mBuf[eMAXBUFER];
};
Adapter<int, 1> adapter1;
Adapter<char, 1> adapter2;
int main()
{
{
const auto data = GetMechaData1();
const auto num = GetMechaData1Size();
adapter1.Pass(data, num);
}
{
const auto data = GetMechaData2();
const auto num = GetMechaData2Size();
adapter2.Pass(data, num);
}
}
Крестушки раскрестушились, а подраться не решились.
Под катом ещё несколько вариантов.
Реквестирую спойлер.
И суда спойлерок докиньте плис.
http://ideone.com/PwPQVt
Похоже парень исправился.
Оправдание этого человека, что написал этот код умиляет:
Я не отрицаю что написал говнокод, но ведь боевые роботы стоят, китайцы на подходе к пентагону. Я не мог смотреть как никто не может их спасти и ложится спать с мыслью что утром китайцы уже все захватят.
laMer007
Kartonagnick
kipar
Да вы все тут упоротые!
ну тогда хотя бы ссылки можно было приложить, а то в принципе до сих пор нихуя не понятно что происходит
- Скажи крестобля-а-адь, а ты на чём пишешь, на Дельфях?
- Нет - отвечает Крестоблядь - я пишу на креста-а-а-ах! Хахахахах а ты ахахахаха наверное ахахахахах пишешь на сишапре?
- Нет, отвечает ей первая крестоблядь, я пишу на крестах хахахаха
http://www.gamedev.ru/flame/forum/?id=184999
Писать на крестах как на сишке из-за мифической возможности портануть на сишку...
Что, и такие есть? Я думал они вымерли.
Вообще как-то глупо, ведь до сих пор пытаются тянуть эту"обратную совместимость"
Но это будет именно сишная либа, к крестам она не имеет никакого отношения. Разве что совместимость с крестами еще больше ограничит, и запретит юзать некоторые возможности сишки.
Можно :) Просто некоторым извращенцам хочется ее компилировать крестокомпилятором, а не просто скомпилить сишкой и прилинковать. А *.h в любом случае должен быть c++-aware, иначе ее будет неудобно цеплять.
http://www.italki.com/
Даже приходится погромче фильмы делать и желательно в наушниках. Всякие шумы или параллельные разговоры в фильмах мешают дико. А ещё хочется помедленнее дикторским голосом. В общем не суть. Тоже не умею в тихий английский. Интересно как от этого избавится?
Я вот думаю песни на английском начать учить и петь в караоке барах или на застольях. Главное девушкам нравится и всегда буду душой компании. Так разговорный подтяну может (русский c девочками :D ). Ещё вот думаю к мормонам сходить. Видил, они у нас чистые англичане. Можно поговорить с носителем языка.
Видимо только больше слушать.
> Я вот думаю песни на английском начать учить и петь
http://www.youtube.com/watch?v=oHg5SJYRHA0
Это же мая любимая)))00
Хм, и правда. Ещё пару месяцев назад было как-то упорото, а сейчас открыл и удивился.
Голос изменился, читает лучше. Но пока с интонацией проблемы. Хотя, ещё пару лет, и допилят.
Один раз я разговорился с "носителем языка". Он начал говорить, что вот у этих такой акцент, у этих вот такой. Я же сказал ему, что для меня акцента всего два - тот, который я понимаю, и тот, который нет.
Пример - libclang.
Сразу видно, что на сайте собрались потриоты. Небось скоро заправят трактор, раз первая же мысль о защите родного пентагона. Нет вот чтобы родину так защищать!
Не знаю что там происходит, но начало где-то здесь
http://www.gamedev.ru/flame/forum/?id=184999&page=14#m195
и до конца страницы (и на следующей вроде сам код). Там был какой-то призыв для защиты человечества от больших человека подобных роботов и защиты пентагона.
P.S. Лень читать тред, старый я стал. Да и на ГК, имхо, крестосрачи повеселее.
Ну я подумал это само собой разумеющееся, что на сервер мусор не отправляют. Вы же понимаете, что AcceptData пентагона отправит кроме содержимого самого банка памяти ещё и размер этого банка и контрольную сумму. По неизвестной причине пентагон очень удивится, что к ним пришел дамп банка памяти размером много превышающий все известные им спроектированные узлы банков памяти для всех известных им моделей больших человекоподобных роботов. К Вам лично сам пентагон обратился поправить этот баг.
Вы наверняка попросили пентагон поменять функцию AcceptData, но в ответ пентагон сказал, что у нас критическая ситуация. Через три дня роботу выполнять миссию, которую не возможно отложить, как докладывают военные аналитики Любые отсрочки приведут к большим потерям денежных средств и\или человеческих ресурсов (вам очевидно, что пентагон имел ввиду жизни). Для успешного выполнения этой миссии необходим функционал, для работы которого должен быть реализован модуль, отправляющий данные из банков памяти в пентагон.
AcceptData содержит пару сотен строк кода, но реализация установлена законодательно (тупые бюрократы). Чтобы поменять эту функцию необходимо: разрешить изменить эту функцию на всех уровнях бюрократии, изменить эту функцию, переписать все тесты и провести их, переписать и проверить все стандарты и спецификации, где упоминается эта функция, провести испытания. Военные инженеры предполагают, что пока удастся все это сделать - пройдет около четырех дней. Это не допустимо. Теперь вы единственный человек, кто может спасти эту миссию.
P.S. К концу треда они таки изобретут итераторы?
Вообще ни разу не упомянули.)))00
Просто в ++03 индексами удобнее
Это ж бесполезная функция, которая работает только для массивов известной длины, которых в крестопрогах почти не бывает, если не брать в рассчет лабы и тестовую херню...
P.S. Кстати, а что будет, если натравить эту хрень на VLA? :) А вот это, кхм, API надо прям повешать на стену и подписать "никогда не пиши так, не приноси будущее в жертву ради сиюминутной выгоды".
Не скомпилируется, имхо. Да и в стандарте крестов вла нет.
http://www.youtube.com/watch?v=NAn1t39eG9A
Блин, я думал ты выложил туда код про ОБЧР и пентагон ;)