作者reader (读者)
看板CSSE
标题Re: [问题] Tracking code 的工具?
时间Sat Jul 2 13:06:15 2005
※ 引述《giive (lala)》之铭言:
: 这个我反而不是很喜欢
: 以前觉得萤幕大,code应该一次看的比较多
: 但是当我使用17'LCD之後
: 我发现到其实看的code变多,其实并不会增加performance
: 因为资料量变多,search的时间相对也会变慢
: 人的眼睛能注意的东西是有限的,放那麽多code只会增加眼睛的overhead
: 目前采用vim的folding,跟注解技巧
这我知道,但我的程式码个别函式的行数都太少,用 folding 并不会
有很大帮助。
另外就是我需要大量的自定义 syntax coloring, 而 Notepad++ 没有
支援,就继续用没有 folding 功能的 EditPlus 了。
vim 系列也没有 customized syntax coloring, 就不用。
除了 folding 之外,自定义的 bookmark 也很需要,却更是没有一个
editor 支援。我本来是自己做了工具程式,功能也是愈加愈多,但是
後来觉得没有自己的 editor 真不方便,好多想要的功能都没有,就
想说趁什麽时候自己做一个,反倒是拖了下来。
: : 至此,我已不需要任何辅助工具,再怎样也不会比眼睛一扫来得快,并且
: : 区块之间,也都会手动加上辅助用的、长短不一的区隔线,不同的长度有
: : 不同的意思,并不会很容易看到眼花。
: reader大可不可以show一下你的code
: 还蛮好奇长的什麽样子的:p
因为会超过 80 字元,用 BBS 看会很丑。
丢一个出来好了:
#ifndef __DATA_HASH_H
#define __DATA_HASH_H
#ifndef __DATA_H
#include <data.h>
#endif
#ifndef __DATA_SMAP_H
#include <data/smap.h>
#endif
// [01010000] package struct declarations ---------------------------------
pt struct hash;
// [01010001] package struct definitions ----------------------------------
//
// hash : one index can have more than one data
//
loop_0p(hash_size) { nint r = d.size(); czz(r); rt r + s_uint + s_uint; }
loop_1p(hash_save, port) { nint r = 0; _add(pa.s(n)); _add(d.save(pa)); rr; }
loop_3p(hash_loop1, uint, xloop<T>, lint) { wint t(pa, n); lint r = pb.work(t, d); ife(r) { pc = r; re; } pc += r; rz; }
find_3p(hash_find1, uint, xfind<T>, lint) { wint t(pa, n); lint r = pb.work(t, d); iff(r) { pc = r; rz; } re; }
xloop_1q(hash_loop, xloop<T>) { lint r = 0; d | +hash_loop1<T>(n, pa, r); rr; }
xfind_1q(hash_find, xfind<T>) { lint r = nerr; d | +hash_find1<T>(n, pa, r); rr; }
pt struct hash: pub data {
mt pool< smap<T> > d;
smap<T>* op () (uint n) { rt d(n); }
smap<T>& op [] (uint n) { rt d[n]; }
T* op () (uint a, uint b) { smap<T>& p = d(a); czz(p); rt (*p)(b); }
uint put(uint a, R b) { rt self[a] < b; }
bool cut(uint n) { rt d.cut(n); }
nint fini() { rt d.fini(); }
uint size() ct { rt d | +hash_size< smap<T> >(); }
nint load(port&);
nint save(port&);
lint op | (xloop<T>& c) { rt d | +hash_loop< smap<T>, T>(c); }
lint op | (xfind<T>& c) ct { rt d | +hash_find< smap<T>, T>(c); }
hash<T>& op | (pass< hash<T> >& p) { rt p.work(self); }
};
// [01011001] package function templates ----------------------------------
// hash --------------------------------------------------------------
//
// load: no init()
//
// load ---------------------------------------------------------
pt nint hash<T>::load(port& p) {
nint r = 0;
nint s = 0;
uint n = 0;
loads(p, s, 1);
wl(r < s) { _add(p.read(n)); _add(self[n].load(p)); }
rr;
}
// save ---------------------------------------------------------
pt nint hash<T>::save(port& p) { ctt; nint r = 0; _add(p.s(size())); _add(d | +hash_save< smap<T> >(p)); rr; }
#endif // __DATA_HASH_H
像这样子,连空白在内共 82 行,正好一个画面。
功能是做一个可以用任意 unsigned int 对应到另一资料型别的 hash
table.
可以增加删除 key 和 data, 输出输入、可以用 pipe 方式
外挂回圈和搜寻或其他处理功能。
功能并不完整,但做为基础资料型别,已经可以用了。有实际作用的
程式码,包含 {} 只有 29 行。
但自定义的东西太多,已经接近另一种语言了。我程式库中大部分的
模组都是长得像这样,长度也差不多如此。
下一版程式库,就会引进前置处理的 script 工具了,并且会以 cell
model 为主,像这样的程式码,往後也将不多见了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.222.173.29
1F:推 jeunder:可否把程式库放出来大家观摩一下 ^^ 61.230.216.91 07/03