- 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);
}
}
Крестушки раскрестушились, а подраться не решились.
Под катом ещё несколько вариантов.
LispGovno 19.01.2014 11:44 # 0
LispGovno 19.01.2014 11:47 # −7
LispGovno 19.01.2014 11:48 # −4
Реквестирую спойлер.
LispGovno 19.01.2014 11:50 # −6
LispGovno 19.01.2014 11:51 # −3
И суда спойлерок докиньте плис.
LispGovno 19.01.2014 12:30 # 0
LispGovno 19.01.2014 13:12 # −6
http://ideone.com/PwPQVt
Похоже парень исправился.
LispGovno 19.01.2014 13:12 # +3
Оправдание этого человека, что написал этот код умиляет:
Я не отрицаю что написал говнокод, но ведь боевые роботы стоят, китайцы на подходе к пентагону. Я не мог смотреть как никто не может их спасти и ложится спать с мыслью что утром китайцы уже все захватят.
TarasB 19.01.2014 13:25 # +3
laMer007
Kartonagnick
kipar
Да вы все тут упоротые!
defecate-plusplus 19.01.2014 13:29 # +3
ну тогда хотя бы ссылки можно было приложить, а то в принципе до сих пор нихуя не понятно что происходит
TarasB 19.01.2014 13:35 # +6
- Скажи крестобля-а-адь, а ты на чём пишешь, на Дельфях?
- Нет - отвечает Крестоблядь - я пишу на креста-а-а-ах! Хахахахах а ты ахахахаха наверное ахахахахах пишешь на сишапре?
- Нет, отвечает ей первая крестоблядь, я пишу на крестах хахахаха
TarasB 19.01.2014 13:35 # +3
http://www.gamedev.ru/flame/forum/?id=184999
bormand 19.01.2014 13:51 # +3
Писать на крестах как на сишке из-за мифической возможности портануть на сишку...
TarasB 19.01.2014 13:52 # 0
kegdan 19.01.2014 14:47 # 0
Что, и такие есть? Я думал они вымерли.
Вообще как-то глупо, ведь до сих пор пытаются тянуть эту"обратную совместимость"
bormand 19.01.2014 14:51 # +3
Но это будет именно сишная либа, к крестам она не имеет никакого отношения. Разве что совместимость с крестами еще больше ограничит, и запретит юзать некоторые возможности сишки.
kegdan 19.01.2014 14:55 # 0
bormand 19.01.2014 14:59 # 0
Можно :) Просто некоторым извращенцам хочется ее компилировать крестокомпилятором, а не просто скомпилить сишкой и прилинковать. А *.h в любом случае должен быть c++-aware, иначе ее будет неудобно цеплять.
kegdan 19.01.2014 15:05 # +2
http://www.italki.com/
LispGovno 19.01.2014 18:08 # +1
Даже приходится погромче фильмы делать и желательно в наушниках. Всякие шумы или параллельные разговоры в фильмах мешают дико. А ещё хочется помедленнее дикторским голосом. В общем не суть. Тоже не умею в тихий английский. Интересно как от этого избавится?
Я вот думаю песни на английском начать учить и петь в караоке барах или на застольях. Главное девушкам нравится и всегда буду душой компании. Так разговорный подтяну может (русский c девочками :D ). Ещё вот думаю к мормонам сходить. Видил, они у нас чистые англичане. Можно поговорить с носителем языка.
bormand 19.01.2014 18:15 # +2
Видимо только больше слушать.
> Я вот думаю песни на английском начать учить и петь
http://www.youtube.com/watch?v=oHg5SJYRHA0
LispGovno 19.01.2014 18:17 # 0
Это же мая любимая)))00
LispGovno 19.01.2014 18:13 # 0
LispGovno 19.01.2014 18:16 # 0
LispGovno 19.01.2014 18:37 # 0
1024-- 19.01.2014 19:34 # +2
Хм, и правда. Ещё пару месяцев назад было как-то упорото, а сейчас открыл и удивился.
Голос изменился, читает лучше. Но пока с интонацией проблемы. Хотя, ещё пару лет, и допилят.
LispGovno 19.01.2014 19:47 # +1
eth0 19.01.2014 21:00 # +3
Один раз я разговорился с "носителем языка". Он начал говорить, что вот у этих такой акцент, у этих вот такой. Я же сказал ему, что для меня акцента всего два - тот, который я понимаю, и тот, который нет.
roman-kashitsyn 19.01.2014 15:06 # +2
Пример - libclang.
LispGovno 19.01.2014 15:09 # 0
roman-kashitsyn 19.01.2014 15:10 # +3
kegdan 19.01.2014 15:11 # −1
kegdan 19.01.2014 15:12 # 0
LispGovno 19.01.2014 15:13 # +3
Сразу видно, что на сайте собрались потриоты. Небось скоро заправят трактор, раз первая же мысль о защите родного пентагона. Нет вот чтобы родину так защищать!
LispGovno 19.01.2014 17:15 # 0
Не знаю что там происходит, но начало где-то здесь
http://www.gamedev.ru/flame/forum/?id=184999&page=14#m195
и до конца страницы (и на следующей вроде сам код). Там был какой-то призыв для защиты человечества от больших человека подобных роботов и защиты пентагона.
bormand 19.01.2014 17:20 # +1
P.S. Лень читать тред, старый я стал. Да и на ГК, имхо, крестосрачи повеселее.
LispGovno 19.01.2014 17:27 # +1
Ну я подумал это само собой разумеющееся, что на сервер мусор не отправляют. Вы же понимаете, что AcceptData пентагона отправит кроме содержимого самого банка памяти ещё и размер этого банка и контрольную сумму. По неизвестной причине пентагон очень удивится, что к ним пришел дамп банка памяти размером много превышающий все известные им спроектированные узлы банков памяти для всех известных им моделей больших человекоподобных роботов. К Вам лично сам пентагон обратился поправить этот баг.
Вы наверняка попросили пентагон поменять функцию AcceptData, но в ответ пентагон сказал, что у нас критическая ситуация. Через три дня роботу выполнять миссию, которую не возможно отложить, как докладывают военные аналитики Любые отсрочки приведут к большим потерям денежных средств и\или человеческих ресурсов (вам очевидно, что пентагон имел ввиду жизни). Для успешного выполнения этой миссии необходим функционал, для работы которого должен быть реализован модуль, отправляющий данные из банков памяти в пентагон.
AcceptData содержит пару сотен строк кода, но реализация установлена законодательно (тупые бюрократы). Чтобы поменять эту функцию необходимо: разрешить изменить эту функцию на всех уровнях бюрократии, изменить эту функцию, переписать все тесты и провести их, переписать и проверить все стандарты и спецификации, где упоминается эта функция, провести испытания. Военные инженеры предполагают, что пока удастся все это сделать - пройдет около четырех дней. Это не допустимо. Теперь вы единственный человек, кто может спасти эту миссию.
bormand 19.01.2014 17:26 # +1
P.S. К концу треда они таки изобретут итераторы?
LispGovno 19.01.2014 17:35 # +1
Вообще ни разу не упомянули.)))00
kegdan 19.01.2014 18:00 # +3
TarasB 19.01.2014 18:13 # 0
Просто в ++03 индексами удобнее
TarasB 19.01.2014 18:02 # +2
LispGovno 19.01.2014 18:11 # 0
bormand 19.01.2014 17:40 # +1
Это ж бесполезная функция, которая работает только для массивов известной длины, которых в крестопрогах почти не бывает, если не брать в рассчет лабы и тестовую херню...
P.S. Кстати, а что будет, если натравить эту хрень на VLA? :) А вот это, кхм, API надо прям повешать на стену и подписать "никогда не пиши так, не приноси будущее в жертву ради сиюминутной выгоды".
LispGovno 19.01.2014 17:42 # +1
Не скомпилируется, имхо. Да и в стандарте крестов вла нет.
bormand 19.01.2014 17:45 # +1
TarasB 19.01.2014 13:36 # +5
http://www.youtube.com/watch?v=NAn1t39eG9A
bormand 19.01.2014 17:49 # 0
Блин, я думал ты выложил туда код про ОБЧР и пентагон ;)
Stertor 20.01.2014 22:46 # 0
Dummy00001 19.01.2014 23:43 # +5