-
+105
- 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
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
//All mouse messages have to be passed to the Master Edit Control
//because the panel intercepts them.
if (m.Msg == PUtils.WM_MOUSEMOVE)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_LBUTTONDOWN)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_LBUTTONUP)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_LBUTTONDBLCLK)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_MOUSELEAVE)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_RBUTTONDOWN)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_MOUSEACTIVATE)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
}//Override WndProc
паубивав бы !!!
63F45EF45RB65R6VR,
23 Ноября 2012
-
+74
- 1
- 2
- 3
- 4
- 5
- 6
private static class NullReader extends Reader {
public int read(char[] cbuf, int off, int len) {
return 0;
}
public void close() {}
}
Однажды понадобилось работать с модулем, который что-то читает с помощью StreamTokenizer, но вместо реального файла подсовывать ему что-то своё, генерируемое на ходу, и при этом быть в курсе, какое место он сейчас читает. Решил пронаследоваться от StreamTokenizer и переопределить ему nextToken(). Оказалось, что у StreamTokenizer нет пустого конструктора, надо обязательно вызвать super и передать туда какой-нибудь Reader. Попробовал передавать null - оказалось, что в его конструкторе стоит проверка, которая сразу кидает NullPointerException. Блин, зачем ему Reader, если он к этому Reader никогда не обратится, ведь я nextToken переопределил! Пришлось сделать свой Reader-заглушку. Но чтобы пронаследоваться от абстрактного Reader, нужно обязательно определить методы read и close. Вот такая шняга в итоге получилась. Недавно случайно открыл код на этом месте и долго на неё пялился :-)
GoblinAlchemist,
23 Ноября 2012
-
+123
- 1
val ret = method.invoke(this, args:_*)
Превращаем Array[Any] в жабовый Object[] в Scala.
myaut,
23 Ноября 2012
-
+15
- 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
#include <iostream>
#include <functional>
template<class Container, class F, class A>
auto accumulate(Container c, F f, A acc) -> A
{
auto id = [](const A& a) -> const A& {return a;};
typedef decltype(std::begin(c)) Iterator;
const std::function<A(const Iterator& lst, const std::function<A(const A&)>&)> doIt =
[&](const Iterator& lst, const std::function<A(const A&)>& cont) -> A
{
if(lst==c.end())
return cont(acc);
else
{
auto conter=[&](const A& acc) -> A {return cont(f(*lst, acc));};
return doIt(lst+1, conter);
}
};
return doIt(std::begin(c), id);
}
int main() {
std::cout<<accumulate({1,2,3,4}, std::plus<int>(), 0);
return 0;
}
Похоже написал какой-то монадолог.
http://ideone.com/y4Dm9z
Пример использования accumulate сам накатал.
Я побаловался с этим примером, чтобы разобраться и GCC ожидаемо упал:
http://ideone.com/XWfuoP
Я убежден, что эта функция должна была выглядеть как-то так:
template<class Container, class F>
accumulate(const Container& c, const F& f=std::plus<decltype(*(std::begin(c)))>(), const decltype(*(std::begin(c))) acc=decltype(*(std::begin(c)))()) -> decltype(*(std::begin(c)))
{
return std::accumulate(c.begin(), c.end(), acc, f);
}
//Вызов этой функции:
accumulate({1,2,3,4});
Ну и я погуглил на тему этого говнокода и нашел на функциональном языке похожий:
let fold_right func acc list =
let rec loop list cont = //сюда мы передаем текущую функцию континуации
match list with
|[] -> cont acc //а вот и наше ключевое вычисление.
|head::tail -> loop tail (fun racc -> cont (func head racc))
loop list (fun x -> x)
LispGovno,
23 Ноября 2012
-
+128
- 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
data Mode = Start | Read | Skip | End
data State = State Mode String String [String]
space c = elem c [' ', '\n', '\r', '\f', '\t', '\v', '\160']
end r = State End "" "" r
skip t r = State Skip t "" r
get t w r = State Read t w r
start t = State Start t "" []
step (State Start at@(t:ts) w r)
| space t = step $ skip at r
| otherwise = step $ get at w r
step (State Read at@(t:ts) w r)
| space t = step $ skip at $ r ++ [w]
| otherwise = step $ get ts (w ++ [t]) r
step (State Skip at@(t:ts) _ r)
| space t = step $ skip ts r
| otherwise = step $ get at "" r
step (State Start "" _ r) = step $ end r
step (State Read "" w r) = step $ end $ r ++ [w]
step (State Skip "" _ r) = step $ end r
step (State End _ _ r) = r
words' text = step $ start text
Решил все-таки выложить этот позор. Если есть предложения по улучшению - с радостью выслушаю.
Fai,
23 Ноября 2012
-
−91
- 1
- 2
// synthesize viewController
@synthesize viewController;
Никогда еще комментарии не были столь информативны.
tirinox,
22 Ноября 2012
-
−98
- 1
- 2
- 3
- 4
- 5
- 6
- 7
#import <Foundation/Foundation.h>
int main () {
BOOL b1 = 71151208, b2 = 107155712;
printf ("b1 is %s; b2 is %s.", (b1 ? "true" : "false"), (b2 ? "true" : "false"));
return 0;
}
Ох, как же я эпично выстрелил себе в ногу.
byss,
22 Ноября 2012
-
+146
- 1
<input name="login" type="text" id="imageName" value="Image Name" onblur="if (this.value == ''){this.value = 'Image Name'; }" onfocus="if (this.value == 'Image Name') {this.value = '';}"/>
А вот так, нужно делать плейсхолдеры к инпутам.
Starkua,
22 Ноября 2012
-
+72
- 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
public void load()
{
for(Language lang : Language.VALUES)
{
strings.put(lang, new HashMap<String, String>());
File f = new File(Config.DATAPACK_ROOT, "data/string/strings_" + lang.getShortName() + ".properties");
if(!f.exists())
{
log.warn("Not find file: {}", f.getAbsolutePath());
continue;
}
LineNumberReader reader = null;
try
{
reader = new LineNumberReader(new FileReader(f));
String line = null;
while((line = reader.readLine()) != null)
{
if(line.startsWith("#"))
continue;
StringTokenizer token = new StringTokenizer(line, "=");
if(token.countTokens() < 2)
{
log.error("Error on line: " + line + "; file: " + f.getName());
continue;
}
String name = token.nextToken();
String value = token.nextToken();
while(token.hasMoreTokens())
value += "=" + token.nextToken();
Map<String, String> strings = this.strings.get(lang);
strings.put(name, value);
}
}
catch(Exception e)
{
log.error("Exception: " + e, e);
}
finally
{
try
{
reader.close();
}
catch(Exception e)
{
log.error("Cannot close reader", e);
}
}
}
log();
}
java.util.Properties? Нет, не слышали :)
EvSpirit,
22 Ноября 2012
-
+134
- 1
- 2
- 3
- 4
- 5
- 6
- 7
private static readonly SortedDictionary<Type, ModelConvertor> ModelTypes = new SortedDictionary<Type, ModelConvertor>
{
{ typeof(ObjectType), в => Convert((ObjectType)в) },
{ typeof(ObjectBodyFormat), пятницу => Convert((ObjectBodyFormat)пятницу) },
{ typeof(PropertyId), набухаюсь => Convert((PropertyId)набухаюсь) },
{ typeof(PropertyCategory), нафиг => Convert((PropertyCategory)нафиг) }
};
Сегодня случайно заметил этот крик души в мониторе одного коллеги. Всё-таки, в юникодных идентификаторах есть свой неуловимый шарм...
roman-kashitsyn,
22 Ноября 2012