Compare commits
7481 Commits
mozilla
...
RDF_122898
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f2a2e8839 | ||
|
|
52f6f4d5a1 | ||
|
|
c677b637b6 | ||
|
|
5d8c39ce50 | ||
|
|
f21361cb3e | ||
|
|
42aa9bc7f9 | ||
|
|
c34fd0c27f | ||
|
|
07bd2f9ee6 | ||
|
|
abc417b81a | ||
|
|
ff8febe824 | ||
|
|
afb1ed2948 | ||
|
|
1eb458c7da | ||
|
|
6c96ef3896 | ||
|
|
673c7f702c | ||
|
|
4c455ebbc1 | ||
|
|
10282290fd | ||
|
|
5ea9355a9b | ||
|
|
d53d984684 | ||
|
|
b8734a45b5 | ||
|
|
9b847738cf | ||
|
|
7c10c436c0 | ||
|
|
1ebc7fb680 | ||
|
|
34561afeb7 | ||
|
|
42df988996 | ||
|
|
a8dd9145e8 | ||
|
|
abb6c1f295 | ||
|
|
ff9c9ac144 | ||
|
|
ea5f6e229a | ||
|
|
184d28ebc2 | ||
|
|
d28f565506 | ||
|
|
64e8659e27 | ||
|
|
9085556675 | ||
|
|
506a041017 | ||
|
|
51c81352d0 | ||
|
|
fc73b28758 | ||
|
|
e5f413eda3 | ||
|
|
c9d6356dfc | ||
|
|
5e4e4fdb56 | ||
|
|
2d6a3de9e3 | ||
|
|
57021a23bc | ||
|
|
e604e004c4 | ||
|
|
a9c6de3ec7 | ||
|
|
678d0ed6e5 | ||
|
|
ccc6aa4515 | ||
|
|
27c0afc13e | ||
|
|
21b9ed2c31 | ||
|
|
e370c3cc09 | ||
|
|
0a71bb099a | ||
|
|
161ae47793 | ||
|
|
11ad6e9c9c | ||
|
|
7536637d9d | ||
|
|
52ea098263 | ||
|
|
3148b3637f | ||
|
|
92ba975d5b | ||
|
|
1d9d907340 | ||
|
|
a048d3267f | ||
|
|
c993029597 | ||
|
|
352c247c47 | ||
|
|
02f470b3f3 | ||
|
|
a13f1f35ed | ||
|
|
bfc4e23f90 | ||
|
|
d6f004b496 | ||
|
|
5e1d692eb5 | ||
|
|
4b67d52cbd | ||
|
|
7619dd2856 | ||
|
|
3a99cc7efe | ||
|
|
35517fc61d | ||
|
|
130cdcb69d | ||
|
|
90d3e47bd9 | ||
|
|
a6c2c792e7 | ||
|
|
56df9f36cf | ||
|
|
73017c20d2 | ||
|
|
955afb839b | ||
|
|
a3a4d647c6 | ||
|
|
ce8208c68b | ||
|
|
c9671e9bba | ||
|
|
d42567e422 | ||
|
|
769cf19111 | ||
|
|
854344e782 | ||
|
|
1becd370fb | ||
|
|
ce4b84fbcc | ||
|
|
74e221710e | ||
|
|
0fcb272584 | ||
|
|
21d167e225 | ||
|
|
114c1127fd | ||
|
|
b7cd0f30a4 | ||
|
|
1ad5e7564c | ||
|
|
00c4f31a6b | ||
|
|
5f528c9225 | ||
|
|
d3a641e794 | ||
|
|
d2ec0bdc12 | ||
|
|
8ba2307295 | ||
|
|
a9cb9f0b22 | ||
|
|
e36cad9a5c | ||
|
|
7f437ecbfe | ||
|
|
99d79a713c | ||
|
|
ca361d5346 | ||
|
|
d3c0cc39b7 | ||
|
|
2e24b50dbc | ||
|
|
347d867084 | ||
|
|
cf06946888 | ||
|
|
db39d66d1f | ||
|
|
d9d5b90bed | ||
|
|
217aa922ce | ||
|
|
0b215739a8 | ||
|
|
1d4512da96 | ||
|
|
78a76913b4 | ||
|
|
fb9c62c186 | ||
|
|
3e7c8545c0 | ||
|
|
5328d4b161 | ||
|
|
f3ed098831 | ||
|
|
9f90b6f237 | ||
|
|
80fd5be2e5 | ||
|
|
3b905ac208 | ||
|
|
23c492b7b6 | ||
|
|
4a5704d1c0 | ||
|
|
57f09eedf2 | ||
|
|
3e235bca21 | ||
|
|
76ecad404b | ||
|
|
e650117c4c | ||
|
|
27cc3295b1 | ||
|
|
aa06f7666a | ||
|
|
8f48bade9b | ||
|
|
30f91343e8 | ||
|
|
02b9d03af9 | ||
|
|
67bd8fc314 | ||
|
|
f96cfdb03e | ||
|
|
94d75018a0 | ||
|
|
4ef7dcc47f | ||
|
|
16ba8ffa10 | ||
|
|
0a3fd98778 | ||
|
|
7c37687daa | ||
|
|
de264087db | ||
|
|
d7dd1472e3 | ||
|
|
e53697af51 | ||
|
|
cf13a281b8 | ||
|
|
63312a2e66 | ||
|
|
8d6a89039a | ||
|
|
c01e30e606 | ||
|
|
48f492804b | ||
|
|
07b775d330 | ||
|
|
3fe72dbff2 | ||
|
|
5cb83ab7ee | ||
|
|
4944d0ea91 | ||
|
|
2f9eda3303 | ||
|
|
6d4cb77b68 | ||
|
|
bf0de58b71 | ||
|
|
dd443cbb06 | ||
|
|
10eb6321ce | ||
|
|
e62164115b | ||
|
|
c820a1c9c7 | ||
|
|
d76ca7e7fd | ||
|
|
204327240f | ||
|
|
1c136e6574 | ||
|
|
bc73cb575d | ||
|
|
c9dd100667 | ||
|
|
fe9d54682f | ||
|
|
df16f1e7d5 | ||
|
|
b650c4c03e | ||
|
|
89b8ac957e | ||
|
|
9335c0e1c3 | ||
|
|
2510e8fc62 | ||
|
|
ae45b63453 | ||
|
|
ccd004b025 | ||
|
|
682406d7b4 | ||
|
|
d45d06ee56 | ||
|
|
ec8c30d2c3 | ||
|
|
93ad905243 | ||
|
|
e9d8de921a | ||
|
|
2c81f40268 | ||
|
|
7325e15f1a | ||
|
|
a6d3000998 | ||
|
|
a3e035ac09 | ||
|
|
4089c941fd | ||
|
|
827bb7fd06 | ||
|
|
5566c7e8db | ||
|
|
face2561d4 | ||
|
|
0988604c10 | ||
|
|
f7a51c375f | ||
|
|
fe4f265208 | ||
|
|
89350411d8 | ||
|
|
75ca5cb9f4 | ||
|
|
794cd7a4b6 | ||
|
|
2758f89379 | ||
|
|
5ecc02dcbc | ||
|
|
8adeb7c77a | ||
|
|
324a98029b | ||
|
|
0aa0c6bd79 | ||
|
|
9a780dd772 | ||
|
|
d076c965b5 | ||
|
|
8e05bf08c4 | ||
|
|
e14ddad715 | ||
|
|
f2861e4e64 | ||
|
|
aa4a05c843 | ||
|
|
73a072a8c0 | ||
|
|
7acb8d2cbf | ||
|
|
2fb4a870a1 | ||
|
|
604c5ec81e | ||
|
|
08b60c2fa0 | ||
|
|
30676ade73 | ||
|
|
a6eccb520c | ||
|
|
1d1b53c90d | ||
|
|
ae1573ae1b | ||
|
|
f7d614172a | ||
|
|
eea6e4ca83 | ||
|
|
3d2ee270ed | ||
|
|
406de8984a | ||
|
|
f0d639e1bc | ||
|
|
49403601af | ||
|
|
2b86e9ad34 | ||
|
|
7397117a9f | ||
|
|
3fa2aa8cd6 | ||
|
|
7caa8001b4 | ||
|
|
e734385812 | ||
|
|
b20028be50 | ||
|
|
53950b34bb | ||
|
|
09258f3d67 | ||
|
|
e7b77e958f | ||
|
|
16d2b789af | ||
|
|
c64aa75ac1 | ||
|
|
1a1dd95f2b | ||
|
|
9fe6003b44 | ||
|
|
716994af04 | ||
|
|
a677499a6f | ||
|
|
456e939d21 | ||
|
|
d3408b8d1d | ||
|
|
52a0043631 | ||
|
|
739473adbe | ||
|
|
9fc5474ec3 | ||
|
|
383389930f | ||
|
|
60f703edc5 | ||
|
|
6afb1d76a9 | ||
|
|
6a9c1924cc | ||
|
|
b3da4ac017 | ||
|
|
b9266d33d7 | ||
|
|
6c56fda631 | ||
|
|
018edaedaa | ||
|
|
8b1319e1ac | ||
|
|
380bc170be | ||
|
|
c5e9de682e | ||
|
|
8b89e99baf | ||
|
|
96867d96c4 | ||
|
|
2920c69b1b | ||
|
|
6964b62775 | ||
|
|
061f365e37 | ||
|
|
9708832dd7 | ||
|
|
c164c7f97a | ||
|
|
21d61ca5f1 | ||
|
|
8f5fd569ee | ||
|
|
970293ac91 | ||
|
|
82ccb59aef | ||
|
|
9bbcaed4ae | ||
|
|
892eb98fdb | ||
|
|
c72b56daa3 | ||
|
|
39846f5631 | ||
|
|
0ca9be168d | ||
|
|
33b627e518 | ||
|
|
527d116f03 | ||
|
|
ef0129559b | ||
|
|
4ee0d91310 | ||
|
|
00d20bc63a | ||
|
|
a4ac66b40a | ||
|
|
fe18aadf26 | ||
|
|
4f05dc99af | ||
|
|
3f9c05e76a | ||
|
|
1ef11a145a | ||
|
|
e5e296e58c | ||
|
|
275833b30d | ||
|
|
8d025021af | ||
|
|
9cf5b1d99d | ||
|
|
4b24d97a17 | ||
|
|
648ad628b7 | ||
|
|
b22c5ee5b9 | ||
|
|
440e801148 | ||
|
|
90fa7951a8 | ||
|
|
b47c186427 | ||
|
|
d3035fbd10 | ||
|
|
f02e1a1119 | ||
|
|
ce7e27ef33 | ||
|
|
eca2711718 | ||
|
|
a752804b3a | ||
|
|
cec5e973ac | ||
|
|
504aaf12bd | ||
|
|
eaee82d4b3 | ||
|
|
8f45a6eabc | ||
|
|
332b42bb81 | ||
|
|
8f2719f5aa | ||
|
|
d644ebc792 | ||
|
|
406ce1034d | ||
|
|
c29cc486d3 | ||
|
|
fc485403b5 | ||
|
|
fe1969d001 | ||
|
|
ec9059a86a | ||
|
|
1084cdf38d | ||
|
|
9c2ff0a7c5 | ||
|
|
c20c8a8180 | ||
|
|
0985cec450 | ||
|
|
dac9ae77a4 | ||
|
|
f51e5e8b7e | ||
|
|
abce0b152c | ||
|
|
cb9f7f7608 | ||
|
|
2bada305e0 | ||
|
|
c1c9a2b786 | ||
|
|
f5bb9f4438 | ||
|
|
2d0eafe945 | ||
|
|
a54fa61041 | ||
|
|
e744a5d305 | ||
|
|
a5e6d7e9b5 | ||
|
|
46ba36922f | ||
|
|
d20b401d1b | ||
|
|
8c848640b3 | ||
|
|
831aebce72 | ||
|
|
c30a7ff7e5 | ||
|
|
655a1097a6 | ||
|
|
300be32995 | ||
|
|
d062db000f | ||
|
|
41a04a213e | ||
|
|
806d3c5bf2 | ||
|
|
9b098a8dba | ||
|
|
119c41470d | ||
|
|
a6e303e89e | ||
|
|
275f8a3a95 | ||
|
|
b6db010663 | ||
|
|
bb9c01d77b | ||
|
|
32c13321e7 | ||
|
|
4f61c6e05f | ||
|
|
906a026df1 | ||
|
|
9cd50c590e | ||
|
|
d9196c8135 | ||
|
|
cee6075cda | ||
|
|
9debb42671 | ||
|
|
26e8b90813 | ||
|
|
887cbb215b | ||
|
|
eeeb204407 | ||
|
|
d43795a7a8 | ||
|
|
8da08e85fc | ||
|
|
fdae4db922 | ||
|
|
839dd30dcf | ||
|
|
3a0aa5a0b5 | ||
|
|
34407e985d | ||
|
|
16badfe907 | ||
|
|
e534e78497 | ||
|
|
261d8c4bf9 | ||
|
|
b2644a7deb | ||
|
|
3d5e302f6d | ||
|
|
bc7994a1ef | ||
|
|
a09cdf1a14 | ||
|
|
28a5884fce | ||
|
|
e0271df732 | ||
|
|
82b43093b4 | ||
|
|
cfc5177808 | ||
|
|
113beb03ea | ||
|
|
1601fdb733 | ||
|
|
396fe5cf50 | ||
|
|
c84da05ca6 | ||
|
|
59fd0fcd5b | ||
|
|
5a88b6edb8 | ||
|
|
fbc5369c73 | ||
|
|
7f10d74dd3 | ||
|
|
025e0d4ba8 | ||
|
|
c5f1d3ba49 | ||
|
|
0dcc919b64 | ||
|
|
48aa04cc90 | ||
|
|
5b9e4e49dd | ||
|
|
abf0e29960 | ||
|
|
ae484588d7 | ||
|
|
36d1bb04a4 | ||
|
|
148860a0e0 | ||
|
|
1919fa1881 | ||
|
|
92cead7b60 | ||
|
|
90d3cc2f62 | ||
|
|
bebabe6f2e | ||
|
|
182bc0bdba | ||
|
|
f76447a07f | ||
|
|
6a3999f05a | ||
|
|
53c8b2569f | ||
|
|
1de3312ae2 | ||
|
|
7dbb291b72 | ||
|
|
214410065f | ||
|
|
acd2f83b0d | ||
|
|
6fdf35b4ee | ||
|
|
d6c51785c1 | ||
|
|
00716e9f00 | ||
|
|
1d24e667da | ||
|
|
b49dbf5343 | ||
|
|
e5f25e41f7 | ||
|
|
53f91a8d74 | ||
|
|
2fdcede511 | ||
|
|
a26d808264 | ||
|
|
56e65bc685 | ||
|
|
6156f1b8bc | ||
|
|
5ecb5d5e3e | ||
|
|
9d22403d39 | ||
|
|
ae77c06acc | ||
|
|
3fcf8b76d0 | ||
|
|
1689e5634a | ||
|
|
87091d27c8 | ||
|
|
14d33feee0 | ||
|
|
81b46aab62 | ||
|
|
69cb7363fc | ||
|
|
dc02d2f159 | ||
|
|
beb59c3753 | ||
|
|
5fdb6c621c | ||
|
|
c6293b5192 | ||
|
|
e044ea58c6 | ||
|
|
1ea155fbbe | ||
|
|
54a8daa36c | ||
|
|
b8de20feb4 | ||
|
|
5f09556bb7 | ||
|
|
69c1a49b16 | ||
|
|
b3419765c0 | ||
|
|
6b50236c51 | ||
|
|
538ee8b859 | ||
|
|
47cce4fecb | ||
|
|
7e9d6c54cd | ||
|
|
1ebcf35498 | ||
|
|
6e143bcac4 | ||
|
|
fffed9ce8f | ||
|
|
6a28c25b6f | ||
|
|
41965931a0 | ||
|
|
614cfa76f7 | ||
|
|
f1f63fd300 | ||
|
|
e7c800bb2f | ||
|
|
1dea681a6e | ||
|
|
2fd20eda7f | ||
|
|
35363b3286 | ||
|
|
55e404d5a1 | ||
|
|
dd4dfe439e | ||
|
|
a0fd7823b6 | ||
|
|
51b339a051 | ||
|
|
49b19a1a67 | ||
|
|
83e04dcd25 | ||
|
|
1476b01c77 | ||
|
|
fd5d879803 | ||
|
|
70e0a8cddb | ||
|
|
5f54c1af03 | ||
|
|
a8a9f7aeaa | ||
|
|
37b2438c51 | ||
|
|
73c80e1f09 | ||
|
|
3f462d434b | ||
|
|
45e2d974e8 | ||
|
|
ef4f88d1b7 | ||
|
|
e324dbae1d | ||
|
|
0e0e29c9c8 | ||
|
|
5ba63fa656 | ||
|
|
86c67555dc | ||
|
|
f8738e790b | ||
|
|
93175a9d1a | ||
|
|
04825239b5 | ||
|
|
1716bebdaa | ||
|
|
3c043772bd | ||
|
|
b251e7edab | ||
|
|
9829ca641c | ||
|
|
7bb90048a0 | ||
|
|
0344418064 | ||
|
|
c2b7286754 | ||
|
|
436dd5e622 | ||
|
|
be3cf9b82e | ||
|
|
aa2eff126c | ||
|
|
35b781edaa | ||
|
|
ce7a472f74 | ||
|
|
48d7cbdc95 | ||
|
|
f027e45add | ||
|
|
392927ef69 | ||
|
|
ab3213f20d | ||
|
|
0be011b818 | ||
|
|
afc9ac03c5 | ||
|
|
1c0b61001a | ||
|
|
990c1c17d6 | ||
|
|
dde36d487c | ||
|
|
4348f6321d | ||
|
|
a0097337f4 | ||
|
|
c0a95f1d82 | ||
|
|
85c73e1f43 | ||
|
|
e31b2db976 | ||
|
|
a6cb99357c | ||
|
|
c3693fede6 | ||
|
|
c505b460e7 | ||
|
|
d239199ee1 | ||
|
|
8b74b7b8fe | ||
|
|
ea9f077c63 | ||
|
|
c36571afa1 | ||
|
|
fb81fd89e2 | ||
|
|
cb4a178ce1 | ||
|
|
17c732418d | ||
|
|
5c3396dcd0 | ||
|
|
150e5ffcba | ||
|
|
b18c392afc | ||
|
|
e02d2dc1c0 | ||
|
|
9e90a70671 | ||
|
|
85f23406df | ||
|
|
94e78ef4fe | ||
|
|
84459dcc40 | ||
|
|
8fbc761b21 | ||
|
|
ad0ce1c24d | ||
|
|
7ca2eba892 | ||
|
|
1197d3600f | ||
|
|
cbdcab6dab | ||
|
|
8bf4e3b0b0 | ||
|
|
550a0137e7 | ||
|
|
ddbc3a26e0 | ||
|
|
9f6c27385c | ||
|
|
e4a1b5c41f | ||
|
|
290921df31 | ||
|
|
b40d7ccdf1 | ||
|
|
3d6d1f72b8 | ||
|
|
5f60004b2a | ||
|
|
72b9fbb09b | ||
|
|
22e651792f | ||
|
|
5c2ef95d1e | ||
|
|
c429df6955 | ||
|
|
154911fa72 | ||
|
|
2e8adddd5b | ||
|
|
d2b528951f | ||
|
|
c42397f0f7 | ||
|
|
925da68c47 | ||
|
|
c7807b0694 | ||
|
|
17ee92de4e | ||
|
|
cdaaa17945 | ||
|
|
03e5647e91 | ||
|
|
4c418bae35 | ||
|
|
ee193ef351 | ||
|
|
b855c2224f | ||
|
|
5c2a49946c | ||
|
|
b3260e79f3 | ||
|
|
44872cb156 | ||
|
|
daec709396 | ||
|
|
d4a2037c77 | ||
|
|
6ddaa74f65 | ||
|
|
0d2bb86e8d | ||
|
|
0f65caf3dd | ||
|
|
7018fe3720 | ||
|
|
b079346b21 | ||
|
|
202af650d9 | ||
|
|
9b0e44bc06 | ||
|
|
f0571c2a80 | ||
|
|
d1317f2880 | ||
|
|
2ce3039b2f | ||
|
|
a7b5b1756b | ||
|
|
24118eb742 | ||
|
|
d37bc79ff0 | ||
|
|
6d68b31e76 | ||
|
|
4e857157a0 | ||
|
|
61412b1a29 | ||
|
|
c2218cb81a | ||
|
|
9e0c533ef7 | ||
|
|
196afe06c1 | ||
|
|
0fda51f903 | ||
|
|
fb8232ca54 | ||
|
|
ceee8b0c9e | ||
|
|
59448b1e96 | ||
|
|
171b21fb37 | ||
|
|
1ce1ff99f0 | ||
|
|
ca19426d30 | ||
|
|
d58d0a3921 | ||
|
|
1c1c6429fe | ||
|
|
fee6efbada | ||
|
|
c0fb04fc5f | ||
|
|
d1ce96d0b6 | ||
|
|
3f23052215 | ||
|
|
7c5994a202 | ||
|
|
6592ea720c | ||
|
|
cfdde8ce49 | ||
|
|
3820937d83 | ||
|
|
b122062afc | ||
|
|
75bbf4231c | ||
|
|
73b2bc6983 | ||
|
|
483f66118d | ||
|
|
6e0b2ad629 | ||
|
|
8f536c20d5 | ||
|
|
0b5f55908a | ||
|
|
fb5695338a | ||
|
|
5bb6af4f01 | ||
|
|
5f6331ba4d | ||
|
|
e19079121c | ||
|
|
68159176d3 | ||
|
|
7a71f65f31 | ||
|
|
72531f0b59 | ||
|
|
0e65aac3d0 | ||
|
|
5aaac3f56b | ||
|
|
73e5094949 | ||
|
|
f4eea4abb9 | ||
|
|
f7b0720a2d | ||
|
|
e8905988f4 | ||
|
|
73013502d6 | ||
|
|
78980b8e5b | ||
|
|
f46aba1bae | ||
|
|
284bd9d1ad | ||
|
|
0ffd6d37da | ||
|
|
7a87a8d596 | ||
|
|
bcecb262db | ||
|
|
560940ca2f | ||
|
|
d0e372deb7 | ||
|
|
c716c4a913 | ||
|
|
ec4c624a54 | ||
|
|
a4edceb665 | ||
|
|
c213bf9385 | ||
|
|
21b1837275 | ||
|
|
c8a7ca5e0b | ||
|
|
79aff1475c | ||
|
|
82c8bb51be | ||
|
|
85576f2757 | ||
|
|
23fbf960e6 | ||
|
|
ac10ae1a6e | ||
|
|
0f21502444 | ||
|
|
6d649a1f27 | ||
|
|
5b41f50a55 | ||
|
|
40180a9345 | ||
|
|
b6e23e71e1 | ||
|
|
3a6c1f822f | ||
|
|
602715aa5d | ||
|
|
4ff48ea3da | ||
|
|
c4a9714f3e | ||
|
|
47a1d7b033 | ||
|
|
e4d95b9e00 | ||
|
|
b8c872a73d | ||
|
|
32c02678df | ||
|
|
8981c7a2bd | ||
|
|
6b2df5a9e9 | ||
|
|
c103052793 | ||
|
|
812e904367 | ||
|
|
33093a91fe | ||
|
|
4b719d4fb1 | ||
|
|
2008c897f6 | ||
|
|
42ddaac986 | ||
|
|
f5724875cf | ||
|
|
a034770e1f | ||
|
|
30f968dd50 | ||
|
|
42314a8047 | ||
|
|
bd2a632853 | ||
|
|
9beefb1f0e | ||
|
|
54ddc73d23 | ||
|
|
6ae6d4c919 | ||
|
|
06a4324063 | ||
|
|
342f0ee7ff | ||
|
|
9858d9f31a | ||
|
|
622699edf5 | ||
|
|
0dfcb344e8 | ||
|
|
2f44b6d466 | ||
|
|
700ea1ddd8 | ||
|
|
1bf5aab121 | ||
|
|
264ea86016 | ||
|
|
65e0597fad | ||
|
|
d634634ab5 | ||
|
|
2bd2fc024d | ||
|
|
3c1b246951 | ||
|
|
a29aa1b885 | ||
|
|
02d3e99208 | ||
|
|
5ee212993e | ||
|
|
0c80c991ae | ||
|
|
95c6ebeff9 | ||
|
|
517982ca42 | ||
|
|
be457e5620 | ||
|
|
f857e60a6a | ||
|
|
c5788fe90b | ||
|
|
c3a25ce396 | ||
|
|
eeae032cab | ||
|
|
ddd96eff8f | ||
|
|
708dad24a0 | ||
|
|
b0dbe3d498 | ||
|
|
7e05adc4f3 | ||
|
|
1176055d5e | ||
|
|
5bfa89ff0f | ||
|
|
1fc8a6851a | ||
|
|
8787f20110 | ||
|
|
e389e79aad | ||
|
|
4025e77255 | ||
|
|
657877c4c1 | ||
|
|
31b61316a8 | ||
|
|
2cd6154e04 | ||
|
|
88dfff190c | ||
|
|
a1329a49b0 | ||
|
|
1bd5ea0c99 | ||
|
|
2ba4d4bfa5 | ||
|
|
ab5cde8c0a | ||
|
|
bbdafa23dc | ||
|
|
d8afc6ef07 | ||
|
|
f4ed82cc78 | ||
|
|
c52ed4e844 | ||
|
|
792c1cd7f2 | ||
|
|
0a1130270c | ||
|
|
cf16810525 | ||
|
|
9913e6cdf2 | ||
|
|
72d49f0cd4 | ||
|
|
ea272eaf71 | ||
|
|
65aff93c06 | ||
|
|
a34ea1260f | ||
|
|
0036e5a7c2 | ||
|
|
11e1103860 | ||
|
|
5eddfaefc6 | ||
|
|
e0eda77346 | ||
|
|
e87e4810ec | ||
|
|
9961f53f40 | ||
|
|
781098bb4e | ||
|
|
e0be47d98f | ||
|
|
004db7d894 | ||
|
|
ffbb8b067f | ||
|
|
d713987b42 | ||
|
|
ab36157598 | ||
|
|
f336f79552 | ||
|
|
5e907ae2f2 | ||
|
|
f289f4b663 | ||
|
|
019795499b | ||
|
|
1708b522be | ||
|
|
eaccb954c9 | ||
|
|
fed2ce07ee | ||
|
|
6280234f0b | ||
|
|
fe71a331fb | ||
|
|
c3757648b3 | ||
|
|
59edc94473 | ||
|
|
2b172a49cd | ||
|
|
5c40f60db7 | ||
|
|
f7c42b14ed | ||
|
|
f1b91bd635 | ||
|
|
8917b0149d | ||
|
|
3b15182d29 | ||
|
|
44d27498d4 | ||
|
|
087c4b9fd9 | ||
|
|
dd4b87c389 | ||
|
|
73ba709cb4 | ||
|
|
f057f1160a | ||
|
|
a3d406763f | ||
|
|
b421b7c102 | ||
|
|
3b32ebb46e | ||
|
|
4459d111f7 | ||
|
|
cee4bdaa4e | ||
|
|
bc46c631a2 | ||
|
|
28d3ec4b12 | ||
|
|
2595e48ef9 | ||
|
|
f87d102bdb | ||
|
|
e46884dd07 | ||
|
|
cda2c71048 | ||
|
|
8bd500c732 | ||
|
|
51147256cd | ||
|
|
fef1fc5b4d | ||
|
|
eed9dc9652 | ||
|
|
3603ef22e0 | ||
|
|
eba59fcffa | ||
|
|
ff7a1f2243 | ||
|
|
623cf5add3 | ||
|
|
e2964d1a20 | ||
|
|
0117f09401 | ||
|
|
5a8fd0f06d | ||
|
|
75fe0bb1e5 | ||
|
|
8821854755 | ||
|
|
a54e16096f | ||
|
|
499507333a | ||
|
|
e869ed3096 | ||
|
|
9266103e2b | ||
|
|
7c89b4af6b | ||
|
|
24376dda52 | ||
|
|
215c02c8e0 | ||
|
|
6c47e9a11c | ||
|
|
57d57e34c2 | ||
|
|
5c1319daaa | ||
|
|
c753afb5f6 | ||
|
|
37fb4bca3f | ||
|
|
2ab19d9126 | ||
|
|
2703d3ecab | ||
|
|
4cb4b05d3c | ||
|
|
b3aeaa58df | ||
|
|
60fe4ee625 | ||
|
|
f39da4fc73 | ||
|
|
3d945293a9 | ||
|
|
6824069144 | ||
|
|
4f4f08da7c | ||
|
|
d4a59c0626 | ||
|
|
3cff93e11d | ||
|
|
d9d9589af3 | ||
|
|
13f3951615 | ||
|
|
aef3a93e3a | ||
|
|
70f4e55bd6 | ||
|
|
9ea5326bfe | ||
|
|
dd142f3cc7 | ||
|
|
01dd607e8f | ||
|
|
ef349d84a9 | ||
|
|
7934068503 | ||
|
|
f2f124c46b | ||
|
|
d1dac79672 | ||
|
|
e2228a0485 | ||
|
|
80376456c8 | ||
|
|
1ed8a257b1 | ||
|
|
02ecfa8eca | ||
|
|
ffa4be56d2 | ||
|
|
4017ce049c | ||
|
|
bed6ef42c2 | ||
|
|
acc6954db5 | ||
|
|
ea4b313af5 | ||
|
|
cc28cd0da3 | ||
|
|
339df3db4c | ||
|
|
50525701e7 | ||
|
|
015b6f10f4 | ||
|
|
3968183322 | ||
|
|
1988f8da64 | ||
|
|
1e5ed62c47 | ||
|
|
a35c8545a2 | ||
|
|
ceeb2e1e6d | ||
|
|
89d1c68897 | ||
|
|
e031e3f1b5 | ||
|
|
2cd96d1927 | ||
|
|
e86e6a6910 | ||
|
|
6a4e7032a9 | ||
|
|
f502b21879 | ||
|
|
09c5c0329a | ||
|
|
6a5358e387 | ||
|
|
07afcb65be | ||
|
|
55cb5a040c | ||
|
|
4e8cd20aad | ||
|
|
78fe4cf1a1 | ||
|
|
64b1aaca89 | ||
|
|
e08a99eb10 | ||
|
|
aae87bb6cc | ||
|
|
ad5a50d3d6 | ||
|
|
7a2989e97c | ||
|
|
e8c6b1d306 | ||
|
|
ef6dcd06c6 | ||
|
|
9963eb6172 | ||
|
|
4e2228aac7 | ||
|
|
4694f541a3 | ||
|
|
56e6a45664 | ||
|
|
ab584d15ac | ||
|
|
b437dbe832 | ||
|
|
ea8761c29b | ||
|
|
58afbb9b75 | ||
|
|
88a68ec8f5 | ||
|
|
29b6e1b70d | ||
|
|
912989eaf3 | ||
|
|
28fdf086c6 | ||
|
|
2389083d3b | ||
|
|
752b704af0 | ||
|
|
d5c9b867c7 | ||
|
|
53dedba1d6 | ||
|
|
c7cb6abc3b | ||
|
|
0b219df90c | ||
|
|
b348c5d2bc | ||
|
|
338233b8f9 | ||
|
|
5f2cac374d | ||
|
|
d9a87cd6eb | ||
|
|
6d0f552ce0 | ||
|
|
c712081325 | ||
|
|
6217e65ae5 | ||
|
|
230961099c | ||
|
|
a580001f06 | ||
|
|
ec65f22f1b | ||
|
|
060cfafd1c | ||
|
|
41ffc846a9 | ||
|
|
cc4786b82e | ||
|
|
ef41f2f2f7 | ||
|
|
796505baac | ||
|
|
4ddb6588f8 | ||
|
|
1e7ab9d594 | ||
|
|
ab3a800524 | ||
|
|
add34905f7 | ||
|
|
57b4ef036a | ||
|
|
e476b7f876 | ||
|
|
d52fc03869 | ||
|
|
36f6c7c683 | ||
|
|
4c71f93c90 | ||
|
|
26ae5aef25 | ||
|
|
3a5245952b | ||
|
|
c43e0c95ac | ||
|
|
fbec6c5006 | ||
|
|
e23f728ea6 | ||
|
|
3704af165d | ||
|
|
ea8b8fc593 | ||
|
|
1a05cbde32 | ||
|
|
c8c24c8ec4 | ||
|
|
7915c018e6 | ||
|
|
ce57119548 | ||
|
|
aab0e25c0f | ||
|
|
0b48a12c5b | ||
|
|
ca47f2ae5a | ||
|
|
2883145fe2 | ||
|
|
30222ada44 | ||
|
|
aed880d6cc | ||
|
|
5585c8bf96 | ||
|
|
b0441c2895 | ||
|
|
415d59aa67 | ||
|
|
a85d3c902d | ||
|
|
91804a7b1d | ||
|
|
88bb687497 | ||
|
|
5a98423bb8 | ||
|
|
0a0b7ae6b0 | ||
|
|
0588941742 | ||
|
|
c9e7bd13c8 | ||
|
|
7b2c6f451a | ||
|
|
a048610ac8 | ||
|
|
7d60f51dd7 | ||
|
|
54c41190bf | ||
|
|
55710f3285 | ||
|
|
c1b015aaa9 | ||
|
|
d1075553b3 | ||
|
|
e59f502108 | ||
|
|
2bd31be77d | ||
|
|
0012f434c9 | ||
|
|
9606099d46 | ||
|
|
53224b3fc9 | ||
|
|
04e9501977 | ||
|
|
f5705cdc6e | ||
|
|
4b96b224b6 | ||
|
|
f434dd9914 | ||
|
|
c78482348a | ||
|
|
58f98a359a | ||
|
|
ced13cc404 | ||
|
|
cd400f55ba | ||
|
|
15f972aef0 | ||
|
|
3eddb5fb7f | ||
|
|
05dc3133d1 | ||
|
|
0ec1a9da0f | ||
|
|
64cb0235fd | ||
|
|
56af85ca53 | ||
|
|
cf8dafefa3 | ||
|
|
a1b4ed0f62 | ||
|
|
81a1403853 | ||
|
|
963a718dd7 | ||
|
|
ae0d8d70da | ||
|
|
c92f782b69 | ||
|
|
ede3cc4a41 | ||
|
|
5ab61098d8 | ||
|
|
5f8a1a12d4 | ||
|
|
59ad825d3e | ||
|
|
5014326024 | ||
|
|
c79140ae51 | ||
|
|
e2c6346a96 | ||
|
|
5bbb9bbf32 | ||
|
|
7c942df448 | ||
|
|
927f043691 | ||
|
|
5d972fec0f | ||
|
|
ab0a080e21 | ||
|
|
57daa111ab | ||
|
|
2d6147c177 | ||
|
|
dee66bb417 | ||
|
|
d40094a5a2 | ||
|
|
03ace6e2d1 | ||
|
|
a60c78a903 | ||
|
|
3b8b44ad07 | ||
|
|
f40c33432f | ||
|
|
3ca530cf7c | ||
|
|
3e00c5832e | ||
|
|
fb782a13db | ||
|
|
83eafe11c2 | ||
|
|
b1ee8580db | ||
|
|
a6cb66db1e | ||
|
|
8a398a690e | ||
|
|
1db3f68a17 | ||
|
|
95952ef887 | ||
|
|
0d4d36b993 | ||
|
|
11fc399841 | ||
|
|
14ec540a13 | ||
|
|
76280043c8 | ||
|
|
9e360eec32 | ||
|
|
2898a86645 | ||
|
|
264d8928b8 | ||
|
|
7d28e05c79 | ||
|
|
62ce39a5db | ||
|
|
7612b35bc7 | ||
|
|
ec62691775 | ||
|
|
ce9cf0d08e | ||
|
|
c9a0831caa | ||
|
|
5238173304 | ||
|
|
4214d0534b | ||
|
|
923f08db82 | ||
|
|
4ff8ec2ffe | ||
|
|
119726a491 | ||
|
|
bd36f4fc76 | ||
|
|
b3d40caef9 | ||
|
|
d0f172e81d | ||
|
|
182b2b0393 | ||
|
|
f646a5ae5c | ||
|
|
bc8d0e6224 | ||
|
|
2c0c8a72a7 | ||
|
|
2c7beba568 | ||
|
|
38c4a010d7 | ||
|
|
08c4b8f0d0 | ||
|
|
459587fe77 | ||
|
|
042cf627d5 | ||
|
|
d596ead678 | ||
|
|
9f0879552a | ||
|
|
bf95de173e | ||
|
|
9e86b8e8b4 | ||
|
|
1abffa47d3 | ||
|
|
1f271c4b88 | ||
|
|
992a69972a | ||
|
|
3184560d3b | ||
|
|
010e4bd873 | ||
|
|
2845bf2e91 | ||
|
|
5928b4de66 | ||
|
|
6642c7f122 | ||
|
|
7b2eca6c86 | ||
|
|
cf9c18e0c5 | ||
|
|
d0a00e5aa9 | ||
|
|
d4a218b353 | ||
|
|
e5335645a8 | ||
|
|
be94800e1a | ||
|
|
64e6b5e6e7 | ||
|
|
e807c333c6 | ||
|
|
5f6b7c7a9f | ||
|
|
ca40fec6e8 | ||
|
|
f097a21a0c | ||
|
|
9c079a8bd4 | ||
|
|
1480b26681 | ||
|
|
6b7b83d3c5 | ||
|
|
ed6c31de48 | ||
|
|
385b6f14aa | ||
|
|
dcc6aa9dd2 | ||
|
|
4c8f073007 | ||
|
|
dcfe7f9e75 | ||
|
|
a2f34c611a | ||
|
|
a0f3334c86 | ||
|
|
65003d55c3 | ||
|
|
22dbfb815d | ||
|
|
03f544c401 | ||
|
|
21ec4ce15e | ||
|
|
2ef081b6ea | ||
|
|
6e752045ee | ||
|
|
d0f6034d92 | ||
|
|
392f97db62 | ||
|
|
052f1129eb | ||
|
|
d48b237993 | ||
|
|
5d7c8750fd | ||
|
|
f176ff7946 | ||
|
|
d1163274af | ||
|
|
fda7f9ae59 | ||
|
|
9d0eeb338f | ||
|
|
4d6ee6e898 | ||
|
|
00941fcdb7 | ||
|
|
c4af2d1726 | ||
|
|
06d94b8e05 | ||
|
|
5dcde7cf7d | ||
|
|
1498a660af | ||
|
|
947c778f9f | ||
|
|
efbddb159f | ||
|
|
5a2b6bd4d7 | ||
|
|
cfc7015655 | ||
|
|
a74070c357 | ||
|
|
4f305cff94 | ||
|
|
7fa140165d | ||
|
|
11b0da96a2 | ||
|
|
4f1ccf811f | ||
|
|
ad57465ba3 | ||
|
|
418f104580 | ||
|
|
6e173bf400 | ||
|
|
742a738b0d | ||
|
|
f102df4c04 | ||
|
|
a4f2af2a2b | ||
|
|
0f49470216 | ||
|
|
8e28e511cc | ||
|
|
0133d979ad | ||
|
|
c6e76c4b0c | ||
|
|
801cd3efdb | ||
|
|
4955f3602d | ||
|
|
8c835bf710 | ||
|
|
5a79aa8906 | ||
|
|
4a69091e53 | ||
|
|
8853d35209 | ||
|
|
05c833dab3 | ||
|
|
4444943d58 | ||
|
|
7dbf7f2ea1 | ||
|
|
5e7cf3bb10 | ||
|
|
c45965fd71 | ||
|
|
0a2fa0e309 | ||
|
|
ebbfcde3ed | ||
|
|
84b644509f | ||
|
|
0f01e4d9fa | ||
|
|
ee6282c56c | ||
|
|
fb280caf3e | ||
|
|
6771fa0a98 | ||
|
|
850e4ad32e | ||
|
|
7bf1ab8bdd | ||
|
|
04bd3565f5 | ||
|
|
2692c506e9 | ||
|
|
f8097d636a | ||
|
|
2e8fccc650 | ||
|
|
589595f1b0 | ||
|
|
6808efdc69 | ||
|
|
10fb626733 | ||
|
|
e8595e93b6 | ||
|
|
342f381cae | ||
|
|
7880da4526 | ||
|
|
e95667bce5 | ||
|
|
d3cba401e5 | ||
|
|
9b1c517bdf | ||
|
|
ddde7a7583 | ||
|
|
9c6058cce0 | ||
|
|
d12aa9a2fe | ||
|
|
58ce42d7a1 | ||
|
|
5e71862c5b | ||
|
|
9d21df48aa | ||
|
|
9ce78f012e | ||
|
|
6803bae2db | ||
|
|
35f5abe4cd | ||
|
|
8c77919f41 | ||
|
|
d6d9c0b157 | ||
|
|
4b75331b5b | ||
|
|
75dec8692f | ||
|
|
26d8496fe2 | ||
|
|
ccabd40013 | ||
|
|
ca1b4f9323 | ||
|
|
63f4415435 | ||
|
|
3f6f1f7c0c | ||
|
|
ba7e3a029e | ||
|
|
d64cbe00fc | ||
|
|
391519224a | ||
|
|
f703a277e0 | ||
|
|
905266e217 | ||
|
|
9fad935195 | ||
|
|
16560ce56e | ||
|
|
9de3d614fc | ||
|
|
415aaee658 | ||
|
|
9347a9ee95 | ||
|
|
296a0f01fa | ||
|
|
903dc7d289 | ||
|
|
89bd61bdf7 | ||
|
|
7f340e3206 | ||
|
|
4e5b7ef4d1 | ||
|
|
33a2cdeec8 | ||
|
|
6160068f25 | ||
|
|
aea16896a0 | ||
|
|
4c90823d92 | ||
|
|
6af09fc750 | ||
|
|
f14e81cfda | ||
|
|
34fe19e310 | ||
|
|
60967d461c | ||
|
|
0aea51cac2 | ||
|
|
31b62e1cdd | ||
|
|
924122b79e | ||
|
|
cb39a2dc4c | ||
|
|
3327b73315 | ||
|
|
e9f3b8d629 | ||
|
|
efae90afc3 | ||
|
|
288f838db5 | ||
|
|
cafbddc21f | ||
|
|
88f9a59ca3 | ||
|
|
086be65468 | ||
|
|
fcc53f9f48 | ||
|
|
09b4935ee9 | ||
|
|
ab5a31d3a8 | ||
|
|
2b04d96272 | ||
|
|
1595471494 | ||
|
|
016e99912d | ||
|
|
3bbad8c38d | ||
|
|
3b547e08e4 | ||
|
|
1a3cd25a71 | ||
|
|
195a59af67 | ||
|
|
b909a19ffb | ||
|
|
81b85141cb | ||
|
|
15f0c43dad | ||
|
|
ff536acd28 | ||
|
|
e13b418aa0 | ||
|
|
e6b24661dd | ||
|
|
569ce3d786 | ||
|
|
e75f4b14dd | ||
|
|
61da02c81e | ||
|
|
559a2f1990 | ||
|
|
8735046452 | ||
|
|
adaf914114 | ||
|
|
6b5b269bf6 | ||
|
|
f28b0461fe | ||
|
|
62f0aa37fa | ||
|
|
2dc88481c6 | ||
|
|
84c016dd2f | ||
|
|
77ff46f4f9 | ||
|
|
0b35f3e964 | ||
|
|
9beb110348 | ||
|
|
b0af80a5e7 | ||
|
|
bc334f6a33 | ||
|
|
bcb1a29e8f | ||
|
|
a7016e173a | ||
|
|
0b731fb2af | ||
|
|
7cfb36e5d7 | ||
|
|
046ac87d8d | ||
|
|
f19d69e4a0 | ||
|
|
307185c34e | ||
|
|
383bba0f13 | ||
|
|
e68a9d1ff0 | ||
|
|
56057bdbde | ||
|
|
91ee1e24fd | ||
|
|
8a43aa3ae0 | ||
|
|
b0eacc489e | ||
|
|
b9ca3d1232 | ||
|
|
7005ad4675 | ||
|
|
a4f4d45462 | ||
|
|
a1ca7300c3 | ||
|
|
57bc8c82e6 | ||
|
|
85034a850f | ||
|
|
ddfb3f25e0 | ||
|
|
c4b7624c9b | ||
|
|
28547e48be | ||
|
|
dbed102059 | ||
|
|
b62fdf33fb | ||
|
|
d87021fc1a | ||
|
|
8b5b151f2d | ||
|
|
104395fa1f | ||
|
|
46aa659021 | ||
|
|
eb08a77817 | ||
|
|
91b0f90740 | ||
|
|
eb562f6887 | ||
|
|
f5b3bec414 | ||
|
|
5fbc38d8cc | ||
|
|
5dc9f4f4a8 | ||
|
|
d60bb4659d | ||
|
|
671a288996 | ||
|
|
9c7b15c912 | ||
|
|
cb1d23c2aa | ||
|
|
a600c5fcb5 | ||
|
|
c6102dbf54 | ||
|
|
19234409ed | ||
|
|
5312ddf123 | ||
|
|
e5639c0739 | ||
|
|
4edf9f0135 | ||
|
|
f511034628 | ||
|
|
0e55a232b4 | ||
|
|
8accf45608 | ||
|
|
01f27b2a31 | ||
|
|
2c8f8fff45 | ||
|
|
f8d265ea3f | ||
|
|
5e302713d5 | ||
|
|
7710d61b16 | ||
|
|
5698cd65df | ||
|
|
a769382e80 | ||
|
|
a93af06938 | ||
|
|
dec07bc825 | ||
|
|
053d2832d4 | ||
|
|
c781700b61 | ||
|
|
169eccca7e | ||
|
|
0a9440f28b | ||
|
|
bd56204091 | ||
|
|
cb02290217 | ||
|
|
14c137e472 | ||
|
|
55d40f31ea | ||
|
|
9af474e202 | ||
|
|
fe975b655e | ||
|
|
fa6414062a | ||
|
|
724463c7a0 | ||
|
|
24277cfac1 | ||
|
|
ba6ba6906a | ||
|
|
ce14f70107 | ||
|
|
af6b5cff3e | ||
|
|
86a31102c0 | ||
|
|
aa2bbcf32f | ||
|
|
c0cd474b21 | ||
|
|
8675dc74ce | ||
|
|
e09a7f3f67 | ||
|
|
f6f73127c3 | ||
|
|
362a53efb2 | ||
|
|
304afd24c1 | ||
|
|
9700526d67 | ||
|
|
00349f60b8 | ||
|
|
a9c6dd2da4 | ||
|
|
df6b542687 | ||
|
|
c142f19e2d | ||
|
|
dd963bbea3 | ||
|
|
0913f32ec7 | ||
|
|
bc13eb0ae4 | ||
|
|
39aa690f7a | ||
|
|
1f78dc5000 | ||
|
|
3224d9619e | ||
|
|
942aef5be1 | ||
|
|
5be79f43a9 | ||
|
|
548f97b224 | ||
|
|
c499a4300e | ||
|
|
3cf483c706 | ||
|
|
8d81669ab7 | ||
|
|
79b9defb35 | ||
|
|
4eed82b09a | ||
|
|
16b950c06e | ||
|
|
cb295c0441 | ||
|
|
773ba841c6 | ||
|
|
bc83a7b897 | ||
|
|
d45ab8ecf7 | ||
|
|
b5ce78f2af | ||
|
|
793e08b58b | ||
|
|
cda7b1f93b | ||
|
|
b26e325161 | ||
|
|
b2b5f6973f | ||
|
|
9acc3cde2c | ||
|
|
fbb73d31d8 | ||
|
|
ae67adc529 | ||
|
|
ad5ae66745 | ||
|
|
26a1c5f759 | ||
|
|
f8f4d4ce45 | ||
|
|
d7e61a86d5 | ||
|
|
2788df097d | ||
|
|
cfbf3d475a | ||
|
|
69e1ee819d | ||
|
|
297d9f5ae5 | ||
|
|
a155e44fc1 | ||
|
|
1ca4c61fe1 | ||
|
|
69c1d2263e | ||
|
|
2973fa0b43 | ||
|
|
624c0b68fb | ||
|
|
7884d6c986 | ||
|
|
2d805bdda3 | ||
|
|
3f71118adc | ||
|
|
07509a869b | ||
|
|
d6b5ad35ae | ||
|
|
b3bdab2165 | ||
|
|
dc6fc49a76 | ||
|
|
a7bf3aae35 | ||
|
|
48e5eec02e | ||
|
|
b52159df93 | ||
|
|
2c2e4e2e6f | ||
|
|
5a6b69acb5 | ||
|
|
3d2cb56ff4 | ||
|
|
2709b267b2 | ||
|
|
d2cbd9f116 | ||
|
|
da11cf6bba | ||
|
|
121ee0330e | ||
|
|
55952d5861 | ||
|
|
87cce2df33 | ||
|
|
f7f8b8ea47 | ||
|
|
4c21a94564 | ||
|
|
69b84cb501 | ||
|
|
c57d0b3d20 | ||
|
|
69005e00ea | ||
|
|
949754eac9 | ||
|
|
5683510533 | ||
|
|
f6827b4dbf | ||
|
|
49167d870c | ||
|
|
fb4e7e9f66 | ||
|
|
360a98a0b6 | ||
|
|
b5041bf15f | ||
|
|
ebd8214cae | ||
|
|
5e0087b970 | ||
|
|
4cd6b9a5c2 | ||
|
|
6302648ac7 | ||
|
|
c46cc4c8bd | ||
|
|
d689488fcf | ||
|
|
f05115f79d | ||
|
|
720efb2c9f | ||
|
|
d304426918 | ||
|
|
8abda9e59d | ||
|
|
45b40ebd32 | ||
|
|
4ddb6e500b | ||
|
|
ffce913f89 | ||
|
|
84e0a4e62c | ||
|
|
77c537c697 | ||
|
|
a9ae7e0fa1 | ||
|
|
34c2754f49 | ||
|
|
e2b7d6fd95 | ||
|
|
078a6cfb9a | ||
|
|
d999cf6a12 | ||
|
|
82fc10e60f | ||
|
|
dba04650ad | ||
|
|
1d60fe6ee0 | ||
|
|
8c66b5b1ca | ||
|
|
d5762e5956 | ||
|
|
44945155f0 | ||
|
|
a3ceb6c4f4 | ||
|
|
fcb872004a | ||
|
|
f2455e1b1d | ||
|
|
4b0c6d9d96 | ||
|
|
69723cfd45 | ||
|
|
b16b9b9f48 | ||
|
|
ad036d51d2 | ||
|
|
dac2ae4941 | ||
|
|
9f5d2a5f08 | ||
|
|
a9dc677a36 | ||
|
|
da35f4a530 | ||
|
|
017db1e661 | ||
|
|
224e02e4d8 | ||
|
|
ff2b34c29a | ||
|
|
5d4099f328 | ||
|
|
55ee01fd41 | ||
|
|
4e5b37987c | ||
|
|
ba58fd80a6 | ||
|
|
b3753f3f95 | ||
|
|
9e56baf6ba | ||
|
|
75c2f03476 | ||
|
|
d3096f7ed2 | ||
|
|
9972f8c67c | ||
|
|
d3fcc0bcb7 | ||
|
|
0bbef0f75e | ||
|
|
a0c58ff4a6 | ||
|
|
be850ead5b | ||
|
|
dc79edd3fb | ||
|
|
1eac6a342c | ||
|
|
f22c209229 | ||
|
|
c7c31d1f6e | ||
|
|
5af73a8a75 | ||
|
|
e63535aece | ||
|
|
646c6edb93 | ||
|
|
2c43676866 | ||
|
|
b3809c1004 | ||
|
|
feedbd576c | ||
|
|
edda2a753c | ||
|
|
657a985e84 | ||
|
|
8cdbd84223 | ||
|
|
0f3b93aeb6 | ||
|
|
2e43bbedea | ||
|
|
57fd48f904 | ||
|
|
687f1ec19e | ||
|
|
cb9ba7b0e8 | ||
|
|
8a5dd554af | ||
|
|
a93768c259 | ||
|
|
0d67609952 | ||
|
|
866c72398c | ||
|
|
09e224434a | ||
|
|
de4186f177 | ||
|
|
a3506cd378 | ||
|
|
72c8c66977 | ||
|
|
c509066038 | ||
|
|
3fbc2c9f07 | ||
|
|
5a970927aa | ||
|
|
f40b5e2f3c | ||
|
|
ead1995fea | ||
|
|
6fd1db89c0 | ||
|
|
825ac7ea0e | ||
|
|
7164868c5a | ||
|
|
7f1c280849 | ||
|
|
4be58ddc21 | ||
|
|
a042fb01d9 | ||
|
|
3cc3dcdf67 | ||
|
|
5aedad152f | ||
|
|
9ec220b936 | ||
|
|
de14ab7fe2 | ||
|
|
ec309b6d17 | ||
|
|
b2cc66ade7 | ||
|
|
070596fafe | ||
|
|
810f6cfdf2 | ||
|
|
57c4d48cc4 | ||
|
|
ad06dd696e | ||
|
|
55bd7b2825 | ||
|
|
9fef29179c | ||
|
|
a937455d91 | ||
|
|
755d662e57 | ||
|
|
826b9af0fe | ||
|
|
2428418e65 | ||
|
|
2c5fe78039 | ||
|
|
2bacfb39ef | ||
|
|
228419a714 | ||
|
|
d9467a0b51 | ||
|
|
6706cc4291 | ||
|
|
b5d3af627a | ||
|
|
a8e89e05c1 | ||
|
|
f83fb62ba0 | ||
|
|
a254701232 | ||
|
|
1df8ed18a5 | ||
|
|
1166ec86f8 | ||
|
|
d1e65e0250 | ||
|
|
5ec37a3f55 | ||
|
|
2236aabe4b | ||
|
|
66122f1a54 | ||
|
|
62c9b472da | ||
|
|
8cd09d02d4 | ||
|
|
74937901fd | ||
|
|
fd2aad9c57 | ||
|
|
d5e3a66787 | ||
|
|
142c2bdecf | ||
|
|
e1ca11a4a3 | ||
|
|
6e9d095783 | ||
|
|
e61a2c1e87 | ||
|
|
0035bfa567 | ||
|
|
8e6753a6a9 | ||
|
|
e85b747984 | ||
|
|
4521f79b15 | ||
|
|
62a90ef301 | ||
|
|
fd249a3e63 | ||
|
|
1822ec4f9e | ||
|
|
70a6c4541a | ||
|
|
66cae3341e | ||
|
|
4918390790 | ||
|
|
166ae39262 | ||
|
|
fe47a3bb8e | ||
|
|
cd5658de00 | ||
|
|
11a2e32bd8 | ||
|
|
1f6de8dc3c | ||
|
|
4d246212e5 | ||
|
|
42c2b7310a | ||
|
|
fb503f3bd5 | ||
|
|
a0b2f4d68b | ||
|
|
03ee7d87c7 | ||
|
|
bf493acab1 | ||
|
|
e7ca2be12c | ||
|
|
7455cb021a | ||
|
|
508b2fc134 | ||
|
|
bf3fc1efe8 | ||
|
|
6486c53a49 | ||
|
|
1428cec472 | ||
|
|
19eb838ffd | ||
|
|
84bebdcae2 | ||
|
|
ce13283356 | ||
|
|
0c74cc81dc | ||
|
|
6c6a833e89 | ||
|
|
0df2af35fe | ||
|
|
6fffbd0142 | ||
|
|
7410278224 | ||
|
|
19263c1621 | ||
|
|
d9379bb5ea | ||
|
|
5390fd74b1 | ||
|
|
88c5dff3d3 | ||
|
|
e7e4e89ca6 | ||
|
|
6b8ab9fbf3 | ||
|
|
c98e60be06 | ||
|
|
12f3900c32 | ||
|
|
90deabb695 | ||
|
|
fd2798ed60 | ||
|
|
ebb0b9f0d8 | ||
|
|
03e51bc9c4 | ||
|
|
76c0c7a5e2 | ||
|
|
5f76ab669f | ||
|
|
8e9a8f6894 | ||
|
|
444a1435da | ||
|
|
4a22e5141c | ||
|
|
d9b72da670 | ||
|
|
90be7a9a74 | ||
|
|
2a73c19d2a | ||
|
|
983d848263 | ||
|
|
924bee3843 | ||
|
|
acd26bce38 | ||
|
|
8c5f87d7f3 | ||
|
|
721a073075 | ||
|
|
f163d7e8e4 | ||
|
|
c9ab26763f | ||
|
|
327d9295a8 | ||
|
|
40dcb95b43 | ||
|
|
77f4a49baa | ||
|
|
56aaafad6f | ||
|
|
76329e0097 | ||
|
|
78d79cf0d2 | ||
|
|
8907fc654c | ||
|
|
ce37c3484b | ||
|
|
383116acf6 | ||
|
|
eb0e68e55b | ||
|
|
8bf6a015e5 | ||
|
|
39e7ccb9fc | ||
|
|
6504e8fe4b | ||
|
|
09bc113e28 | ||
|
|
3f61274bf3 | ||
|
|
0b40994da0 | ||
|
|
bf2d444100 | ||
|
|
226561ff6f | ||
|
|
f7d360a0f0 | ||
|
|
553570efc5 | ||
|
|
fcc377cf71 | ||
|
|
a374e6bf4c | ||
|
|
e01fa50744 | ||
|
|
61fb09f59b | ||
|
|
577817af39 | ||
|
|
7b9a495531 | ||
|
|
9e45f0515d | ||
|
|
825e28958b | ||
|
|
2bc42328ed | ||
|
|
b31f7790b2 | ||
|
|
03d6a73a56 | ||
|
|
79920f1ff6 | ||
|
|
246dfaaf94 | ||
|
|
d09b42a9e1 | ||
|
|
e0d2e68693 | ||
|
|
f8cfaf6d4d | ||
|
|
8e7b6b1767 | ||
|
|
3b39f6e3df | ||
|
|
ef49d0fb32 | ||
|
|
ebef0f10a9 | ||
|
|
574bba6b75 | ||
|
|
c1a29cb53b | ||
|
|
3b8e66c9f3 | ||
|
|
7d4fb7d8d3 | ||
|
|
05a6bdf469 | ||
|
|
68cda70ad6 | ||
|
|
98e35964f3 | ||
|
|
db5101c6cd | ||
|
|
09aa40f079 | ||
|
|
dc71142bfc | ||
|
|
026c0325c1 | ||
|
|
bef2cc3023 | ||
|
|
463a920a7c | ||
|
|
988e0eb906 | ||
|
|
026c88790f | ||
|
|
f090f81a9f | ||
|
|
162d8e834d | ||
|
|
9bf4a9e3bf | ||
|
|
1d7e344048 | ||
|
|
7082061c64 | ||
|
|
85d4e7103e | ||
|
|
65b4fc67fc | ||
|
|
67d6bba8c1 | ||
|
|
04135aee13 | ||
|
|
ab8c795267 | ||
|
|
360079e452 | ||
|
|
2121f2be81 | ||
|
|
8d254d5529 | ||
|
|
ad57b60bfc | ||
|
|
9e0660d38e | ||
|
|
623ee9b222 | ||
|
|
3ad8c4966f | ||
|
|
0f72cc9354 | ||
|
|
f6295e142b | ||
|
|
4102309f80 | ||
|
|
25c035a6d5 | ||
|
|
10b78cb8ec | ||
|
|
37ca805909 | ||
|
|
5aee685650 | ||
|
|
dbdc6ce081 | ||
|
|
318d1c5621 | ||
|
|
da0a53c2df | ||
|
|
7964c78293 | ||
|
|
f87bae1385 | ||
|
|
765dbfd39b | ||
|
|
bab0e9e908 | ||
|
|
24bd25bf39 | ||
|
|
a4563a7a82 | ||
|
|
618f017f6a | ||
|
|
10d57d98ad | ||
|
|
7dbb22e801 | ||
|
|
69aa236de9 | ||
|
|
196391fbbd | ||
|
|
c87e4a1883 | ||
|
|
1da1e5ae82 | ||
|
|
b8beac0eaf | ||
|
|
d769d9c9c4 | ||
|
|
c863d7b29b | ||
|
|
9e72a38944 | ||
|
|
0ddab1d0ce | ||
|
|
e2045ab733 | ||
|
|
1b25d1e7f2 | ||
|
|
dbd7561c05 | ||
|
|
f9841381ad | ||
|
|
ad35ad2b55 | ||
|
|
831f12aaec | ||
|
|
49dfdd1b63 | ||
|
|
46472d8f2f | ||
|
|
42d0fcd52b | ||
|
|
5a539f9ae2 | ||
|
|
e7f3da5c59 | ||
|
|
45589e7d34 | ||
|
|
853b4f59e4 | ||
|
|
60608cd6ce | ||
|
|
4add115a39 | ||
|
|
c56fa67994 | ||
|
|
35d1ba3e17 | ||
|
|
fe8fbe0ec3 | ||
|
|
6313915e19 | ||
|
|
6ca45d2e06 | ||
|
|
ddee55a0ed | ||
|
|
6f3d289878 | ||
|
|
94dd42f645 | ||
|
|
6752d7e6e3 | ||
|
|
30087fabde | ||
|
|
3c5a5e590a | ||
|
|
13c578a455 | ||
|
|
1d466b186a | ||
|
|
31ef51dc4c | ||
|
|
171e0d2d6c | ||
|
|
8c86fef2cd | ||
|
|
bf83ca5a6e | ||
|
|
39745ca900 | ||
|
|
bc6f9c5357 | ||
|
|
65c64c5a3f | ||
|
|
f288875f23 | ||
|
|
e5315cfb95 | ||
|
|
084a0cbfd3 | ||
|
|
c454cd08ea | ||
|
|
f308031baa | ||
|
|
a08a107a6d | ||
|
|
e3e78619d0 | ||
|
|
a556a33161 | ||
|
|
fe7797d4be | ||
|
|
11eb094755 | ||
|
|
12cd5750b9 | ||
|
|
d413bc2696 | ||
|
|
2571922a9d | ||
|
|
9292a738ca | ||
|
|
8ec77484d4 | ||
|
|
9882158615 | ||
|
|
5de60a0010 | ||
|
|
097c7c3402 | ||
|
|
ef03ca1113 | ||
|
|
e9708a17e4 | ||
|
|
48478d4ef7 | ||
|
|
5b79c87173 | ||
|
|
eaad124a3b | ||
|
|
792b1982ba | ||
|
|
ea321d77ca | ||
|
|
b3420da9fc | ||
|
|
5f9edfc930 | ||
|
|
43576b4ce6 | ||
|
|
c85498fefa | ||
|
|
f85fa148e2 | ||
|
|
b4939bef55 | ||
|
|
d9a95dea3e | ||
|
|
44b9de5c38 | ||
|
|
1adb26bf9e | ||
|
|
eb5b6c8750 | ||
|
|
5445c054f5 | ||
|
|
5b6c955aac | ||
|
|
1ad44df641 | ||
|
|
ce44f10b4e | ||
|
|
c3501aad62 | ||
|
|
c6027a56e5 | ||
|
|
bf86d61fe6 | ||
|
|
e020eaf4ef | ||
|
|
7182d2a5d0 | ||
|
|
2ae8193b78 | ||
|
|
27b9a14618 | ||
|
|
ba8fd871ca | ||
|
|
8d0560f175 | ||
|
|
f220464167 | ||
|
|
b2b11721da | ||
|
|
3cbfe7948e | ||
|
|
385b20fd17 | ||
|
|
8ca3acc624 | ||
|
|
7d6cf072ef | ||
|
|
c8fbb3bd3b | ||
|
|
4091ac9352 | ||
|
|
870924220c | ||
|
|
481c1194fb | ||
|
|
36cc15c205 | ||
|
|
d8e49916cf | ||
|
|
0100dd306f | ||
|
|
f789e191d5 | ||
|
|
2954c4d855 | ||
|
|
3ed308bf62 | ||
|
|
b060981c1a | ||
|
|
1fb036086d | ||
|
|
ce366ccfba | ||
|
|
b7adafbd1d | ||
|
|
48d2490554 | ||
|
|
893185a1b7 | ||
|
|
9e4fe268ba | ||
|
|
04e07a582a | ||
|
|
d08fcd1057 | ||
|
|
2fd3bd374a | ||
|
|
ab15534e85 | ||
|
|
09cda0dcb4 | ||
|
|
2fb7c44769 | ||
|
|
9a8b6f2684 | ||
|
|
4b922cdb2b | ||
|
|
bfc1cc9428 | ||
|
|
79654fb86d | ||
|
|
88479ed20c | ||
|
|
ad9deb3a69 | ||
|
|
fe983ab777 | ||
|
|
581ca7e7ca | ||
|
|
0b171bcddd | ||
|
|
591896de41 | ||
|
|
12392ea64e | ||
|
|
5f76d16dea | ||
|
|
dbbec2bbca | ||
|
|
d7b620533f | ||
|
|
edfeb525c4 | ||
|
|
e14d007f27 | ||
|
|
16ccc2b700 | ||
|
|
5423f91a18 | ||
|
|
5f712de818 | ||
|
|
021ed0f162 | ||
|
|
d81bdb762d | ||
|
|
0e51f60e05 | ||
|
|
2a77f20528 | ||
|
|
bb8cc936f0 | ||
|
|
fe370c4af2 | ||
|
|
2d7ce54418 | ||
|
|
52e0706e80 | ||
|
|
fa23a2e423 | ||
|
|
402be50ca4 | ||
|
|
29dc17dcda | ||
|
|
699867e794 | ||
|
|
a207569b1c | ||
|
|
8212a41c48 | ||
|
|
62773d21fe | ||
|
|
e2dbbb9c72 | ||
|
|
fb379a12ba | ||
|
|
996e83b704 | ||
|
|
680e1bf71b | ||
|
|
f7801b5a39 | ||
|
|
f8aed9d5de | ||
|
|
3e6c71822b | ||
|
|
81056561c2 | ||
|
|
38df9d7aff | ||
|
|
fbb3c4f42e | ||
|
|
9f52a9cb6d | ||
|
|
61f08efe95 | ||
|
|
4d245f36af | ||
|
|
efc84ef9fb | ||
|
|
4561166339 | ||
|
|
4078a9579e | ||
|
|
e06798ffdf | ||
|
|
056cca1ba8 | ||
|
|
1d5e9c99f5 | ||
|
|
93daf60388 | ||
|
|
70d4da59f6 | ||
|
|
e5331aea39 | ||
|
|
ea00d06377 | ||
|
|
11905db186 | ||
|
|
a69dbcce53 | ||
|
|
def484af1b | ||
|
|
8b6d12bcba | ||
|
|
f044481b68 | ||
|
|
a40b0cff3a | ||
|
|
f9645c5674 | ||
|
|
fce2d30102 | ||
|
|
18ec528130 | ||
|
|
4c0e7bb48f | ||
|
|
6b3aca698d | ||
|
|
b7526778d2 | ||
|
|
da8bad5359 | ||
|
|
0ded33a37e | ||
|
|
8e874e3769 | ||
|
|
b08cebd76d | ||
|
|
257cb2e34e | ||
|
|
74b2e97658 | ||
|
|
4d8d60d08d | ||
|
|
115cd2b9ad | ||
|
|
07371bd0cd | ||
|
|
b5fd638826 | ||
|
|
b982296c15 | ||
|
|
5a1fd4591f | ||
|
|
7724082a1f | ||
|
|
5e3cc9c98d | ||
|
|
c3380a7354 | ||
|
|
104d6e8c39 | ||
|
|
4f2c73564d | ||
|
|
76a3c8bde7 | ||
|
|
47ed79a28a | ||
|
|
c80a6013b3 | ||
|
|
4906266ba1 | ||
|
|
432fc0cc14 | ||
|
|
a949aa4d62 | ||
|
|
c44866825a | ||
|
|
afed7afdb1 | ||
|
|
91f873177c | ||
|
|
90633f4353 | ||
|
|
9d41cbaec7 | ||
|
|
dc4177b6c9 | ||
|
|
296103f679 | ||
|
|
caa5d11b3c | ||
|
|
b4cde81bb0 | ||
|
|
b9b7dff7f0 | ||
|
|
6a92d7d074 | ||
|
|
d2acf69e40 | ||
|
|
fab1d9d3bb | ||
|
|
613c9d4260 | ||
|
|
07924a7062 | ||
|
|
6f8340d89e | ||
|
|
7b0e777c46 | ||
|
|
f4e8d45219 | ||
|
|
055399aac1 | ||
|
|
beeb760db7 | ||
|
|
6f5b201dbe | ||
|
|
d2516ee78e | ||
|
|
24520dc1e1 | ||
|
|
91002c329b | ||
|
|
785aeb3d68 | ||
|
|
8422a7b923 | ||
|
|
72a165b2bd | ||
|
|
1961369c00 | ||
|
|
c33c58e68b | ||
|
|
c02c8d8708 | ||
|
|
8f709a1d84 | ||
|
|
295a1367c6 | ||
|
|
f5e4fd9944 | ||
|
|
cf4c82ae3a | ||
|
|
c1a1122be7 | ||
|
|
bd8ac5c0c7 | ||
|
|
f5fae695c7 | ||
|
|
5c994d7aa4 | ||
|
|
c7f2e93dfe | ||
|
|
38fb3310d6 | ||
|
|
6eb8511825 | ||
|
|
9ac80e4d0f | ||
|
|
84410733de | ||
|
|
7380c40198 | ||
|
|
f8626bbd26 | ||
|
|
9642cfd1e6 | ||
|
|
b527c7f026 | ||
|
|
a96c8177ca | ||
|
|
054c58515e | ||
|
|
a3fde4f8bc | ||
|
|
841ba0b23b | ||
|
|
5755d2cc70 | ||
|
|
414a725af1 | ||
|
|
c6936d76d1 | ||
|
|
bec5f1bf26 | ||
|
|
3161812f83 | ||
|
|
e2a4876f5e | ||
|
|
f100d4f1c2 | ||
|
|
5c8396fb31 | ||
|
|
d69036224b | ||
|
|
8d18addb26 | ||
|
|
ac75bce1c1 | ||
|
|
72f91661b7 | ||
|
|
b01a5a7be7 | ||
|
|
dd13058b68 | ||
|
|
c3c39fac3d | ||
|
|
3dc6756b1d | ||
|
|
e9b5fcd32e | ||
|
|
88ba816ef0 | ||
|
|
e82def0806 | ||
|
|
471346da0d | ||
|
|
63292505da | ||
|
|
eb8fbe519b | ||
|
|
af74d44f60 | ||
|
|
475de74c3e | ||
|
|
d2c756191e | ||
|
|
d3ec260e4d | ||
|
|
e0cadc24c9 | ||
|
|
3fb74be141 | ||
|
|
55accca3f1 | ||
|
|
4b7e76ea29 | ||
|
|
59981c7ed4 | ||
|
|
8d09a5cf40 | ||
|
|
6568d14851 | ||
|
|
9d208681d0 | ||
|
|
3274bf855b | ||
|
|
6e404c3359 | ||
|
|
f8ae164f7d | ||
|
|
661e233361 | ||
|
|
76b3eae965 | ||
|
|
d1175e5cd7 | ||
|
|
abd049c6b1 | ||
|
|
4c8bd867e7 | ||
|
|
2b3d3c6797 | ||
|
|
ca58a74aad | ||
|
|
c8ab8eae29 | ||
|
|
11495b160d | ||
|
|
3914646b67 | ||
|
|
5213031269 | ||
|
|
31ec7310fa | ||
|
|
c265209704 | ||
|
|
aad7c2c534 | ||
|
|
b7621fa804 | ||
|
|
f7bae9c38d | ||
|
|
d059afc819 | ||
|
|
53616ae431 | ||
|
|
b648eda516 | ||
|
|
81a132b6f5 | ||
|
|
57c8cfc299 | ||
|
|
6d4ad48e4d | ||
|
|
19903b9dd0 | ||
|
|
cb259330a3 | ||
|
|
3a125ad21a | ||
|
|
894ea8272b | ||
|
|
6127274b46 | ||
|
|
ede0c5f277 | ||
|
|
8eaf3892a5 | ||
|
|
1692c26f63 | ||
|
|
8c7ca57e9f | ||
|
|
f1462f4d55 | ||
|
|
f48f2d5568 | ||
|
|
11a796f577 | ||
|
|
145c53c8dc | ||
|
|
84bfaf5802 | ||
|
|
8b86d09e16 | ||
|
|
225430c9fb | ||
|
|
9cb560bf11 | ||
|
|
e6e0bfb280 | ||
|
|
84e44d7068 | ||
|
|
d541dcc7f7 | ||
|
|
1d92304a59 | ||
|
|
221b0b3bfd | ||
|
|
da170b8a62 | ||
|
|
910475eaff | ||
|
|
65163288e7 | ||
|
|
cea6b1e716 | ||
|
|
0604ddadab | ||
|
|
c300ac1865 | ||
|
|
01c47ed171 | ||
|
|
8f073ecf34 | ||
|
|
95f66c00f4 | ||
|
|
79bb1b728a | ||
|
|
0b3a3301bc | ||
|
|
733c6bf720 | ||
|
|
d2592b689c | ||
|
|
4d5736b807 | ||
|
|
400672e2a6 | ||
|
|
a2c5d6d24e | ||
|
|
2912fcef5c | ||
|
|
f3218e3cf8 | ||
|
|
ffcb90e3f3 | ||
|
|
eb9aa87814 | ||
|
|
9406c923de | ||
|
|
0f44af8a5f | ||
|
|
ef3968a967 | ||
|
|
b3f2408262 | ||
|
|
5fd90b887b | ||
|
|
f1990d8cbf | ||
|
|
7f42b90636 | ||
|
|
be4a82caa2 | ||
|
|
91eb39eb1e | ||
|
|
c7a10c77bd | ||
|
|
dacae6cd8b | ||
|
|
02dc0521cb | ||
|
|
7222ab1c34 | ||
|
|
06cc09cf31 | ||
|
|
18241f0edb | ||
|
|
5b723aeb9c | ||
|
|
355a8b20f1 | ||
|
|
673f0e2046 | ||
|
|
d04489f3ff | ||
|
|
d99502389c | ||
|
|
a25d78a7ef | ||
|
|
8b26bfe9a2 | ||
|
|
7982d20f9b | ||
|
|
ec770e398c | ||
|
|
13254b3c93 | ||
|
|
fc53174a4f | ||
|
|
663a7d26dc | ||
|
|
5bd3d8a5e5 | ||
|
|
fb66524089 | ||
|
|
5477366e93 | ||
|
|
2e2473f9bc | ||
|
|
1d0cab6cc7 | ||
|
|
e7ea193c8d | ||
|
|
af98c8b1d4 | ||
|
|
22444ae9fd | ||
|
|
b80ec268a0 | ||
|
|
5b3e72e2a1 | ||
|
|
25fc70f015 | ||
|
|
cf3a92af33 | ||
|
|
c3c113628e | ||
|
|
f99db26085 | ||
|
|
0dae27ae27 | ||
|
|
c67a7ad987 | ||
|
|
fb957e4152 | ||
|
|
2ecb1c8140 | ||
|
|
e8f8e26932 | ||
|
|
fa6c94850f | ||
|
|
fdd6ed4330 | ||
|
|
a1d94ad86e | ||
|
|
9b3d386967 | ||
|
|
e8e77859cb | ||
|
|
5e936efd0f | ||
|
|
672e98385c | ||
|
|
0659b986f3 | ||
|
|
26858ad13e | ||
|
|
28d4ab0218 | ||
|
|
15ea380e94 | ||
|
|
34fb009ccf | ||
|
|
c24fcea5b1 | ||
|
|
2d2e1d5946 | ||
|
|
8cacf168e5 | ||
|
|
126128120e | ||
|
|
c88302e2b7 | ||
|
|
0728bcc724 | ||
|
|
62a6e8e1fe | ||
|
|
75c8461a9c | ||
|
|
8ee2eaab39 | ||
|
|
018a52aac8 | ||
|
|
44a586b358 | ||
|
|
baf1f2e463 | ||
|
|
8779cbca5c | ||
|
|
d96970ce3c | ||
|
|
bff62c7d82 | ||
|
|
d8abdbf2f0 | ||
|
|
2703380897 | ||
|
|
e7821fe48e | ||
|
|
803d9e359a | ||
|
|
620b2a5402 | ||
|
|
497e834006 | ||
|
|
d692bbe45b | ||
|
|
b6260dbbdd | ||
|
|
62e0e3c71a | ||
|
|
067db66354 | ||
|
|
aeee0e2b41 | ||
|
|
b0070d4d60 | ||
|
|
991d915062 | ||
|
|
6c99d5aed6 | ||
|
|
5ff1e9a95f | ||
|
|
5ea03f970d | ||
|
|
33bc4f922b | ||
|
|
f9d7538c2b | ||
|
|
af89faa093 | ||
|
|
97b10e9705 | ||
|
|
274e6e4f5e | ||
|
|
49e4bc2251 | ||
|
|
9aed506fc8 | ||
|
|
bef4f8aa2f | ||
|
|
061edb5b7e | ||
|
|
a72805248d | ||
|
|
16420a9327 | ||
|
|
4e6321a667 | ||
|
|
10a2edf355 | ||
|
|
daada24abe | ||
|
|
bf6ec432b8 | ||
|
|
283d3705d8 | ||
|
|
93ddf67399 | ||
|
|
88a10a469b | ||
|
|
00192c135f | ||
|
|
9eff91466b | ||
|
|
a91760319f | ||
|
|
4bbb85313c | ||
|
|
aef7ac5a48 | ||
|
|
479882883f | ||
|
|
28512fe231 | ||
|
|
700c4a1593 | ||
|
|
72c3310865 | ||
|
|
257f830305 | ||
|
|
f7e05da556 | ||
|
|
9946ad5ea4 | ||
|
|
864d194dba | ||
|
|
ea2e4366fa | ||
|
|
040421894c | ||
|
|
1280035af5 | ||
|
|
148521fbb4 | ||
|
|
70163ae70a | ||
|
|
1f8a32ffdb | ||
|
|
ab8a0f8a42 | ||
|
|
42ebf96e27 | ||
|
|
3dc450bf61 | ||
|
|
454a4f22b8 | ||
|
|
604aeb8534 | ||
|
|
faa8c9c0eb | ||
|
|
7200077d4d | ||
|
|
8c1ac53b4d | ||
|
|
9f2054c505 | ||
|
|
4b86830d22 | ||
|
|
8e672b6551 | ||
|
|
6f7a324458 | ||
|
|
7c905feb11 | ||
|
|
9e3eceabae | ||
|
|
4b8b51488c | ||
|
|
35061f6ecd | ||
|
|
8c16e2eebc | ||
|
|
db993de7c6 | ||
|
|
8a35c19883 | ||
|
|
5eac8852a3 | ||
|
|
9179bddb5a | ||
|
|
01dc10a642 | ||
|
|
d2e07dfe1a | ||
|
|
ab3dc72646 | ||
|
|
968efffd3e | ||
|
|
96d71286a4 | ||
|
|
2225952138 | ||
|
|
c11eb2fede | ||
|
|
c631ba58e3 | ||
|
|
3b34eb52b3 | ||
|
|
28dcbca00a | ||
|
|
0d0c995122 | ||
|
|
7c96d12312 | ||
|
|
1fe751e205 | ||
|
|
1f112558cd | ||
|
|
25149e78ea | ||
|
|
b0ed8266ad | ||
|
|
f6b7bf5869 | ||
|
|
70ddc60ea9 | ||
|
|
6250806e51 | ||
|
|
eea563e7fd | ||
|
|
19d3032d70 | ||
|
|
e54ec51180 | ||
|
|
1980ba8ade | ||
|
|
5f606a33e0 | ||
|
|
0d29052c82 | ||
|
|
44efd97f78 | ||
|
|
d94c8fd321 | ||
|
|
65b6034ae6 | ||
|
|
ac22156a81 | ||
|
|
b53becbefd | ||
|
|
4c70822459 | ||
|
|
7d8ba2670e | ||
|
|
4c2f42d2a9 | ||
|
|
3c3462c43b | ||
|
|
2da0c905a3 | ||
|
|
801a094046 | ||
|
|
b33787056b | ||
|
|
d0270485ee | ||
|
|
85c7f6764a | ||
|
|
fd1e1b4987 | ||
|
|
46f0aab451 | ||
|
|
7ac80c8417 | ||
|
|
56449b02df | ||
|
|
b1e51f2dd8 | ||
|
|
e94b269309 | ||
|
|
96298d61de | ||
|
|
8694b27dc6 | ||
|
|
c2bf93f15a | ||
|
|
c9a93fd103 | ||
|
|
1b71e25bc6 | ||
|
|
98bfa2a63c | ||
|
|
0aa5613660 | ||
|
|
ae5da1b1b1 | ||
|
|
867d43cb50 | ||
|
|
72065479ef | ||
|
|
5a3153856f | ||
|
|
7a87714ce1 | ||
|
|
cf60a27d14 | ||
|
|
a0ba51c52c | ||
|
|
b4ea688607 | ||
|
|
b7fc0e639a | ||
|
|
a1a662c891 | ||
|
|
11309dbf4e | ||
|
|
e8b6cc2769 | ||
|
|
13ef91147a | ||
|
|
070ad923bf | ||
|
|
27adcac439 | ||
|
|
ded0a6e1d4 | ||
|
|
3b85146b00 | ||
|
|
98fe67ef0e | ||
|
|
e7adb06e88 | ||
|
|
9711ca18f6 | ||
|
|
a9e72c3c46 | ||
|
|
64e5b75a45 | ||
|
|
c5e9198c6b | ||
|
|
61ff9414d7 | ||
|
|
6eeabfbf5c | ||
|
|
fc79083fd3 | ||
|
|
6173d15046 | ||
|
|
b813447f3a | ||
|
|
23dd013f7e | ||
|
|
affaf49581 | ||
|
|
27198ed45e | ||
|
|
8501856240 | ||
|
|
709841f25f | ||
|
|
b8c6f31bc0 | ||
|
|
55ba7e082c | ||
|
|
8195367fcf | ||
|
|
ad491433a9 | ||
|
|
a61e198b1a | ||
|
|
64cb975c74 | ||
|
|
300e345ba6 | ||
|
|
d9f2935397 | ||
|
|
da54dfbcc2 | ||
|
|
133b3c3a62 | ||
|
|
30b9ca8ac1 | ||
|
|
bf9dbe6a89 | ||
|
|
4e26047e39 | ||
|
|
9ef484d2bc | ||
|
|
e9b5fa559c | ||
|
|
50629c5c9b | ||
|
|
48a7503df3 | ||
|
|
6c8193b779 | ||
|
|
337529ba36 | ||
|
|
ab1e3c2ad7 | ||
|
|
f2eed8a581 | ||
|
|
a9b12553ca | ||
|
|
4004ea6d2a | ||
|
|
4dfa3fc915 | ||
|
|
5edf0d404d | ||
|
|
762c599ef7 | ||
|
|
aab295e1ca | ||
|
|
c755099887 | ||
|
|
812befb862 | ||
|
|
40f25eb994 | ||
|
|
2a777b6656 | ||
|
|
bc413017e9 | ||
|
|
9651a64926 | ||
|
|
21d40ad4ca | ||
|
|
f073c1311e | ||
|
|
402a4f0911 | ||
|
|
0d9eab1aa6 | ||
|
|
ed61619f6b | ||
|
|
839e25fcb5 | ||
|
|
8e0cfd8ffe | ||
|
|
6a6baf3e9c | ||
|
|
76dc70335a | ||
|
|
1331dc468c | ||
|
|
bb62bc17af | ||
|
|
623bf257e4 | ||
|
|
d71c278a30 | ||
|
|
eeaf9cbedd | ||
|
|
71662f0d55 | ||
|
|
f8f00d8bd7 | ||
|
|
596f5264bb | ||
|
|
cc5477eb92 | ||
|
|
0300e60d1f | ||
|
|
25b61d53b3 | ||
|
|
152ed9b709 | ||
|
|
9f81df589a | ||
|
|
28b563ea1c | ||
|
|
84598f1f88 | ||
|
|
a4e3cbd63e | ||
|
|
8d48b89986 | ||
|
|
f938f75ace | ||
|
|
718cf50bfc | ||
|
|
a7875d7a01 | ||
|
|
7bb05bddbe | ||
|
|
db5b17eb18 | ||
|
|
1b98afa5c7 | ||
|
|
5e19627971 | ||
|
|
ab50ba4f97 | ||
|
|
b62a3ba585 | ||
|
|
f3a24bb255 | ||
|
|
42adb0b502 | ||
|
|
ca083bb777 | ||
|
|
2dcd0bdd06 | ||
|
|
35e4aa0583 | ||
|
|
038b04e513 | ||
|
|
92a895b642 | ||
|
|
63114a760a | ||
|
|
156ff8d3cc | ||
|
|
fb993cf19e | ||
|
|
281d42392a | ||
|
|
738d621f23 | ||
|
|
f55cde9494 | ||
|
|
a4f9082955 | ||
|
|
467ad26d42 | ||
|
|
118281d675 | ||
|
|
38bf6d6724 | ||
|
|
4b5a532b07 | ||
|
|
6a0247d42a | ||
|
|
4225eba31e | ||
|
|
ec09d088bb | ||
|
|
e1efbf6233 | ||
|
|
1e92f72645 | ||
|
|
5dabcba40d | ||
|
|
208f37c790 | ||
|
|
1532475aa9 | ||
|
|
0da80c4e85 | ||
|
|
7884670539 | ||
|
|
54b81fc937 | ||
|
|
9b6dd56fb3 | ||
|
|
46821b0352 | ||
|
|
5c45c9cee2 | ||
|
|
0a52434582 | ||
|
|
8e0e5828a6 | ||
|
|
02bcf9b5c6 | ||
|
|
6da015982f | ||
|
|
15db648521 | ||
|
|
04dcdf1ec3 | ||
|
|
3d7092a279 | ||
|
|
759a65c75f | ||
|
|
9ee09600b2 | ||
|
|
6a2a246163 | ||
|
|
2e35f17882 | ||
|
|
62bbe5f89b | ||
|
|
8b274a181d | ||
|
|
051a61593f | ||
|
|
64baf1eecd | ||
|
|
b22a873ce4 | ||
|
|
99e1c93a53 | ||
|
|
04604b55c5 | ||
|
|
e507069774 | ||
|
|
40ea51753a | ||
|
|
47cd835bdd | ||
|
|
f5eeccb6c0 | ||
|
|
d0b25503a3 | ||
|
|
e0d91882a0 | ||
|
|
5ddc2cc432 | ||
|
|
e45a3dab88 | ||
|
|
ec77f902e8 | ||
|
|
6a389b2021 | ||
|
|
7b76d160bd | ||
|
|
cc9970fac0 | ||
|
|
676c885013 | ||
|
|
1fdeb4210c | ||
|
|
30c4a39a11 | ||
|
|
5124efc774 | ||
|
|
d66db3ecf6 | ||
|
|
ce5cc1fa2e | ||
|
|
b428b63d47 | ||
|
|
fa4c62eb00 | ||
|
|
4260761699 | ||
|
|
f8052cff0b | ||
|
|
eadf162c58 | ||
|
|
d8741ef43a | ||
|
|
0cca66223e | ||
|
|
f78b12a1cd | ||
|
|
aca7ced0f0 | ||
|
|
a6451b0f2c | ||
|
|
47acfc72b3 | ||
|
|
0a35e79928 | ||
|
|
a47c9325cd | ||
|
|
f96b5338a5 | ||
|
|
32cba0e347 | ||
|
|
a1df98431f | ||
|
|
20304f7d91 | ||
|
|
2e047c30a0 | ||
|
|
784d87b96e | ||
|
|
78526b9f65 | ||
|
|
af1dba3c99 | ||
|
|
67f8c6e2f5 | ||
|
|
ad1f1541cb | ||
|
|
8f61c0fe88 | ||
|
|
cdbf2dd313 | ||
|
|
a2a85dc508 | ||
|
|
f0138a96d7 | ||
|
|
3731b62f54 | ||
|
|
13dcb792a8 | ||
|
|
54c174e229 | ||
|
|
e2873e4be4 | ||
|
|
bdea88a92a | ||
|
|
38ef0246e0 | ||
|
|
c991e357d3 | ||
|
|
a1df2bed59 | ||
|
|
c220a9a260 | ||
|
|
15fd435da7 | ||
|
|
b170c822bf | ||
|
|
05f22fe6ea | ||
|
|
4186fefce1 | ||
|
|
f002c86029 | ||
|
|
5c3856a3cc | ||
|
|
fd3e20c111 | ||
|
|
cd6050f965 | ||
|
|
39bf131805 | ||
|
|
74e3541265 | ||
|
|
c3a39b9634 | ||
|
|
93bd8372b4 | ||
|
|
2f82fa3735 | ||
|
|
2e4a5abc59 | ||
|
|
a283fdfa60 | ||
|
|
be92dfc905 | ||
|
|
55774478d2 | ||
|
|
e79d0ccb4e | ||
|
|
db277344c9 | ||
|
|
1c0da71da3 | ||
|
|
b003c91f88 | ||
|
|
ec6bea41a0 | ||
|
|
112eeeb2b7 | ||
|
|
3b217d91c6 | ||
|
|
11a75fc3e7 | ||
|
|
a14fdfbd96 | ||
|
|
b0a46198a2 | ||
|
|
a7c873a99e | ||
|
|
0af9e4b202 | ||
|
|
9e5c59e530 | ||
|
|
21fe174c19 | ||
|
|
1f81164a05 | ||
|
|
b6acf9a16a | ||
|
|
237f748ea3 | ||
|
|
332786d692 | ||
|
|
c8c122f0b6 | ||
|
|
0bbc3ecdd7 | ||
|
|
b8945492a1 | ||
|
|
bce0142060 | ||
|
|
c723661f91 | ||
|
|
904b7ef8f0 | ||
|
|
36a0f43bd5 | ||
|
|
3b2e646d56 | ||
|
|
0a9b625773 | ||
|
|
7a50070e1c | ||
|
|
6d90538083 | ||
|
|
0dad7246be | ||
|
|
109f33438b | ||
|
|
1bea5b34a9 | ||
|
|
c6ec569b75 | ||
|
|
5150414c26 | ||
|
|
d44ef64683 | ||
|
|
3af2e707df | ||
|
|
a717df16f7 | ||
|
|
5a196dc346 | ||
|
|
79dfb923f5 | ||
|
|
13d9e77b86 | ||
|
|
65879c08d8 | ||
|
|
113c5409bc | ||
|
|
cdf69643a6 | ||
|
|
e1a7c441bf | ||
|
|
a3f972adc3 | ||
|
|
3f4e4b9185 | ||
|
|
fddf21d369 | ||
|
|
e67acdda42 | ||
|
|
fe24aed36f | ||
|
|
fc00faf9c4 | ||
|
|
598102d7c1 | ||
|
|
3e54e2709e | ||
|
|
3c65e04df8 | ||
|
|
9b477477c8 | ||
|
|
9e26b77291 | ||
|
|
e1494f0946 | ||
|
|
6cd3539dc6 | ||
|
|
8c7dd7cd60 | ||
|
|
c54f6c616f | ||
|
|
16710e429b | ||
|
|
217523a5d1 | ||
|
|
0fe9befefc | ||
|
|
0e76c6696d | ||
|
|
1ca0554355 | ||
|
|
3246866ead | ||
|
|
cc3b90eac2 | ||
|
|
9a751e9735 | ||
|
|
bceab2e61f | ||
|
|
bab432bdde | ||
|
|
7dda2eea3d | ||
|
|
0d5187ffa0 | ||
|
|
f8353761e5 | ||
|
|
fd6626fd2e | ||
|
|
2d8a1c681b | ||
|
|
3856fcd990 | ||
|
|
e64ca00484 | ||
|
|
14d17485ee | ||
|
|
68cb6349cf | ||
|
|
bc53841b8e | ||
|
|
26fed3657e | ||
|
|
3590eb68fd | ||
|
|
221f39c0a2 | ||
|
|
cec9a1349a | ||
|
|
77ba0862ca | ||
|
|
221ed4cb8d | ||
|
|
35e4f0d399 | ||
|
|
bae8029782 | ||
|
|
2313f1b071 | ||
|
|
43d0d8905a | ||
|
|
3282afa5c2 | ||
|
|
59f0348d97 | ||
|
|
d83f2d34ad | ||
|
|
0185d48b6d | ||
|
|
6f32c3691a | ||
|
|
4fd4208ee3 | ||
|
|
6fd52ccd4f | ||
|
|
b261b06be6 | ||
|
|
7ea3e11e01 | ||
|
|
96b01811a9 | ||
|
|
433ac3b15e | ||
|
|
03823732fb | ||
|
|
b1c2d66c81 | ||
|
|
a04d9a8d31 | ||
|
|
dfcc756a77 | ||
|
|
2b5a7c8abd | ||
|
|
b78ecc0e29 | ||
|
|
a6bca59cca | ||
|
|
50beceb8fa | ||
|
|
2fc303099e | ||
|
|
4301af14c3 | ||
|
|
fa76632d34 | ||
|
|
2f3cd82513 | ||
|
|
4bc88b9fbd | ||
|
|
421b40e34f | ||
|
|
c864d13235 | ||
|
|
b02c929071 | ||
|
|
f26dc01bdf | ||
|
|
a72ab6c885 | ||
|
|
222a7c54b8 | ||
|
|
bc5ab1f4f3 | ||
|
|
b36588fdd4 | ||
|
|
93eb2d576d | ||
|
|
5bfb7eb009 | ||
|
|
27839170f2 | ||
|
|
b96e015aaf | ||
|
|
e8fb4a2070 | ||
|
|
f1f10c21ed | ||
|
|
87999ea1e6 | ||
|
|
4e88066b19 | ||
|
|
3e2725073a | ||
|
|
e9ec733cab | ||
|
|
e26d7f0f4d | ||
|
|
b7f7229b49 | ||
|
|
a29da299d7 | ||
|
|
aaea73e24c | ||
|
|
a1a45f062d | ||
|
|
ffec4e0aa8 | ||
|
|
840596b54d | ||
|
|
0ec8345b85 | ||
|
|
eec6adfe4e | ||
|
|
7219883a0a | ||
|
|
bdb4c727fb | ||
|
|
908ed10a5a | ||
|
|
9dc8a72ce9 | ||
|
|
5c6e4978a4 | ||
|
|
2247f3b0ca | ||
|
|
c313227a80 | ||
|
|
c09283c3d1 | ||
|
|
8325859f93 | ||
|
|
92932a5bc5 | ||
|
|
d2c0910241 | ||
|
|
80f3b31cc4 | ||
|
|
6b3dd2fbf4 | ||
|
|
1da0a122f1 | ||
|
|
5460ad7c65 | ||
|
|
6a5e17d8ae | ||
|
|
9433ef1b24 | ||
|
|
ba1490b848 | ||
|
|
d5112be2e6 | ||
|
|
73f0843257 | ||
|
|
a3ee06369b | ||
|
|
57ec0437e6 | ||
|
|
0a19dd88ba | ||
|
|
119559064d | ||
|
|
040c3e3f0e | ||
|
|
6add2700e7 | ||
|
|
9647c2ec68 | ||
|
|
4e6eb8dd45 | ||
|
|
5244715a7e | ||
|
|
1e524225fe | ||
|
|
0a2edd020d | ||
|
|
17fc612292 | ||
|
|
8719b2fcc7 | ||
|
|
33de54eaeb | ||
|
|
e6a6c4d084 | ||
|
|
bc3d710f3f | ||
|
|
12070e6983 | ||
|
|
1adbedd6f9 | ||
|
|
6f2f42b217 | ||
|
|
2b6176f9d8 | ||
|
|
1d0fead886 | ||
|
|
815a0d1a53 | ||
|
|
eaeddb7cbc | ||
|
|
5054c76987 | ||
|
|
aaa877b47c | ||
|
|
c6620f1885 | ||
|
|
d0ab03d4a3 | ||
|
|
a11bd9820c | ||
|
|
e35fa87f00 | ||
|
|
0e79006260 | ||
|
|
a02a1efd96 | ||
|
|
a76e7f64d4 | ||
|
|
242018f1b0 | ||
|
|
e1fb42ecd9 | ||
|
|
fbaca6a474 | ||
|
|
d3dee2a1cd | ||
|
|
e4d6b73897 | ||
|
|
e67ea67176 | ||
|
|
2ee3f26756 | ||
|
|
2f69c04ca1 | ||
|
|
f3596d389e | ||
|
|
eb644191a7 | ||
|
|
b8f65f898c | ||
|
|
dae6ba15ff | ||
|
|
9c9fd15257 | ||
|
|
1975d14459 | ||
|
|
7a3a4637e0 | ||
|
|
d2ee90c6f6 | ||
|
|
869710ea81 | ||
|
|
cbe75d082c | ||
|
|
45096aedf8 | ||
|
|
b334610eb4 | ||
|
|
19df6bd097 | ||
|
|
382fa764f3 | ||
|
|
90665d4586 | ||
|
|
4d8a1b7ce4 | ||
|
|
7c95f4e280 | ||
|
|
6b177d62cb | ||
|
|
5212d164bb | ||
|
|
536a210148 | ||
|
|
2a07783ae3 | ||
|
|
deb6b70b30 | ||
|
|
2149baa1b7 | ||
|
|
cfc9d86f06 | ||
|
|
713b176c77 | ||
|
|
5d5567ee0b | ||
|
|
928e03821e | ||
|
|
8e0bea5308 | ||
|
|
a15efa757c | ||
|
|
b0cb022865 | ||
|
|
4db27e1c5c | ||
|
|
74d4f4944e | ||
|
|
7f91320a9f | ||
|
|
101f6c6d04 | ||
|
|
4469613c6c | ||
|
|
52d4b0ef55 | ||
|
|
f1cbc7a59f | ||
|
|
6476689c2a | ||
|
|
1879f2dad1 | ||
|
|
3308c1a24a | ||
|
|
2f1162ac13 | ||
|
|
b29fa59c9e | ||
|
|
7156617070 | ||
|
|
dbcff154a0 | ||
|
|
4ce01434b7 | ||
|
|
dd5d0a0c69 | ||
|
|
6b3655097e | ||
|
|
f6b4569d23 | ||
|
|
7ee2406a60 | ||
|
|
9ea292f821 | ||
|
|
0ad35718e6 | ||
|
|
cf081db165 | ||
|
|
a5c4d7dadc | ||
|
|
ff4eb30e75 | ||
|
|
eecde8e1b4 | ||
|
|
7265fa57bd | ||
|
|
c73df6a348 | ||
|
|
0144faa442 | ||
|
|
1f6040d392 | ||
|
|
01c1aa106c | ||
|
|
fa224fd2ef | ||
|
|
d2f3506c5b | ||
|
|
2d31e54c33 | ||
|
|
43acfe6cc5 | ||
|
|
8f341809c7 | ||
|
|
c1a5d8d3b3 | ||
|
|
be7e32c82b | ||
|
|
0bb7b2cbd4 | ||
|
|
24405b2309 | ||
|
|
7a522664a1 | ||
|
|
5606d9ffe7 | ||
|
|
a870fdb2bf | ||
|
|
23fc9f0716 | ||
|
|
eee480656d | ||
|
|
eb4e58c625 | ||
|
|
7084adda2f | ||
|
|
4fc0cd66b9 | ||
|
|
c847582208 | ||
|
|
8aa9a429e2 | ||
|
|
3dd636321e | ||
|
|
a792550eaf | ||
|
|
93d3fcc553 | ||
|
|
b574a339c4 | ||
|
|
26593bba3e | ||
|
|
bb6dae00b4 | ||
|
|
536bb5fb69 | ||
|
|
5b7224a0ba | ||
|
|
2565f0ea42 | ||
|
|
978f92d1cb | ||
|
|
57fb94abb2 | ||
|
|
9e150141dc | ||
|
|
43f1a57a68 | ||
|
|
4a625adf16 | ||
|
|
e2980a544f | ||
|
|
998ecccd77 | ||
|
|
03d573ae07 | ||
|
|
3995187622 | ||
|
|
09e945fd66 | ||
|
|
05a1c42505 | ||
|
|
dbfcbd98f5 | ||
|
|
badd14779a | ||
|
|
be17f0bd8d | ||
|
|
d926919cb7 | ||
|
|
097912ea50 | ||
|
|
0824b3c722 | ||
|
|
ef2de12e76 | ||
|
|
aa18bd41b1 | ||
|
|
acf0119e9e | ||
|
|
3688797c1c | ||
|
|
9f88be8d5b | ||
|
|
19394cf881 | ||
|
|
b42f4a67f9 | ||
|
|
1c9f6bdf36 | ||
|
|
c759a83640 | ||
|
|
95940ed7dd | ||
|
|
3177780a05 | ||
|
|
cc1becb059 | ||
|
|
3e23be2a65 | ||
|
|
a616b0c737 | ||
|
|
51248e7bd6 | ||
|
|
1003354989 | ||
|
|
6ef933f1dd | ||
|
|
0532abd596 | ||
|
|
8a0510d517 | ||
|
|
3ca1f0e330 | ||
|
|
9a3681b17c | ||
|
|
fd21a37d46 | ||
|
|
4b813fe58a | ||
|
|
2e1de58db6 | ||
|
|
ad1b4d1f0f | ||
|
|
34d1dbb943 | ||
|
|
d8f18ce4e4 | ||
|
|
f797cb3825 | ||
|
|
f7496502f8 | ||
|
|
df1afa8f63 | ||
|
|
3f1787b5b9 | ||
|
|
a203142a37 | ||
|
|
bf3698e38e | ||
|
|
ad0bb844fb | ||
|
|
b0645e2d20 | ||
|
|
b5d3b442c6 | ||
|
|
ba2c2ed5c3 | ||
|
|
c85dbb793f | ||
|
|
575cafe33c | ||
|
|
38eaee9d7f | ||
|
|
618048aeca | ||
|
|
4c59734a0a | ||
|
|
a7cf25c760 | ||
|
|
58fb3b03d9 | ||
|
|
54f5b97a00 | ||
|
|
93857c0f50 | ||
|
|
0f78181c4a | ||
|
|
696ff1d673 | ||
|
|
d3752ac63b | ||
|
|
397d1112c0 | ||
|
|
d718c75e36 | ||
|
|
87be6c6bbb | ||
|
|
fe5f58e6b1 | ||
|
|
afb0729ff5 | ||
|
|
b682893960 | ||
|
|
03918ae6a0 | ||
|
|
2ca263121e | ||
|
|
619de9735c | ||
|
|
93b0afe1e6 | ||
|
|
801b4353bb | ||
|
|
c49c3453db | ||
|
|
d2800a7dca | ||
|
|
990634558a | ||
|
|
e1c7dc7d45 | ||
|
|
4f6b1eff1e | ||
|
|
853b441ba7 | ||
|
|
a85fcf53ab | ||
|
|
5069231a7a | ||
|
|
64a6aa6855 | ||
|
|
00d1f7c1ed | ||
|
|
fad5a4613b | ||
|
|
e826647f5a | ||
|
|
81f553ec98 | ||
|
|
7e9fb1460b | ||
|
|
6509224cb1 | ||
|
|
3429485e0c | ||
|
|
21ed55f697 | ||
|
|
367db8d903 | ||
|
|
0944b9df83 | ||
|
|
4d8bb40766 | ||
|
|
c7f2668539 | ||
|
|
d86add2381 | ||
|
|
64bd2d479b | ||
|
|
1d02eeaa85 | ||
|
|
4ec5bfbc70 | ||
|
|
00783c3caf | ||
|
|
23494411d1 | ||
|
|
9962598ad4 | ||
|
|
b4f057ab70 | ||
|
|
39fa156cf9 | ||
|
|
c4a1ce23c0 | ||
|
|
af89e6ee56 | ||
|
|
68fb13b240 | ||
|
|
403adcd321 | ||
|
|
450cc00b0e | ||
|
|
5bddf80e07 | ||
|
|
38b1292ac7 | ||
|
|
bc64bc9f75 | ||
|
|
092b0da252 | ||
|
|
33a3f8c4e9 | ||
|
|
8fd8e53a03 | ||
|
|
6851a0e6ef | ||
|
|
cf7c0268db | ||
|
|
ef83d32fa5 | ||
|
|
54e5227fce | ||
|
|
d8242d6b50 | ||
|
|
5d922b0607 | ||
|
|
1bb3eb1ece | ||
|
|
e3c7b8ee2e | ||
|
|
8a4c30499c | ||
|
|
a079b82f96 | ||
|
|
2e7953e856 | ||
|
|
53faa92171 | ||
|
|
71559caf86 | ||
|
|
4cec320d5f | ||
|
|
f6dd7b8e2d | ||
|
|
986a620583 | ||
|
|
0f13df8524 | ||
|
|
4cf12f52b4 | ||
|
|
7a6596b388 | ||
|
|
ed68810de3 | ||
|
|
522e2c939f | ||
|
|
19ceea02ea | ||
|
|
629930594a | ||
|
|
796c404334 | ||
|
|
253d092aa2 | ||
|
|
b4c83f3565 | ||
|
|
946d7a4f6c | ||
|
|
ee4fc06d7b | ||
|
|
83be20c407 | ||
|
|
78a97845e4 | ||
|
|
cc8152d779 | ||
|
|
7ed1508eb7 | ||
|
|
18b1ecd76a | ||
|
|
a3f31ec82d | ||
|
|
a19951a779 | ||
|
|
08d367bb94 | ||
|
|
3515cf905f | ||
|
|
b09afc13b7 | ||
|
|
03e55a2524 | ||
|
|
3e7a55229e | ||
|
|
85af300c3f | ||
|
|
90d84e1b14 | ||
|
|
3b2e752c9d | ||
|
|
71846e88e0 | ||
|
|
6268b0ebfb | ||
|
|
c3340327ce | ||
|
|
da930054fd | ||
|
|
44278b8dbc | ||
|
|
dc85222579 | ||
|
|
cd7dbec032 | ||
|
|
10536d60d8 | ||
|
|
7d13af6cd7 | ||
|
|
75b23e3d9b | ||
|
|
261c09e9a4 | ||
|
|
964bf5df85 | ||
|
|
10e896e070 | ||
|
|
f2e785dc3d | ||
|
|
0110ffd817 | ||
|
|
d29688bda8 | ||
|
|
fd043bcb87 | ||
|
|
0d13f6d8ad | ||
|
|
ef67a6638f | ||
|
|
4ec4b95cab | ||
|
|
f281182e39 | ||
|
|
3dc8a3ae8d | ||
|
|
3f18a46c65 | ||
|
|
390518f530 | ||
|
|
963de1188c | ||
|
|
aea45d430c | ||
|
|
a25d4830f5 | ||
|
|
204a4ebb6f | ||
|
|
26e487f807 | ||
|
|
d0ec2a3f30 | ||
|
|
cbb595bc74 | ||
|
|
53acefa0fb | ||
|
|
811fd2c6b7 | ||
|
|
29f9544186 | ||
|
|
e1b5af3c02 | ||
|
|
26476a8f72 | ||
|
|
9557259fac | ||
|
|
97b3ba87ce | ||
|
|
60eb0f82a8 | ||
|
|
fd9d887680 | ||
|
|
24c82877d7 | ||
|
|
cb9d4c2248 | ||
|
|
6bcb5e9aea | ||
|
|
436cbe9f4c | ||
|
|
e8e225d6a4 | ||
|
|
658c01a15c | ||
|
|
928b076582 | ||
|
|
d10846bc53 | ||
|
|
38fe84272b | ||
|
|
5d4dcb3021 | ||
|
|
9fd537fc37 | ||
|
|
15bd8936d3 | ||
|
|
7f19f8bc79 | ||
|
|
c4968109cb | ||
|
|
eaf15669da | ||
|
|
13dd42d26e | ||
|
|
2810bc0762 | ||
|
|
2ffbe5d997 | ||
|
|
f1177f874c | ||
|
|
1249f0b7be | ||
|
|
ec76a92bb8 | ||
|
|
791a1160b9 | ||
|
|
921ba39e2a | ||
|
|
1d4ce9d870 | ||
|
|
aac6b1834b | ||
|
|
889a98b461 | ||
|
|
c5aa091c9a | ||
|
|
ed672de7ee | ||
|
|
4d514e1475 | ||
|
|
3d43df67e0 | ||
|
|
4173b65b96 | ||
|
|
0e289f9983 | ||
|
|
07045aadc0 | ||
|
|
a363205273 | ||
|
|
d583bfd2c0 | ||
|
|
4073da1ad6 | ||
|
|
9770e7f6a0 | ||
|
|
b5086dd83e | ||
|
|
38de983db5 | ||
|
|
d7e950cb07 | ||
|
|
98a44d6d1d | ||
|
|
8bfc148b9e | ||
|
|
5c932baf63 | ||
|
|
f59ddd76de | ||
|
|
8e26ea23af | ||
|
|
10b0586ff2 | ||
|
|
83eeb740a3 | ||
|
|
e9f056b9e6 | ||
|
|
f92ae60b6b | ||
|
|
fd4f23b3a3 | ||
|
|
03dd781fc8 | ||
|
|
bef9e12eb4 | ||
|
|
110e0583ca | ||
|
|
081ed90d75 | ||
|
|
417fe30eff | ||
|
|
a81a0d9d11 | ||
|
|
2781aefef5 | ||
|
|
2905eb0808 | ||
|
|
cf08e060ad | ||
|
|
518fd29f37 | ||
|
|
18a5d0d12b | ||
|
|
58e5b3ad09 | ||
|
|
aedcffba4d | ||
|
|
2aa6e2a7ea | ||
|
|
ea5de2e14e | ||
|
|
3285a208a8 | ||
|
|
fb2a0d08d0 | ||
|
|
c72fa9d414 | ||
|
|
15e4c2641f | ||
|
|
1692db1422 | ||
|
|
134f2d6f55 | ||
|
|
c9dc101f20 | ||
|
|
dc04fe1709 | ||
|
|
7029665f7b | ||
|
|
ee1fa0a7dc | ||
|
|
b7455fddad | ||
|
|
29bd495725 | ||
|
|
b346f9f8ae | ||
|
|
b4c8b8c251 | ||
|
|
3c24dfcac9 | ||
|
|
da64cf3a29 | ||
|
|
a4c2157cb7 | ||
|
|
a8b91edb14 | ||
|
|
3f589f9b96 | ||
|
|
58b2032551 | ||
|
|
45a9c60036 | ||
|
|
9ffd44c8c4 | ||
|
|
7666302ed2 | ||
|
|
36b2df5f6e | ||
|
|
229ce1d8b7 | ||
|
|
9d97f5e3a4 | ||
|
|
17747420b6 | ||
|
|
6790bf9cf4 | ||
|
|
b88f55edc1 | ||
|
|
048e4e82c4 | ||
|
|
99d5cec396 | ||
|
|
686ab09e1d | ||
|
|
d24e485ddd | ||
|
|
1160764112 | ||
|
|
debca7e4b0 | ||
|
|
727677388a | ||
|
|
bf84d4676d | ||
|
|
ff98509a11 | ||
|
|
dda42577e3 | ||
|
|
1cf2eda599 | ||
|
|
c7a7f073cb | ||
|
|
04bb9b85c5 | ||
|
|
28e1db1ba8 | ||
|
|
9c07a0ccb1 | ||
|
|
41474b9f25 | ||
|
|
699f7b273a | ||
|
|
378581e3b2 | ||
|
|
1fb5bce42e | ||
|
|
e0dbef53b9 | ||
|
|
b324c734a9 | ||
|
|
a9cc8d7fb8 | ||
|
|
69064850c5 | ||
|
|
ab4610e04c | ||
|
|
c40e5f80b0 | ||
|
|
7f1c53ffbd | ||
|
|
d61f5ac92d | ||
|
|
3058b55651 | ||
|
|
f3a71182c0 | ||
|
|
01c800f006 | ||
|
|
a52ecc58f7 | ||
|
|
8ad4687c4c | ||
|
|
a2302d6ea3 | ||
|
|
b1870aece3 | ||
|
|
c4d31156fa | ||
|
|
0fc4671799 | ||
|
|
dcaeb10200 | ||
|
|
759e54597a | ||
|
|
79be6ce3fb | ||
|
|
004510d695 | ||
|
|
44d663eb20 | ||
|
|
d99af8473b | ||
|
|
7f75cbf21c | ||
|
|
da00efde73 | ||
|
|
302a2b6698 | ||
|
|
400853b281 | ||
|
|
7d2fbdcb39 | ||
|
|
a39ecbd7f8 | ||
|
|
6f24a9248e | ||
|
|
7f391c8809 | ||
|
|
bd55775598 | ||
|
|
1da19b249d | ||
|
|
0e52fa808b | ||
|
|
7f1123fbb0 | ||
|
|
16c0bec37b | ||
|
|
d6e6532f96 | ||
|
|
f814af496f | ||
|
|
b185fdbace | ||
|
|
f97c125cc8 | ||
|
|
6ed1aaebd1 | ||
|
|
3ad7662ba1 | ||
|
|
2d66797d69 | ||
|
|
36841b7bfb | ||
|
|
62f88d15c0 | ||
|
|
05cb2627de | ||
|
|
413a084535 | ||
|
|
08a6bbac38 | ||
|
|
3a70c5668a | ||
|
|
771bb0ab08 | ||
|
|
c089c7be5b | ||
|
|
1075d0220f | ||
|
|
c070f4d115 | ||
|
|
129212b050 | ||
|
|
d5206868ec | ||
|
|
bb80c6008d | ||
|
|
5c03605811 | ||
|
|
df7f514392 | ||
|
|
7bb700d460 | ||
|
|
89c44b8453 | ||
|
|
6cc6eed4f5 | ||
|
|
4a97a49730 | ||
|
|
27f3f1694f | ||
|
|
d37168f980 | ||
|
|
2e593ad30b | ||
|
|
f88927fd2a | ||
|
|
c8a0af7840 | ||
|
|
c765a66dc8 | ||
|
|
214076ccbf | ||
|
|
dfd1fc1277 | ||
|
|
4ea46c84ff | ||
|
|
6eb7152c7b | ||
|
|
80b34e4cfe | ||
|
|
28ed9703d1 | ||
|
|
9867c7247c | ||
|
|
f527b81530 | ||
|
|
e1b3ab92e1 | ||
|
|
0f7c4fcc60 | ||
|
|
79f4237ad6 | ||
|
|
4a943aa35d | ||
|
|
18de1add17 | ||
|
|
74701acb12 | ||
|
|
f404081f95 | ||
|
|
4563d8a75c | ||
|
|
c296a8e7da | ||
|
|
c6af0a0d7c | ||
|
|
46dfd716ef | ||
|
|
1cc1204f3b | ||
|
|
331c0397cf | ||
|
|
b46780dae8 | ||
|
|
849f62d331 | ||
|
|
c6925b2474 | ||
|
|
fa58313d3b | ||
|
|
eda50c70ba | ||
|
|
9fe486c0b3 | ||
|
|
43f3a6ef9c | ||
|
|
5c8f6e680f | ||
|
|
9bdd226ce2 | ||
|
|
b0ee04ea51 | ||
|
|
1c5477a07a | ||
|
|
1e340bcd24 | ||
|
|
336c7bc219 | ||
|
|
e23567617a | ||
|
|
71f3407fae | ||
|
|
a62a32763e | ||
|
|
4b9888f652 | ||
|
|
9532cb1ca2 | ||
|
|
48cc145a5a | ||
|
|
a77900beba | ||
|
|
02c54f87d0 | ||
|
|
50802fef79 | ||
|
|
1e98e9a663 | ||
|
|
f7190f6f47 | ||
|
|
103713e48c | ||
|
|
b323adce22 | ||
|
|
31130f0665 | ||
|
|
6acac9aa1b | ||
|
|
98f788ca35 | ||
|
|
49e7c3f993 | ||
|
|
d12d057d72 | ||
|
|
5b2644b7cb | ||
|
|
fe65f0b10a | ||
|
|
321cc67e2d | ||
|
|
f82390981e | ||
|
|
3ed23f8046 | ||
|
|
73200c8277 | ||
|
|
1cd8ece754 | ||
|
|
e900d18ade | ||
|
|
9723eeea42 | ||
|
|
8e40fcd4a6 | ||
|
|
843ee0f1c6 | ||
|
|
1c7b13862f | ||
|
|
b1cadc9f54 | ||
|
|
36910f8877 | ||
|
|
c4b86b343e | ||
|
|
dc2098cbe1 | ||
|
|
0b93c5a323 | ||
|
|
73e840f5f5 | ||
|
|
5d65c5c70c | ||
|
|
8741a16194 | ||
|
|
280bcbeebd | ||
|
|
ecf275a7cc | ||
|
|
993717ca00 | ||
|
|
5129708072 | ||
|
|
4993683d59 | ||
|
|
4a6ca01df0 | ||
|
|
f68500ff33 | ||
|
|
22ee60a3f4 | ||
|
|
b48fcb2453 | ||
|
|
7a8682458e | ||
|
|
7a5a400eff | ||
|
|
2865244818 | ||
|
|
ebc6d89a67 | ||
|
|
cbef624550 | ||
|
|
2f8779ae3d | ||
|
|
b2438a38ca | ||
|
|
a38f64b869 | ||
|
|
1179f03bd9 | ||
|
|
c1032fa648 | ||
|
|
29bade6bcb | ||
|
|
138ffb41d2 | ||
|
|
935d2b357a | ||
|
|
8dcb1aa63a | ||
|
|
c2ae678e88 | ||
|
|
2ef9d58cf1 | ||
|
|
c595004478 | ||
|
|
3a151fb16a | ||
|
|
99d6170c91 | ||
|
|
d1c07cffa3 | ||
|
|
36e5403568 | ||
|
|
e5de7aa2e1 | ||
|
|
b2738846f8 | ||
|
|
c822503f00 | ||
|
|
7f9c0797fb | ||
|
|
34cb6ec1f6 | ||
|
|
71b345a6ee | ||
|
|
cd9dabac07 | ||
|
|
d74d40ae85 | ||
|
|
a34949bc86 | ||
|
|
af673cd536 | ||
|
|
004c474793 | ||
|
|
2116f90197 | ||
|
|
ef78a4310b | ||
|
|
fca9be5a9a | ||
|
|
ec969f3351 | ||
|
|
2f930733a2 | ||
|
|
c36b7571bf | ||
|
|
7e9b56edac | ||
|
|
37a87d59ec | ||
|
|
89414bdc34 | ||
|
|
56adf83688 | ||
|
|
182a2d0cc7 | ||
|
|
67620830db | ||
|
|
ad992aff3d | ||
|
|
9f3aa1200d | ||
|
|
b0a4c2c716 | ||
|
|
5438b98906 | ||
|
|
81fe1dd834 | ||
|
|
1e16c84e01 | ||
|
|
0958221b99 | ||
|
|
f4e9409e30 | ||
|
|
29a360ec69 | ||
|
|
e94d00e173 | ||
|
|
58bc94bb8e | ||
|
|
27d276091a | ||
|
|
aab130cc8b | ||
|
|
7da6419e6b | ||
|
|
3e01c94cf4 | ||
|
|
5a61e26e0e | ||
|
|
67cffb963d | ||
|
|
2b8e7bc80a | ||
|
|
f5699caa1c | ||
|
|
007d2572ec | ||
|
|
6685c97686 | ||
|
|
d2443ecc8f | ||
|
|
f9b726fb87 | ||
|
|
a21eaed68f | ||
|
|
5a3b222dd6 | ||
|
|
30e2f97b27 | ||
|
|
5e861f6532 | ||
|
|
57cdb17162 | ||
|
|
2184647a9a | ||
|
|
bf2d88dc1e | ||
|
|
1a54cc0a9e | ||
|
|
f1e0b05dc4 | ||
|
|
b5b273d3ef | ||
|
|
d89b691fba | ||
|
|
f888cfd66a | ||
|
|
a6807f0b9a | ||
|
|
59389793dc | ||
|
|
5d5cbcf87e | ||
|
|
756a63cc4b | ||
|
|
ec9ecfbf56 | ||
|
|
756fd5b9bf | ||
|
|
8a8dd2f29f | ||
|
|
518758ca7c | ||
|
|
37467e85ac | ||
|
|
0b0a2a52d0 | ||
|
|
6564810f9b | ||
|
|
c59a27d07a | ||
|
|
69ae0abf2a | ||
|
|
848184e8a5 | ||
|
|
e937d85212 | ||
|
|
33d6ccb403 | ||
|
|
490a70caa5 | ||
|
|
d93cb5e22a | ||
|
|
4ffa68f14c | ||
|
|
e20ba6de49 | ||
|
|
afe39bc285 | ||
|
|
2b9a1d888b | ||
|
|
0701bd1c63 | ||
|
|
cc457d3fc1 | ||
|
|
7a416a829b | ||
|
|
d026fc4ce6 | ||
|
|
7d9ce23446 | ||
|
|
85bacc0b74 | ||
|
|
f739fe345a | ||
|
|
4af09d8402 | ||
|
|
7b2337aec4 | ||
|
|
e94b531ee1 | ||
|
|
9e855e939f | ||
|
|
30d672124d | ||
|
|
cd880119c8 | ||
|
|
3a45a3dc3a | ||
|
|
0ab02a302c | ||
|
|
e8841f67c3 | ||
|
|
065cfb55ee | ||
|
|
45b5b5c210 | ||
|
|
91c1672c14 | ||
|
|
c93f8f4104 | ||
|
|
d73a35099d | ||
|
|
df5601c29a | ||
|
|
41f1b4f090 | ||
|
|
65ba85c5bd | ||
|
|
5f66795cb8 | ||
|
|
2b334450f9 | ||
|
|
93e51d6671 | ||
|
|
7bd0ce4b9a | ||
|
|
f851822ded | ||
|
|
46c68e910e | ||
|
|
f73b4a295c | ||
|
|
2c7ce3d346 | ||
|
|
cf798f296d | ||
|
|
738ba6769e | ||
|
|
6978dba76f | ||
|
|
18c7a095bf | ||
|
|
8cd41c644c | ||
|
|
5ce3f53659 | ||
|
|
5ae651083e | ||
|
|
6d28021460 | ||
|
|
7c8f78f13e | ||
|
|
525be8b73c | ||
|
|
18eaaa07f0 | ||
|
|
ae80c98370 | ||
|
|
894f581915 | ||
|
|
f65af38e65 | ||
|
|
2bc0de0b77 | ||
|
|
47ac447f58 | ||
|
|
3001c332c3 | ||
|
|
9d3a292399 | ||
|
|
b1546b7d52 | ||
|
|
e8c1c880f1 | ||
|
|
f8f27f84e8 | ||
|
|
fd8029f77c | ||
|
|
3bd3c3860d | ||
|
|
c954784c1d | ||
|
|
5090b6a4f4 | ||
|
|
1f83c25503 | ||
|
|
9a4c01c5f3 | ||
|
|
171bcbb83c | ||
|
|
514ba65f4c | ||
|
|
bcd5608410 | ||
|
|
1565e175b6 | ||
|
|
fcac17d298 | ||
|
|
2ddf7cd9af | ||
|
|
5cb570fb1f | ||
|
|
71fd3536bf | ||
|
|
feef8d9c26 | ||
|
|
bde0802271 | ||
|
|
7c34652d21 | ||
|
|
47e8c17786 | ||
|
|
909945b91f | ||
|
|
1a347c2ce7 | ||
|
|
2eeb35565a | ||
|
|
08b386f9cb | ||
|
|
39e2e1bae0 | ||
|
|
749291404c | ||
|
|
6d058eeeee | ||
|
|
0f2655b53c | ||
|
|
560aa64449 | ||
|
|
38f2dcce35 | ||
|
|
c7ff132202 | ||
|
|
2f5bd9c888 | ||
|
|
407666da46 | ||
|
|
fc13c09b25 | ||
|
|
bb900a9f9d | ||
|
|
c6a0b70795 | ||
|
|
00d806da59 | ||
|
|
a14e087299 | ||
|
|
f73d63e385 | ||
|
|
3166b9d9f5 | ||
|
|
4a1a03c683 | ||
|
|
9df05e8207 | ||
|
|
16417acbfc | ||
|
|
f3b963f1b8 | ||
|
|
75468d7b44 | ||
|
|
36835ec766 | ||
|
|
a0e09b1568 | ||
|
|
a4de4b5d61 | ||
|
|
56f25d5b0b | ||
|
|
63065c3d13 | ||
|
|
066a8fdc3f | ||
|
|
6ea6bf8db7 | ||
|
|
d4ea1ed1b6 | ||
|
|
73eed11d26 | ||
|
|
31e3d18f62 | ||
|
|
5279660a51 | ||
|
|
5a16b75b94 | ||
|
|
91395e31f9 | ||
|
|
847b17e502 | ||
|
|
2e0eb5f4ed | ||
|
|
736014b2ec | ||
|
|
b739d3db2f | ||
|
|
c90a6b6591 | ||
|
|
1edbf737bb | ||
|
|
e095459b50 | ||
|
|
50a63e5cc8 | ||
|
|
2eba8f268f | ||
|
|
23167da3f9 | ||
|
|
423c860f73 | ||
|
|
a39a110ab9 | ||
|
|
d4d95498a3 | ||
|
|
d8f009a9bb | ||
|
|
31e0c0882b | ||
|
|
a7875cd8c2 | ||
|
|
6342eba8da | ||
|
|
bddc8c873b | ||
|
|
7e2b8250af | ||
|
|
ab4d32e60f | ||
|
|
6e0e3ff345 | ||
|
|
351acc6d6f | ||
|
|
7d90504b18 | ||
|
|
15d647276b | ||
|
|
06d6784934 | ||
|
|
055ccbc896 | ||
|
|
66efe621c9 | ||
|
|
0ec16f60c8 | ||
|
|
9d55f92a4e | ||
|
|
c2725b051a | ||
|
|
be606125ff | ||
|
|
d0dbc1ba65 | ||
|
|
5552ee46a1 | ||
|
|
87b79bdc01 | ||
|
|
1100db045f | ||
|
|
0c0aa03bc8 | ||
|
|
f2b08b64ca | ||
|
|
fe14da3d04 | ||
|
|
3aae944f66 | ||
|
|
1b5515eaa5 | ||
|
|
6f1e81d880 | ||
|
|
e335e63e8a | ||
|
|
27f7f2d66d | ||
|
|
298169eb59 | ||
|
|
5e0237d8a6 | ||
|
|
736eb04028 | ||
|
|
d6bf9584b7 | ||
|
|
d2e0e65685 | ||
|
|
34d108941a | ||
|
|
d58bfd92b9 | ||
|
|
0c8ef97698 | ||
|
|
c6ba9519b8 | ||
|
|
97d2ab236b | ||
|
|
f33032c0ef | ||
|
|
5d5ee4c40d | ||
|
|
9ac35ef965 | ||
|
|
d845c03da1 | ||
|
|
a551ed02ac | ||
|
|
b92a78c828 | ||
|
|
62e242067b | ||
|
|
48aeda36b9 | ||
|
|
477761b77a | ||
|
|
120d70e207 | ||
|
|
5aaa827e18 | ||
|
|
4544703e9d | ||
|
|
2ddc86aa2f | ||
|
|
ba5bcc37f1 | ||
|
|
3492bd5b6b | ||
|
|
2e8e49c276 | ||
|
|
57e0cceaad | ||
|
|
5a14360d5a | ||
|
|
05574b8797 | ||
|
|
6493572113 | ||
|
|
a35aac5eae | ||
|
|
d00288c6ca | ||
|
|
2730141975 | ||
|
|
6f0c617896 | ||
|
|
cff9a24cd5 | ||
|
|
4e2473b8ea | ||
|
|
545a9acd6e | ||
|
|
ca600aab3f | ||
|
|
5260f16e31 | ||
|
|
72188b7413 | ||
|
|
eb2f91ec04 | ||
|
|
54cd9d7f80 | ||
|
|
e9aae9e229 | ||
|
|
41e4edcfca | ||
|
|
d2f50674bb | ||
|
|
7904be8420 | ||
|
|
0d1043d721 | ||
|
|
b9bae1b8c3 | ||
|
|
2704bc5419 | ||
|
|
ea2c6cffd9 | ||
|
|
12f4c6f06f | ||
|
|
c5e806848c | ||
|
|
e2209a9a18 | ||
|
|
fdfb3e654f | ||
|
|
2a812dcccc | ||
|
|
32f8ab11a9 | ||
|
|
e40b183083 | ||
|
|
d49b8c7d4c | ||
|
|
757cbcdac7 | ||
|
|
4fcf322350 | ||
|
|
ede0319097 | ||
|
|
6fe6655ed1 | ||
|
|
809a198969 | ||
|
|
1d7ce5d10b | ||
|
|
b87ccde43b | ||
|
|
89836e1844 | ||
|
|
b730edf085 | ||
|
|
568042b1d3 | ||
|
|
353cfacf03 | ||
|
|
7f4edf7cd7 | ||
|
|
620edc7e4b | ||
|
|
2967c94ab7 | ||
|
|
40b1dd793e | ||
|
|
aa0364d96e | ||
|
|
b7f1f4f158 | ||
|
|
37bd0ff8e8 | ||
|
|
51ccf3f4a6 | ||
|
|
6dc9367285 | ||
|
|
8ef17362a7 | ||
|
|
51d5ffd0d2 | ||
|
|
9de8b01a90 | ||
|
|
69ef1c676d | ||
|
|
8971dd2932 | ||
|
|
b0626f8f35 | ||
|
|
b11315f58d | ||
|
|
f6ecab2fe9 | ||
|
|
08bfbf832c | ||
|
|
22af17ef42 | ||
|
|
2f93295c49 | ||
|
|
eae4b59639 | ||
|
|
e0c2486ca8 | ||
|
|
6aa5136356 | ||
|
|
a5810d7432 | ||
|
|
dfda5fb533 | ||
|
|
ec3d7d579a | ||
|
|
b07314676c | ||
|
|
4c9accc7a3 | ||
|
|
1e2280e66f | ||
|
|
5287697b5c | ||
|
|
b2e3cfdead | ||
|
|
2c3e08667b | ||
|
|
878b8d2055 | ||
|
|
65c78855f4 | ||
|
|
4229eed9e1 | ||
|
|
acd50e3811 | ||
|
|
e0bdb8c018 | ||
|
|
1b7053743f | ||
|
|
8c3d3311e8 | ||
|
|
be78f27eea | ||
|
|
e042d5c584 | ||
|
|
b812d7600a | ||
|
|
68ea43efd0 | ||
|
|
d6b2f1dbd3 | ||
|
|
4445c154ab | ||
|
|
c862cb4ed1 | ||
|
|
90883e4791 | ||
|
|
2d246a2c09 | ||
|
|
78d90ede24 | ||
|
|
e509e2bbcb | ||
|
|
478882211f | ||
|
|
fec94bd0c4 | ||
|
|
91035380e4 | ||
|
|
afa32d12e4 | ||
|
|
817068cd07 | ||
|
|
9cde818fc9 | ||
|
|
34be3454f2 | ||
|
|
017c922bbf | ||
|
|
46218e7c24 | ||
|
|
8881b48ddb | ||
|
|
437fef3051 | ||
|
|
c88b2adacf | ||
|
|
1865fd6edd | ||
|
|
ea28d41d41 | ||
|
|
d7bf521871 | ||
|
|
8db18cb578 | ||
|
|
42b6110574 | ||
|
|
918e43e871 | ||
|
|
016ae7f6b3 | ||
|
|
286098fc96 | ||
|
|
51e192b3b4 | ||
|
|
95b852a8ca | ||
|
|
10e89930d3 | ||
|
|
2434bb767c | ||
|
|
ac3cfc4391 | ||
|
|
2e2a3b5ac7 | ||
|
|
138e0933c2 | ||
|
|
672ee7245f | ||
|
|
1a596d9651 | ||
|
|
cd4979b51c | ||
|
|
123830ec3f | ||
|
|
da0ce3321f | ||
|
|
5fe026c648 | ||
|
|
c4774082ef | ||
|
|
30dff79ff9 | ||
|
|
3942be2b44 | ||
|
|
be51f1246d | ||
|
|
3619727cca | ||
|
|
206148343b | ||
|
|
6c88bfcd03 | ||
|
|
af7f6004a9 | ||
|
|
dd6e645d0e | ||
|
|
22755a8a80 | ||
|
|
85e128c803 | ||
|
|
8bb4855b3e | ||
|
|
294a1a9391 | ||
|
|
62237665d8 | ||
|
|
a256ceff0e | ||
|
|
e289ce98a1 | ||
|
|
4d6c256e98 | ||
|
|
508cf175e1 | ||
|
|
b13f0c5c82 | ||
|
|
7631844a60 | ||
|
|
9635ce6b3d | ||
|
|
2ef860f895 | ||
|
|
1f604bee50 | ||
|
|
f092ac5a6d | ||
|
|
d7e1b5d4df | ||
|
|
b437ecfbf4 | ||
|
|
a574505dcc | ||
|
|
91d6a26ca0 | ||
|
|
8ec5d1453a | ||
|
|
12f8d7bcf7 | ||
|
|
ff591346ce | ||
|
|
600549559f | ||
|
|
b962ff63b0 | ||
|
|
52586c4d17 | ||
|
|
28617bfaaa | ||
|
|
335c402656 | ||
|
|
3ab42497ba | ||
|
|
cd0724bace | ||
|
|
4e88e16bc8 | ||
|
|
95cea74d0f | ||
|
|
1334e17d15 | ||
|
|
492295c5a2 | ||
|
|
3b9d34af51 | ||
|
|
2a00111629 | ||
|
|
347eee7298 | ||
|
|
7929e2ceda | ||
|
|
0c5f32f50a | ||
|
|
c56e8ff2f5 | ||
|
|
55f54e47a2 | ||
|
|
76c17657e3 | ||
|
|
5e3b928a96 | ||
|
|
f4aa850478 | ||
|
|
c2529a4155 | ||
|
|
109d0d3225 | ||
|
|
ab4e2c97d3 | ||
|
|
0e12939552 | ||
|
|
57893c342f | ||
|
|
50d4df11e1 | ||
|
|
3749ccde2a | ||
|
|
c08f341ef8 | ||
|
|
684148cae8 | ||
|
|
d726cb3ebe | ||
|
|
9485dfc44f | ||
|
|
438a628720 | ||
|
|
8c2e3a9e4e | ||
|
|
b2f7c3129e | ||
|
|
64916c2971 | ||
|
|
0609b59d96 | ||
|
|
a41388158b | ||
|
|
6698866bd5 | ||
|
|
5500648646 | ||
|
|
f80cc2f932 | ||
|
|
f91e42b5a2 | ||
|
|
5094c23fe3 | ||
|
|
f688a536e7 | ||
|
|
b9f8af2788 | ||
|
|
6b39c7aa84 | ||
|
|
88c09f9734 | ||
|
|
7ea10d3109 | ||
|
|
0d2281ac04 | ||
|
|
c3e35c8ca1 | ||
|
|
a30cf37991 | ||
|
|
acbd1d72b5 | ||
|
|
5d7a8e9edc | ||
|
|
e0132151d4 | ||
|
|
13f8faca02 | ||
|
|
67c1948979 | ||
|
|
35c48dd63c | ||
|
|
e597bf5b5e | ||
|
|
88b00edc52 | ||
|
|
211af529a6 | ||
|
|
5a6dc2c339 | ||
|
|
e08c473f5d | ||
|
|
7a78a0b28f | ||
|
|
3161248e22 | ||
|
|
bfd2a80270 | ||
|
|
b8f73d0d11 | ||
|
|
6c0731c604 | ||
|
|
0a28a3229c | ||
|
|
ecb25efdfb | ||
|
|
8e00bfe0eb | ||
|
|
d19a4861c3 | ||
|
|
1c551f13a6 | ||
|
|
bbdd8c06f6 | ||
|
|
712e26cd47 | ||
|
|
73417c4932 | ||
|
|
a53203e2ef | ||
|
|
1a25100bd7 | ||
|
|
db6ed23d59 | ||
|
|
19d327904e | ||
|
|
b4a73dfecd | ||
|
|
fe4d6b6028 | ||
|
|
a71a1c0dd0 | ||
|
|
5d6ae7c994 | ||
|
|
dc4b00830b | ||
|
|
a019c0116a | ||
|
|
bf4daa1995 | ||
|
|
91122bb62e | ||
|
|
f50ba15064 | ||
|
|
b88ae5f133 | ||
|
|
86fb3ce8f4 | ||
|
|
75200d01e2 | ||
|
|
5c124270ab | ||
|
|
ee2c0a8fe3 | ||
|
|
f1117c1fdd | ||
|
|
a94cef9200 | ||
|
|
d11f71c015 | ||
|
|
7587fab4a2 | ||
|
|
50f935b04c | ||
|
|
4a6a6680d9 | ||
|
|
9d27424fc1 | ||
|
|
4a9bcccc01 | ||
|
|
168ba9c0a1 | ||
|
|
cb12d7afa5 | ||
|
|
3c23c30dbf | ||
|
|
30b4dee6b8 | ||
|
|
234afb6498 | ||
|
|
5978cd996d | ||
|
|
8e51f4d46e | ||
|
|
b9def1b64c | ||
|
|
e655606d45 | ||
|
|
92cbd90c62 | ||
|
|
d16f011fb5 | ||
|
|
57c206bcd6 | ||
|
|
24baa667bd | ||
|
|
f7657488f1 | ||
|
|
c96b769834 | ||
|
|
320dfed35e | ||
|
|
2c5a2de20c | ||
|
|
48a6674533 | ||
|
|
76c4c3637d | ||
|
|
d98f212496 | ||
|
|
11693b6038 | ||
|
|
9f83b0ed2a | ||
|
|
f84f572b39 | ||
|
|
0b2ad46a78 | ||
|
|
a46c5c88c0 | ||
|
|
2448b8de54 | ||
|
|
dea1bc690b | ||
|
|
789a359a50 | ||
|
|
7a2a400559 | ||
|
|
da0f5f3d98 | ||
|
|
b2342730a5 | ||
|
|
9c907875f7 | ||
|
|
15ccbf9305 | ||
|
|
83f0974449 | ||
|
|
b11a146230 | ||
|
|
60f2552649 | ||
|
|
1392966e57 | ||
|
|
fc0eba060b | ||
|
|
2bf7384cfb | ||
|
|
e3ed4915d7 | ||
|
|
c60578c1b0 | ||
|
|
0eda784b7f | ||
|
|
bc68714899 | ||
|
|
44a8d24a32 | ||
|
|
f647ce5eee | ||
|
|
f1b645fc25 | ||
|
|
b2d91b9ad4 | ||
|
|
b2cb413058 | ||
|
|
97473fe3df | ||
|
|
7618086a4f | ||
|
|
97468bbadf | ||
|
|
9a2c14992b | ||
|
|
a59941bb28 | ||
|
|
33806af9b8 | ||
|
|
3e2cda5d0a | ||
|
|
fa96bee2d3 | ||
|
|
08121ac830 | ||
|
|
fd96ba4fea | ||
|
|
75b9d4a08c | ||
|
|
029abfce97 | ||
|
|
ce0012353f | ||
|
|
dd74c5aed1 | ||
|
|
d2150d71f0 | ||
|
|
d6ad711ae6 | ||
|
|
67a39a1228 | ||
|
|
7d4c6bb773 | ||
|
|
2f4c510318 | ||
|
|
3c3581178a | ||
|
|
548b9d6c4c | ||
|
|
6332064074 | ||
|
|
c4f659ca8c | ||
|
|
8c5475f152 | ||
|
|
62e6e57ecd | ||
|
|
2c0cdb4289 | ||
|
|
14a3005a7c | ||
|
|
339c214ae5 | ||
|
|
ee3c8f24c2 | ||
|
|
9f7cc4d959 | ||
|
|
b0bdb0dfe9 | ||
|
|
3762f96a42 | ||
|
|
475ac7e1df | ||
|
|
fbb54196c3 | ||
|
|
2c0825655a | ||
|
|
12b4734f6d | ||
|
|
5822084a51 | ||
|
|
4379b22868 | ||
|
|
f26f34527e | ||
|
|
4ef443b405 | ||
|
|
e432b92ff1 | ||
|
|
8d3cdccd9b | ||
|
|
bf11c69c53 | ||
|
|
16ac2997a7 | ||
|
|
cb61debdb9 | ||
|
|
eb2a18d4ae | ||
|
|
282a985095 | ||
|
|
943a65a6f0 | ||
|
|
b440092bca | ||
|
|
cf926dbbdb | ||
|
|
00bb442e13 | ||
|
|
29365a7bda | ||
|
|
2d5cf48d3a | ||
|
|
187de8be31 | ||
|
|
fe449b9657 | ||
|
|
29a0696e9c | ||
|
|
fc27316259 | ||
|
|
2ff677c5ee | ||
|
|
81bfcd2a88 | ||
|
|
342dd37103 | ||
|
|
455d111643 | ||
|
|
92d99aa71b | ||
|
|
7e6479a2d5 | ||
|
|
64dd0d0c4d | ||
|
|
57aa62b576 | ||
|
|
1346b87b70 | ||
|
|
e255a1fd19 | ||
|
|
31bc917f97 | ||
|
|
311426a6dd | ||
|
|
f5ee6c472f | ||
|
|
d2c44f767c | ||
|
|
1fda8731c7 | ||
|
|
c23f5ac38e | ||
|
|
1a80c8258c | ||
|
|
0dca929694 | ||
|
|
b9be4b3dd0 | ||
|
|
bd875567cd | ||
|
|
5b42f0064d | ||
|
|
3b60cb0ec6 | ||
|
|
0f35d8b2bc | ||
|
|
c7e7cf6692 | ||
|
|
2007494741 | ||
|
|
09cbe71a86 | ||
|
|
0da65bb90f | ||
|
|
05ea421cc7 | ||
|
|
cfd164684f | ||
|
|
352f3ffb50 | ||
|
|
bfdcc1dcc8 | ||
|
|
454a9e032a | ||
|
|
efe1df531c | ||
|
|
d50230b4a3 | ||
|
|
5a89b7676b | ||
|
|
5e51556fa4 | ||
|
|
b00d237b2e | ||
|
|
9b798c58b4 | ||
|
|
003d8e7e66 | ||
|
|
890aa52090 | ||
|
|
2d4f140614 | ||
|
|
a27ce79837 | ||
|
|
b0c2910017 | ||
|
|
128bf4e0e9 | ||
|
|
9259fe97e2 | ||
|
|
7615b5ea60 | ||
|
|
1924467f93 | ||
|
|
7be85096a1 | ||
|
|
a423a51195 | ||
|
|
ad28c21c1f | ||
|
|
83752c0f9f | ||
|
|
f3d1e1ef76 | ||
|
|
4115576894 | ||
|
|
757a4afe34 | ||
|
|
9c33f4f9c2 | ||
|
|
3cd94f6cbd | ||
|
|
93570f0e55 | ||
|
|
62d14b55d8 | ||
|
|
3aebc76c7e | ||
|
|
8ac619f636 | ||
|
|
294bc0f649 | ||
|
|
57b27feb1d | ||
|
|
e4011231b1 | ||
|
|
5b84b1bad0 | ||
|
|
a24888cb6b | ||
|
|
d27980931b | ||
|
|
df8ee4f952 | ||
|
|
63e4e055bd | ||
|
|
c0b17138e9 | ||
|
|
3c6086a706 | ||
|
|
4f69710047 | ||
|
|
faa834a3ee | ||
|
|
ae9687b74c | ||
|
|
131f763acd | ||
|
|
b951ea47e4 | ||
|
|
b42085b40d | ||
|
|
b8c6ff499b | ||
|
|
4e68055c90 | ||
|
|
b21a0a3dc2 | ||
|
|
0bcbcd1274 | ||
|
|
e93ac54f9b | ||
|
|
b8fac6a0d6 | ||
|
|
3f930cae77 | ||
|
|
c595feae21 | ||
|
|
7f9873ef37 | ||
|
|
df3aef5b18 | ||
|
|
b4cf5d55e6 | ||
|
|
3af8f78a16 | ||
|
|
8e2e7cc31d | ||
|
|
8e448ca0aa | ||
|
|
b2789762d5 | ||
|
|
e116d0734f | ||
|
|
a5b68a51d4 | ||
|
|
ec4e745fd7 | ||
|
|
d3f5a11ce2 | ||
|
|
62d99fd16c | ||
|
|
561fb77158 | ||
|
|
4846ccbd06 | ||
|
|
08f8c7b913 | ||
|
|
1413e61bb7 | ||
|
|
3d1105a304 | ||
|
|
e81453f9cc | ||
|
|
78c4ef3027 | ||
|
|
a6d8a01dbe | ||
|
|
09445da482 | ||
|
|
2c4799cb6a | ||
|
|
a27d9ef42b | ||
|
|
d4cf794f56 | ||
|
|
3a7487e541 | ||
|
|
85ddbf48a3 | ||
|
|
b82a67ec4d | ||
|
|
01d32f802c | ||
|
|
ec4e8ae657 | ||
|
|
97a581c802 | ||
|
|
7f5458a00a | ||
|
|
4e2f5b2591 | ||
|
|
7119ca03d7 | ||
|
|
f2e54cb30b | ||
|
|
fa809ac509 | ||
|
|
86cad4cf3a | ||
|
|
c9b0ed62d3 | ||
|
|
de6720ce96 | ||
|
|
a532925345 | ||
|
|
6ba44ce798 | ||
|
|
ae59ee1212 | ||
|
|
4701d5873e | ||
|
|
75b7e14a4c | ||
|
|
5305b9b5e4 | ||
|
|
22f8a0f5e7 | ||
|
|
ecdbc35698 | ||
|
|
52af6edc27 | ||
|
|
d392ac652b | ||
|
|
57863c9016 | ||
|
|
0d0b3ed9a6 | ||
|
|
f54f8fe1ab | ||
|
|
02ffa135a9 | ||
|
|
6266cfc1da | ||
|
|
41c1538be4 | ||
|
|
1293325ba5 | ||
|
|
174c4ac0a9 | ||
|
|
c9b214227f | ||
|
|
31714aef51 | ||
|
|
d38a282ad3 | ||
|
|
3c6600b488 | ||
|
|
98a0d64f08 | ||
|
|
74d3829c90 | ||
|
|
a56b77c410 | ||
|
|
eb1d96246c | ||
|
|
8c9c348e14 | ||
|
|
02b5b864b2 | ||
|
|
af040c285a | ||
|
|
d016600b86 | ||
|
|
2845653597 | ||
|
|
70d3cb2ec6 | ||
|
|
1186f79958 | ||
|
|
f28564b030 | ||
|
|
433fa79a05 | ||
|
|
f5a16ffd4c | ||
|
|
b7747b61e3 | ||
|
|
c177e3bf62 | ||
|
|
95128e92b0 | ||
|
|
409055ee48 | ||
|
|
a8edb6848a | ||
|
|
cb25518b9a | ||
|
|
cb423e2566 | ||
|
|
c1da67728a | ||
|
|
98c60e7686 | ||
|
|
b1eba9a94c | ||
|
|
acc952abd1 | ||
|
|
538875f285 | ||
|
|
055d1a3d2f | ||
|
|
9d02ddd3e3 | ||
|
|
99a80cc2c2 | ||
|
|
893ba89462 | ||
|
|
c96f9b6d3d | ||
|
|
985c0a2d54 | ||
|
|
5b20b0d8ef | ||
|
|
5936b33e09 | ||
|
|
22025666c8 | ||
|
|
aae96d7dab | ||
|
|
ec22a125a0 | ||
|
|
daef014f1b | ||
|
|
95df7f3db2 | ||
|
|
c302fdb3ed | ||
|
|
bdcabf7e0c | ||
|
|
5d469b730b | ||
|
|
348d2a5427 | ||
|
|
7cbdf1f095 | ||
|
|
dd7e285f0a | ||
|
|
7cf702542b | ||
|
|
4fee03ae06 | ||
|
|
363e1eda65 | ||
|
|
df78d821d3 | ||
|
|
bfa36304cf | ||
|
|
4a3668af8a | ||
|
|
766b603f84 | ||
|
|
b0bf28b88a | ||
|
|
8a2b6ef6ab | ||
|
|
5da7e8508a | ||
|
|
da76a6c0c5 | ||
|
|
76af850276 | ||
|
|
3a64eaf734 | ||
|
|
d6052a78b0 | ||
|
|
2cf2f2781d | ||
|
|
23fc533a11 | ||
|
|
8bb41097c9 | ||
|
|
3b969ae764 | ||
|
|
9e45c7f577 | ||
|
|
c6417cadce | ||
|
|
2602d0ba10 | ||
|
|
144346e743 | ||
|
|
fab44e06aa | ||
|
|
5e6e5a94e7 | ||
|
|
8947da8733 | ||
|
|
f3e73ca9bd | ||
|
|
284c54a31f | ||
|
|
9c46fb1533 | ||
|
|
613b7ca9c8 | ||
|
|
761517abf6 | ||
|
|
8fcb880394 | ||
|
|
20bed4ce21 | ||
|
|
b14a5fe545 | ||
|
|
8317b5ebf6 | ||
|
|
a934c7e47b | ||
|
|
3fe780e607 | ||
|
|
eb28a8ce7b | ||
|
|
128b450308 | ||
|
|
2e1454d094 | ||
|
|
834b847c0c | ||
|
|
4a52d75bc6 | ||
|
|
fd159ded8f | ||
|
|
df9ec020e8 | ||
|
|
9dcfa94a21 | ||
|
|
9d8cc89730 | ||
|
|
f7981d9440 | ||
|
|
eb2cbabd5a | ||
|
|
69cecdbaa9 | ||
|
|
311fafd918 | ||
|
|
941183eb4c | ||
|
|
0109aa76a9 | ||
|
|
b3fa00ca58 | ||
|
|
3585aabb2b | ||
|
|
a71f603e16 | ||
|
|
db07330732 | ||
|
|
deb55dfde8 | ||
|
|
d145ae30ec | ||
|
|
4fe7797685 | ||
|
|
0ed519b947 | ||
|
|
18aa5b9c5e | ||
|
|
522e3088ae | ||
|
|
48fe086e11 | ||
|
|
70a65f8fef | ||
|
|
aaef1a76f2 | ||
|
|
f5d2de2c00 | ||
|
|
16ae67a435 | ||
|
|
7249976e60 | ||
|
|
9654b38277 | ||
|
|
10fa5f97ae | ||
|
|
bce7488ee7 | ||
|
|
73856153bd | ||
|
|
3be0d61806 | ||
|
|
735013e764 | ||
|
|
fa23aaac85 | ||
|
|
00df1faf1e | ||
|
|
0f38838fc7 | ||
|
|
4e51ebe3d3 | ||
|
|
0db6261ead | ||
|
|
2586b71106 | ||
|
|
c0dada7b24 | ||
|
|
45d9d51eea | ||
|
|
61449ac96f | ||
|
|
915b078651 | ||
|
|
07563be6c6 | ||
|
|
a2ebe87eb7 | ||
|
|
3d29e46f9a | ||
|
|
dc0c05aefd | ||
|
|
7156a1e413 | ||
|
|
458688af89 | ||
|
|
9f8d4f57aa | ||
|
|
e150cd5e3a | ||
|
|
0e98047126 | ||
|
|
2aba141d10 | ||
|
|
9fa76d6d7c | ||
|
|
7eb7367d16 | ||
|
|
7b00ec064f | ||
|
|
690dc7016d | ||
|
|
e47e03526f | ||
|
|
dda01456e4 | ||
|
|
021446b4b5 | ||
|
|
dd5dc2a2a7 | ||
|
|
5cb5b5865f | ||
|
|
a56fb40bbd | ||
|
|
ed92e6c79c | ||
|
|
f143a20647 | ||
|
|
058bc9121f | ||
|
|
1f12a32bfb | ||
|
|
07f97631c5 | ||
|
|
e98aae2c4a | ||
|
|
d37db67a53 | ||
|
|
f278da9966 | ||
|
|
860ccb8b34 | ||
|
|
e112906aac | ||
|
|
ebce126de1 | ||
|
|
90fdb6e3db | ||
|
|
4a3fbf987e | ||
|
|
06ae91238c | ||
|
|
5a665baa18 | ||
|
|
2ddcd0aae5 | ||
|
|
3871aa776d | ||
|
|
9c461df89e | ||
|
|
0519a437cd | ||
|
|
1ba7626853 | ||
|
|
a38f3ab5ab | ||
|
|
d2ce75c51d | ||
|
|
847afec06f | ||
|
|
c274817669 | ||
|
|
880a51a0d7 | ||
|
|
5d28fe921b | ||
|
|
c172e24b7d | ||
|
|
5387d5abd7 | ||
|
|
d4394128cb | ||
|
|
4ca84e93c6 | ||
|
|
5d5fa27aee | ||
|
|
8d58e27d2b | ||
|
|
80283497f0 | ||
|
|
d5dc9ff6e1 | ||
|
|
ab9971c67b | ||
|
|
807fe75522 | ||
|
|
db03fbf4f3 | ||
|
|
fc6f4f2fc1 | ||
|
|
2579c01b82 | ||
|
|
f5a66e0f70 | ||
|
|
107df7ce69 | ||
|
|
a18aaeb0b9 | ||
|
|
1607de86fd | ||
|
|
e5aa4764c2 | ||
|
|
60895b0f06 | ||
|
|
722c237c17 | ||
|
|
8a0149a03d | ||
|
|
b286765b4f | ||
|
|
c8e0dd8aaa | ||
|
|
752c7f5826 | ||
|
|
c98991f7d9 | ||
|
|
6d4b8c3411 | ||
|
|
4341326ef4 | ||
|
|
56a5fca4ea | ||
|
|
ceb99b237f | ||
|
|
5377ebdea8 | ||
|
|
dec17db9e2 | ||
|
|
02c10d948a | ||
|
|
6d9d89b5de | ||
|
|
78300b53dc | ||
|
|
06598ae83e | ||
|
|
6d17d339e4 | ||
|
|
60aa35dd24 | ||
|
|
6c7e079638 | ||
|
|
740a12a67b | ||
|
|
cca46cf095 | ||
|
|
bca9abbeda | ||
|
|
3ee59c3e3b | ||
|
|
c718ed97f9 | ||
|
|
1f07d788eb | ||
|
|
f857acecd4 | ||
|
|
bac0341f1d | ||
|
|
fbe88e6504 | ||
|
|
db0dc5b3c1 | ||
|
|
1eb3e40724 | ||
|
|
f10132e682 | ||
|
|
308a0243aa | ||
|
|
5bf87469fd | ||
|
|
c4abb0434a | ||
|
|
c210a3ec43 | ||
|
|
abfa5f2d67 | ||
|
|
078568c201 | ||
|
|
a9c7adf8ce | ||
|
|
1aeed8d11e | ||
|
|
20741b8586 | ||
|
|
b785a26b0a | ||
|
|
17563e175a | ||
|
|
4695efe278 | ||
|
|
1581ad665e | ||
|
|
f5e612ce2f | ||
|
|
88e7ad86b5 | ||
|
|
a834674942 | ||
|
|
53633a4eae | ||
|
|
e6b8074d4e | ||
|
|
071ff7bed5 | ||
|
|
5a91e6e10a | ||
|
|
89121804ff | ||
|
|
9beb27f64c | ||
|
|
de5cf7de79 | ||
|
|
6582d8b4f9 | ||
|
|
ba7be96cbb | ||
|
|
fd1d1357db | ||
|
|
1449161be0 | ||
|
|
5455049d1f | ||
|
|
9f0d27491e | ||
|
|
5ebe577cad | ||
|
|
e373ea9586 | ||
|
|
8c3cec979a | ||
|
|
55bfc3dfe1 | ||
|
|
c3cd40a03d | ||
|
|
535ab52072 | ||
|
|
1f2f92626a | ||
|
|
28a50d4618 | ||
|
|
a1b6476723 | ||
|
|
43169028f9 | ||
|
|
5968b4765b | ||
|
|
c9ff7569ee | ||
|
|
4f840c3573 | ||
|
|
8c907be393 | ||
|
|
64cd086b4e | ||
|
|
9977348a3d | ||
|
|
9fed7948b0 | ||
|
|
b9285d9327 | ||
|
|
e3ae8328f3 | ||
|
|
f8b225a30d | ||
|
|
8c80a91e55 | ||
|
|
af589250e2 | ||
|
|
d3d34b70b0 | ||
|
|
1b09b95c17 | ||
|
|
34c434b2cf | ||
|
|
b93d1f46fc | ||
|
|
a22a304673 | ||
|
|
5d7f64ce0b | ||
|
|
2eaa1cb143 | ||
|
|
3132200b6b | ||
|
|
62280206de | ||
|
|
7c6993ea3a | ||
|
|
c76f2051bd | ||
|
|
4362b9b650 | ||
|
|
1ef21c1927 | ||
|
|
9ab8d1728a | ||
|
|
d37f9ef601 | ||
|
|
e8ec4dfbba | ||
|
|
b25e4be24c | ||
|
|
4faca1ae22 | ||
|
|
5ef4de9db7 | ||
|
|
1f34b436a5 | ||
|
|
61ec699ddb | ||
|
|
8a4e70b97f | ||
|
|
bbbfef92bf | ||
|
|
6837cc69bd | ||
|
|
8b634f27c8 | ||
|
|
b06c892a20 | ||
|
|
ad65ad72a4 | ||
|
|
0d45225d77 | ||
|
|
57db10d55b | ||
|
|
2c28b95f05 | ||
|
|
697a6b5ade | ||
|
|
7805a0e390 | ||
|
|
d93742acd3 | ||
|
|
a92404479b | ||
|
|
67fcd627a5 | ||
|
|
47dbb49f6a | ||
|
|
5397e4750e | ||
|
|
99cf8567e9 | ||
|
|
e4904f2ddf | ||
|
|
605c2c07eb | ||
|
|
e7701a4f07 | ||
|
|
292e86c3dd | ||
|
|
67c0504330 | ||
|
|
716e981979 | ||
|
|
99606bcb7d | ||
|
|
d1097c803c | ||
|
|
58df60018c | ||
|
|
1c5a533798 | ||
|
|
e9260deb0f | ||
|
|
07b3aeec3e | ||
|
|
3800794af9 | ||
|
|
0d9374d747 | ||
|
|
bf6517eadc | ||
|
|
d33758be36 | ||
|
|
c364bab257 | ||
|
|
63aff94a31 | ||
|
|
dbef7f99ba | ||
|
|
a9d56d320f | ||
|
|
1a7715f45b | ||
|
|
5e920bb964 | ||
|
|
adad288983 | ||
|
|
af86e9f409 | ||
|
|
a77d6a348a | ||
|
|
a915845978 | ||
|
|
c0ef1db7eb | ||
|
|
88c80fcd25 | ||
|
|
64c080e708 | ||
|
|
537b28d413 | ||
|
|
1bae7697f3 | ||
|
|
422ddc41ee | ||
|
|
210d583aa2 | ||
|
|
fb48028b27 | ||
|
|
4ca9ef2eea | ||
|
|
915214d241 | ||
|
|
3e2fc3f001 | ||
|
|
de3bfc3ed5 | ||
|
|
c496039c2e | ||
|
|
da033fa614 | ||
|
|
77f687bb5d | ||
|
|
6e055bfbf7 | ||
|
|
1c2d4f456e | ||
|
|
a60790f86c | ||
|
|
1baf259552 | ||
|
|
bff600bc3f | ||
|
|
78019ab5b6 | ||
|
|
88833ac4e9 | ||
|
|
82fceb85d3 | ||
|
|
4348299e94 | ||
|
|
921495363c | ||
|
|
678c875109 | ||
|
|
7b96918d6e | ||
|
|
89e6132658 | ||
|
|
e369b01490 | ||
|
|
07bee3eb41 | ||
|
|
fddaf4aeda | ||
|
|
285c25a13e | ||
|
|
6a42a14f72 | ||
|
|
87d6fe404b | ||
|
|
51fb5cc6b6 | ||
|
|
cbfa97d69b | ||
|
|
ed010e32b8 | ||
|
|
c6ca744ddd | ||
|
|
38c5ca5403 | ||
|
|
95fc0f6f14 | ||
|
|
f6f7371bcd | ||
|
|
5505161df6 | ||
|
|
2dbf0d0b39 | ||
|
|
cfa74f7b0c | ||
|
|
49e2a302ef | ||
|
|
04b8119dbf | ||
|
|
65fe38bd7a | ||
|
|
1f14fdbf03 | ||
|
|
7494fba344 | ||
|
|
b70785e02b | ||
|
|
c62b24b506 | ||
|
|
9a8f60cf9e | ||
|
|
3f9e984507 | ||
|
|
665ff23b1d | ||
|
|
868a5f054c | ||
|
|
276f643418 | ||
|
|
a7bcace080 | ||
|
|
7af035a69d | ||
|
|
8cc930d521 | ||
|
|
e966b92b95 | ||
|
|
2cb4ce7679 | ||
|
|
76e07b70fb | ||
|
|
1a35e3c209 | ||
|
|
f0011a1546 | ||
|
|
cf386caabe | ||
|
|
e76bd0c3c1 | ||
|
|
73865d3b91 | ||
|
|
37d864bc01 | ||
|
|
4c58e3d1d8 | ||
|
|
cebfd85964 | ||
|
|
56d46c1f2c | ||
|
|
102595fcd9 | ||
|
|
8cb84ab943 | ||
|
|
58372c3183 | ||
|
|
d45942f42b | ||
|
|
eae35a983d | ||
|
|
80a468f38c | ||
|
|
a2d4acfea1 | ||
|
|
9252e79f7d | ||
|
|
2ee25392b3 | ||
|
|
fdcdb54326 | ||
|
|
4931f7bde9 | ||
|
|
9da631e64c | ||
|
|
8c4a232466 | ||
|
|
4b82dfffab | ||
|
|
098c316d23 | ||
|
|
62ecfff5da | ||
|
|
e3c23cad0e | ||
|
|
a52a872ba0 | ||
|
|
f98b82c871 | ||
|
|
42015f4a45 | ||
|
|
4e42861d4a | ||
|
|
d8069b04db | ||
|
|
29aeb0fb6a | ||
|
|
8d9293f709 | ||
|
|
55c1c69648 | ||
|
|
a363dc37c3 | ||
|
|
439be2dde9 | ||
|
|
a0ba1b2fae | ||
|
|
641a09af8c | ||
|
|
adc78c6515 | ||
|
|
a38a2a63c2 | ||
|
|
33c49d9143 | ||
|
|
f910aa1e8b | ||
|
|
5212e25a52 | ||
|
|
7df4b316f8 | ||
|
|
a37ca6d429 | ||
|
|
27af50b1a7 | ||
|
|
3df94627a4 | ||
|
|
186870f028 | ||
|
|
2b53d13163 | ||
|
|
78e84e6836 | ||
|
|
d14117dfe8 | ||
|
|
6d1b2c92ca | ||
|
|
8c5685e51e | ||
|
|
5d81fd88c1 | ||
|
|
8f57f4ebe9 | ||
|
|
e076a21847 | ||
|
|
38294b1e0a | ||
|
|
ba6fe71ccc | ||
|
|
374f85f6f1 | ||
|
|
f6c6701b08 | ||
|
|
d51f6ab011 | ||
|
|
9cc05462d5 | ||
|
|
7482281dee | ||
|
|
9cf7c5a5fc | ||
|
|
11fc8bafe6 | ||
|
|
b7eaabc58c | ||
|
|
6acae2f485 | ||
|
|
ecc9f4f916 | ||
|
|
cc0165c11c | ||
|
|
23c4f86c0f | ||
|
|
1ea2351bd5 | ||
|
|
08badee4a8 | ||
|
|
0bd4b7509c | ||
|
|
cb70c71f61 | ||
|
|
f022f86742 | ||
|
|
f99f1f1825 | ||
|
|
c8483143ad | ||
|
|
2b9f774400 | ||
|
|
4b74758833 | ||
|
|
eda3f587e1 | ||
|
|
7c127508ee | ||
|
|
17fb83237d | ||
|
|
85c40549cb | ||
|
|
24bc22fe14 | ||
|
|
63034233e4 | ||
|
|
33b9f02a45 | ||
|
|
2143514b37 | ||
|
|
73192ae0f5 | ||
|
|
8bbe6747ef | ||
|
|
db4afc138e | ||
|
|
920ca2232d | ||
|
|
7415bbe893 | ||
|
|
34e5a53d06 | ||
|
|
7c7212336e | ||
|
|
1262860472 | ||
|
|
31a923050a | ||
|
|
78801239f4 | ||
|
|
a29fa44634 | ||
|
|
197b35a0b5 | ||
|
|
f557b05110 | ||
|
|
fa21f08db7 | ||
|
|
a515845482 | ||
|
|
7f5769decc | ||
|
|
56620ecaf1 | ||
|
|
8ab55b7392 | ||
|
|
46e52d9e7e | ||
|
|
9f85360cbc | ||
|
|
0a294fc002 | ||
|
|
f48d02cccf | ||
|
|
9904842381 | ||
|
|
a0cda1dc26 | ||
|
|
7527cd9720 | ||
|
|
a5829f2791 | ||
|
|
a86200f2d9 | ||
|
|
1f1e7231fb | ||
|
|
d8bafa5c50 | ||
|
|
7d1d696f52 | ||
|
|
105fe4f81b | ||
|
|
5033c14fa5 | ||
|
|
f23fda9c45 | ||
|
|
d533d6b64a | ||
|
|
17132a3598 | ||
|
|
addb77e373 | ||
|
|
af25256fa4 | ||
|
|
77b77bc5c9 | ||
|
|
d08a9fe09d | ||
|
|
17cb1d8ab7 | ||
|
|
6b81b8b1ff | ||
|
|
d151ef2f79 | ||
|
|
fb51a2df5b | ||
|
|
bd18a771ff | ||
|
|
17582ae7de | ||
|
|
4020c1865b | ||
|
|
fa5945b21d | ||
|
|
ab66dd7752 | ||
|
|
0821c0ad8e | ||
|
|
dba78bf566 | ||
|
|
576757f155 | ||
|
|
178d9c9595 | ||
|
|
ab234c1b9e | ||
|
|
64f4744176 | ||
|
|
0dac3b0b54 | ||
|
|
ea74314ffe | ||
|
|
8efdae1533 | ||
|
|
435433de1c | ||
|
|
7af64f49ef | ||
|
|
907fb412ae | ||
|
|
e6c8df823f | ||
|
|
78cec0025c | ||
|
|
2e099bbdb3 | ||
|
|
73a73407cc | ||
|
|
59ea68234a | ||
|
|
5f77f7a58a | ||
|
|
86328451a6 | ||
|
|
4072413f71 | ||
|
|
ca11348181 | ||
|
|
68e524347a | ||
|
|
d8dbe1f2d0 | ||
|
|
891b5bea1c | ||
|
|
71b0a31a59 | ||
|
|
2b732dc45c | ||
|
|
dd2cf5ca2b | ||
|
|
243c9f3a96 | ||
|
|
3750297062 | ||
|
|
687b94ff65 | ||
|
|
f0ffc7b067 | ||
|
|
451e941a23 | ||
|
|
3b8450b511 | ||
|
|
8731de2fe9 | ||
|
|
43c841d06d | ||
|
|
6bf44ad181 | ||
|
|
e64f9c8ba0 | ||
|
|
4aa3b4b531 | ||
|
|
ea1e3ff86f | ||
|
|
e78d06dd92 | ||
|
|
d600ab67e9 | ||
|
|
1ae5aeca9e | ||
|
|
dc27a22fb6 | ||
|
|
850f72356a | ||
|
|
cea73476ff | ||
|
|
b83b9ec8ad | ||
|
|
b04b0c1c16 | ||
|
|
586c5d41d8 | ||
|
|
f79012eef3 | ||
|
|
68bbfa7e34 | ||
|
|
206051c0e7 | ||
|
|
3b3275987e | ||
|
|
8eb40f5e2b | ||
|
|
9bcb15843b | ||
|
|
87aad70453 | ||
|
|
17a91d1eff | ||
|
|
f1d1af8bad | ||
|
|
e7852e1574 | ||
|
|
78b48b94a6 | ||
|
|
a73c10d7e1 | ||
|
|
8b000ed357 | ||
|
|
188ca75e76 | ||
|
|
c6827c6adb | ||
|
|
38257c2405 | ||
|
|
8079c8624c | ||
|
|
fd5f6a1065 | ||
|
|
c9bcf6735e | ||
|
|
cbe9f14862 | ||
|
|
f535eccc8e | ||
|
|
b284b79357 | ||
|
|
1664f9749a | ||
|
|
019680fe7e | ||
|
|
2d862bd393 | ||
|
|
f0683051c8 | ||
|
|
9c4661e97d | ||
|
|
495f665baa | ||
|
|
3ed3b2ff88 | ||
|
|
63e246df0e | ||
|
|
28e8f85309 | ||
|
|
18fd148303 | ||
|
|
d22c29162f | ||
|
|
866d101e59 | ||
|
|
96974a9da4 | ||
|
|
ea8acbc01c | ||
|
|
0fb80f8fbb | ||
|
|
5237d06306 | ||
|
|
490d8cc52e | ||
|
|
c2f93fd8d3 | ||
|
|
e191c422d9 | ||
|
|
768e5cabcf | ||
|
|
403be84b54 | ||
|
|
efae58c5ae | ||
|
|
f01081de2d | ||
|
|
7461b6934f | ||
|
|
02c981296d | ||
|
|
fef712eced | ||
|
|
5bac2746aa | ||
|
|
a7a1b90509 | ||
|
|
caee05e270 | ||
|
|
8ec0ffe69a | ||
|
|
7c2022dc32 | ||
|
|
ee87791baf | ||
|
|
b0e5e179b1 | ||
|
|
f5b9ebf9b3 | ||
|
|
767614a76e | ||
|
|
484b5c23d8 | ||
|
|
9bb121615c | ||
|
|
9c4fc9bb0f | ||
|
|
0ced7dbdf0 | ||
|
|
1c2bd7b245 | ||
|
|
4c5cd193d7 | ||
|
|
51bd8a30f9 | ||
|
|
ed5c09b09c | ||
|
|
8b7e99677f | ||
|
|
b8111503d7 | ||
|
|
94dcc80bee | ||
|
|
e8b18e86a6 | ||
|
|
e702c8ba52 | ||
|
|
d69a86613b | ||
|
|
0cea84a3d0 | ||
|
|
d5153ccc10 | ||
|
|
13c131ca21 | ||
|
|
a5272b4f70 | ||
|
|
0bc5b13542 | ||
|
|
600c7d04a4 | ||
|
|
ad834619fe | ||
|
|
415eb197d8 | ||
|
|
c4d043d470 | ||
|
|
5763a74bc6 | ||
|
|
f41a79a495 | ||
|
|
40b191f226 | ||
|
|
e21a064e33 | ||
|
|
58c795b984 | ||
|
|
e2031c26ba | ||
|
|
a908e3833c | ||
|
|
087da919b0 | ||
|
|
3282d32c99 | ||
|
|
4de54b5f20 | ||
|
|
7b76be14b2 | ||
|
|
e557c2564a | ||
|
|
2311f9eb2b | ||
|
|
900e52ffbe | ||
|
|
af41e832f6 | ||
|
|
74c9fed21f | ||
|
|
1f752a7cc1 | ||
|
|
141f180710 | ||
|
|
c90e722195 | ||
|
|
ee89664b81 | ||
|
|
4d9c882b95 | ||
|
|
e10114cda3 | ||
|
|
3be55f59cd | ||
|
|
54d4f6807c | ||
|
|
39357fe461 | ||
|
|
a19bc614b4 | ||
|
|
8669e95c2b | ||
|
|
4b1c1110af | ||
|
|
16dfef1d5d | ||
|
|
435beabab3 | ||
|
|
df1f7f1a55 | ||
|
|
bd3a731b2c | ||
|
|
c56943c7b7 | ||
|
|
c82e3e07ed | ||
|
|
fe26aad290 | ||
|
|
1ee9da5e94 | ||
|
|
89bb614f74 | ||
|
|
a4bbf91ad9 | ||
|
|
64e2db8908 | ||
|
|
ff645f2c12 | ||
|
|
441d17e865 | ||
|
|
2674f559fa | ||
|
|
c3e31f76c3 | ||
|
|
c1996452da | ||
|
|
9bf20bd0c2 | ||
|
|
3834660d1a | ||
|
|
f5f97bfe7c | ||
|
|
9b09f591eb | ||
|
|
a4ee4c6189 | ||
|
|
c0d3255485 | ||
|
|
0938c3f4f0 | ||
|
|
eab35c7fc0 | ||
|
|
19ea8191f4 | ||
|
|
798e658b41 | ||
|
|
16da9b1f41 | ||
|
|
7eac0bfdac | ||
|
|
bf79d12156 | ||
|
|
f79aa8ce77 | ||
|
|
bf2b0e13d0 | ||
|
|
d3e223d8b6 | ||
|
|
1cf449a4c4 | ||
|
|
9be7c2eb5f | ||
|
|
15398112f6 | ||
|
|
2290dc000a | ||
|
|
0acad8cefd | ||
|
|
dd9f5e45fc | ||
|
|
0b024eba67 | ||
|
|
5d0b0fb52e | ||
|
|
fd27ea05ce | ||
|
|
a50c10eccf | ||
|
|
da2c95a934 | ||
|
|
5cfe3d4eb7 | ||
|
|
25fb7ecd13 | ||
|
|
159ca99483 | ||
|
|
0503c60f2c | ||
|
|
1724ce9738 | ||
|
|
61c528f629 | ||
|
|
4fc2331228 | ||
|
|
9da5ac7045 | ||
|
|
30fcc5e327 | ||
|
|
616d0ebb63 | ||
|
|
0308b61c32 | ||
|
|
65974f5086 | ||
|
|
6e80818402 | ||
|
|
7aff193fb2 | ||
|
|
f9c9b76aa6 | ||
|
|
fc16ce65d7 | ||
|
|
a47efe515d | ||
|
|
785a91cb80 | ||
|
|
e9106742a3 | ||
|
|
bbc0bf61a9 | ||
|
|
021a851e00 | ||
|
|
b00d6175f9 | ||
|
|
900da7d7bf | ||
|
|
80f1fa3170 | ||
|
|
20f9f2ada0 | ||
|
|
b392af0777 | ||
|
|
45eadbd609 | ||
|
|
5c9f54d6fa | ||
|
|
21583553d5 | ||
|
|
e9584f137a | ||
|
|
9dd48af52e | ||
|
|
d96a585530 | ||
|
|
4182b80068 | ||
|
|
1465c1ea8c | ||
|
|
a7d74f8cc6 | ||
|
|
afe5d3fcb2 | ||
|
|
261f3660bc | ||
|
|
9402cfce2c | ||
|
|
43810cc9dd | ||
|
|
1143a7d6da | ||
|
|
a870562949 | ||
|
|
0cac7ec55d | ||
|
|
de1d2d0f7f | ||
|
|
04b3a18fa9 | ||
|
|
a5b24e3122 | ||
|
|
24dc879e22 | ||
|
|
55e9f6a19d | ||
|
|
a630d5010e | ||
|
|
46a085738a | ||
|
|
6f7eb3d5f4 | ||
|
|
03ce3c488e | ||
|
|
b841237f04 | ||
|
|
410245d9c9 | ||
|
|
5c43702c1a | ||
|
|
645fc600af | ||
|
|
8853f7e697 | ||
|
|
21185789eb | ||
|
|
758e338c94 | ||
|
|
ea93aeaed8 | ||
|
|
4c5a9df663 | ||
|
|
3427acfaf4 | ||
|
|
276e76e959 | ||
|
|
3f1dd32657 | ||
|
|
d19a616951 | ||
|
|
c08765cf66 | ||
|
|
a919ddc65e | ||
|
|
825a955cf6 | ||
|
|
401757a253 | ||
|
|
971a5378de | ||
|
|
8d6dff5003 | ||
|
|
35c54850af | ||
|
|
a54d63b69f | ||
|
|
0e6ba073d6 | ||
|
|
8f2f0ece8a | ||
|
|
3831bf98d5 | ||
|
|
5f491ff820 | ||
|
|
657b6cc157 | ||
|
|
972fdcfd77 | ||
|
|
62662fd601 | ||
|
|
f5afb8bcb4 | ||
|
|
ecce3f68e3 | ||
|
|
1094bbfc62 | ||
|
|
1f28471085 | ||
|
|
19c004bc33 | ||
|
|
edae47c804 | ||
|
|
2832ba164e | ||
|
|
b91b3cb2d5 | ||
|
|
98aaec70ef | ||
|
|
3388b59014 | ||
|
|
c99190b224 | ||
|
|
f234b9d8da | ||
|
|
f61c2da239 | ||
|
|
52eb848af9 | ||
|
|
9c2d9abe68 | ||
|
|
959419a5dc | ||
|
|
e36b6c8d7f | ||
|
|
e6d0bdcfb8 | ||
|
|
0fe4cfe496 | ||
|
|
04bc6f853f | ||
|
|
6704e7d531 | ||
|
|
316523feef | ||
|
|
d4a78dc325 | ||
|
|
1bad763353 | ||
|
|
245c74634f | ||
|
|
24650b9378 | ||
|
|
1a5aca39ee | ||
|
|
3a2cfadc61 | ||
|
|
7a1f51163c | ||
|
|
42c7b6e79f | ||
|
|
78ccc9bab1 | ||
|
|
ce18c9d686 | ||
|
|
6baee6145d | ||
|
|
2b7136b4b7 | ||
|
|
9b94d90eca | ||
|
|
cae2faa839 | ||
|
|
439691029e | ||
|
|
67328bc930 | ||
|
|
6796d080ab | ||
|
|
7b5bbd8c57 | ||
|
|
a6cd5428be | ||
|
|
6976204834 | ||
|
|
316f030593 | ||
|
|
777dbb325d | ||
|
|
597390284a | ||
|
|
1af14a8a8d | ||
|
|
1db1439f26 | ||
|
|
ea20d275db | ||
|
|
f5c72c7ee3 | ||
|
|
a0c05dcfa4 | ||
|
|
3377016e58 | ||
|
|
8d3f61e3ab | ||
|
|
a738d0ced8 | ||
|
|
5c97f51f8e | ||
|
|
a91fa34c33 | ||
|
|
b53c67c4da | ||
|
|
373f454837 | ||
|
|
1a84c2242a | ||
|
|
017dc6f116 | ||
|
|
18c2c409a4 | ||
|
|
7dec1e0b00 | ||
|
|
d33943c13b | ||
|
|
5cb01b63fc | ||
|
|
70b47dedc6 | ||
|
|
d280ea2fa3 | ||
|
|
42942a6501 | ||
|
|
f3d387c3e8 | ||
|
|
51dce78d05 | ||
|
|
655a69e6ba | ||
|
|
4040cf15ce | ||
|
|
fd81e0baf9 | ||
|
|
4a16ee4af9 | ||
|
|
3eb99ad5e9 | ||
|
|
cdab24e124 | ||
|
|
a74837fd01 | ||
|
|
5f40f50f80 | ||
|
|
03c1c646a2 | ||
|
|
b71a02dd2c | ||
|
|
1529be322d | ||
|
|
0a4f762689 | ||
|
|
09cba4e0fd | ||
|
|
1f2dc12a8e | ||
|
|
59628ebaa7 | ||
|
|
02f7f7fe9f | ||
|
|
98d3667d0d | ||
|
|
344f351c38 | ||
|
|
c446d724e8 | ||
|
|
9b0250bbbe | ||
|
|
233be11345 | ||
|
|
9a67de3b3b | ||
|
|
5e1e651ec3 | ||
|
|
8c4f04d2f1 | ||
|
|
b699559c9c | ||
|
|
b8943d030a | ||
|
|
cdf7f130f2 | ||
|
|
b25b289a93 | ||
|
|
048c08f8a0 | ||
|
|
b5e3e00b52 | ||
|
|
de0426f574 | ||
|
|
fc5d6ce90b | ||
|
|
023c4787b4 | ||
|
|
383b90e206 | ||
|
|
a31855bef6 | ||
|
|
0139444535 | ||
|
|
63f046a38e | ||
|
|
af68a75891 | ||
|
|
007000962c | ||
|
|
377be07e09 | ||
|
|
c88b3467ef | ||
|
|
fa9ab071be | ||
|
|
515fccd46a | ||
|
|
c656ccfa1d | ||
|
|
250e6f2dc9 | ||
|
|
680bfd8e92 | ||
|
|
8a95424c44 | ||
|
|
9132e4aeb3 | ||
|
|
75f55bbc32 | ||
|
|
dedb0a861b | ||
|
|
914507e698 | ||
|
|
b48dca7cec | ||
|
|
766c1c52b8 | ||
|
|
e89d08f8df | ||
|
|
8aad8aafe6 | ||
|
|
faaea0cb09 | ||
|
|
8ccd2c9870 | ||
|
|
a1893d3501 | ||
|
|
8693440d91 | ||
|
|
7e81e40bf7 | ||
|
|
c2e9744557 | ||
|
|
d7ae588afc | ||
|
|
d1810dc5f6 | ||
|
|
39020bc5b7 | ||
|
|
7230c61711 | ||
|
|
e7bfd07afd | ||
|
|
ba1aa5767d | ||
|
|
f5670b3a00 | ||
|
|
d56873e49a | ||
|
|
169698a260 | ||
|
|
fd7f64ffab | ||
|
|
6810e5d3d6 | ||
|
|
cb41010640 | ||
|
|
2b8037895e | ||
|
|
79b39f86c9 | ||
|
|
63ef7ee5c6 | ||
|
|
fb021adc4a | ||
|
|
42b5afb8b0 | ||
|
|
199c229ba3 | ||
|
|
7abff9be9b | ||
|
|
49373d9d48 | ||
|
|
e2a44faaf3 | ||
|
|
700737ffbe | ||
|
|
3a0fba66de | ||
|
|
214e438015 | ||
|
|
c93817715c | ||
|
|
870556b705 | ||
|
|
2b2c1d0f7c | ||
|
|
c60a24416a | ||
|
|
8dc2b2c491 | ||
|
|
5d8504ddc6 | ||
|
|
4f1f66b39a | ||
|
|
cf6fad9414 | ||
|
|
1e3bd4d855 | ||
|
|
628c7c4c53 | ||
|
|
864086668f | ||
|
|
0127f5a5b8 | ||
|
|
2834447c49 | ||
|
|
1184dba161 | ||
|
|
09621339cd | ||
|
|
4769f4ed9f | ||
|
|
0f25c0e2fd | ||
|
|
6d9d3c85c4 | ||
|
|
3f145d3dcc | ||
|
|
7faca11f33 | ||
|
|
1c0aacd028 | ||
|
|
769534c943 | ||
|
|
d6c1880df0 | ||
|
|
415902bd10 | ||
|
|
4e2d3181a2 | ||
|
|
3039b56681 | ||
|
|
2a85878803 | ||
|
|
bab7cabdaf | ||
|
|
d1cae73c52 | ||
|
|
5ca1634a4f | ||
|
|
3bd5da255c | ||
|
|
c0ed029036 | ||
|
|
f9133c97e8 | ||
|
|
9feb48edf3 | ||
|
|
603b4013e3 | ||
|
|
eb0d2daa7e | ||
|
|
a5e3d80369 | ||
|
|
e8b72d2289 | ||
|
|
acd3c39d6b | ||
|
|
6b67547955 | ||
|
|
463bba0b61 | ||
|
|
6ae061e2aa | ||
|
|
3847b443ca | ||
|
|
ee09a7ae7a | ||
|
|
982a1ee908 | ||
|
|
30de4ae748 | ||
|
|
34fcb9def9 | ||
|
|
7b2f4c649c | ||
|
|
478b06a76b | ||
|
|
f189c3d804 | ||
|
|
6e8507905e | ||
|
|
0d5766018c | ||
|
|
1cc0f19cb7 | ||
|
|
31701a1151 | ||
|
|
d4143501ca | ||
|
|
f5b3e91eb2 | ||
|
|
3d22089622 | ||
|
|
f2f80c5973 | ||
|
|
90bec832fd | ||
|
|
59dc161081 | ||
|
|
e25e2b0762 | ||
|
|
d6a879b766 | ||
|
|
2ff37a6646 | ||
|
|
e9897123d3 | ||
|
|
d022499d52 | ||
|
|
b4c96d5b82 | ||
|
|
7b44c1ed64 | ||
|
|
af556e9173 | ||
|
|
9ec704b72f | ||
|
|
5e503390a1 | ||
|
|
612a7e66b8 | ||
|
|
6a930c6a40 | ||
|
|
2fc9e622cf | ||
|
|
e8f77bc7cd | ||
|
|
b99526dfbb | ||
|
|
590829240e | ||
|
|
9cc6947214 | ||
|
|
6e006d63ea | ||
|
|
1ebd6fd1be | ||
|
|
153828e990 | ||
|
|
0ae5282505 | ||
|
|
20210efbde | ||
|
|
0c85a290ef | ||
|
|
141b2ee43d | ||
|
|
0c4c83e60e | ||
|
|
91958a5028 | ||
|
|
2e34d13dbf | ||
|
|
84d23710e9 | ||
|
|
59c5e14f3a | ||
|
|
9d40b2d0da | ||
|
|
65c201a259 | ||
|
|
62f772cb7b | ||
|
|
4cde933916 | ||
|
|
d9b95f11c1 | ||
|
|
46c981f3a0 | ||
|
|
89c84ffbf6 | ||
|
|
a8429e9374 | ||
|
|
1c6e6e88a1 | ||
|
|
5b7e92b84d | ||
|
|
aa8449482e | ||
|
|
b73b3d94c1 | ||
|
|
7bdf6e2c14 | ||
|
|
b78ff88d4e | ||
|
|
1d780b327d | ||
|
|
5f807008d6 | ||
|
|
0c0e7341ef | ||
|
|
12f69944f4 | ||
|
|
49d1c3d821 | ||
|
|
fd70b163fa | ||
|
|
30fe8ba751 | ||
|
|
f4402032d4 | ||
|
|
e372290bb4 | ||
|
|
419e35b066 | ||
|
|
cc400964fa | ||
|
|
599c292c94 | ||
|
|
377c0b4ee8 | ||
|
|
db076dcb00 | ||
|
|
40727f404b | ||
|
|
0ad7be3cb8 | ||
|
|
ec4bfbef44 | ||
|
|
6a564862be | ||
|
|
039e0051cf | ||
|
|
bc52ba4678 | ||
|
|
e01b6671a1 | ||
|
|
bc29f82bbb | ||
|
|
06749a4471 | ||
|
|
3dc6f3ec61 | ||
|
|
74ca811e83 | ||
|
|
a11d6d1880 | ||
|
|
42adeed6a7 | ||
|
|
d7fce242a3 | ||
|
|
6635abfd9a | ||
|
|
9d96689b75 | ||
|
|
26b0390922 | ||
|
|
b519e7590e | ||
|
|
bef7dd501e | ||
|
|
49228fb0af | ||
|
|
0dbf7155a8 | ||
|
|
26bdcd45be | ||
|
|
7e647ddb9d | ||
|
|
cd356bc27e | ||
|
|
6d8c13b75d | ||
|
|
34a324a827 | ||
|
|
2650c8148d | ||
|
|
add9d08e27 | ||
|
|
840850d6af | ||
|
|
a772f805cd | ||
|
|
504061f9f5 | ||
|
|
0f4bd530c5 | ||
|
|
355e72d632 | ||
|
|
999f279f03 | ||
|
|
5e0a3061d0 | ||
|
|
529844045a | ||
|
|
332e700598 | ||
|
|
345cf022f8 | ||
|
|
2ace49bea4 | ||
|
|
0e5e64e79d | ||
|
|
a285a5c984 | ||
|
|
3d73ad1a59 | ||
|
|
96fd8bbebe | ||
|
|
6201c85ae3 | ||
|
|
54869d3fb6 | ||
|
|
00f8d8614f | ||
|
|
5a27630275 | ||
|
|
7c26bd90f5 | ||
|
|
d62a69de3c | ||
|
|
8674ae2b1c | ||
|
|
54cd9ac8db | ||
|
|
2a0fe8f7ae | ||
|
|
ff63394ad3 | ||
|
|
f96f246d76 | ||
|
|
3a2c5dab40 | ||
|
|
5c7f29b898 | ||
|
|
0f3ebfecae | ||
|
|
a09bfd72e1 | ||
|
|
2f8770d562 | ||
|
|
e7290b1b56 | ||
|
|
5b3d19ee63 | ||
|
|
931ec67fb2 | ||
|
|
982b9a6b49 | ||
|
|
7cd9153865 | ||
|
|
eef70acbcd | ||
|
|
e5172e64c4 | ||
|
|
6bec50c9d7 | ||
|
|
082fcd1838 | ||
|
|
1bf34c11eb | ||
|
|
98c2ef3acc | ||
|
|
16f9284c0e | ||
|
|
679b3025ae | ||
|
|
557c249643 | ||
|
|
f28e3e4139 | ||
|
|
128812b271 | ||
|
|
8720d10f81 | ||
|
|
5767fea1c2 | ||
|
|
80b381b2fb | ||
|
|
3e3af38e98 | ||
|
|
59e5ec855b | ||
|
|
3fcbc9e5a5 | ||
|
|
22d8cb3e59 | ||
|
|
c15b4671e2 | ||
|
|
54f0032c94 | ||
|
|
14ab08a8c0 | ||
|
|
9114d55f91 | ||
|
|
b51636a5a6 | ||
|
|
9f185f2e65 | ||
|
|
9f87c5d98a | ||
|
|
6c927fbaea | ||
|
|
2a8fb8402d | ||
|
|
86a4ef438d | ||
|
|
cbf6d101c2 | ||
|
|
aa7252df55 | ||
|
|
47c9aa9a2f | ||
|
|
73efd633b7 | ||
|
|
dcd143edf3 | ||
|
|
d188bf56ad | ||
|
|
c8d5139b8e | ||
|
|
ca559d3fdb | ||
|
|
6682416805 | ||
|
|
8bc093e8e2 | ||
|
|
4fde6a01fa | ||
|
|
5a2946eacf | ||
|
|
52393d10d5 | ||
|
|
e3ec535a8f | ||
|
|
361e97bb7a | ||
|
|
afb6aafabc | ||
|
|
add47d2e83 | ||
|
|
e3fbcae900 | ||
|
|
8d56d6cc3c | ||
|
|
f296734c02 | ||
|
|
4908e00095 | ||
|
|
d2b277a624 | ||
|
|
fab0aaa2cb | ||
|
|
9c0f60d63a | ||
|
|
894b6b95ba | ||
|
|
8349810cb8 | ||
|
|
950d054946 | ||
|
|
e44efe2be7 | ||
|
|
8d229a5a6e | ||
|
|
7013cde6b8 | ||
|
|
effed693be | ||
|
|
f7730500f8 | ||
|
|
341298f9e8 | ||
|
|
2f92cab9c9 | ||
|
|
a035d18976 | ||
|
|
a377c1f3a3 | ||
|
|
998b16b969 | ||
|
|
27c06f1cd0 | ||
|
|
21686eca15 | ||
|
|
28ab23b3c8 | ||
|
|
4af1230f05 | ||
|
|
69c68ff50f | ||
|
|
551891377c | ||
|
|
5654ab2b30 | ||
|
|
4e157f4183 | ||
|
|
1b4059094b | ||
|
|
31361a78d0 | ||
|
|
039d692684 | ||
|
|
4486571061 | ||
|
|
e8755f7471 | ||
|
|
48c90e8167 | ||
|
|
3d33759927 | ||
|
|
8dd7bb2efd | ||
|
|
5ae966a47b | ||
|
|
a7c8885a86 | ||
|
|
7d803aaedd | ||
|
|
aa0f94398c | ||
|
|
6b810bf31d | ||
|
|
c4e91102b0 | ||
|
|
8a333e014d | ||
|
|
9cc4047100 | ||
|
|
dbf9441ea1 | ||
|
|
c464bea451 | ||
|
|
4efdbecf72 | ||
|
|
efa1dde27d | ||
|
|
e7b9dd730e | ||
|
|
4b4994d255 | ||
|
|
c0b3e1fb5a | ||
|
|
f34368eb6a | ||
|
|
08a576b7dc | ||
|
|
2d8ee39707 | ||
|
|
c1117c47db | ||
|
|
194d9f3a48 | ||
|
|
e47ccc415b | ||
|
|
c64125cb32 | ||
|
|
564f6b97d8 | ||
|
|
b6ec3a6450 | ||
|
|
cdf708174f | ||
|
|
9cf94d314b | ||
|
|
d09c4a01e4 | ||
|
|
973e769864 | ||
|
|
d5ffdf24fe | ||
|
|
5c11554cef | ||
|
|
f35512299b | ||
|
|
487b69be96 | ||
|
|
6494f143f9 | ||
|
|
60d87886da | ||
|
|
3573cd6a6a | ||
|
|
6bf24eee8e | ||
|
|
414858d8e8 | ||
|
|
5c2bb7fdc6 | ||
|
|
97462690f6 | ||
|
|
e8d5d6f05d | ||
|
|
784b153508 | ||
|
|
7cd8b2a49d | ||
|
|
74febbdf92 | ||
|
|
2fbb21a5f0 | ||
|
|
34f4d1198e | ||
|
|
16653a269a | ||
|
|
3c05de4713 | ||
|
|
5807949b88 | ||
|
|
5324f744e6 | ||
|
|
11448daeb1 | ||
|
|
97f42bd09f | ||
|
|
098ffb5bfa | ||
|
|
46fbd47212 | ||
|
|
45d2cd99d5 | ||
|
|
f1617557ac | ||
|
|
d4c55cfc35 | ||
|
|
cc455f7e52 | ||
|
|
f9389463bb | ||
|
|
be32dfbcc4 | ||
|
|
4aaac00988 | ||
|
|
d4861241b8 | ||
|
|
43f79c5880 | ||
|
|
ad7699672b | ||
|
|
a0cc8381c3 | ||
|
|
445ae993ad | ||
|
|
f90a6c8656 | ||
|
|
8026395a26 | ||
|
|
191acee8d0 | ||
|
|
446f29bffe | ||
|
|
563a20a8f5 | ||
|
|
006e394f93 | ||
|
|
0a4ce1b600 | ||
|
|
ae2d56cabc | ||
|
|
5e8d2d6415 | ||
|
|
d09199c9f8 | ||
|
|
51957b7f8f | ||
|
|
386e7b39df | ||
|
|
dfee384cdd | ||
|
|
cc2b0a1cf8 | ||
|
|
f316e65b76 | ||
|
|
70a8128e14 | ||
|
|
fa13ca7bfd | ||
|
|
3aec276c63 | ||
|
|
4cab2fc81b | ||
|
|
a2804d24b5 | ||
|
|
f7b9865a2e | ||
|
|
26abd44281 | ||
|
|
6aaf8fa7da | ||
|
|
f76bab1497 | ||
|
|
c1cbae5646 | ||
|
|
046d358f03 | ||
|
|
67dd35cbe9 | ||
|
|
0db2849d84 | ||
|
|
06b17102af | ||
|
|
7cda5258ba | ||
|
|
f780ed3335 | ||
|
|
391708a77c | ||
|
|
7974321fff | ||
|
|
e726c44723 | ||
|
|
10411b6036 | ||
|
|
4b56adf362 | ||
|
|
703b38ab21 | ||
|
|
6beaa547d6 | ||
|
|
84501778aa | ||
|
|
49b247a64d | ||
|
|
3e2105525b | ||
|
|
e43f0e122c | ||
|
|
966b872fec | ||
|
|
cd7a6e5c31 | ||
|
|
2a6880e526 | ||
|
|
0a83117a07 | ||
|
|
0740c45e9d | ||
|
|
f5c05399de | ||
|
|
bd52764a22 | ||
|
|
c51f486001 | ||
|
|
60913d7647 | ||
|
|
607fbc6afc | ||
|
|
b7913bd532 | ||
|
|
a2b4be9279 | ||
|
|
1181ba7080 | ||
|
|
b5597b73c2 | ||
|
|
c4e831c8b9 | ||
|
|
8a95a1cd77 | ||
|
|
2f10b69f3e | ||
|
|
37085171b5 | ||
|
|
5fe4f60324 | ||
|
|
66dc92cb7c | ||
|
|
4cbd36c8b5 | ||
|
|
01045ca981 | ||
|
|
b8edcf36ae | ||
|
|
ebfe14a0ec | ||
|
|
0a657e68b8 | ||
|
|
ae2f333e6a | ||
|
|
a4c746853f | ||
|
|
346151d956 | ||
|
|
0fddd3d47e | ||
|
|
640c268911 | ||
|
|
2074a3776d | ||
|
|
18aa694bf9 | ||
|
|
c6f38c4110 | ||
|
|
07b0dfd19b | ||
|
|
c904abb332 | ||
|
|
4d5d3f2423 | ||
|
|
ac234bca1a | ||
|
|
8e06d1108f | ||
|
|
1c65627670 | ||
|
|
b63ef940fd | ||
|
|
22c1640fcd | ||
|
|
0c00c9f654 | ||
|
|
78d84133d6 | ||
|
|
2989001a44 | ||
|
|
64eef7f67d | ||
|
|
7bb7e3e740 | ||
|
|
0c7eaf3285 | ||
|
|
f4a511c71e | ||
|
|
0afb47919d | ||
|
|
0ed6d23983 | ||
|
|
139f62b7fb | ||
|
|
820a06594c | ||
|
|
a390956176 | ||
|
|
ee5328d780 | ||
|
|
e68d1e3642 | ||
|
|
1b787aeb7f | ||
|
|
136d23f238 | ||
|
|
e61e5700e9 | ||
|
|
5f94fb22be | ||
|
|
a29226d213 | ||
|
|
8ba7042512 | ||
|
|
0a736ba31f | ||
|
|
29a67aadb5 | ||
|
|
8ade4321f2 | ||
|
|
d2a134fb41 | ||
|
|
aec668d182 | ||
|
|
2bdb85f976 | ||
|
|
556f680fca | ||
|
|
43e6ab37a3 | ||
|
|
4cd6f2440e | ||
|
|
32ad3a5b70 | ||
|
|
025ab65ab4 | ||
|
|
bf40dfa99c | ||
|
|
d841166270 | ||
|
|
eca85e9227 | ||
|
|
a194f12bdf | ||
|
|
3209460837 | ||
|
|
3e71b6dcdd | ||
|
|
36c08de126 | ||
|
|
1b437667c0 | ||
|
|
5ca67ee54b | ||
|
|
bcf18bfa01 | ||
|
|
5774a72d30 | ||
|
|
c071ae3970 | ||
|
|
43ad2f22d6 | ||
|
|
6a972ef04e | ||
|
|
23a99f1248 | ||
|
|
1669c00013 | ||
|
|
9a9aaead6d | ||
|
|
b6f7b11a56 | ||
|
|
8c70f80362 | ||
|
|
6005513c3c | ||
|
|
e9a6a7c042 | ||
|
|
745bd85555 | ||
|
|
369b38ae1e | ||
|
|
11fc680fe3 | ||
|
|
cee7486dc6 | ||
|
|
f2395f2993 | ||
|
|
97e632a2d8 | ||
|
|
661e6070da | ||
|
|
ed77d583c6 | ||
|
|
3332bd0528 | ||
|
|
702526c746 | ||
|
|
fa8a146369 | ||
|
|
bcec7d7c3f | ||
|
|
02997b3c4d | ||
|
|
4cca9446d0 | ||
|
|
27152055ea | ||
|
|
8f7c44f6eb | ||
|
|
a909e40cf9 | ||
|
|
171cbed41d | ||
|
|
d955cfca51 | ||
|
|
dbba3fe731 | ||
|
|
59a95935d3 | ||
|
|
c4b5c7c1a9 | ||
|
|
321b7ee962 | ||
|
|
855761697c | ||
|
|
50fd6c1e43 | ||
|
|
a80dae1416 | ||
|
|
7f3510ee2e | ||
|
|
298fcbcf3e | ||
|
|
ad717f51e1 | ||
|
|
63bec11667 | ||
|
|
0de7f63f89 | ||
|
|
d79b129f5c | ||
|
|
c5cf8a4efb | ||
|
|
d0b353bec8 | ||
|
|
37fc6e5910 | ||
|
|
45c17f9410 | ||
|
|
63784f2ba1 | ||
|
|
42f6400525 | ||
|
|
0b9521b1af | ||
|
|
7931aee9d9 | ||
|
|
ba8a2e2955 | ||
|
|
46ec8b4111 | ||
|
|
20b526f9fa | ||
|
|
90737b279a | ||
|
|
88c4fba289 | ||
|
|
b7d77ef368 | ||
|
|
353feb2fe6 | ||
|
|
ea90ff591e | ||
|
|
0069eda5c1 | ||
|
|
e4b452cfd7 | ||
|
|
2af99d82b0 | ||
|
|
1a15e340d9 | ||
|
|
edf8a1125e | ||
|
|
be78567e8a | ||
|
|
3bfb6cd196 | ||
|
|
87ef5856b8 | ||
|
|
88c6e0ec95 | ||
|
|
5edd44880b | ||
|
|
4bb8a8ed37 | ||
|
|
4fa777855a | ||
|
|
82072391aa | ||
|
|
8f967ade31 | ||
|
|
725ac59f56 | ||
|
|
277450790d | ||
|
|
c1c25bfbf7 | ||
|
|
69512faa8f | ||
|
|
afeb248e3d | ||
|
|
5f53ac2b57 | ||
|
|
9040db951d | ||
|
|
cd4e898fad | ||
|
|
9446da27fe | ||
|
|
4cea6cdb22 | ||
|
|
8e2160e6db | ||
|
|
5d20ffe429 | ||
|
|
3eefd2153b | ||
|
|
71efef1ee4 | ||
|
|
647c79cbaf | ||
|
|
a18a35cc4f | ||
|
|
8a980ec5ee | ||
|
|
5b0a290d9e | ||
|
|
2f52f16b2b | ||
|
|
f8406870d2 | ||
|
|
8673b40ed5 | ||
|
|
90fba2953e | ||
|
|
9faf57d773 | ||
|
|
9337a6d773 | ||
|
|
bb5e1eca75 | ||
|
|
6fa4714901 | ||
|
|
24df681107 | ||
|
|
7bc4aa3916 | ||
|
|
a5295b280e | ||
|
|
3bcbd67a5a | ||
|
|
c45150ede3 | ||
|
|
d11f4399bc | ||
|
|
22e2ded2a8 | ||
|
|
da6504bc4c | ||
|
|
3c195f0ff8 | ||
|
|
73439c4818 | ||
|
|
ee877121c9 | ||
|
|
d01f564c80 | ||
|
|
678d6e579e | ||
|
|
e05239f07c | ||
|
|
dc118c3bbb | ||
|
|
ba293acaeb | ||
|
|
918d9669f9 | ||
|
|
719d4641d0 | ||
|
|
8ba4677348 | ||
|
|
a67e0ef2aa | ||
|
|
28f1107062 | ||
|
|
c1945f0c69 | ||
|
|
d98292211a | ||
|
|
e6336bfaee | ||
|
|
4dd4f2823f | ||
|
|
6bd298bbe0 | ||
|
|
cea5b8a6ec | ||
|
|
979f4bccb3 | ||
|
|
8526f999cd | ||
|
|
38c5cbb164 | ||
|
|
50defacc4d | ||
|
|
0bf5ab8b0f | ||
|
|
b64ec41425 | ||
|
|
0608e3fd78 | ||
|
|
20d458c395 | ||
|
|
dfdea96b6d | ||
|
|
c119975970 | ||
|
|
7a16a8a9c6 | ||
|
|
7526772863 | ||
|
|
06d57ca345 | ||
|
|
24741b9973 | ||
|
|
076d53dd27 | ||
|
|
be49e1baf4 | ||
|
|
fb2abb314f | ||
|
|
6cd03c57b9 | ||
|
|
ce650a3936 | ||
|
|
d4753fee99 | ||
|
|
0c9c5041c3 | ||
|
|
d28dcec76e | ||
|
|
7461840b06 | ||
|
|
a8251d5e68 | ||
|
|
fa7548bafd | ||
|
|
422ab7fe0f | ||
|
|
5c4056bbea | ||
|
|
cc95aca1bc | ||
|
|
7afc87f449 | ||
|
|
adc4d0083e | ||
|
|
8039a94c6a | ||
|
|
d56bd3fec6 | ||
|
|
09b9d476ef | ||
|
|
430b53b9e4 | ||
|
|
3787e9848b | ||
|
|
80cbe1eecc | ||
|
|
004c7abb79 | ||
|
|
6c07d1e6f4 | ||
|
|
e4cf2baf78 | ||
|
|
2feeb0375b | ||
|
|
52e4df93eb | ||
|
|
cb76e927cf | ||
|
|
34170d0ad5 | ||
|
|
1de0d0e996 | ||
|
|
db24360778 | ||
|
|
f8aedd9a4c | ||
|
|
8619f6dfcc | ||
|
|
3e8e5f4f7e | ||
|
|
a98743ef50 | ||
|
|
4a845227e2 | ||
|
|
0487d6f8e0 | ||
|
|
1e1931c9f5 | ||
|
|
da168af872 | ||
|
|
d2ab45317d | ||
|
|
f7091ec331 | ||
|
|
7225c36093 | ||
|
|
1d2b4fc990 | ||
|
|
6697ab47de | ||
|
|
38029dc0ad | ||
|
|
fdb56c6f63 | ||
|
|
bba6403a16 | ||
|
|
b1e81f16d9 | ||
|
|
8c909c2738 | ||
|
|
02e822d3bc | ||
|
|
4fc22b4fc7 | ||
|
|
004a69c80c | ||
|
|
0e14d5b2fa | ||
|
|
6b5cf5e240 | ||
|
|
238a3242ed | ||
|
|
cdb3424e64 | ||
|
|
9499876f5c | ||
|
|
6072a45816 | ||
|
|
82480418fa | ||
|
|
48e20a157a | ||
|
|
faed7fd133 | ||
|
|
d8061bc83e | ||
|
|
9e48820e1e | ||
|
|
2318cb3fa3 | ||
|
|
abeee03606 | ||
|
|
43c01aad71 | ||
|
|
e149fac3a4 | ||
|
|
f3a593464f | ||
|
|
998d0a9865 | ||
|
|
09c3da1b92 | ||
|
|
d763585f82 | ||
|
|
145d5f65c1 | ||
|
|
2b0e455357 | ||
|
|
9596756b89 | ||
|
|
826f56ec53 | ||
|
|
01e9b6890c | ||
|
|
225e1b2cb4 | ||
|
|
3a4a8e7217 | ||
|
|
92ec0851aa | ||
|
|
803b2253ce | ||
|
|
c613528fc5 | ||
|
|
647a672694 | ||
|
|
a3518e5690 | ||
|
|
34d304090c | ||
|
|
326152568e | ||
|
|
79b9bd88b2 | ||
|
|
01993cd6e1 | ||
|
|
916de29ee4 | ||
|
|
b4607052d2 | ||
|
|
e4d173eef8 | ||
|
|
685f033647 | ||
|
|
d7c97208e8 | ||
|
|
3322333c7d | ||
|
|
cbce85cf02 | ||
|
|
376d6feeba | ||
|
|
21d3525b26 | ||
|
|
e592c4b9fd | ||
|
|
558109f391 | ||
|
|
8279500d2f | ||
|
|
6dec4084ff | ||
|
|
9cab6028bc | ||
|
|
74ab511457 | ||
|
|
a670622534 | ||
|
|
d81d62f835 | ||
|
|
8f3cae2366 | ||
|
|
f5245c1966 | ||
|
|
d72cbff971 | ||
|
|
d66ad63461 | ||
|
|
2dac0fce6e | ||
|
|
eeef033d32 | ||
|
|
d4ad203ca1 | ||
|
|
f2e7b9f28d | ||
|
|
fc6f5d428f | ||
|
|
e2b0aa940c | ||
|
|
6b2934e06f | ||
|
|
2731820910 | ||
|
|
82426e2926 | ||
|
|
90cbfd4db8 | ||
|
|
f5847039d8 | ||
|
|
6d78dfcafa | ||
|
|
ff7a8c8a7e | ||
|
|
283c2c2a9c | ||
|
|
d1409f23fa | ||
|
|
f3918106e8 | ||
|
|
63e37513dd | ||
|
|
8d67666fe5 | ||
|
|
427cec04c9 | ||
|
|
060696ebcd | ||
|
|
eb6509d939 | ||
|
|
32e7febdab | ||
|
|
c8d8550d35 | ||
|
|
bf118b3d3d | ||
|
|
8f5d66c624 | ||
|
|
32bdffd1b0 | ||
|
|
a8c02ff8ad | ||
|
|
c6aad7fa64 | ||
|
|
ca38b8546f | ||
|
|
32ede4839b | ||
|
|
c706bf9b24 | ||
|
|
d0c8f23dbc | ||
|
|
1524945a4b | ||
|
|
0bca4e931e | ||
|
|
ed3165f8cc | ||
|
|
23894090e4 | ||
|
|
d01d831960 | ||
|
|
1530a9b3df | ||
|
|
4862b6113f | ||
|
|
bb6e9bfbd9 | ||
|
|
ee405299d7 | ||
|
|
a750ddf2ea | ||
|
|
02582a5d11 | ||
|
|
0c6461d468 | ||
|
|
769ce4cff2 | ||
|
|
691dfa71eb | ||
|
|
7f4d9acaeb | ||
|
|
4a2e9a7966 | ||
|
|
b8d1e851dd | ||
|
|
77f908d781 | ||
|
|
39523b600e | ||
|
|
bbc3e473b7 | ||
|
|
7b0dbb4932 | ||
|
|
9bda26caf9 | ||
|
|
5d24c277c9 | ||
|
|
dc73b41e94 | ||
|
|
2845e43acc | ||
|
|
1ff3503847 | ||
|
|
39dc7e01c5 | ||
|
|
97fe271a46 | ||
|
|
da9754e0a3 | ||
|
|
7ba26a9d15 | ||
|
|
9536efd914 | ||
|
|
cb0dad87de | ||
|
|
e5b7068791 | ||
|
|
90a096689a | ||
|
|
005e45fa59 | ||
|
|
da5741d35d | ||
|
|
70590f0a2a | ||
|
|
1ab1258079 | ||
|
|
8db0346764 | ||
|
|
201d6cafda | ||
|
|
dbab632bf4 | ||
|
|
437157a453 | ||
|
|
6169849f2e | ||
|
|
590b42958c | ||
|
|
9766a1b60c | ||
|
|
9a9d2d401d | ||
|
|
4046dc8f39 | ||
|
|
de647fe34d | ||
|
|
c8c5bd886a | ||
|
|
fcf6ebb325 | ||
|
|
82c24af034 | ||
|
|
c04615a2c8 | ||
|
|
e3271696e2 | ||
|
|
48fc7dd684 | ||
|
|
0c5cda0630 | ||
|
|
55664594c2 | ||
|
|
55be47f4b9 | ||
|
|
ec7bff8ef9 | ||
|
|
be6891db14 | ||
|
|
1182fd5611 | ||
|
|
63d4ed7613 | ||
|
|
b7141cc833 | ||
|
|
a36626c6b7 | ||
|
|
394241f708 | ||
|
|
92d1f8dbfc | ||
|
|
c8f993367d | ||
|
|
1b6dcf963b | ||
|
|
6a3fdcf92b | ||
|
|
15a65a6da1 | ||
|
|
66c7934273 | ||
|
|
729e100574 | ||
|
|
1aa599717a | ||
|
|
cddd352fe4 | ||
|
|
c43a7fc0eb | ||
|
|
681f028c40 | ||
|
|
9fab93c0d3 | ||
|
|
80554f1b46 | ||
|
|
fb31c68e28 | ||
|
|
fb8add8fab | ||
|
|
b7358826c8 | ||
|
|
b6ecc473ac | ||
|
|
07d650b35f | ||
|
|
e2934b277d | ||
|
|
41b4acb09b | ||
|
|
b5c9c71f16 | ||
|
|
d92ddd9be2 | ||
|
|
b86ce5eb47 | ||
|
|
ad2a89277e | ||
|
|
7e4368016a | ||
|
|
037f575ef2 | ||
|
|
a9b08a59ee | ||
|
|
8dd8360df1 | ||
|
|
3a8f1c97b7 | ||
|
|
278d3c31db | ||
|
|
79eda77222 | ||
|
|
95d9362a90 | ||
|
|
43c60ab967 | ||
|
|
8276a767de | ||
|
|
1386512ee7 | ||
|
|
52fe0546c9 | ||
|
|
e3dc03c00d | ||
|
|
c5c7024db2 | ||
|
|
0f8f315f7b | ||
|
|
fde3223be8 | ||
|
|
d670e0e0a8 | ||
|
|
b0bdb9e357 | ||
|
|
b60923ad33 | ||
|
|
9d4f222984 | ||
|
|
7bedfe4f94 | ||
|
|
c3f4681a93 | ||
|
|
fa7106b147 | ||
|
|
78de9ecbcc | ||
|
|
7e1d05c8e7 | ||
|
|
03d031e481 | ||
|
|
d6fb21a0ed | ||
|
|
133deb962e | ||
|
|
0cc33c826e | ||
|
|
84892de9bb | ||
|
|
1b2552d97a | ||
|
|
9dad554faf | ||
|
|
8a3c9ecf3d | ||
|
|
4dc47505d5 | ||
|
|
5580f46827 | ||
|
|
1cd966972f | ||
|
|
b9e18a4de2 | ||
|
|
85642b9189 | ||
|
|
d5ec2468cc | ||
|
|
d440707c51 | ||
|
|
8d1509f20c | ||
|
|
873b42bab8 | ||
|
|
2abf0e6c62 | ||
|
|
28b7bca233 | ||
|
|
8cc219ef2a | ||
|
|
11a6d6003a | ||
|
|
ffe4c93b9c | ||
|
|
d9c5508b3d | ||
|
|
6a903efb38 | ||
|
|
89adfdbbe4 | ||
|
|
521eac7fdf | ||
|
|
752499e0be | ||
|
|
ab310b46a0 | ||
|
|
3f1e9d981d | ||
|
|
5f37fc94d7 | ||
|
|
2ee95ba6e1 | ||
|
|
0bbea4a406 | ||
|
|
aabefb01c6 | ||
|
|
49a55eb55e | ||
|
|
3107ffa7bd | ||
|
|
85fa7333b6 | ||
|
|
0452c5d0d8 | ||
|
|
c878b932b0 | ||
|
|
d2df7b2380 | ||
|
|
44d5557928 | ||
|
|
edc8218b01 | ||
|
|
65a64892ea | ||
|
|
59c46e5471 | ||
|
|
6d3c8c3245 | ||
|
|
6ab448b5ac | ||
|
|
a08fa2244d | ||
|
|
22e6878541 | ||
|
|
776c60206d | ||
|
|
4e20f650e6 | ||
|
|
90becafe72 | ||
|
|
54d2e9932f | ||
|
|
8e56243356 | ||
|
|
4c83957aaa | ||
|
|
ae218ef314 | ||
|
|
ada1dee2b0 | ||
|
|
b17920e27e | ||
|
|
2646330d9e | ||
|
|
a6cd82d8fa | ||
|
|
a279be7c89 | ||
|
|
d409292d6e | ||
|
|
71760eac75 | ||
|
|
22ce87e890 | ||
|
|
51cd10b5a9 | ||
|
|
21960f2897 | ||
|
|
d156d485ce | ||
|
|
ea3cae2a29 | ||
|
|
4688f0e06e | ||
|
|
1938753e23 | ||
|
|
7609d1d6bc | ||
|
|
576429899f | ||
|
|
de85d9e164 | ||
|
|
4a1c1f1011 | ||
|
|
4a658933f1 | ||
|
|
3435dc668b | ||
|
|
892dd2f1aa | ||
|
|
6f6bc9a46b | ||
|
|
c8c3a3a102 | ||
|
|
9f4d3b87f6 | ||
|
|
c8e4c168d6 | ||
|
|
c81d4ecd99 | ||
|
|
adf1a3ab65 | ||
|
|
fc54758da9 | ||
|
|
e1bee63656 | ||
|
|
d59e07a06e | ||
|
|
44ef09dc26 | ||
|
|
db497426f5 | ||
|
|
a0b23975e0 | ||
|
|
fb52d0e62d | ||
|
|
bf1dbdd67e | ||
|
|
89cee3c002 | ||
|
|
8e62bce178 | ||
|
|
f6aaa1dadb | ||
|
|
44a2bd0758 | ||
|
|
2ed4fe8e98 | ||
|
|
19a0b04a4d | ||
|
|
5426185681 | ||
|
|
012ffdbd4b | ||
|
|
45b1862fe8 | ||
|
|
69ff0aa488 | ||
|
|
09df69244e | ||
|
|
adcf99e250 | ||
|
|
69565eea61 | ||
|
|
f0a488a96d | ||
|
|
ff64549bac | ||
|
|
402408abd7 | ||
|
|
67c6327950 | ||
|
|
882df377a4 | ||
|
|
dbc1a1f79d | ||
|
|
594d246987 | ||
|
|
7ebf8f628a | ||
|
|
94027acd31 | ||
|
|
f8e5880591 | ||
|
|
9dc6f1d1c7 | ||
|
|
32a8aa7179 | ||
|
|
d80e0cf9a7 | ||
|
|
435c373c8d | ||
|
|
1ce4b0ca1a | ||
|
|
64d4e5e4c5 | ||
|
|
fd4da3a3ed | ||
|
|
9ec1729d6e | ||
|
|
afc18ecdb3 | ||
|
|
60dfee6281 | ||
|
|
e9417fee4e | ||
|
|
486a0b2450 | ||
|
|
e792ef87b8 | ||
|
|
4590c3ac53 | ||
|
|
b4e70e6d93 | ||
|
|
7c54e19b31 | ||
|
|
edf8a94dff | ||
|
|
b8062b30c0 | ||
|
|
3e5ef8c6ca | ||
|
|
632858d72b | ||
|
|
ef14f3a242 | ||
|
|
a1eec07558 | ||
|
|
91ec47226f | ||
|
|
f78b4d45b2 | ||
|
|
7592a1906a | ||
|
|
6c08578bd3 | ||
|
|
c6e9f05f58 | ||
|
|
bcde5a0626 | ||
|
|
6cc6f7d1ad | ||
|
|
d001449914 | ||
|
|
a880832886 | ||
|
|
c2b43ff523 | ||
|
|
a857bd291e | ||
|
|
9195e9e667 | ||
|
|
a0f03120c9 | ||
|
|
8f46a864ae | ||
|
|
5467b9e959 | ||
|
|
7c6a2c1807 | ||
|
|
c7a76453a7 | ||
|
|
ca40730cd5 | ||
|
|
bfacca5f3e | ||
|
|
720b1e9105 | ||
|
|
9d3a83abde | ||
|
|
877577c907 | ||
|
|
7585eafb04 | ||
|
|
0a8de7e776 | ||
|
|
bbf3f0cec1 | ||
|
|
6c3f0127af | ||
|
|
ccdc105a09 | ||
|
|
18656de471 | ||
|
|
5533746860 | ||
|
|
90b6b18b95 | ||
|
|
a7129e5059 | ||
|
|
4733fd7870 | ||
|
|
b879804470 | ||
|
|
e2354d7665 | ||
|
|
dc7d7e8bb8 | ||
|
|
48a1e6651f | ||
|
|
b7ae7d273c | ||
|
|
04d572db49 | ||
|
|
9ceaa121f9 | ||
|
|
a80395bfae | ||
|
|
b5674d4ead | ||
|
|
2562ac522c | ||
|
|
65c8c4221c | ||
|
|
4c2353f325 | ||
|
|
bc8b34ee53 | ||
|
|
eaede0c25c | ||
|
|
4cc8bcc30b | ||
|
|
a8113ea35f | ||
|
|
f6f9317f35 | ||
|
|
c42025ef8e | ||
|
|
0dcece846a | ||
|
|
1c8e695487 | ||
|
|
81e63bacbf | ||
|
|
3ef224a9c3 | ||
|
|
fc377d03a9 | ||
|
|
7ef43433a0 | ||
|
|
3b67ca459e | ||
|
|
9af02680e2 | ||
|
|
548da2dd1a | ||
|
|
68ffaede91 | ||
|
|
496a27d449 | ||
|
|
d3ba34faaa | ||
|
|
5373f0e6e1 | ||
|
|
c726ceaa90 | ||
|
|
245ca0fe2e | ||
|
|
4d9468d373 | ||
|
|
8b2676b6e1 | ||
|
|
f66f963cdc | ||
|
|
f2d34bbd14 | ||
|
|
dc8b9e5f19 | ||
|
|
e9715906c0 | ||
|
|
5a21d40ab8 | ||
|
|
c3a01c701d | ||
|
|
7bf0b48df2 | ||
|
|
d7345f60a2 | ||
|
|
836d0903d2 | ||
|
|
a0544cb5e0 | ||
|
|
77bdb3d163 | ||
|
|
c01e583336 | ||
|
|
203638c58f | ||
|
|
3b655468fd | ||
|
|
a93fb2a92b | ||
|
|
dc64faa66e | ||
|
|
4643c44d68 | ||
|
|
a93f248631 | ||
|
|
345fb3eadb | ||
|
|
58f88ff535 | ||
|
|
1efbd33f60 | ||
|
|
dbeba878ff | ||
|
|
f5bf4b3144 | ||
|
|
2a8f50f5c9 | ||
|
|
37346ef741 | ||
|
|
119964e429 | ||
|
|
2d9cca2eec | ||
|
|
3cb9c195d8 | ||
|
|
ce59d8aee1 | ||
|
|
5ca568de4c | ||
|
|
f6757ceb72 | ||
|
|
4d978924ca | ||
|
|
3c593fd2f0 | ||
|
|
9287d6504d | ||
|
|
4579eec269 | ||
|
|
9230756830 | ||
|
|
d688a6f0a0 | ||
|
|
981afce29a | ||
|
|
035bbf7fb2 | ||
|
|
e0251b80be | ||
|
|
e09369c1f8 | ||
|
|
faf12721d1 | ||
|
|
50d0c06aec | ||
|
|
948f6f521c | ||
|
|
d2925651e3 | ||
|
|
e4f07b9064 | ||
|
|
c77e51c99a | ||
|
|
1f6655d43a | ||
|
|
bb4142abf3 | ||
|
|
ec7ed76d4d | ||
|
|
2d9c07e281 | ||
|
|
beb5a39f8e | ||
|
|
aa7254cf82 | ||
|
|
436c4b73a5 | ||
|
|
893604c431 | ||
|
|
04aa3caab1 | ||
|
|
8304001d60 | ||
|
|
5473c9c1b2 | ||
|
|
bd037db210 | ||
|
|
eef1a274fc | ||
|
|
75906a59fc | ||
|
|
f5924ec122 | ||
|
|
52a78fbd8b | ||
|
|
31d14a596b | ||
|
|
6ef6ddecb3 | ||
|
|
b663d9987b | ||
|
|
ad34d6eb08 | ||
|
|
9d2a2b65f3 | ||
|
|
c21d038d36 | ||
|
|
a9f87890d8 | ||
|
|
14e48ad656 | ||
|
|
41d9ea989b | ||
|
|
860f5caafc | ||
|
|
6132966f1a | ||
|
|
16a9f6d08b | ||
|
|
eeb3fe6af9 | ||
|
|
6bdea53350 | ||
|
|
8174b8a00a | ||
|
|
763d43f255 | ||
|
|
7cbc1b44d2 | ||
|
|
f271c3be83 | ||
|
|
cc5aacfa27 | ||
|
|
f974dd8c58 | ||
|
|
06ca545ef4 | ||
|
|
10e6bcc931 | ||
|
|
fe1de1631a | ||
|
|
26f6ed9085 | ||
|
|
a62294de07 | ||
|
|
532b0e2b0c | ||
|
|
ef7eb77867 | ||
|
|
d41ec0e2a0 | ||
|
|
7f5217ff50 | ||
|
|
258852664b | ||
|
|
ac6725e002 | ||
|
|
0f0198865f | ||
|
|
6185ea9c37 | ||
|
|
3c2d58ed0a | ||
|
|
bafbc69717 | ||
|
|
06e0f20ba6 | ||
|
|
50b4d75ff1 | ||
|
|
385f043bcb | ||
|
|
66af3da999 | ||
|
|
bf8fc9bf2b | ||
|
|
3563fa3d18 | ||
|
|
6096872983 | ||
|
|
fc6080da78 | ||
|
|
39f64e949e | ||
|
|
ff8d76d433 | ||
|
|
38981d3af7 | ||
|
|
446ae68865 | ||
|
|
60f12ef2ba | ||
|
|
1c8d847337 | ||
|
|
49ff8f66c4 | ||
|
|
55be84b8dd | ||
|
|
2451e78bb4 | ||
|
|
4f1f18498b | ||
|
|
ef5fc736c3 | ||
|
|
80189a3a87 | ||
|
|
9e43daf824 | ||
|
|
a1c09d0a73 | ||
|
|
250e947a34 | ||
|
|
a7a093b79f | ||
|
|
adef5c738a | ||
|
|
3b967286ad | ||
|
|
6adb1c959c | ||
|
|
2bb9a8a545 | ||
|
|
68b263feca | ||
|
|
3c169b7d04 | ||
|
|
27a216e69c | ||
|
|
e97fd467cd | ||
|
|
faefa14a3b | ||
|
|
16f90c3fe0 | ||
|
|
419db3f0eb | ||
|
|
cb7774c7db | ||
|
|
26458fe839 | ||
|
|
795f769d5e | ||
|
|
53e0d6f4ad | ||
|
|
a5a3cc3c2c | ||
|
|
4ae2383f99 | ||
|
|
074e2ccc6f | ||
|
|
bc20d943c1 | ||
|
|
6647fe02ad | ||
|
|
282257332e | ||
|
|
6a52b74171 | ||
|
|
4a9593e1f6 | ||
|
|
8d8e8d1a47 | ||
|
|
8c8bbed687 | ||
|
|
916f525269 | ||
|
|
05141d34c2 | ||
|
|
54d328117f | ||
|
|
9095fa6e03 | ||
|
|
68c7e3cf27 | ||
|
|
bed315ee6c | ||
|
|
854414df4f | ||
|
|
82f15807dd | ||
|
|
250269edd6 | ||
|
|
d2d2c6ff59 | ||
|
|
04a5b3b832 | ||
|
|
93e167fada | ||
|
|
3f06fb0a0a | ||
|
|
4eba509d38 | ||
|
|
79c3cd8a7a | ||
|
|
458aaa4768 | ||
|
|
72ded9346c | ||
|
|
84d1794148 | ||
|
|
84cf5785b0 | ||
|
|
52bb52faa0 | ||
|
|
2bf19c7d8f | ||
|
|
24c7cf4a57 | ||
|
|
8b10125355 | ||
|
|
4fb6e7c47b | ||
|
|
aefa48de5b | ||
|
|
29aabfaa4c | ||
|
|
0fb575b027 | ||
|
|
41ba60ca7e | ||
|
|
12f4c1a56e | ||
|
|
c7b9024d78 | ||
|
|
32fd78b726 | ||
|
|
3bd21ad849 | ||
|
|
0c4d375986 | ||
|
|
9f26899c8c | ||
|
|
82f6d6f453 | ||
|
|
0c4b855072 | ||
|
|
4e6631611f | ||
|
|
0470f135c4 | ||
|
|
85c7d18ae3 | ||
|
|
3b6c53da74 | ||
|
|
512857d619 | ||
|
|
6dc2d7e4d2 | ||
|
|
d9e727b8ba | ||
|
|
555da3f7a1 | ||
|
|
dc7639086f | ||
|
|
4541f18760 | ||
|
|
b4549fd4bb | ||
|
|
2f043c9e30 | ||
|
|
4ed88cebba | ||
|
|
b8329612af | ||
|
|
172fff617c | ||
|
|
83c8cc1fae | ||
|
|
6e7f4e1670 | ||
|
|
10b6617c48 | ||
|
|
fff296425d | ||
|
|
8005dd0043 | ||
|
|
feed565fc3 | ||
|
|
b678988c90 | ||
|
|
c2d8209d5c | ||
|
|
f8b196a533 | ||
|
|
6fda7b24bf | ||
|
|
987394103f | ||
|
|
0b3cf3ff18 | ||
|
|
d9c70e46f0 | ||
|
|
f4f2970d0a | ||
|
|
13af87effd | ||
|
|
dba7583631 | ||
|
|
2c5daf4cc9 | ||
|
|
7f26f3101e | ||
|
|
4e069097cb | ||
|
|
5200561a75 | ||
|
|
757204162b | ||
|
|
8189d75efa | ||
|
|
847a52c2f3 | ||
|
|
9fa0b92dd3 | ||
|
|
6c49d37ebf | ||
|
|
d5c5ee4080 | ||
|
|
1d00b6c9c9 | ||
|
|
cb4c019521 | ||
|
|
261f51617b | ||
|
|
67d0ec8374 | ||
|
|
b1b127a551 | ||
|
|
f4bf910c8a | ||
|
|
921e6a3882 | ||
|
|
9fd5f78185 | ||
|
|
4ea3729f29 | ||
|
|
2a7a771146 | ||
|
|
051cf3669f | ||
|
|
c55576e6df | ||
|
|
4ede8ac839 | ||
|
|
3199411b18 | ||
|
|
2470c9051f | ||
|
|
e889dde9a5 | ||
|
|
8f17bab161 | ||
|
|
9a8c4bdbe9 | ||
|
|
566ec7b92f | ||
|
|
60d2cf5d1d | ||
|
|
5795cd1fe0 | ||
|
|
fb061b8d52 | ||
|
|
42e08c860c | ||
|
|
43fff83d63 | ||
|
|
057684cbd7 | ||
|
|
758261d32e | ||
|
|
de9c7c9f85 | ||
|
|
d6d35c2e0c | ||
|
|
3881a8e7ff | ||
|
|
f9b0b72f25 | ||
|
|
aba4ece1da | ||
|
|
0e8c997df5 | ||
|
|
656ff915d3 | ||
|
|
bc25cacb74 | ||
|
|
f549fa7a38 | ||
|
|
90fce3eb74 | ||
|
|
8908f97b41 | ||
|
|
67b7716d4d | ||
|
|
9393d087ea | ||
|
|
d323240c96 | ||
|
|
f7e694d878 | ||
|
|
61c60b3eb8 | ||
|
|
1135eee803 | ||
|
|
40a934496f | ||
|
|
592eefc568 | ||
|
|
a82bc29604 | ||
|
|
3aa8cb7842 | ||
|
|
b844b790f1 | ||
|
|
d087d7347a | ||
|
|
d55a65eb6b | ||
|
|
6acfcc498d | ||
|
|
d609e79f3c | ||
|
|
3058cbf555 | ||
|
|
aa492b455d | ||
|
|
a3080e873f | ||
|
|
abad008765 | ||
|
|
697080e7ab | ||
|
|
b19ab88fef | ||
|
|
c5af2f108c | ||
|
|
5ae5ce5081 | ||
|
|
02f5980d91 | ||
|
|
5c46f0b4a4 | ||
|
|
b7587ffc10 | ||
|
|
b3b4a8c2c3 | ||
|
|
30417a0709 | ||
|
|
7758150121 | ||
|
|
72786e028d | ||
|
|
9f52b981fe | ||
|
|
98245fe0d9 | ||
|
|
509191a3f7 | ||
|
|
fd4a52eaad | ||
|
|
833ee5f0d5 | ||
|
|
ec0f060783 | ||
|
|
17375f82e9 | ||
|
|
0f5f3dad67 | ||
|
|
e4f3cf32cd | ||
|
|
e704f6fd02 | ||
|
|
da872f430b | ||
|
|
bcb7a51ecb | ||
|
|
d692b45ef9 | ||
|
|
36e090e4f2 | ||
|
|
c22092efe0 | ||
|
|
b93acd208b | ||
|
|
835c0822af | ||
|
|
a55ce54bb1 | ||
|
|
dad8efe8bd | ||
|
|
a006e5dfd3 | ||
|
|
b945f26976 | ||
|
|
526d344aad | ||
|
|
e08ee4cc26 | ||
|
|
d3f5c5243c | ||
|
|
e63ed115af | ||
|
|
70e16e24c6 | ||
|
|
2d16ebc092 | ||
|
|
86ad096869 | ||
|
|
c97827f9d1 | ||
|
|
1e404fa6c0 | ||
|
|
1f0fa5c437 | ||
|
|
9f507487e2 | ||
|
|
fd10278074 | ||
|
|
9685925ebc | ||
|
|
fe3e1e70ce | ||
|
|
1eb826e1fa | ||
|
|
9f2aae11bb | ||
|
|
4e1f178389 | ||
|
|
8d91096b15 | ||
|
|
7c46498749 | ||
|
|
c0154ce534 | ||
|
|
2ffc303f9b | ||
|
|
b67f00df07 | ||
|
|
6b3b4ad6ca | ||
|
|
5b77f89a4f | ||
|
|
6185326760 | ||
|
|
cd8f11ec85 | ||
|
|
f0ab82d859 | ||
|
|
d61d9c4575 | ||
|
|
6a7c053dd0 | ||
|
|
d406d1f9c9 | ||
|
|
4e00a8e94a | ||
|
|
cd57b240f5 | ||
|
|
bca0cbbde5 | ||
|
|
396baa380e | ||
|
|
9a36fcd388 | ||
|
|
488cc4562f | ||
|
|
33324eac4f | ||
|
|
ee940a4b44 | ||
|
|
12ece32c94 | ||
|
|
ce50d36a6c | ||
|
|
40c9ee9aaa | ||
|
|
cd1fc89bea | ||
|
|
cd5f53280c | ||
|
|
0051acb625 | ||
|
|
a7194cbcf7 | ||
|
|
26a69078c9 | ||
|
|
b968139da0 | ||
|
|
cab0809536 | ||
|
|
c0daadaa20 | ||
|
|
5bde2697ba | ||
|
|
2db5860769 | ||
|
|
766161cc44 | ||
|
|
9e1c876e58 | ||
|
|
d081c01058 | ||
|
|
fe6b790a23 | ||
|
|
adfc66903c | ||
|
|
f75908c03b | ||
|
|
906fdf619c | ||
|
|
3b534f76f8 | ||
|
|
4d5a191c8b | ||
|
|
02280d597b | ||
|
|
9481d98451 | ||
|
|
449c40a89d | ||
|
|
0782be9f08 | ||
|
|
97918d4e10 | ||
|
|
4d371c0d95 | ||
|
|
a445aaa66a | ||
|
|
8105e6a166 | ||
|
|
efc54c518a | ||
|
|
ec0bf10c03 | ||
|
|
624c7671ee | ||
|
|
14caf39fd4 | ||
|
|
e621d4348a | ||
|
|
620f9317ad | ||
|
|
eea9ddc5af | ||
|
|
79ca86c7de | ||
|
|
0c4b9521d5 | ||
|
|
ee9e8bb28a | ||
|
|
4af961e25a | ||
|
|
c3765026b1 | ||
|
|
8a40ae10c1 | ||
|
|
59e74e9373 | ||
|
|
a5b1f502b6 | ||
|
|
0247d3a198 | ||
|
|
6ea82397a3 | ||
|
|
e0896531eb | ||
|
|
16bd46f732 | ||
|
|
44cb0fff3d | ||
|
|
a4892e98bf | ||
|
|
fcb837aa66 | ||
|
|
5867a55bdc | ||
|
|
b63175db20 | ||
|
|
294f5ecf41 | ||
|
|
3318a39861 | ||
|
|
d78cf05d04 | ||
|
|
0970218907 | ||
|
|
c33b41f8cc | ||
|
|
a65d91f309 | ||
|
|
442ef3d21b | ||
|
|
51035da4ff | ||
|
|
283e5bb163 | ||
|
|
1adaca9cae | ||
|
|
ab0a6e6dd0 | ||
|
|
0ef705b4ba | ||
|
|
b2413c6722 | ||
|
|
4a2003b48a | ||
|
|
91f2930140 | ||
|
|
df8781f1c9 | ||
|
|
d67b4d3f6b | ||
|
|
042141318b | ||
|
|
328e79a007 | ||
|
|
5c62edba3a | ||
|
|
4e1c527b82 | ||
|
|
6eff3c1884 | ||
|
|
116624b1b0 | ||
|
|
3c618c7265 | ||
|
|
e0eaf7f00b | ||
|
|
176e8c5451 | ||
|
|
78ea06c997 | ||
|
|
3e45e0fcd8 | ||
|
|
0236e06fda | ||
|
|
ba9d85891c | ||
|
|
d87f9d1060 | ||
|
|
596e7c0a01 | ||
|
|
8957ccb149 | ||
|
|
e382cf5f41 | ||
|
|
9857b1a59e | ||
|
|
5d50ddb72d | ||
|
|
400154027a | ||
|
|
949e30c64f | ||
|
|
4fb1136a6c | ||
|
|
148d6b590e | ||
|
|
79727e94d8 | ||
|
|
f97d444d8f | ||
|
|
74584ed8b6 | ||
|
|
5e856a67d9 | ||
|
|
c63cdad1a0 | ||
|
|
22be840209 | ||
|
|
b06ce42e18 | ||
|
|
bb7136efe1 | ||
|
|
e325a433cd | ||
|
|
b651be006c | ||
|
|
c669313675 | ||
|
|
1ac77c94fe | ||
|
|
74114cf984 | ||
|
|
056cdd590e | ||
|
|
2f8cb685c4 | ||
|
|
9f7e6c5e8a | ||
|
|
1558689e2b | ||
|
|
3ef73042ff | ||
|
|
b49b48f521 | ||
|
|
0fba81dc0a | ||
|
|
0f24b39bdf | ||
|
|
67af347c93 | ||
|
|
44aa69ed84 | ||
|
|
5d51b8377f | ||
|
|
1894fc9484 | ||
|
|
78e0c6e329 | ||
|
|
fe233fddf4 | ||
|
|
d6c0c53360 | ||
|
|
0cf8a140a9 | ||
|
|
710729e972 | ||
|
|
f0b2db257c | ||
|
|
87ac646444 | ||
|
|
698f313f61 | ||
|
|
5d665f2238 | ||
|
|
874cb1072c | ||
|
|
f9928a5225 | ||
|
|
1b47ada470 | ||
|
|
8684bc6d2a | ||
|
|
c759fe4fbd | ||
|
|
c0384026c1 | ||
|
|
0c2451e92b | ||
|
|
5dd2f359cc | ||
|
|
c9dfe90303 | ||
|
|
04671136ea | ||
|
|
7b7ccadd57 | ||
|
|
5f08bf111e | ||
|
|
d06c6009ae | ||
|
|
d12da9f536 | ||
|
|
0c04e27eb1 | ||
|
|
f69e90bfdb | ||
|
|
9206fd904c | ||
|
|
71bc545ac6 | ||
|
|
3820e80eb0 | ||
|
|
ea84a1fe8e | ||
|
|
dfee645789 | ||
|
|
623a1739b0 | ||
|
|
a35e03ab51 | ||
|
|
30fe903120 | ||
|
|
93979e7a13 | ||
|
|
4976336cd7 | ||
|
|
293dc6ae2d | ||
|
|
2722c6abf9 | ||
|
|
8458f73950 | ||
|
|
c5e8af16d8 | ||
|
|
fb7f0ca845 | ||
|
|
f2fe16c9ca | ||
|
|
d56cfbd643 | ||
|
|
79d217f984 | ||
|
|
1a09b34777 | ||
|
|
c96ec32790 | ||
|
|
a90938b7fe | ||
|
|
ff2e648658 | ||
|
|
824c376c99 | ||
|
|
b7c785dbb9 | ||
|
|
201747cf09 | ||
|
|
3b3150a851 | ||
|
|
5e7c6cadbe | ||
|
|
a629c89a47 | ||
|
|
e12d74e626 | ||
|
|
74460cc8e8 | ||
|
|
211c01a1e7 | ||
|
|
81585718f4 | ||
|
|
82eb7aec56 | ||
|
|
f92bc6705a | ||
|
|
1e5e004c86 | ||
|
|
9d8f9aaffa | ||
|
|
3ab02b9896 | ||
|
|
e2c7517492 | ||
|
|
f49ffdeb17 | ||
|
|
4688f4a267 | ||
|
|
392496f910 | ||
|
|
429035b95e | ||
|
|
60e776c0b1 | ||
|
|
3c90229bd1 | ||
|
|
e8824a34c4 | ||
|
|
5e56e0d9f0 | ||
|
|
ce87194f82 | ||
|
|
8b0ea79b27 | ||
|
|
c93a7af987 | ||
|
|
5b61252657 | ||
|
|
1ad612fe04 | ||
|
|
e82ae91d3b | ||
|
|
89a7ea308b | ||
|
|
baef3ff491 | ||
|
|
bacc204129 | ||
|
|
ad616e2ae7 | ||
|
|
11e8e272dc | ||
|
|
6049d54d57 | ||
|
|
1bce069dc7 | ||
|
|
020c0b0f7f | ||
|
|
7d0b7c66d6 | ||
|
|
91f063881e | ||
|
|
b67d47c22e | ||
|
|
02fcf730c2 | ||
|
|
85c80d8532 | ||
|
|
d3076a4587 | ||
|
|
2928e184e7 | ||
|
|
21ba3d6cb8 | ||
|
|
136fdedb42 | ||
|
|
351bb2c436 | ||
|
|
e2497544f4 | ||
|
|
83a23b5f1c | ||
|
|
108d88aa73 | ||
|
|
d4508c551c | ||
|
|
96eae3899d | ||
|
|
4ab5d272a8 | ||
|
|
ec872fb07e | ||
|
|
0fb3e85ef4 | ||
|
|
99f0b0e6ed | ||
|
|
24a97a12ef | ||
|
|
6c5d2d1f76 | ||
|
|
e75a82953c | ||
|
|
4659274e32 | ||
|
|
e759a9f0ec | ||
|
|
0448460aa8 | ||
|
|
63d006d51c | ||
|
|
8aa191848a | ||
|
|
34c2fcfcff | ||
|
|
86c01f03ff | ||
|
|
7d1f9f8984 | ||
|
|
a4b652fb6e | ||
|
|
7f284fbf17 | ||
|
|
0309575105 | ||
|
|
b1ce1292cd | ||
|
|
b56da5283c | ||
|
|
bb94402f82 | ||
|
|
f4e66ce9d5 | ||
|
|
88a72b7e1b | ||
|
|
fbb3a02aba | ||
|
|
d9d2d87c22 | ||
|
|
8a3070e4d1 | ||
|
|
795c474aa2 | ||
|
|
6acb44cc6b | ||
|
|
44348b0ffc | ||
|
|
ba637881d0 | ||
|
|
f252f64f26 | ||
|
|
f4175f9d93 | ||
|
|
c4d121b673 | ||
|
|
2305c46add | ||
|
|
cdf03c828e | ||
|
|
415018ddda | ||
|
|
1dafb61497 | ||
|
|
b90a717fb1 | ||
|
|
5853f77a56 | ||
|
|
e94feb1a94 | ||
|
|
8189f39979 | ||
|
|
12a9d81b7f | ||
|
|
36609ca04c | ||
|
|
e04e2ec644 | ||
|
|
2bfc8c424b | ||
|
|
5f974b4509 | ||
|
|
f175f1713d | ||
|
|
55d0da1124 | ||
|
|
7a4a69ccea | ||
|
|
6187415172 | ||
|
|
538780b53b | ||
|
|
7191ecc710 | ||
|
|
219619ac4d | ||
|
|
e978f4bd52 | ||
|
|
d511d6f7cf | ||
|
|
80e54a7d35 | ||
|
|
0d56597e86 | ||
|
|
3c6f0accb0 | ||
|
|
828b802387 | ||
|
|
40a84ecba5 | ||
|
|
91bc17ca27 | ||
|
|
f85feaca03 | ||
|
|
3862b13620 | ||
|
|
90c7bcd9de | ||
|
|
7c684bbb7c | ||
|
|
e9662bac89 | ||
|
|
7c2909f337 | ||
|
|
652229634f | ||
|
|
5b597d4bc6 | ||
|
|
d7badd5a07 | ||
|
|
43f634963b | ||
|
|
79472d0bf2 | ||
|
|
50a0d285a1 | ||
|
|
497b238e4c | ||
|
|
65ab40f772 | ||
|
|
53c7e57bc9 | ||
|
|
f9c2c2bcd2 | ||
|
|
cb74fa0564 | ||
|
|
41f723e37a | ||
|
|
947b11003e | ||
|
|
6d2f9e6924 | ||
|
|
458facb9aa | ||
|
|
b884486032 | ||
|
|
36caf9e033 | ||
|
|
ac435378f8 | ||
|
|
420116584d | ||
|
|
66997919f6 | ||
|
|
f5e5c0a6f4 | ||
|
|
367299ddef | ||
|
|
368872de77 | ||
|
|
5e61c45025 | ||
|
|
0f30acf71c | ||
|
|
4757c8e0e4 | ||
|
|
4049071b62 | ||
|
|
eaecbf611e | ||
|
|
5946788239 | ||
|
|
dacbe3641b | ||
|
|
91139eba00 | ||
|
|
f5b78d1114 | ||
|
|
91df78a054 | ||
|
|
454d0090b2 | ||
|
|
ab12796192 | ||
|
|
1b0fc032b5 | ||
|
|
a90118cc0c | ||
|
|
c728b9f01f | ||
|
|
c053a8b481 | ||
|
|
0e107c4842 | ||
|
|
07befae09b | ||
|
|
ac4e93b3e5 | ||
|
|
dbbef7396e | ||
|
|
df4d7336c5 | ||
|
|
22106bc014 | ||
|
|
cbd43bb108 | ||
|
|
db0b7bc7d0 | ||
|
|
7160be3fdb | ||
|
|
55df62eda3 | ||
|
|
196d4e0d9a | ||
|
|
d0a8fe62ca | ||
|
|
945b841d48 | ||
|
|
c4ef934afe | ||
|
|
9d076721e8 | ||
|
|
62fd8be727 | ||
|
|
ae9593fa10 | ||
|
|
78ab560f17 | ||
|
|
e486040111 | ||
|
|
f7dea89c7a | ||
|
|
8b5a2b428e | ||
|
|
944cace649 | ||
|
|
08f111dd0c | ||
|
|
c849307960 | ||
|
|
c846a918fc | ||
|
|
04645c7a9d | ||
|
|
7847db06f7 | ||
|
|
52ff426581 | ||
|
|
38a53f8448 | ||
|
|
e3ce6f3f30 | ||
|
|
d5701c2435 | ||
|
|
779f5ad78d | ||
|
|
306ba98b1e | ||
|
|
db39744a08 | ||
|
|
51e2313515 | ||
|
|
51d9b43023 | ||
|
|
97b5c848d9 | ||
|
|
3bf64af6a4 | ||
|
|
f62051d76f | ||
|
|
de6c30b510 | ||
|
|
4bf9e70937 | ||
|
|
bf0f71d504 | ||
|
|
23c40b5c0f | ||
|
|
93682bb687 | ||
|
|
fa2f9817cc | ||
|
|
f9cd004867 | ||
|
|
1d8ede9301 | ||
|
|
a5b7868cf3 | ||
|
|
0b1647e004 | ||
|
|
3e79243700 | ||
|
|
498b0dfae9 | ||
|
|
67c07c175d | ||
|
|
93854c4c6b | ||
|
|
b6a185a70e | ||
|
|
0485308878 | ||
|
|
952f75d830 | ||
|
|
8f8f7701f0 | ||
|
|
67b43e8565 | ||
|
|
e3b01c7595 | ||
|
|
e85e9626d1 | ||
|
|
586c0aca07 | ||
|
|
5cfb45537b | ||
|
|
245cbae5b2 | ||
|
|
f14fd1ee00 | ||
|
|
40b4bf37e7 | ||
|
|
3dc5150cef | ||
|
|
52061f624e | ||
|
|
0ac14e35b2 | ||
|
|
059f0b427f | ||
|
|
3615d64e55 | ||
|
|
ce6c987c8c | ||
|
|
372b246ae4 | ||
|
|
d7cef5dc99 | ||
|
|
47fb9492d2 | ||
|
|
807f7d7725 | ||
|
|
c1b6656939 | ||
|
|
3a33b18b34 | ||
|
|
70889d7b15 | ||
|
|
5412c22c77 | ||
|
|
241c21b75a | ||
|
|
6ea484d1f5 | ||
|
|
413fab33e5 | ||
|
|
30b0eff13f | ||
|
|
a2db8495bc | ||
|
|
48f6f9d56b | ||
|
|
3fbe1524e4 | ||
|
|
018bd46884 | ||
|
|
6d2ba575bd | ||
|
|
bbcb9cc63c | ||
|
|
e9214b000b | ||
|
|
b88451df35 | ||
|
|
38ce488bd0 | ||
|
|
35c87b9bc6 | ||
|
|
4f7c26fb59 | ||
|
|
2c188de044 | ||
|
|
227c173869 | ||
|
|
34ac502065 | ||
|
|
86035599fe | ||
|
|
745aee0c4c | ||
|
|
e39b3b0498 | ||
|
|
b4b6440297 | ||
|
|
72917f8f44 | ||
|
|
cf434cfd08 | ||
|
|
507cb508d7 | ||
|
|
bc5eaf1b20 | ||
|
|
0398940b8e | ||
|
|
b1bd236e79 | ||
|
|
f22d94b95a | ||
|
|
ce6f7d8d9f | ||
|
|
e41858a470 | ||
|
|
720db7820e | ||
|
|
58d40d97e6 | ||
|
|
560e1d1ec1 | ||
|
|
bc2d3f5307 | ||
|
|
6e086b553a | ||
|
|
47c94bbe3c | ||
|
|
ba1fadc3f7 | ||
|
|
9668f3bd42 | ||
|
|
37bfaf7023 | ||
|
|
a1fd716f3b | ||
|
|
ca034ab855 | ||
|
|
df0413f361 | ||
|
|
859eb894bc | ||
|
|
3b3e4fc761 | ||
|
|
3dd1960b2a | ||
|
|
9069de4eea | ||
|
|
4d72d837be | ||
|
|
70d9be09cc | ||
|
|
8f441bb341 | ||
|
|
f59b95da76 | ||
|
|
35c4e01d18 | ||
|
|
18f85f8dd0 | ||
|
|
a693e71f28 | ||
|
|
c9939d1fd3 | ||
|
|
b36957e25d | ||
|
|
9e8f848074 | ||
|
|
5516bd4ec8 | ||
|
|
2d724b771e | ||
|
|
5f5d8230ea | ||
|
|
642ad8797c | ||
|
|
9f90098dfb | ||
|
|
95101e1958 | ||
|
|
a20cd83e5d | ||
|
|
314b8f7958 | ||
|
|
93c3e23672 | ||
|
|
76b3e558b9 | ||
|
|
ab78e4bef0 | ||
|
|
f3e136fff6 | ||
|
|
18a14d6bf5 | ||
|
|
8be3e5f2e2 | ||
|
|
71379d00bf | ||
|
|
33f1662279 | ||
|
|
5d8f30356a | ||
|
|
60b166ac4d | ||
|
|
f01c807873 | ||
|
|
24d3f55a34 | ||
|
|
ade96f441e | ||
|
|
df22a923c4 | ||
|
|
a0b25e82f5 | ||
|
|
953feea5d3 | ||
|
|
4785e69585 | ||
|
|
4bfcd968a7 | ||
|
|
fd4b78e95d | ||
|
|
86867b76dd | ||
|
|
3584b2144e | ||
|
|
7165b8b1c8 | ||
|
|
1cdde3c8d0 | ||
|
|
d0bc5df348 | ||
|
|
802e907ae5 | ||
|
|
31019c1652 | ||
|
|
a21756dedc | ||
|
|
976d4ef267 | ||
|
|
05b2cbb310 | ||
|
|
9a8a2fb72b | ||
|
|
b355f7ea0e | ||
|
|
791b3309c8 | ||
|
|
5bc4554a6e | ||
|
|
1400e8fb8b | ||
|
|
f039948f09 | ||
|
|
112983b87d | ||
|
|
e46aa34185 | ||
|
|
211f718d25 | ||
|
|
0d77d2ea11 | ||
|
|
b52be5a0e7 | ||
|
|
1d4b7fca78 | ||
|
|
da31012521 | ||
|
|
c343611bf2 | ||
|
|
e0f3d96f9a | ||
|
|
bb3b7c2ff1 | ||
|
|
bed2259ede | ||
|
|
8208dea9e2 | ||
|
|
94729cf355 | ||
|
|
795aee180d | ||
|
|
083c21c7c6 | ||
|
|
c3aa33f7e2 | ||
|
|
ae6d9a5466 | ||
|
|
00780a8a6f | ||
|
|
097307a8f0 | ||
|
|
5d49bab0b1 | ||
|
|
6514a7cdee | ||
|
|
69cd9ff712 | ||
|
|
4682b73269 | ||
|
|
62f9808ce8 | ||
|
|
acbcec3004 | ||
|
|
417b9730b3 | ||
|
|
9a3269d91b | ||
|
|
5b2c2e76fb | ||
|
|
2d3f594b08 | ||
|
|
eed8c3afc6 | ||
|
|
512995a690 | ||
|
|
b983a196aa | ||
|
|
3717641c6c | ||
|
|
39b855dfd3 | ||
|
|
77361183d1 | ||
|
|
d2023dac41 | ||
|
|
24789aba9f | ||
|
|
9628820de0 | ||
|
|
728fea362d | ||
|
|
f0699eac56 | ||
|
|
6fe10b9054 | ||
|
|
899ed70268 | ||
|
|
968d59a50f | ||
|
|
4853d699d7 | ||
|
|
b413a9ba42 | ||
|
|
de39922342 | ||
|
|
443c21dc15 | ||
|
|
e29bad58eb | ||
|
|
c39cd1d7a2 | ||
|
|
3c22121f48 | ||
|
|
7f08256f2f | ||
|
|
c8fc80fb77 | ||
|
|
1c891d2dd6 | ||
|
|
8151679e48 | ||
|
|
a0783a4a5a | ||
|
|
a75c02b0f1 | ||
|
|
af61e4b99f | ||
|
|
9a826752e8 | ||
|
|
5a6d57899a | ||
|
|
6aa7d36e69 | ||
|
|
1e31df0004 | ||
|
|
de4253f385 | ||
|
|
68a912b36d | ||
|
|
651e6b46d0 | ||
|
|
f5e2a5ce2f | ||
|
|
179b369fde | ||
|
|
815859a7bb | ||
|
|
d9185a5a7e | ||
|
|
d1c09d04ff | ||
|
|
87de70d7ac | ||
|
|
08dcf151a6 | ||
|
|
96ef1297af | ||
|
|
9a7b48eb26 | ||
|
|
e8732ba214 | ||
|
|
c985cb4b0e | ||
|
|
51b30845c1 | ||
|
|
c1f3f02117 | ||
|
|
364b725c28 | ||
|
|
3799ccc7b8 | ||
|
|
b1a6f655d7 | ||
|
|
18df3a3df2 | ||
|
|
7df5e2ec9a | ||
|
|
8aafdcac95 | ||
|
|
c918d7df77 | ||
|
|
53df78b377 | ||
|
|
65e3dacb58 | ||
|
|
9db59e2782 | ||
|
|
3f2149f1d8 | ||
|
|
fc0025b59b | ||
|
|
ad49532330 | ||
|
|
b562308535 | ||
|
|
baba7c683c | ||
|
|
8a29b1f0b1 | ||
|
|
c9567944e7 | ||
|
|
4215e79a8b | ||
|
|
6342a98244 | ||
|
|
03a634f27d | ||
|
|
fa2721bd60 | ||
|
|
803782c140 | ||
|
|
37d6196690 | ||
|
|
5db8e09c17 | ||
|
|
6b27df86ca | ||
|
|
bfa28a9e3a | ||
|
|
20de3f4004 | ||
|
|
8695c64724 | ||
|
|
67e772ba10 | ||
|
|
f1b39ff147 | ||
|
|
978e4f71bb | ||
|
|
c36a681815 | ||
|
|
bdceeef8ff | ||
|
|
ffd0bfbf4a | ||
|
|
c59042bc00 | ||
|
|
137860a951 | ||
|
|
db81b82093 | ||
|
|
291759bd6f | ||
|
|
b1712051f1 | ||
|
|
a1fc084b4f | ||
|
|
4146681d02 | ||
|
|
ded4aa73f8 | ||
|
|
4f6a05c971 | ||
|
|
ad98d60489 | ||
|
|
99d378c03f | ||
|
|
b04526e650 | ||
|
|
09183e892f | ||
|
|
5274fdddfe | ||
|
|
061a6cb718 | ||
|
|
c46c240ec5 | ||
|
|
e7f07b3856 | ||
|
|
324119b646 | ||
|
|
e753d19e38 | ||
|
|
5da415cc22 | ||
|
|
ceda89bcfc | ||
|
|
4ed0ab4604 | ||
|
|
9b0743f19a | ||
|
|
c285c5e211 | ||
|
|
5c26a357cc | ||
|
|
c1e4733c3b | ||
|
|
60f33a4ff1 | ||
|
|
4c10477c7c | ||
|
|
61a871690c | ||
|
|
f4f7396cb9 | ||
|
|
48058fdd77 | ||
|
|
704c2ac772 | ||
|
|
9ff39fd8a4 | ||
|
|
6a5da9f5b6 | ||
|
|
cdc1c65a3d | ||
|
|
65f20a2d5a | ||
|
|
7c2b2d86a6 | ||
|
|
ed5c09e2ca | ||
|
|
a19b11738f | ||
|
|
ea7ccf3372 | ||
|
|
03e3476df4 | ||
|
|
80669eb600 | ||
|
|
17c6dc528b | ||
|
|
4fadfde870 | ||
|
|
6ba7c9234f | ||
|
|
dafe049ebd | ||
|
|
ca9ef3c2e8 | ||
|
|
034db9db1f | ||
|
|
9bee1c7ae6 | ||
|
|
bb5aa010d4 | ||
|
|
be1460ac84 | ||
|
|
f0d2463f35 | ||
|
|
dd8e829ab2 | ||
|
|
2a60b87633 | ||
|
|
45912ca0ac | ||
|
|
2be4d8d00a | ||
|
|
0ec2537a01 | ||
|
|
f6180ffc6f | ||
|
|
c90e52b4c2 | ||
|
|
94082b87b8 | ||
|
|
04398eaf11 | ||
|
|
5e494d6339 | ||
|
|
d2416e1378 | ||
|
|
119a854357 | ||
|
|
d5e7ca614a | ||
|
|
badc0769db | ||
|
|
566557a3f0 | ||
|
|
05aeccd5ca | ||
|
|
6332596a4d | ||
|
|
76b95ee227 | ||
|
|
9478439139 | ||
|
|
d49946e886 | ||
|
|
d11dbb57ab | ||
|
|
08357fe683 | ||
|
|
1f401e1f45 | ||
|
|
f5ddf2b63e | ||
|
|
c3aa4dba38 | ||
|
|
1b05ddb812 | ||
|
|
05b008edf1 | ||
|
|
110fe5a836 | ||
|
|
8b1f3d52f9 | ||
|
|
acef905cbe | ||
|
|
d4db10c832 | ||
|
|
eba879a8ca | ||
|
|
14d930dc6d | ||
|
|
f86d88868b | ||
|
|
e1725a42b9 | ||
|
|
593aba4abe | ||
|
|
9a65fa5b1b | ||
|
|
11f76bfa6b | ||
|
|
76268b0341 | ||
|
|
96501b1fca | ||
|
|
c20beab072 | ||
|
|
71712134bd | ||
|
|
2214a2a3e7 | ||
|
|
d9a4819ca7 | ||
|
|
7b045fdab6 | ||
|
|
3263b3a8ac | ||
|
|
85648460a7 | ||
|
|
767b0ee7b1 | ||
|
|
fb40581e50 | ||
|
|
61cec2f531 | ||
|
|
b34a4917dc | ||
|
|
828552e105 | ||
|
|
887b5a178a | ||
|
|
8c86df56bf | ||
|
|
b257b57e1b | ||
|
|
4e5e360aa2 | ||
|
|
4c0e52f3e9 | ||
|
|
b43dcc8fd2 | ||
|
|
abcc2d45a0 | ||
|
|
186be1466f | ||
|
|
3c3fb4e000 | ||
|
|
a1a2c8e6de | ||
|
|
4835fef626 | ||
|
|
fd1035a222 | ||
|
|
f4db6709de | ||
|
|
ed5f2fad9f | ||
|
|
9eb23637ff | ||
|
|
ad009e1438 | ||
|
|
dcc313a3b7 | ||
|
|
d1fff060c6 | ||
|
|
5db3c8ded9 | ||
|
|
3f4b2f7d99 | ||
|
|
c4f158b374 | ||
|
|
61e70e439f | ||
|
|
c66827cc8b | ||
|
|
f217d60eb4 | ||
|
|
edb5d85d3c | ||
|
|
bcc969ba8d | ||
|
|
f774effd17 | ||
|
|
b55d68ba95 | ||
|
|
d40148503c | ||
|
|
7ec8f8f604 | ||
|
|
4444e89bbc | ||
|
|
d7f0325595 | ||
|
|
f79492b78c | ||
|
|
925fbc076c | ||
|
|
6d66f71fcf | ||
|
|
4543df6c4b | ||
|
|
4e885a8ae1 | ||
|
|
de53dbf358 | ||
|
|
1e8647294a | ||
|
|
25d3af84a1 | ||
|
|
72367ff251 | ||
|
|
8b8a2d4790 | ||
|
|
eb8ec7d6d1 | ||
|
|
00bff720d0 | ||
|
|
39c80534b0 | ||
|
|
5cf0cf98f7 | ||
|
|
1a13e6103c | ||
|
|
b1f6a2ce4b | ||
|
|
8252421f26 | ||
|
|
51c3eedb87 | ||
|
|
ad73b379e6 | ||
|
|
0440512d07 | ||
|
|
865baefe82 | ||
|
|
1732adfa07 | ||
|
|
fcf05717c4 | ||
|
|
6a09708500 | ||
|
|
d3527a8a0b | ||
|
|
2f90c9532f | ||
|
|
937ce00468 | ||
|
|
8f61f8eb54 | ||
|
|
29bafb193c | ||
|
|
f2de337030 | ||
|
|
bcae082904 | ||
|
|
887320a8d2 | ||
|
|
bfcb0c92bc | ||
|
|
9a73352750 | ||
|
|
8fe9b5e86a | ||
|
|
a716f18685 | ||
|
|
2e717f67f3 | ||
|
|
ade8b21e54 | ||
|
|
a1599a84e2 | ||
|
|
0435e1c021 | ||
|
|
7528331669 | ||
|
|
42e5816d97 | ||
|
|
77788c00a0 | ||
|
|
663af9cca3 | ||
|
|
2e03ecb2b3 | ||
|
|
752f4aefc8 | ||
|
|
0dbb7eb2fd | ||
|
|
b6420f1ff6 | ||
|
|
cead6ec411 | ||
|
|
f3c665324e | ||
|
|
15cbb4eeb5 | ||
|
|
1892f9e030 | ||
|
|
716b9901a9 | ||
|
|
50516e8f79 | ||
|
|
31a4d80bf5 | ||
|
|
6e43d75756 | ||
|
|
7998ef60b2 | ||
|
|
d623edaca1 | ||
|
|
59dcb2a7df | ||
|
|
7730de5796 | ||
|
|
8fc72c0a4b | ||
|
|
226ae1a7bb | ||
|
|
324484e756 | ||
|
|
78dddd29b1 | ||
|
|
c2d6c41bed | ||
|
|
da4ceaa4fd | ||
|
|
99cc319bb3 | ||
|
|
ef858a1b5a | ||
|
|
62c0a73a69 | ||
|
|
24b7d5e489 | ||
|
|
6f46cc2695 | ||
|
|
1a58709bfd | ||
|
|
711e1f40e4 | ||
|
|
e25b1dc5b6 | ||
|
|
ce8cf140f2 | ||
|
|
005646cae3 | ||
|
|
1dd4359338 | ||
|
|
c3c997183a | ||
|
|
1e3714bd28 | ||
|
|
e413d25e7d | ||
|
|
5e8902c242 | ||
|
|
35560b569a | ||
|
|
34f95bbbdd | ||
|
|
3c890f1602 | ||
|
|
cf548d3884 | ||
|
|
8c7e275201 | ||
|
|
31ccae0cec | ||
|
|
f8fe2acdde | ||
|
|
f0e842dc4a | ||
|
|
726f629ae1 | ||
|
|
19a361f674 | ||
|
|
cb664f26da | ||
|
|
afe1ba95d3 | ||
|
|
145536c5fa | ||
|
|
da880edc7c | ||
|
|
1ce76af0e9 | ||
|
|
72cd4eeaee | ||
|
|
721a9a478f | ||
|
|
d5529afe80 | ||
|
|
44eb3af0f3 | ||
|
|
08848b2e92 | ||
|
|
142620bced | ||
|
|
d599cef011 | ||
|
|
5bba47b39c | ||
|
|
bc26d54909 | ||
|
|
6efc1700b6 | ||
|
|
fe9e562295 | ||
|
|
fe08b8a496 | ||
|
|
a71e2703a2 | ||
|
|
255014182e | ||
|
|
e209c98eab | ||
|
|
6a4a0f9c36 | ||
|
|
5c7786f39f | ||
|
|
2fd7cc20b7 | ||
|
|
a7b4e24cf4 | ||
|
|
4470edff4a | ||
|
|
b33d20d927 | ||
|
|
85b4a44fb1 | ||
|
|
8843e8b87e | ||
|
|
fcf525416f | ||
|
|
768c0e1048 | ||
|
|
a7b8207a95 | ||
|
|
1cf03b53f5 | ||
|
|
d4a8ee886c | ||
|
|
e02c67ff07 | ||
|
|
a10067bd62 | ||
|
|
0aee1faed1 | ||
|
|
e365a381c6 | ||
|
|
2c89e09d03 | ||
|
|
fd0d7ccb59 | ||
|
|
e72a6e6400 | ||
|
|
7c4dc96e03 | ||
|
|
0c4eb3452c | ||
|
|
9787972139 | ||
|
|
2b8a3458a8 | ||
|
|
ea58f0d336 | ||
|
|
e03f574b38 | ||
|
|
115715a1d8 | ||
|
|
fbfaab83ad | ||
|
|
ba2b3e9469 | ||
|
|
4768c7b5e1 | ||
|
|
66e6aa031c | ||
|
|
5dcb038fa0 | ||
|
|
6d2505f53f | ||
|
|
4f44efb156 | ||
|
|
1ad2e68e4b | ||
|
|
e2077b95a4 | ||
|
|
c18bed5a9b | ||
|
|
bdaf9a8ddf | ||
|
|
4a37c272a1 | ||
|
|
6f9015b67e | ||
|
|
664ce07f1a | ||
|
|
54c474764c | ||
|
|
29e64a354f | ||
|
|
96b63db44c | ||
|
|
8a06d2f5c0 | ||
|
|
07289be70e | ||
|
|
04d51e2437 | ||
|
|
a236f89786 | ||
|
|
91269b50d0 | ||
|
|
bc1fcf5d5a | ||
|
|
6e313c1a0a | ||
|
|
311bf3dfb6 | ||
|
|
f48912ead3 | ||
|
|
791769f2e4 | ||
|
|
e61cbfd632 | ||
|
|
f267a054e1 | ||
|
|
58743f3d5d | ||
|
|
cf4fa97a21 | ||
|
|
09107f3813 | ||
|
|
6b0996df7c | ||
|
|
9923f54f7f | ||
|
|
d9a9d0c30c | ||
|
|
d20f81781c | ||
|
|
9c9dabf8b6 | ||
|
|
b23a134de1 | ||
|
|
d68daf37b3 | ||
|
|
d44a503526 | ||
|
|
64ec20b0cd | ||
|
|
a025e7517b | ||
|
|
fa7b263033 | ||
|
|
0e6478e9bb | ||
|
|
4c85e1db08 | ||
|
|
4fdac61f25 | ||
|
|
e247d39ff4 | ||
|
|
1ab259806c | ||
|
|
65bdc27683 | ||
|
|
8a8bb3d77e | ||
|
|
4eb3df0d29 | ||
|
|
5f49f22fb7 | ||
|
|
8e2e51702b | ||
|
|
c3bc213bef | ||
|
|
1568e2814d | ||
|
|
6edcfe6a82 | ||
|
|
1a33421fe1 | ||
|
|
9f2fefb606 | ||
|
|
8d0f6d433f | ||
|
|
5ac9b15456 | ||
|
|
2ae960ccbd | ||
|
|
2ab76ffdb1 | ||
|
|
f3a8b74f77 | ||
|
|
25ac0a5f73 | ||
|
|
e106f26073 | ||
|
|
77e993115e | ||
|
|
9dd07e6ba0 | ||
|
|
22e2a9d2bf | ||
|
|
eb64550ea4 | ||
|
|
ac4f37b0a5 | ||
|
|
354837520c | ||
|
|
a7a3a142df | ||
|
|
63b976aae5 | ||
|
|
7879e50a84 | ||
|
|
16c17cd55c | ||
|
|
e9a056744d | ||
|
|
9aa5b62699 | ||
|
|
72c4d2a866 | ||
|
|
b540c7a2e7 | ||
|
|
9f84fe1bf0 | ||
|
|
a0270fc060 | ||
|
|
9c9e082f74 | ||
|
|
83d75c3fa0 | ||
|
|
dce19ba23f | ||
|
|
44d2a050e0 | ||
|
|
e0da233ad3 | ||
|
|
457a57d4bc | ||
|
|
27a5a65695 | ||
|
|
dfe6b9472a | ||
|
|
a2b0c41087 | ||
|
|
948d0b54b0 | ||
|
|
575b985fb8 | ||
|
|
3f8cc11cae | ||
|
|
9da3e5c9c9 | ||
|
|
78dd60c020 | ||
|
|
5bcda3f0f2 | ||
|
|
d6fc11d98a | ||
|
|
e23a0b6401 | ||
|
|
57b7fafb37 | ||
|
|
9f4a9bc9a2 | ||
|
|
a877826048 | ||
|
|
7876a9e765 | ||
|
|
31ab835636 | ||
|
|
7a3853ed06 | ||
|
|
7f80acda40 | ||
|
|
eb3d75865f | ||
|
|
43c5f4b46f | ||
|
|
6890fabd3c | ||
|
|
e44c8223ff | ||
|
|
dd7e62a93c | ||
|
|
20a62cdd6c | ||
|
|
3958cd059f | ||
|
|
53c9fd8dcb | ||
|
|
be05c26268 | ||
|
|
8e70f7c6b3 | ||
|
|
f7238017b5 | ||
|
|
064ec3f07b | ||
|
|
53b92f890a | ||
|
|
9b4a75a2f8 | ||
|
|
25fa2a9395 | ||
|
|
516bef3e06 | ||
|
|
74735ce7ed | ||
|
|
a7f2ec4561 | ||
|
|
5faec3d6ed | ||
|
|
9db2998134 | ||
|
|
326cdd5d93 | ||
|
|
d777ef9189 | ||
|
|
90439d8478 | ||
|
|
86bed95f8a | ||
|
|
29d4a0272c | ||
|
|
52524023bc | ||
|
|
69abb91cd8 | ||
|
|
22faac0a08 | ||
|
|
3817dceba6 | ||
|
|
9423ca5271 | ||
|
|
1dab6ce3ed | ||
|
|
143a4edd02 | ||
|
|
adec4ac54a | ||
|
|
db20bc1720 | ||
|
|
8d96945b15 | ||
|
|
a012be6a6d | ||
|
|
0c8b07b665 | ||
|
|
3434b35d86 | ||
|
|
ffd571769e | ||
|
|
c54323a1f8 | ||
|
|
b248dd0fc8 | ||
|
|
207c272479 | ||
|
|
f7c264af72 | ||
|
|
c55c619ff7 | ||
|
|
85c33a05a7 | ||
|
|
4d1d70ca76 | ||
|
|
04dcdb28d2 | ||
|
|
0a30b35651 | ||
|
|
59a413497e | ||
|
|
e24cdf321b | ||
|
|
ccf2f2da9b | ||
|
|
d4260119a8 | ||
|
|
e9e900374e | ||
|
|
7b65e1900d | ||
|
|
92b0d35986 | ||
|
|
43ea3d3f41 | ||
|
|
65433b951d | ||
|
|
6702cf7961 | ||
|
|
7b063335be | ||
|
|
b69cf1e950 | ||
|
|
1b64af0c9b | ||
|
|
cdc8077956 | ||
|
|
c9c414f1c0 | ||
|
|
d1419737b5 | ||
|
|
a230da72a6 | ||
|
|
a2271263d0 | ||
|
|
dc657f64cd | ||
|
|
c9a229357c | ||
|
|
fbb1f40d77 | ||
|
|
cded20b7b6 | ||
|
|
0e8ef25cee | ||
|
|
0be3f7f951 | ||
|
|
4fb9e17b43 | ||
|
|
d96f914fc1 | ||
|
|
1d4ec605a7 | ||
|
|
eb362e45da | ||
|
|
993b43f31c | ||
|
|
8711902173 | ||
|
|
2f43037e94 | ||
|
|
15c93f90c2 | ||
|
|
6d97cac430 | ||
|
|
ce4befff05 | ||
|
|
555a919ddd | ||
|
|
5847c66bb7 | ||
|
|
349def3a94 | ||
|
|
f4f16f6856 | ||
|
|
bdcafcea64 | ||
|
|
8ee4b70edd | ||
|
|
917cd408ec | ||
|
|
ef190fe835 | ||
|
|
26782f0ba7 | ||
|
|
9c277134e0 | ||
|
|
ad7971ffd1 | ||
|
|
049f316091 | ||
|
|
8ef5bef118 | ||
|
|
d85b33f31d | ||
|
|
6a3942478b | ||
|
|
6ec83383e2 | ||
|
|
b10aaddcd7 | ||
|
|
abea434d80 | ||
|
|
ee0e8ac41f | ||
|
|
64c2293952 | ||
|
|
c900d89367 | ||
|
|
656bd9c3e8 | ||
|
|
16915211df | ||
|
|
0343f30ff3 | ||
|
|
519fb35777 | ||
|
|
29ae90ea2b | ||
|
|
6d5ab64685 | ||
|
|
c37f617b06 | ||
|
|
08b3a23aa0 | ||
|
|
b816bd348e | ||
|
|
754bbcabc4 | ||
|
|
9583aa7936 | ||
|
|
6ffe0079d6 | ||
|
|
36dc0329f9 | ||
|
|
ce98b2dc7d | ||
|
|
d3fa62c6e9 | ||
|
|
d90e450524 | ||
|
|
0a02093753 | ||
|
|
c0a315bbec | ||
|
|
ce187b5865 | ||
|
|
9e813ee681 | ||
|
|
e0dadcef2d | ||
|
|
9b69df4fe2 | ||
|
|
f6d9f7194c | ||
|
|
a59d815420 | ||
|
|
3574dedce6 | ||
|
|
164839f6fb | ||
|
|
89e50ae71e | ||
|
|
917fc12442 | ||
|
|
0f715858f6 | ||
|
|
903f2bc165 | ||
|
|
50594d5ee2 | ||
|
|
0e484541ef | ||
|
|
3a6cdd1b67 | ||
|
|
9b42ea4cb1 | ||
|
|
7ddcb2ecb1 | ||
|
|
2d833c1592 | ||
|
|
59188b9ffd | ||
|
|
044185b9c7 | ||
|
|
541a9954be | ||
|
|
863cdb6dda | ||
|
|
2512a98a4d | ||
|
|
b27c2c0f07 | ||
|
|
b3ace934f1 | ||
|
|
6655d27071 | ||
|
|
6a79a8665f | ||
|
|
25d65b9397 | ||
|
|
2a62f344d7 | ||
|
|
6a2a44c8c2 | ||
|
|
fbcc465682 | ||
|
|
bc4211d1ed | ||
|
|
bf5ece7e7a | ||
|
|
16725b12a1 | ||
|
|
edecfc5a4c | ||
|
|
c85bf386f6 | ||
|
|
173d73ff3c | ||
|
|
f329c08189 | ||
|
|
a2915eebfa | ||
|
|
f5d79b0ece | ||
|
|
16523d1fdc | ||
|
|
d5d47cefc1 | ||
|
|
816b75fd0b | ||
|
|
fce77d4a7b | ||
|
|
70ff2bd9be | ||
|
|
f1886e2f6b | ||
|
|
c2826b34ce | ||
|
|
5704816c0b | ||
|
|
a6e15c2d3c | ||
|
|
7d0b388dfa | ||
|
|
95ddf7bfd9 | ||
|
|
d3b1cdd2e4 | ||
|
|
04599c8a68 | ||
|
|
91fea0ae34 | ||
|
|
280d940b0a | ||
|
|
094a26a86b | ||
|
|
f2557c4d40 | ||
|
|
c6b1a0acee | ||
|
|
56715faccc | ||
|
|
dac30eb9e4 | ||
|
|
b8dc6ccf8e | ||
|
|
aba751fdab | ||
|
|
215bbb6978 | ||
|
|
66ab409858 | ||
|
|
09c7594e49 | ||
|
|
0ba7886e77 | ||
|
|
e12ca36c15 | ||
|
|
02ad7fd44b | ||
|
|
764e512976 | ||
|
|
8cc794caff | ||
|
|
b6e496388d | ||
|
|
608220c2a7 | ||
|
|
3805b9c59e | ||
|
|
c15c254fa0 | ||
|
|
0a32d2eefa | ||
|
|
30412e1a6d |
40
mozilla/LEGAL
Normal file
40
mozilla/LEGAL
Normal file
@@ -0,0 +1,40 @@
|
||||
Please be apprised of the following Legal Notices:
|
||||
|
||||
A) The U.S. District Court for the Eastern District of Virginia has
|
||||
ruled that the Netscape Navigator code does not infringe Wang's U.S.
|
||||
Patent No. 4,751,669 ("the '669 Patent") because: 1) HTML is not
|
||||
Videotex as defined by the '669 patent; 2) web servers are not central
|
||||
suppliers; and 3) Navigator does not "connect," as defined by the '669
|
||||
Patent, to web servers on the Internet. Wang may appeal this decision to
|
||||
the Federal Circuit. Wang contended that its Patent disclosing a
|
||||
"Videotext" system, is infringed by the following functionality in the
|
||||
Netscape Navigator code: 1) the animated logo and status line indicators
|
||||
--See Claims 1,8 and 9; 2) the "File Save As" function --See Claims
|
||||
23-27; 3) Bookmarks and Rename Bookmarks in the Properties window --See
|
||||
Claims 20-22; 4) storing HTML, GIF, and JPEG files and adding filename
|
||||
extensions --See Claim 38
|
||||
|
||||
B) Intermind owns pending U.S. patent applications on communications
|
||||
systems which employ metadata ("channel objects") to define a control
|
||||
structure for information transfer. The Netscape code does not infringe
|
||||
as released; however, modifications which utilize channel objects as
|
||||
described by Intermind should be considered carefully. The following is
|
||||
a statement from Intermind: "Intermind's claims fundamentally involve
|
||||
the use of a control structure to automate communications. ...The
|
||||
essence of Intermind's top claim is that two devices sender and
|
||||
receiver have persistent storage, communicate over a network,
|
||||
and exchange a control structure including metadata which describes: 1)
|
||||
what information is to be updated, 2) when to update this information,
|
||||
and 3) how to transfer the updated information. In addition, at least
|
||||
the receiving device must be able to process the metadata in order to
|
||||
perform the update determination and transfer. Any digital
|
||||
communications system which incorporates all of these elements will be
|
||||
covered by Intermind's patents." See Intermind.com.
|
||||
|
||||
C) Stac, Inc., and its licensing agent Hi/fn, own several patents which
|
||||
disclose data compression methods implementing an LZS compression
|
||||
algorithm, including U.S. Patent Nos. 4,701,745 and 5,016, 009 ("the
|
||||
Stac Patents"). The Netscape Communicator code does not perform
|
||||
compression. If you modify the Netscape source code to perform
|
||||
compression, please take notice of the Stac Patents.
|
||||
|
||||
421
mozilla/LICENSE
Normal file
421
mozilla/LICENSE
Normal file
@@ -0,0 +1,421 @@
|
||||
NETSCAPE PUBLIC LICENSE
|
||||
Version 1.0
|
||||
|
||||
----------------
|
||||
|
||||
1. Definitions.
|
||||
|
||||
1.1. ``Contributor'' means each entity that creates or contributes to
|
||||
the creation of Modifications.
|
||||
|
||||
1.2. ``Contributor Version'' means the combination of the Original
|
||||
Code, prior Modifications used by a Contributor, and the Modifications
|
||||
made by that particular Contributor.
|
||||
|
||||
1.3. ``Covered Code'' means the Original Code or Modifications or the
|
||||
combination of the Original Code and Modifications, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.4. ``Electronic Distribution Mechanism'' means a mechanism generally
|
||||
accepted in the software development community for the electronic
|
||||
transfer of data.
|
||||
|
||||
1.5. ``Executable'' means Covered Code in any form other than Source
|
||||
Code.
|
||||
|
||||
1.6. ``Initial Developer'' means the individual or entity identified as
|
||||
the Initial Developer in the Source Code notice required by Exhibit A.
|
||||
|
||||
1.7. ``Larger Work'' means a work which combines Covered Code or
|
||||
portions thereof with code not governed by the terms of this License.
|
||||
|
||||
1.8. ``License'' means this document.
|
||||
|
||||
1.9. ``Modifications'' means any addition to or deletion from the
|
||||
substance or structure of either the Original Code or any previous
|
||||
Modifications. When Covered Code is released as a series of files, a
|
||||
Modification is:
|
||||
|
||||
A. Any addition to or deletion from the contents of a file
|
||||
containing Original Code or previous Modifications.
|
||||
|
||||
B. Any new file that contains any part of the Original Code or
|
||||
previous Modifications.
|
||||
|
||||
1.10. ``Original Code'' means Source Code of computer software code
|
||||
which is described in the Source Code notice required by Exhibit A as
|
||||
Original Code, and which, at the time of its release under this License
|
||||
is not already Covered Code governed by this License.
|
||||
|
||||
1.11. ``Source Code'' means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or a list of source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
1.12. ``You'' means an individual or a legal entity exercising rights
|
||||
under, and complying with all of the terms of, this License or a future
|
||||
version of this License issued under Section 6.1. For legal entities,
|
||||
``You'' includes any entity which controls, is controlled by, or is
|
||||
under common control with You. For purposes of this definition,
|
||||
``control'' means (a) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (b) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares or beneficial ownership of such entity.
|
||||
|
||||
2. Source Code License.
|
||||
|
||||
2.1. The Initial Developer Grant.
|
||||
The Initial Developer hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license, subject to third party intellectual property
|
||||
claims:
|
||||
|
||||
(a) to use, reproduce, modify, display, perform, sublicense and
|
||||
distribute the Original Code (or portions thereof) with or without
|
||||
Modifications, or as part of a Larger Work; and
|
||||
|
||||
(b) under patents now or hereafter owned or controlled by Initial
|
||||
Developer, to make, have made, use and sell (``Utilize'') the
|
||||
Original Code (or portions thereof), but solely to the extent that
|
||||
any such patent is reasonably necessary to enable You to Utilize
|
||||
the Original Code (or portions thereof) and not to any greater
|
||||
extent that may be necessary to Utilize further Modifications or
|
||||
combinations.
|
||||
|
||||
2.2. Contributor Grant.
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license, subject to third party intellectual property
|
||||
claims:
|
||||
|
||||
(a) to use, reproduce, modify, display, perform, sublicense and
|
||||
distribute the Modifications created by such Contributor (or
|
||||
portions thereof) either on an unmodified basis, with other
|
||||
Modifications, as Covered Code or as part of a Larger Work; and
|
||||
|
||||
(b) under patents now or hereafter owned or controlled by
|
||||
Contributor, to Utilize the Contributor Version (or portions
|
||||
thereof), but solely to the extent that any such patent is
|
||||
reasonably necessary to enable You to Utilize the Contributor
|
||||
Version (or portions thereof), and not to any greater extent that
|
||||
may be necessary to Utilize further Modifications or combinations.
|
||||
|
||||
3. Distribution Obligations.
|
||||
|
||||
3.1. Application of License.
|
||||
The Modifications which You create or to which You contribute are
|
||||
governed by the terms of this License, including without limitation
|
||||
Section 2.2. The Source Code version of Covered Code may be distributed
|
||||
only under the terms of this License or a future version of this
|
||||
License released under Section 6.1, and You must include a copy of this
|
||||
License with every copy of the Source Code You distribute. You may not
|
||||
offer or impose any terms on any Source Code version that alters or
|
||||
restricts the applicable version of this License or the recipients'
|
||||
rights hereunder. However, You may include an additional document
|
||||
offering the additional rights described in Section 3.5.
|
||||
|
||||
3.2. Availability of Source Code.
|
||||
Any Modification which You create or to which You contribute must be
|
||||
made available in Source Code form under the terms of this License
|
||||
either on the same media as an Executable version or via an accepted
|
||||
Electronic Distribution Mechanism to anyone to whom you made an
|
||||
Executable version available; and if made available via Electronic
|
||||
Distribution Mechanism, must remain available for at least twelve (12)
|
||||
months after the date it initially became available, or at least six
|
||||
(6) months after a subsequent version of that particular Modification
|
||||
has been made available to such recipients. You are responsible for
|
||||
ensuring that the Source Code version remains available even if the
|
||||
Electronic Distribution Mechanism is maintained by a third party.
|
||||
|
||||
3.3. Description of Modifications.
|
||||
You must cause all Covered Code to which you contribute to contain a
|
||||
file documenting the changes You made to create that Covered Code and
|
||||
the date of any change. You must include a prominent statement that the
|
||||
Modification is derived, directly or indirectly, from Original Code
|
||||
provided by the Initial Developer and including the name of the Initial
|
||||
Developer in (a) the Source Code, and (b) in any notice in an
|
||||
Executable version or related documentation in which You describe the
|
||||
origin or ownership of the Covered Code.
|
||||
|
||||
3.4. Intellectual Property Matters
|
||||
|
||||
(a) Third Party Claims.
|
||||
If You have knowledge that a party claims an intellectual property
|
||||
right in particular functionality or code (or its utilization
|
||||
under this License), you must include a text file with the source
|
||||
code distribution titled ``LEGAL'' which describes the claim and
|
||||
the party making the claim in sufficient detail that a recipient
|
||||
will know whom to contact. If you obtain such knowledge after You
|
||||
make Your Modification available as described in Section 3.2, You
|
||||
shall promptly modify the LEGAL file in all copies You make
|
||||
available thereafter and shall take other steps (such as notifying
|
||||
appropriate mailing lists or newsgroups) reasonably calculated to
|
||||
inform those who received the Covered Code that new knowledge has
|
||||
been obtained.
|
||||
|
||||
(b) Contributor APIs.
|
||||
If Your Modification is an application programming interface and
|
||||
You own or control patents which are reasonably necessary to
|
||||
implement that API, you must also include this information in the
|
||||
LEGAL file.
|
||||
|
||||
3.5. Required Notices.
|
||||
You must duplicate the notice in Exhibit A in each file of the Source
|
||||
Code, and this License in any documentation for the Source Code, where
|
||||
You describe recipients' rights relating to Covered Code. If You
|
||||
created one or more Modification(s), You may add your name as a
|
||||
Contributor to the notice described in Exhibit A. If it is not possible
|
||||
to put such notice in a particular Source Code file due to its
|
||||
structure, then you must include such notice in a location (such as a
|
||||
relevant directory file) where a user would be likely to look for such
|
||||
a notice. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations to one or more recipients
|
||||
of Covered Code. However, You may do so only on Your own behalf, and
|
||||
not on behalf of the Initial Developer or any Contributor. You must
|
||||
make it absolutely clear than any such warranty, support, indemnity or
|
||||
liability obligation is offered by You alone, and You hereby agree to
|
||||
indemnify the Initial Developer and every Contributor for any liability
|
||||
incurred by the Initial Developer or such Contributor as a result of
|
||||
warranty, support, indemnity or liability terms You offer.
|
||||
|
||||
3.6. Distribution of Executable Versions.
|
||||
You may distribute Covered Code in Executable form only if the
|
||||
requirements of Section 3.1-3.5 have been met for that Covered Code,
|
||||
and if You include a notice stating that the Source Code version of the
|
||||
Covered Code is available under the terms of this License, including a
|
||||
description of how and where You have fulfilled the obligations of
|
||||
Section 3.2. The notice must be conspicuously included in any notice in
|
||||
an Executable version, related documentation or collateral in which You
|
||||
describe recipients' rights relating to the Covered Code. You may
|
||||
distribute the Executable version of Covered Code under a license of
|
||||
Your choice, which may contain terms different from this License,
|
||||
provided that You are in compliance with the terms of this License and
|
||||
that the license for the Executable version does not attempt to limit
|
||||
or alter the recipient's rights in the Source Code version from the
|
||||
rights set forth in this License. If You distribute the Executable
|
||||
version under a different license You must make it absolutely clear
|
||||
that any terms which differ from this License are offered by You alone,
|
||||
not by the Initial Developer or any Contributor. You hereby agree to
|
||||
indemnify the Initial Developer and every Contributor for any liability
|
||||
incurred by the Initial Developer or such Contributor as a result of
|
||||
any such terms You offer.
|
||||
|
||||
3.7. Larger Works.
|
||||
You may create a Larger Work by combining Covered Code with other code
|
||||
not governed by the terms of this License and distribute the Larger
|
||||
Work as a single product. In such a case, You must make sure the
|
||||
requirements of this License are fulfilled for the Covered Code.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation.
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Code due to statute
|
||||
or regulation then You must: (a) comply with the terms of this License
|
||||
to the maximum extent possible; and (b) describe the limitations and
|
||||
the code they affect. Such description must be included in the LEGAL
|
||||
file described in Section 3.4 and must be included with all
|
||||
distributions of the Source Code. Except to the extent prohibited by
|
||||
statute or regulation, such description must be sufficiently detailed
|
||||
for a recipient of ordinary skill to be able to understand it.
|
||||
|
||||
5. Application of this License.
|
||||
|
||||
This License applies to code to which the Initial Developer has
|
||||
attached the notice in Exhibit A, and to related Covered Code.
|
||||
|
||||
6. Versions of the License.
|
||||
|
||||
6.1. New Versions.
|
||||
Netscape Communications Corporation (``Netscape'') may publish revised
|
||||
and/or new versions of the License from time to time. Each version will
|
||||
be given a distinguishing version number.
|
||||
|
||||
6.2. Effect of New Versions.
|
||||
Once Covered Code has been published under a particular version of the
|
||||
License, You may always continue to use it under the terms of that
|
||||
version. You may also choose to use such Covered Code under the terms
|
||||
of any subsequent version of the License published by Netscape. No one
|
||||
other than Netscape has the right to modify the terms applicable to
|
||||
Covered Code created under this License.
|
||||
|
||||
6.3. Derivative Works.
|
||||
If you create or use a modified version of this License (which you may
|
||||
only do in order to apply it to code which is not already Covered Code
|
||||
governed by this License), you must (a) rename Your license so that the
|
||||
phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or
|
||||
any confusingly similar phrase do not appear anywhere in your license
|
||||
and (b) otherwise make it clear that your version of the license
|
||||
contains terms which differ from the Mozilla Public License and
|
||||
Netscape Public License. (Filling in the name of the Initial Developer,
|
||||
Original Code or Contributor in the notice described in Exhibit A shall
|
||||
not of themselves be deemed to be modifications of this License.)
|
||||
|
||||
7. DISCLAIMER OF WARRANTY.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS,
|
||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
|
||||
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
|
||||
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
|
||||
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
|
||||
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
|
||||
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
|
||||
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
|
||||
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||
|
||||
8. TERMINATION.
|
||||
|
||||
This License and the rights granted hereunder will terminate
|
||||
automatically if You fail to comply with terms herein and fail to cure
|
||||
such breach within 30 days of becoming aware of the breach. All
|
||||
sublicenses to the Covered Code which are properly granted shall
|
||||
survive any termination of this License. Provisions which, by their
|
||||
nature, must remain in effect beyond the termination of this License
|
||||
shall survive.
|
||||
|
||||
9. LIMITATION OF LIABILITY.
|
||||
|
||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
||||
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL
|
||||
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
|
||||
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER
|
||||
PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
||||
OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
|
||||
GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND
|
||||
ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE
|
||||
BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
|
||||
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
|
||||
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
|
||||
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT
|
||||
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
10. U.S. GOVERNMENT END USERS.
|
||||
|
||||
The Covered Code is a ``commercial item,'' as that term is defined in
|
||||
48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer
|
||||
software'' and ``commercial computer software documentation,'' as such
|
||||
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
|
||||
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
|
||||
all U.S. Government End Users acquire Covered Code with only those
|
||||
rights set forth herein.
|
||||
|
||||
11. MISCELLANEOUS.
|
||||
|
||||
This License represents the complete agreement concerning subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. This License shall be governed by
|
||||
California law provisions (except to the extent applicable law, if any,
|
||||
provides otherwise), excluding its conflict-of-law provisions. With
|
||||
respect to disputes in which at least one party is a citizen of, or an
|
||||
entity chartered or registered to do business in, the United States of
|
||||
America: (a) unless otherwise agreed in writing, all disputes relating
|
||||
to this License (excepting any dispute relating to intellectual
|
||||
property rights) shall be subject to final and binding arbitration,
|
||||
with the losing party paying all costs of arbitration; (b) any
|
||||
arbitration relating to this Agreement shall be held in Santa Clara
|
||||
County, California, under the auspices of JAMS/EndDispute; and (c) any
|
||||
litigation relating to this Agreement shall be subject to the
|
||||
jurisdiction of the Federal Courts of the Northern District of
|
||||
California, with venue lying in Santa Clara County, California, with
|
||||
the losing party responsible for costs, including without limitation,
|
||||
court costs and reasonable attorneys fees and expenses. The application
|
||||
of the United Nations Convention on Contracts for the International
|
||||
Sale of Goods is expressly excluded. Any law or regulation which
|
||||
provides that the language of a contract shall be construed against the
|
||||
drafter shall not apply to this License.
|
||||
|
||||
12. RESPONSIBILITY FOR CLAIMS.
|
||||
|
||||
Except in cases where another Contributor has failed to comply with
|
||||
Section 3.4, You are responsible for damages arising, directly or
|
||||
indirectly, out of Your utilization of rights under this License, based
|
||||
on the number of copies of Covered Code you made available, the
|
||||
revenues you received from utilizing such rights, and other relevant
|
||||
factors. You agree to work with affected parties to distribute
|
||||
responsibility on an equitable basis.
|
||||
|
||||
AMENDMENTS
|
||||
Additional Terms applicable to the Netscape Public License.
|
||||
|
||||
I. Effect.
|
||||
These additional terms described in this Netscape Public License --
|
||||
Amendments shall apply to the Mozilla Communicator client code and to
|
||||
all Covered Code under this License.
|
||||
|
||||
II. ``Netscape's Branded Code'' means Covered Code that Netscape
|
||||
distributes and/or permits others to distribute under one or more
|
||||
trademark(s) which are controlled by Netscape but which are not
|
||||
licensed for use under this License.
|
||||
|
||||
III. Netscape and logo.
|
||||
This License does not grant any rights to use the trademark
|
||||
``Netscape'', the ``Netscape N and horizon'' logo or the Netscape
|
||||
lighthouse logo, even if such marks are included in the Original Code.
|
||||
|
||||
IV. Inability to Comply Due to Contractual Obligation.
|
||||
Prior to licensing the Original Code under this License, Netscape has
|
||||
licensed third party code for use in Netscape's Branded Code. To the
|
||||
extent that Netscape is limited contractually from making such third
|
||||
party code available under this License, Netscape may choose to
|
||||
reintegrate such code into Covered Code without being required to
|
||||
distribute such code in Source Code form, even if such code would
|
||||
otherwise be considered ``Modifications'' under this License.
|
||||
|
||||
V. Use of Modifications and Covered Code by Initial Developer.
|
||||
|
||||
V.1. In General.
|
||||
The obligations of Section 3 apply to Netscape, except to the
|
||||
extent specified in this Amendment, Section V.2 and V.3.
|
||||
|
||||
V.2. Other Products.
|
||||
Netscape may include Covered Code in products other than the
|
||||
Netscape's Branded Code which are released by Netscape during the
|
||||
two (2) years following the release date of the Original Code,
|
||||
without such additional products becoming subject to the terms of
|
||||
this License, and may license such additional products on
|
||||
different terms from those contained in this License.
|
||||
|
||||
V.3. Alternative Licensing.
|
||||
Netscape may license the Source Code of Netscape's Branded Code,
|
||||
including Modifications incorporated therein, without such
|
||||
additional products becoming subject to the terms of this License,
|
||||
and may license such additional products on different terms from
|
||||
those contained in this License.
|
||||
|
||||
VI. Arbitration and Litigation.
|
||||
Notwithstanding the limitations of Section 11 above, the provisions
|
||||
regarding arbitration and litigation in Section 11(a), (b) and (c) of
|
||||
the License shall apply to all disputes relating to this License.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
``The contents of this file are subject to the Netscape Public License
|
||||
Version 1.0 (the "License"); you may not use this file except in
|
||||
compliance with the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/NPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS"
|
||||
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
License for the specific language governing rights and limitations
|
||||
under the License.
|
||||
|
||||
The Original Code is Mozilla Communicator client code, released March
|
||||
31, 1998.
|
||||
|
||||
The Initial Developer of the Original Code is Netscape Communications
|
||||
Corporation. Portions created by Netscape are Copyright (C) 1998
|
||||
Netscape Communications Corporation. All Rights Reserved.
|
||||
|
||||
Contributor(s): ______________________________________.''
|
||||
|
||||
[NOTE: The text of this Exhibit A may differ slightly from the text of
|
||||
the notices in the Source Code files of the Original Code. This is due
|
||||
to time constraints encountered in simultaneously finalizing the
|
||||
License and in preparing the Original Code for release. You should use
|
||||
the text of this Exhibit A rather than the text found in the Original
|
||||
Code Source Code for Your Modifications.]
|
||||
94
mozilla/Makefile.in
Normal file
94
mozilla/Makefile.in
Normal file
@@ -0,0 +1,94 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
DEPTH = .
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
# The list of directories that need to be built to build the standalone
|
||||
# nglayout test program. The order is important.
|
||||
DIRS = \
|
||||
config \
|
||||
dbm \
|
||||
nsprpub \
|
||||
$(NULL)
|
||||
|
||||
ifndef MOZ_NATIVE_JPEG
|
||||
DIRS += \
|
||||
jpeg \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
DIRS += \
|
||||
modules/libreg \
|
||||
xpcom \
|
||||
$(NULL)
|
||||
|
||||
ifndef MOZ_NATIVE_ZLIB
|
||||
DIRS += \
|
||||
modules/zlib \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
DIRS += \
|
||||
modules/libutil \
|
||||
sun-java \
|
||||
nav-java \
|
||||
js \
|
||||
modules/security/freenav \
|
||||
modules/libpref \
|
||||
modules/libimg \
|
||||
modules/oji \
|
||||
modules/plugin \
|
||||
base \
|
||||
caps \
|
||||
lib/xp \
|
||||
lib/libpwcac \
|
||||
network \
|
||||
lib/liblayer/include \
|
||||
htmlparser \
|
||||
gfx \
|
||||
dom \
|
||||
view \
|
||||
widget \
|
||||
layout \
|
||||
rdf \
|
||||
webshell \
|
||||
editor
|
||||
|
||||
|
||||
DIRS += xpfe
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
real_all: all
|
||||
|
||||
real_export: export
|
||||
|
||||
real_libs: libs
|
||||
|
||||
real_install: install
|
||||
|
||||
real_clobber: clobber
|
||||
|
||||
real_depend: depend
|
||||
|
||||
7
mozilla/aclocal.m4
vendored
Normal file
7
mozilla/aclocal.m4
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
dnl
|
||||
dnl Local autoconf macros used with mozilla
|
||||
dnl The contents of this file are under the Public Domain.
|
||||
dnl
|
||||
|
||||
builtin(include, gtk.m4)dnl
|
||||
|
||||
31
mozilla/base/Makefile.in
Normal file
31
mozilla/base/Makefile.in
Normal file
@@ -0,0 +1,31 @@
|
||||
#!gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH = ..
|
||||
topsrcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
srcdir = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = public src
|
||||
|
||||
DIRS += tests
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
BIN
mozilla/base/macbuild/TestFiles.mcp
Normal file
BIN
mozilla/base/macbuild/TestFiles.mcp
Normal file
Binary file not shown.
BIN
mozilla/base/macbuild/base.mcp
Normal file
BIN
mozilla/base/macbuild/base.mcp
Normal file
Binary file not shown.
17
mozilla/base/macbuild/base.toc
Normal file
17
mozilla/base/macbuild/base.toc
Normal file
@@ -0,0 +1,17 @@
|
||||
# target: baseDebug.shlb
|
||||
mozilla/base/src/mac/nsTimerMac.cpp
|
||||
mozilla/base/src/nsArena.cpp
|
||||
mozilla/base/src/nsAtomTable.cpp
|
||||
mozilla/base/src/nsBTree.cpp
|
||||
mozilla/base/src/nsByteBuffer.cpp
|
||||
mozilla/base/src/nsCRT.cpp
|
||||
mozilla/base/src/nsDeque.cpp
|
||||
mozilla/base/src/nsEscape.cpp
|
||||
mozilla/base/src/nsFileSpec.cpp
|
||||
mozilla/base/src/nsFileStream.cpp
|
||||
mozilla/base/src/nsRBTree.cpp
|
||||
mozilla/base/src/nsSizeOfHandler.cpp
|
||||
mozilla/base/src/nsString.cpp
|
||||
mozilla/base/src/nsUnicharBuffer.cpp
|
||||
mozilla/base/src/nsUnicharInputStream.cpp
|
||||
mozilla/base/src/nsVoidArray.cpp
|
||||
19
mozilla/base/macbuild/files.prefix
Normal file
19
mozilla/base/macbuild/files.prefix
Normal file
@@ -0,0 +1,19 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "MacPrefix_debug.h"
|
||||
19
mozilla/base/macbuild/filesDebug.prefix
Normal file
19
mozilla/base/macbuild/filesDebug.prefix
Normal file
@@ -0,0 +1,19 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "MacPrefix_debug.h"
|
||||
23
mozilla/base/makefile.win
Normal file
23
mozilla/base/makefile.win
Normal file
@@ -0,0 +1,23 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=..
|
||||
IGNORE_MANIFEST=1
|
||||
|
||||
DIRS=public src tests
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
7
mozilla/base/public/MANIFEST
Normal file
7
mozilla/base/public/MANIFEST
Normal file
@@ -0,0 +1,7 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist:base directory
|
||||
#
|
||||
|
||||
nsISizeOfHandler.h
|
||||
nsFileStream.h
|
||||
nsFileSpec.h
|
||||
40
mozilla/base/public/Makefile.in
Normal file
40
mozilla/base/public/Makefile.in
Normal file
@@ -0,0 +1,40 @@
|
||||
#!gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_BASE
|
||||
|
||||
EXPORTS = \
|
||||
nsISizeOfHandler.h \
|
||||
nsEscape.h \
|
||||
nsFileSpec.h \
|
||||
nsFileStream.h \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
|
||||
|
||||
MODULE=base
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
32
mozilla/base/public/makefile.win
Normal file
32
mozilla/base/public/makefile.win
Normal file
@@ -0,0 +1,32 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=..\..
|
||||
IGNORE_MANIFEST=1
|
||||
|
||||
DEFINES = -D_IMPL_NS_BASE
|
||||
|
||||
EXPORTS = \
|
||||
nsISizeOfHandler.h \
|
||||
nsFileSpec.h \
|
||||
nsFileStream.h \
|
||||
$(NULL)
|
||||
|
||||
MODULE = raptor
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
60
mozilla/base/public/nsEscape.h
Normal file
60
mozilla/base/public/nsEscape.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/* First checked in on 98/12/03 by John R. McMullen, derived from net.h/mkparse.c. */
|
||||
|
||||
#ifndef _ESCAPE_H_
|
||||
#define _ESCAPE_H_
|
||||
|
||||
#include "prtypes.h"
|
||||
|
||||
/* valid mask values for NET_Escape() and NET_EscapedSize(). */
|
||||
typedef enum {
|
||||
url_XAlphas = (1<<0)
|
||||
, url_XPAlphas = (1<<1)
|
||||
, url_Path = (1<<2)
|
||||
} nsEscapeMask;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
char * nsEscape(const char * str, nsEscapeMask mask);
|
||||
/* Caller must use delete [] on the result */
|
||||
char * nsUnescape(char * str);
|
||||
/* decode % escaped hex codes into character values,
|
||||
* modifies the parameter, returns the same buffer
|
||||
*/
|
||||
|
||||
char * nsEscapeCount(const char * str, PRInt32 len, nsEscapeMask mask, PRInt32* out_len);
|
||||
/* Like nsEscape, but if out_len is non-null, return result string length
|
||||
* in *out_len, and uses len instead of NUL termination.
|
||||
* Caller must use delete [] on the result.
|
||||
*/
|
||||
PRInt32 nsUnescapeCount (char * str);
|
||||
/* decode % escaped hex codes into character values,
|
||||
* modifies the parameter buffer, returns the length of the result
|
||||
* (result may contain \0's).
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif // _ESCAPE_H_
|
||||
303
mozilla/base/public/nsFileSpec.h
Normal file
303
mozilla/base/public/nsFileSpec.h
Normal file
@@ -0,0 +1,303 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// First checked in on 98/11/20 by John R. McMullen in the wrong directory.
|
||||
// Checked in again 98/12/04.
|
||||
// Polished version 98/12/08.
|
||||
|
||||
//========================================================================================
|
||||
//
|
||||
// Classes defined:
|
||||
//
|
||||
// nsFilePath, nsFileURL, nsNativeFileSpec.
|
||||
//
|
||||
// This suite provides the following services:
|
||||
//
|
||||
// 1. Encapsulates all platform-specific file details, so that files can be
|
||||
// described correctly without any platform #ifdefs
|
||||
//
|
||||
// 2. Type safety. This will fix the problems that used to occur because people
|
||||
// confused file paths. They used to use const char*, which could mean three
|
||||
// or four different things. Bugs were introduced as people coded, right up
|
||||
// to the moment Communicator 4.5 shipped.
|
||||
//
|
||||
// 3. Used in conjunction with nsFileStream.h (q.v.), this supports all the power
|
||||
// and readability of the ansi stream syntax.
|
||||
//
|
||||
// Basic example:
|
||||
//
|
||||
// nsFilePath myPath("/Development/iotest.txt");
|
||||
//
|
||||
// nsOutputFileStream testStream(myPath);
|
||||
// testStream << "Hello World" << nsEndl;
|
||||
//
|
||||
// 4. Handy methods for manipulating file specifiers safely, e.g. MakeUnique(),
|
||||
// SetLeafName(), Exists().
|
||||
//
|
||||
// 5. Easy cross-conversion.
|
||||
//
|
||||
// Examples:
|
||||
//
|
||||
// Initialize a URL from a string without suffix
|
||||
//
|
||||
// nsFileURL fileURL("file:///Development/MPW/MPW%20Shell");
|
||||
//
|
||||
// Initialize a Unix path from a URL
|
||||
//
|
||||
// nsFilePath filePath(fileURL);
|
||||
//
|
||||
// Initialize a native file spec from a URL
|
||||
//
|
||||
// nsNativeFileSpec fileSpec(fileURL);
|
||||
//
|
||||
// Make the spec unique (this one has no suffix).
|
||||
//
|
||||
// fileSpec.MakeUnique();
|
||||
//
|
||||
// Assign the spec to a URL
|
||||
//
|
||||
// fileURL = fileSpec;
|
||||
//
|
||||
// Assign a unix path using a string with a suffix.
|
||||
//
|
||||
// filePath = "/Development/MPW/SysErrs.err";
|
||||
//
|
||||
// Assign to a file spec using a unix path.
|
||||
//
|
||||
// fileSpec = filePath;
|
||||
//
|
||||
// Make this unique (this one has a suffix).
|
||||
//
|
||||
// fileSpec.MakeUnique();
|
||||
//
|
||||
// 6. Fixes a bug that have been there for a long time, and
|
||||
// is inevitable if you use NSPR alone, where files are described as paths.
|
||||
//
|
||||
// The problem affects platforms (Macintosh) in which a path does not fully
|
||||
// specify a file, because two volumes can have the same name. This
|
||||
// is solved by holding a "private" native file spec inside the
|
||||
// nsFilePath and nsFileURL classes, which is used when appropriate.
|
||||
//
|
||||
// Not yet done:
|
||||
//
|
||||
// Equality operators... much more.
|
||||
//
|
||||
//========================================================================================
|
||||
|
||||
#ifndef _FILESPEC_H_
|
||||
#define _FILESPEC_H_
|
||||
|
||||
#include "nscore.h"
|
||||
|
||||
//========================================================================================
|
||||
// Compiler-specific macros, as needed
|
||||
//========================================================================================
|
||||
#if !defined(NS_USING_NAMESPACE) && (defined(__MWERKS__) || defined(XP_PC))
|
||||
#define NS_USING_NAMESPACE
|
||||
#endif
|
||||
|
||||
#ifdef NS_USING_NAMESPACE
|
||||
|
||||
#define NS_NAMESPACE_PROTOTYPE
|
||||
#define NS_NAMESPACE namespace
|
||||
#define NS_NAMESPACE_END
|
||||
#else
|
||||
|
||||
#define NS_NAMESPACE_PROTOTYPE static
|
||||
#define NS_NAMESPACE struct
|
||||
#define NS_NAMESPACE_END ;
|
||||
|
||||
#endif
|
||||
//=========================== End Compiler-specific macros ===============================
|
||||
|
||||
#ifdef XP_MAC
|
||||
#include <Files.h>
|
||||
#endif
|
||||
|
||||
//========================================================================================
|
||||
// Here are the allowable ways to describe a file.
|
||||
//========================================================================================
|
||||
|
||||
class nsFilePath; // This can be passed to NSPR file I/O routines.
|
||||
class nsFileURL;
|
||||
class nsNativeFileSpec;
|
||||
|
||||
#define kFileURLPrefix "file://"
|
||||
#define kFileURLPrefixLength (7)
|
||||
|
||||
class nsOutputFileStream;
|
||||
|
||||
//========================================================================================
|
||||
class NS_BASE nsNativeFileSpec
|
||||
// This is whatever each platform really prefers to describe files as. Declared first
|
||||
// because the other two types have an embeded nsNativeFileSpec object.
|
||||
//========================================================================================
|
||||
{
|
||||
public:
|
||||
nsNativeFileSpec();
|
||||
explicit nsNativeFileSpec(const char* inString);
|
||||
explicit nsNativeFileSpec(const nsFilePath& inPath);
|
||||
explicit nsNativeFileSpec(const nsFileURL& inURL);
|
||||
nsNativeFileSpec(const nsNativeFileSpec& inPath);
|
||||
virtual ~nsNativeFileSpec();
|
||||
|
||||
void operator = (const char* inPath);
|
||||
void operator = (const nsFilePath& inPath);
|
||||
void operator = (const nsFileURL& inURL);
|
||||
void operator = (const nsNativeFileSpec& inOther);
|
||||
|
||||
#ifdef XP_MAC
|
||||
// For Macintosh people, this is meant to be useful in its own right as a C++ version
|
||||
// of the FSSpec struct.
|
||||
nsNativeFileSpec(
|
||||
short vRefNum,
|
||||
long parID,
|
||||
ConstStr255Param name);
|
||||
nsNativeFileSpec(const FSSpec& inSpec)
|
||||
: mSpec(inSpec), mError(noErr) {}
|
||||
|
||||
operator FSSpec* () { return &mSpec; }
|
||||
operator const FSSpec* const () { return &mSpec; }
|
||||
operator FSSpec& () { return mSpec; }
|
||||
operator const FSSpec& () const { return mSpec; }
|
||||
OSErr Error() const { return mError; }
|
||||
void MakeAliasSafe();
|
||||
// Called for the spec of an alias. Copies the alias to
|
||||
// a secret temp directory and modifies the spec to point
|
||||
// to it. Sets mError.
|
||||
void ResolveAlias(bool& wasAliased);
|
||||
// Called for the spec of an alias. Modifies the spec to
|
||||
// point to the original. Sets mError.
|
||||
void MakeUnique(ConstStr255Param inSuggestedLeafName);
|
||||
StringPtr GetLeafPName() { return mSpec.name; }
|
||||
ConstStr255Param GetLeafPName() const { return mSpec.name; }
|
||||
#endif // end of Macintosh utility methods.
|
||||
|
||||
#ifdef XP_MAC
|
||||
bool Valid() const { return mError == noErr; }
|
||||
#else
|
||||
bool Valid() const { return true; } // Fixme.
|
||||
#endif // XP_MAC
|
||||
|
||||
friend NS_BASE nsOutputFileStream& operator << (nsOutputFileStream& s, const nsNativeFileSpec& spec);
|
||||
|
||||
char* GetLeafName() const; // Allocated. Use delete [].
|
||||
void SetLeafName(const char* inLeafName);
|
||||
bool Exists() const;
|
||||
void MakeUnique();
|
||||
void MakeUnique(const char* inSuggestedLeafName);
|
||||
|
||||
private:
|
||||
friend class nsFilePath;
|
||||
#ifdef XP_MAC
|
||||
FSSpec mSpec;
|
||||
OSErr mError;
|
||||
#else
|
||||
char* mPath;
|
||||
#endif
|
||||
}; // class nsNativeFileSpec
|
||||
|
||||
//========================================================================================
|
||||
class NS_BASE nsFileURL
|
||||
// This is an escaped string that looks like "file:///foo/bar/mumble%20fish". Since URLs
|
||||
// are the standard way of doing things in mozilla, this allows a string constructor,
|
||||
// which just stashes the string with no conversion.
|
||||
//========================================================================================
|
||||
{
|
||||
public:
|
||||
nsFileURL(const nsFileURL& inURL);
|
||||
explicit nsFileURL(const char* inString);
|
||||
explicit nsFileURL(const nsFilePath& inPath);
|
||||
explicit nsFileURL(const nsNativeFileSpec& inPath);
|
||||
virtual ~nsFileURL();
|
||||
|
||||
// nsString GetString() const { return mPath; }
|
||||
// may be needed for implementation reasons,
|
||||
// but should not provide a conversion constructor.
|
||||
|
||||
void operator = (const nsFileURL& inURL);
|
||||
void operator = (const char* inString);
|
||||
void operator = (const nsFilePath& inOther);
|
||||
void operator = (const nsNativeFileSpec& inOther);
|
||||
|
||||
friend NS_BASE nsOutputFileStream& operator << (
|
||||
nsOutputFileStream& s, const nsFileURL& spec);
|
||||
|
||||
#ifdef XP_MAC
|
||||
// Accessor to allow quick assignment to a mNativeFileSpec
|
||||
const nsNativeFileSpec& GetNativeSpec() const { return mNativeFileSpec; }
|
||||
#endif
|
||||
private:
|
||||
// Should not be defined (only nsFilePath is to be treated as strings.
|
||||
operator char* ();
|
||||
operator const char* const ();
|
||||
private:
|
||||
friend class nsFilePath; // to allow construction of nsFilePath
|
||||
char* mURL;
|
||||
#ifdef XP_MAC
|
||||
// Since the path on the macintosh does not uniquely specify a file (volumes
|
||||
// can have the same name), stash the secret nsNativeFileSpec, too.
|
||||
nsNativeFileSpec mNativeFileSpec;
|
||||
#endif
|
||||
}; // class nsFileURL
|
||||
|
||||
//========================================================================================
|
||||
class NS_BASE nsFilePath
|
||||
// This is a string that looks like "/foo/bar/mumble%20fish". Same as nsFileURL, but
|
||||
// without the "file:// prefix".
|
||||
//========================================================================================
|
||||
{
|
||||
public:
|
||||
nsFilePath(const nsFilePath& inPath);
|
||||
explicit nsFilePath(const char* inString);
|
||||
explicit nsFilePath(const nsFileURL& inURL);
|
||||
explicit nsFilePath(const nsNativeFileSpec& inPath);
|
||||
virtual ~nsFilePath();
|
||||
|
||||
|
||||
operator const char* () const { return mPath; }
|
||||
// This is the only automatic conversion to const char*
|
||||
// that is provided, and it allows the
|
||||
// path to be "passed" to NSPR file routines.
|
||||
operator char* () { return mPath; }
|
||||
// This is the only automatic conversion to string
|
||||
// that is provided, because a naked string should
|
||||
// only mean a standard file path.
|
||||
|
||||
void operator = (const nsFilePath& inPath);
|
||||
void operator = (const char* inString);
|
||||
void operator = (const nsFileURL& inURL);
|
||||
void operator = (const nsNativeFileSpec& inOther);
|
||||
|
||||
#ifdef XP_MAC
|
||||
public:
|
||||
// Accessor to allow quick assignment to a mNativeFileSpec
|
||||
const nsNativeFileSpec& GetNativeSpec() const { return mNativeFileSpec; }
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
char* mPath;
|
||||
#ifdef XP_MAC
|
||||
// Since the path on the macintosh does not uniquely specify a file (volumes
|
||||
// can have the same name), stash the secret nsNativeFileSpec, too.
|
||||
nsNativeFileSpec mNativeFileSpec;
|
||||
#endif
|
||||
}; // class nsFilePath
|
||||
|
||||
#endif // _FILESPEC_H_
|
||||
266
mozilla/base/public/nsFileStream.h
Normal file
266
mozilla/base/public/nsFileStream.h
Normal file
@@ -0,0 +1,266 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0(the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright(C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// First checked in on 98/11/20 by John R. McMullen in the wrong directory.
|
||||
// Checked in again 98/12/04.
|
||||
// Polished version 98/12/08.
|
||||
|
||||
//========================================================================================
|
||||
//
|
||||
// Classes defined:
|
||||
//
|
||||
// single-byte char:
|
||||
//
|
||||
// nsInputFileStream, nsOutputFileStream
|
||||
//
|
||||
// This suite provide the following services:
|
||||
//
|
||||
// 1. Encapsulates all platform-specific file details, so that file i/o
|
||||
// can be done correctly without any platform #ifdefs
|
||||
//
|
||||
// 2. Uses NSPR file services (NOT ansi file I/O), in order to get best
|
||||
// native performance. This performance difference is especially large on
|
||||
// macintosh.
|
||||
//
|
||||
// 3. Allows all the power of the ansi stream syntax.
|
||||
//
|
||||
// Basic example:
|
||||
//
|
||||
// nsFilePath myPath("/Development/iotest.txt");
|
||||
//
|
||||
// nsOutputFileStream testStream(myPath);
|
||||
// testStream << "Hello World" << nsEndl;
|
||||
//
|
||||
// 4. Requires streams to be constructed using typesafe nsFilePath specifier
|
||||
// (not the notorious and bug prone const char*), namely nsFilePath. See
|
||||
// nsFileSpec.h for more details.
|
||||
//
|
||||
// 5. Fixes a bug that have been there for a long time, and
|
||||
// is inevitable if you use NSPR alone:
|
||||
//
|
||||
// The problem on platforms (Macintosh) in which a path does not fully
|
||||
// specify a file, because two volumes can have the same name.
|
||||
//
|
||||
// Not yet provided:
|
||||
//
|
||||
// Endian-awareness for reading and writing crossplatform binary files. At this
|
||||
// time there seems to be no demand for this.
|
||||
//
|
||||
//========================================================================================
|
||||
|
||||
#ifndef _FILESTREAM_H_
|
||||
#define _FILESTREAM_H_
|
||||
|
||||
#include "nscore.h"
|
||||
|
||||
#ifdef XP_MAC
|
||||
#include "pprio.h" // To get PR_ImportFile
|
||||
#else
|
||||
#include "prio.h"
|
||||
#endif
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
//========================================================================================
|
||||
// Compiler-specific macros, as needed
|
||||
//========================================================================================
|
||||
#if !defined(NS_USING_NAMESPACE) && (defined(__MWERKS__) || defined(XP_PC))
|
||||
#define NS_USING_NAMESPACE
|
||||
#endif
|
||||
|
||||
#if !defined(NS_USING_STL) && (defined(__MWERKS__) || defined(XP_PC))
|
||||
#define NS_USING_STL
|
||||
#endif
|
||||
|
||||
#ifdef NS_USING_NAMESPACE
|
||||
|
||||
#define NS_NAMESPACE_PROTOTYPE
|
||||
#define NS_NAMESPACE namespace
|
||||
#define NS_NAMESPACE_END
|
||||
|
||||
#else
|
||||
|
||||
#define NS_NAMESPACE_PROTOTYPE static
|
||||
#define NS_NAMESPACE struct
|
||||
#define NS_NAMESPACE_END ;
|
||||
|
||||
#endif // NS_USING_NAMESPACE
|
||||
|
||||
#ifndef XP_MAC
|
||||
// PR_STDOUT and PR_STDIN are fatal on Macintosh. So for console i/o, we must use the std
|
||||
// stream stuff instead. However, we have to require that cout and cin are passed in
|
||||
// to the constructor because in the current build, there is a copy in the base.shlb,
|
||||
// and another in the caller's file. Passing it in as a parameter ensures that the
|
||||
// caller and this library are using the same global object. Groan.
|
||||
//
|
||||
// Unix currently does not support iostreams at all. Their compilers do not support
|
||||
// ANSI C++, or even ARM C++.
|
||||
//
|
||||
// Windows supports them, but only if you turn on the -GX compile flag, to support
|
||||
// exceptions.
|
||||
|
||||
// Catch 22.
|
||||
#define NS_USE_PR_STDIO
|
||||
#endif
|
||||
|
||||
#ifdef NS_USE_PR_STDIO
|
||||
class istream;
|
||||
class ostream;
|
||||
#define CONSOLE_IN 0
|
||||
#define CONSOLE_OUT 0
|
||||
#else
|
||||
#include <iostream>
|
||||
using std::istream;
|
||||
using std::ostream;
|
||||
#define CONSOLE_IN &std::cin
|
||||
#define CONSOLE_OUT &std::cout
|
||||
#endif
|
||||
|
||||
//=========================== End Compiler-specific macros ===============================
|
||||
|
||||
//========================================================================================
|
||||
class NS_BASE nsBasicFileStream
|
||||
//========================================================================================
|
||||
{
|
||||
public:
|
||||
nsBasicFileStream();
|
||||
nsBasicFileStream(PRFileDesc* desc, int nsprMode);
|
||||
nsBasicFileStream(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode,
|
||||
PRIntn accessMode);
|
||||
virtual ~nsBasicFileStream();
|
||||
|
||||
|
||||
inline bool is_open() const { return mFileDesc != 0; }
|
||||
void open(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode,
|
||||
PRIntn accessMode);
|
||||
void close();
|
||||
PRIntn tell() const;
|
||||
void seek(PRInt32 offset) { seek(PR_SEEK_SET, offset); }
|
||||
void seek(PRSeekWhence whence, PRInt32 offset);
|
||||
bool eof() const { return mEOF; }
|
||||
bool failed() const { return mFailed; }
|
||||
// call PR_GetError() for details
|
||||
|
||||
protected:
|
||||
PRFileDesc* mFileDesc;
|
||||
int mNSPRMode;
|
||||
bool mFailed;
|
||||
bool mEOF;
|
||||
}; // class nsBasicFileStream
|
||||
|
||||
//========================================================================================
|
||||
class NS_BASE nsInputFileStream
|
||||
//========================================================================================
|
||||
: public nsBasicFileStream
|
||||
{
|
||||
public:
|
||||
enum { kDefaultMode = PR_RDONLY };
|
||||
nsInputFileStream(istream* stream = CONSOLE_IN);
|
||||
nsInputFileStream(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode = kDefaultMode,
|
||||
PRIntn accessMode = 00700) // <- OCTAL
|
||||
: nsBasicFileStream(inFile, nsprMode, accessMode)
|
||||
, mStdStream(0) {}
|
||||
|
||||
nsInputFileStream& operator >> (nsInputFileStream& (*pf)(nsInputFileStream&))
|
||||
{
|
||||
return pf(*this);
|
||||
}
|
||||
void get(char& c);
|
||||
PRInt32 read(void* s, PRInt32 n);
|
||||
bool readline(char* s, PRInt32 n);
|
||||
// Result always null-terminated
|
||||
// false result indicates line was truncated
|
||||
// to fit buffer, or an error occurred.
|
||||
|
||||
// Input streamers. Add more as needed
|
||||
nsInputFileStream& operator >> (char& ch);
|
||||
|
||||
void open(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode = kDefaultMode,
|
||||
PRIntn accessMode = 00700) // <- OCTAL
|
||||
{
|
||||
nsBasicFileStream::open(inFile, nsprMode, accessMode);
|
||||
}
|
||||
private:
|
||||
|
||||
nsInputFileStream& operator >> (char* buf); // TOO DANGEROUS. DON'T DEFINE.
|
||||
|
||||
protected:
|
||||
|
||||
istream* mStdStream;
|
||||
}; // class nsInputFileStream
|
||||
|
||||
//========================================================================================
|
||||
class NS_BASE nsOutputFileStream
|
||||
//========================================================================================
|
||||
: public nsBasicFileStream
|
||||
{
|
||||
public:
|
||||
enum { kDefaultMode = (PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE) };
|
||||
|
||||
nsOutputFileStream(ostream* stream = CONSOLE_OUT);
|
||||
nsOutputFileStream(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode = kDefaultMode,
|
||||
PRIntn accessMode = 00700) // <- OCTAL
|
||||
: nsBasicFileStream(inFile, nsprMode, accessMode)
|
||||
, mStdStream(0) {}
|
||||
|
||||
ostream* GetStandardStream() const { return mStdStream; }
|
||||
inline void open(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode = kDefaultMode,
|
||||
PRIntn accessMode = 00700) // <- OCTAL
|
||||
{
|
||||
nsBasicFileStream::open(inFile, nsprMode, accessMode);
|
||||
}
|
||||
nsOutputFileStream& operator << (nsOutputFileStream& (*pf)(nsOutputFileStream&))
|
||||
{
|
||||
return pf(*this);
|
||||
}
|
||||
void put(char c);
|
||||
PRInt32 write(const void* s, PRInt32 n);
|
||||
void flush();
|
||||
|
||||
// Output streamers. Add more as needed
|
||||
nsOutputFileStream& operator << (const char* buf);
|
||||
nsOutputFileStream& operator << (char ch);
|
||||
nsOutputFileStream& operator << (short val);
|
||||
nsOutputFileStream& operator << (unsigned short val);
|
||||
nsOutputFileStream& operator << (long val);
|
||||
nsOutputFileStream& operator << (unsigned long val);
|
||||
|
||||
protected:
|
||||
|
||||
ostream* mStdStream;
|
||||
}; // class nsOutputFileStream
|
||||
|
||||
//========================================================================================
|
||||
// Manipulators
|
||||
//========================================================================================
|
||||
NS_BASE nsOutputFileStream& nsEndl(nsOutputFileStream& os);
|
||||
|
||||
|
||||
#endif /* _FILESTREAM_H_ */
|
||||
|
||||
66
mozilla/base/public/nsISizeOfHandler.h
Normal file
66
mozilla/base/public/nsISizeOfHandler.h
Normal file
@@ -0,0 +1,66 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsISizeOfHandler_h___
|
||||
#define nsISizeOfHandler_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
/* c028d1f0-fc9e-11d1-89e4-006008911b81 */
|
||||
#define NS_ISIZEOF_HANDLER_IID \
|
||||
{ 0xc028d1f0, 0xfc9e, 0x11d1, {0x89, 0xe4, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81}}
|
||||
|
||||
/**
|
||||
* An API to managing a sizeof computation of an arbitrary graph.
|
||||
* The handler is responsible for remembering which objects have been
|
||||
* seen before. Note that the handler doesn't hold references to
|
||||
* nsISupport's objects; the assumption is that the objects being
|
||||
* sized are stationary and will not be modified during the sizing
|
||||
* computation and therefore do not need an extra reference count.
|
||||
*/
|
||||
class nsISizeOfHandler : public nsISupports {
|
||||
public:
|
||||
/**
|
||||
* Add in a simple size value to the running total.
|
||||
* Always returns NS_OK.
|
||||
*/
|
||||
NS_IMETHOD Add(size_t aSize) = 0;
|
||||
|
||||
/**
|
||||
* Update aResult with PR_TRUE if the object has been traversed
|
||||
* by the sizeof computation before. Otherwise aResult is set to
|
||||
* PR_FALSE and the object is added to the internal database
|
||||
* of objects that have been traversed. It's ok to pass a null
|
||||
* pointer in; aResult will be set to PR_TRUE so you won't accidently
|
||||
* try to traverse through null pointer.
|
||||
*
|
||||
* Note: This violates the COM API standard on purpose; so there!
|
||||
*/
|
||||
virtual PRBool HaveSeen(void* anObject) = 0;
|
||||
|
||||
/**
|
||||
* Return the currently computed size.
|
||||
* Always returns NS_OK.
|
||||
*/
|
||||
NS_IMETHOD GetSize(PRUint32& aResult) = 0;
|
||||
};
|
||||
|
||||
extern NS_BASE nsresult
|
||||
NS_NewSizeOfHandler(nsISizeOfHandler** aInstancePtrResult);
|
||||
|
||||
#endif /* nsISizeofHandler_h___ */
|
||||
939
mozilla/base/public/nsStdFileStream.h
Normal file
939
mozilla/base/public/nsStdFileStream.h
Normal file
@@ -0,0 +1,939 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0(the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright(C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#error "Do not use this file. The unix compilers do not support standard C++. Use nsFileStream"
|
||||
|
||||
// First checked in on 98/11/20 by John R. McMullen in the wrong directory.
|
||||
// Checked in again 98/12/04.
|
||||
// Polished version 98/12/08.
|
||||
|
||||
//========================================================================================
|
||||
//
|
||||
// Classes defined:
|
||||
//
|
||||
// single-byte char:
|
||||
//
|
||||
// nsInputFileStream, nsOutputFileStream, nsIOFileStream
|
||||
//
|
||||
// wide char:
|
||||
//
|
||||
// nsWideInputFileStream, nsWideOutputFileStream, nsWideIOFileStream
|
||||
//
|
||||
// This suite provide the following services:
|
||||
//
|
||||
// 1. Encapsulates all platform-specific file details, so that file i/o
|
||||
// can be done correctly without any platform #ifdefs
|
||||
//
|
||||
// 2. Uses NSPR file services (NOT ansi file I/O), in order to get best
|
||||
// native performance. This performance difference is especially large on
|
||||
// macintosh.
|
||||
//
|
||||
// 3. Allows all the power of the ansi stream syntax: these streams
|
||||
// ARE derived classes of ostream, istream, and iostream. ALL METHODS OF
|
||||
// istream, ostream, AND iostream ARE AVAILABLE!
|
||||
//
|
||||
// Basic example:
|
||||
//
|
||||
// nsFilePath myPath("/Development/iotest.txt");
|
||||
//
|
||||
// nsOutputFileStream testStream(myPath);
|
||||
// testStream << "Hello World" << endl;
|
||||
//
|
||||
// 4. Requires streams to be constructed using typesafe nsFilePath specifier
|
||||
// (not the notorious and bug prone const char*), namely nsFilePath. See
|
||||
// nsFileSpec.h for more details.
|
||||
//
|
||||
// 5. Fixes a bug that have been there for a long time, and
|
||||
// is inevitable if you use NSPR alone:
|
||||
//
|
||||
// The problem on platforms (Macintosh) in which a path does not fully
|
||||
// specify a file, because two volumes can have the same name.
|
||||
//
|
||||
// Not yet provided:
|
||||
//
|
||||
// Endian-awareness for reading and writing crossplatform binary files. At this
|
||||
// time there seems to be no demand for this.
|
||||
//
|
||||
//========================================================================================
|
||||
|
||||
#ifndef _FILESTREAM_H_
|
||||
#define _FILESTREAM_H_
|
||||
|
||||
#include "nscore.h"
|
||||
|
||||
#ifdef XP_MAC
|
||||
#include "pprio.h" // To get PR_ImportFile
|
||||
#else
|
||||
#include "prio.h"
|
||||
#endif
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
//========================================================================================
|
||||
// Compiler-specific macros, as needed
|
||||
//========================================================================================
|
||||
#if !defined(NS_USING_NAMESPACE) && (defined(__MWERKS__) || defined(XP_PC))
|
||||
#define NS_USING_NAMESPACE
|
||||
#endif
|
||||
|
||||
#if !defined(NS_USING_STL) && (defined(__MWERKS__) || defined(XP_PC))
|
||||
#define NS_USING_STL
|
||||
#endif
|
||||
|
||||
#ifdef NS_USING_NAMESPACE
|
||||
|
||||
#define NS_NAMESPACE_PROTOTYPE
|
||||
#define NS_NAMESPACE namespace
|
||||
#define NS_NAMESPACE_END
|
||||
|
||||
#else
|
||||
|
||||
#define NS_NAMESPACE_PROTOTYPE static
|
||||
#define NS_NAMESPACE struct
|
||||
#define NS_NAMESPACE_END ;
|
||||
|
||||
#endif // NS_USING_NAMESPACE
|
||||
|
||||
#ifdef NS_USING_STL
|
||||
|
||||
// Macintosh and Windows use this section.
|
||||
//
|
||||
// Here's where the party is. When Unix wants to join in (by supporting
|
||||
// a build system with STL headers), what fun we'll have! Meanwhile, I've used
|
||||
// macros to make this build on all our platforms. Unix doesn't have support for
|
||||
// STL, and therefore we could not use the template forms of these classes on Unix.
|
||||
// (it's a long story). Therefore, Unix supports no stream char types except 1-byte
|
||||
// characters, and therefore nobody else does now either, until Unix catches up.
|
||||
|
||||
|
||||
#define DEFINING_FILE_STREAM // templateers define this when this file is included.
|
||||
#define IOS_BASE ios_base
|
||||
#include <istream>
|
||||
using std::ios_base;
|
||||
using std::basic_streambuf;
|
||||
using std::codecvt_base;
|
||||
using std::codecvt;
|
||||
using std::streamsize;
|
||||
using std::locale;
|
||||
using std::basic_istream;
|
||||
using std::basic_ostream;
|
||||
using std::basic_iostream;
|
||||
using std::char_traits;
|
||||
#define TEMPLATE_DEF template<class charT, class traits>
|
||||
#define FILE_BUFFER_TYPE nsFileBufferT<charT, traits>
|
||||
#define INPUT_FILE_STREAM nsInputFileStreamT<charT, traits>
|
||||
#define OUTPUT_FILE_STREAM nsOutputFileStreamT<charT, traits>
|
||||
#define IO_FILE_STREAM nsIOFileStreamT<charT, traits>
|
||||
#define BASIC_STREAMBUF basic_streambuf<charT, traits>
|
||||
#define BASIC_ISTREAM basic_istream<charT, traits>
|
||||
#define BASIC_OSTREAM basic_ostream<charT, traits>
|
||||
#define BASIC_IOSTREAM basic_iostream<charT, traits>
|
||||
#define INT_TYPE FILE_BUFFER_TYPE::int_type
|
||||
#define POS_TYPE FILE_BUFFER_TYPE::pos_type
|
||||
#define OFF_TYPE FILE_BUFFER_TYPE::off_type
|
||||
#define SEEK_DIR IOS_BASE::seekdir
|
||||
#define EOF_VALUE traits::eof()
|
||||
|
||||
#else
|
||||
|
||||
// Unix uses this section until it supports STL. This means no locales, no traits,
|
||||
// no wide chars, etc. Also, the stream classes are the original ARM-style ones,
|
||||
// and are not templatized.
|
||||
|
||||
#define IOS_BASE ios
|
||||
#include <istream.h>
|
||||
#define TEMPLATE_DEF
|
||||
#define FILE_BUFFER_TYPE nsFileBufferT
|
||||
#define INPUT_FILE_STREAM nsInputFileStreamT
|
||||
#define OUTPUT_FILE_STREAM nsOutputFileStreamT
|
||||
#define IO_FILE_STREAM nsIOFileStreamT
|
||||
#define BASIC_STREAMBUF streambuf
|
||||
#define BASIC_ISTREAM istream
|
||||
#define BASIC_OSTREAM ostream
|
||||
#define BASIC_IOSTREAM iostream
|
||||
#define INT_TYPE int
|
||||
#define POS_TYPE long
|
||||
#define OFF_TYPE long
|
||||
#define SEEK_DIR ios::seek_dir
|
||||
#define int_type int
|
||||
#define pos_type long
|
||||
#define off_type long
|
||||
#define char_type char
|
||||
#define EOF_VALUE EOF
|
||||
|
||||
#endif // NS_USING_STL
|
||||
|
||||
#ifdef __MWERKS__
|
||||
|
||||
#ifdef MSIPL_WCHART
|
||||
#define NS_USING_WIDE_CHAR
|
||||
#endif
|
||||
#ifdef MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG
|
||||
#define NS_EXPLICIT_FUNC_TEMPLATE_ARG
|
||||
#endif
|
||||
#define NS_READ_LOCK(mut) READ_LOCK(mut)
|
||||
#define NS_WRITE_LOCK(mut) WRITE_LOCK(mut)
|
||||
|
||||
#else
|
||||
|
||||
// Fix me, if necessary, for thread-safety.
|
||||
#define NS_READ_LOCK(mut)
|
||||
#define NS_WRITE_LOCK(mut)
|
||||
|
||||
#endif // __MWERKS__
|
||||
|
||||
//=========================== End Compiler-specific macros ===============================
|
||||
|
||||
//========================================================================================
|
||||
NS_NAMESPACE nsFileStreamHelpers
|
||||
// Prototypes for common (non-template) implementations in the .cpp file which do not
|
||||
// need the template args (charT, traits).
|
||||
//========================================================================================
|
||||
{
|
||||
NS_NAMESPACE_PROTOTYPE NS_BASE PRFileDesc* open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode);
|
||||
} NS_NAMESPACE_END // nsFileStreamHelpers
|
||||
|
||||
//========================================================================================
|
||||
// Template declarations
|
||||
//========================================================================================
|
||||
|
||||
//========================================================================================
|
||||
TEMPLATE_DEF
|
||||
class nsFileBufferT
|
||||
//========================================================================================
|
||||
: public BASIC_STREAMBUF
|
||||
{
|
||||
#ifdef NS_USING_STL
|
||||
typedef codecvt_base::result result;
|
||||
|
||||
public:
|
||||
typedef charT char_type;
|
||||
typedef typename traits::pos_type pos_type;
|
||||
typedef typename traits::off_type off_type;
|
||||
typedef typename traits::int_type int_type;
|
||||
typedef traits traits_type;
|
||||
typedef typename traits::state_type state_type;
|
||||
|
||||
typedef codecvt<charT, char, state_type> ofacet_type;
|
||||
typedef codecvt<char, charT, state_type> ifacet_type;
|
||||
#endif
|
||||
|
||||
public:
|
||||
nsFileBufferT();
|
||||
nsFileBufferT(PRFileDesc* pfile_arg);
|
||||
virtual ~nsFileBufferT();
|
||||
bool is_open() const;
|
||||
FILE_BUFFER_TYPE* open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode);
|
||||
FILE_BUFFER_TYPE* close();
|
||||
|
||||
protected:
|
||||
virtual int_type overflow(int_type c=EOF_VALUE);
|
||||
virtual int_type pbackfail(int_type c=EOF_VALUE);
|
||||
virtual int_type underflow();
|
||||
virtual pos_type seekoff(
|
||||
off_type off, SEEK_DIR way,
|
||||
IOS_BASE::openmode which=IOS_BASE::in|IOS_BASE::out);
|
||||
virtual pos_type seekpos(pos_type sp,
|
||||
IOS_BASE::openmode which=IOS_BASE::in|IOS_BASE::out);
|
||||
virtual BASIC_STREAMBUF* setbuf(char_type* s, streamsize n);
|
||||
virtual int sync();
|
||||
virtual int_type uflow();
|
||||
#ifdef NS_USING_STL
|
||||
virtual void imbue(const locale& loc);
|
||||
#endif
|
||||
virtual streamsize showmanyc();
|
||||
virtual streamsize xsgetn(char_type* s, streamsize n);
|
||||
virtual streamsize xsputn(const char_type* s, streamsize n);
|
||||
|
||||
private:
|
||||
PRFileDesc* mFileDesc;
|
||||
IOS_BASE::openmode mode_;
|
||||
}; // class nsFileBufferT
|
||||
|
||||
//========================================================================================
|
||||
TEMPLATE_DEF
|
||||
class nsInputFileStreamT
|
||||
//========================================================================================
|
||||
: public BASIC_ISTREAM
|
||||
{
|
||||
#ifdef NS_USING_STL
|
||||
public:
|
||||
typedef charT char_type;
|
||||
typedef typename traits::pos_type pos_type;
|
||||
typedef typename traits::off_type off_type;
|
||||
typedef typename traits::int_type int_type;
|
||||
typedef traits traits_type;
|
||||
#endif
|
||||
|
||||
public:
|
||||
nsInputFileStreamT();
|
||||
explicit nsInputFileStreamT(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode=IOS_BASE::in,
|
||||
PRIntn accessMode = 0x00400);
|
||||
|
||||
virtual ~nsInputFileStreamT();
|
||||
|
||||
FILE_BUFFER_TYPE* rdbuf() const;
|
||||
inline bool is_open();
|
||||
inline void open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode=IOS_BASE::in,
|
||||
PRIntn accessMode = 0x00400);
|
||||
inline void close();
|
||||
|
||||
private:
|
||||
FILE_BUFFER_TYPE mBuffer;
|
||||
}; // class nsInputFileStreamT
|
||||
|
||||
//========================================================================================
|
||||
TEMPLATE_DEF
|
||||
class nsOutputFileStreamT
|
||||
//========================================================================================
|
||||
: public BASIC_OSTREAM
|
||||
{
|
||||
#ifdef NS_USING_STL
|
||||
public:
|
||||
typedef charT char_type;
|
||||
typedef typename traits::pos_type pos_type;
|
||||
typedef typename traits::off_type off_type;
|
||||
typedef typename traits::int_type int_type;
|
||||
typedef traits traits_type;
|
||||
#endif
|
||||
|
||||
public:
|
||||
|
||||
nsOutputFileStreamT();
|
||||
explicit nsOutputFileStreamT(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode = IOS_BASE::out|IOS_BASE::trunc,
|
||||
PRIntn accessMode = 0x00200);
|
||||
|
||||
virtual ~nsOutputFileStreamT();
|
||||
|
||||
FILE_BUFFER_TYPE* rdbuf() const;
|
||||
inline bool is_open();
|
||||
inline void open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode = IOS_BASE::out|IOS_BASE::trunc,
|
||||
PRIntn accessMode = 0x00200);
|
||||
inline void close();
|
||||
|
||||
private:
|
||||
FILE_BUFFER_TYPE mBuffer;
|
||||
}; // class nsOutputFileStreamT
|
||||
|
||||
//========================================================================================
|
||||
// Implementation of nsFileBufferT
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline FILE_BUFFER_TYPE::nsFileBufferT()
|
||||
: BASIC_STREAMBUF(), mFileDesc(NULL)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline FILE_BUFFER_TYPE::nsFileBufferT(PRFileDesc* pfarg)
|
||||
: BASIC_STREAMBUF(), mFileDesc(pfarg)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline FILE_BUFFER_TYPE* FILE_BUFFER_TYPE::close()
|
||||
// Must precede the destructor because both are inline.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (mFileDesc==PR_STDIN || mFileDesc==PR_STDOUT || mFileDesc==PR_STDERR)
|
||||
return this;
|
||||
NS_WRITE_LOCK(_mutex);
|
||||
return (mFileDesc && PR_Close(mFileDesc) == PR_SUCCESS) ? mFileDesc = 0, this : 0;
|
||||
}
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
FILE_BUFFER_TYPE::~nsFileBufferT()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
close();
|
||||
}
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline bool
|
||||
FILE_BUFFER_TYPE::is_open() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
NS_READ_LOCK(_mutex);
|
||||
return bool(mFileDesc); // in case it is typedefed to int
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline FILE_BUFFER_TYPE* FILE_BUFFER_TYPE::open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (mFileDesc)
|
||||
return 0;
|
||||
NS_WRITE_LOCK(_mutex);
|
||||
mFileDesc = nsFileStreamHelpers::open(inFile, mode, accessMode);
|
||||
if (!mFileDesc)
|
||||
return 0;
|
||||
mode_ = mode;
|
||||
return this;
|
||||
} // FILE_BUFFER_TYPE::open
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline int FILE_BUFFER_TYPE:: sync()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (mFileDesc ? (int)PR_Sync(mFileDesc) : 0);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline BASIC_STREAMBUF* FILE_BUFFER_TYPE::setbuf(char_type*, streamsize)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (!mFileDesc) ? 0 : this;
|
||||
}
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
INT_TYPE FILE_BUFFER_TYPE::overflow(int_type c)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifndef NS_USING_STL
|
||||
char ch = c;
|
||||
PRInt32 bytesWrit1 = PR_Write(mFileDesc, &ch, sizeof(ch));
|
||||
return bytesWrit1 < sizeof(ch) ? EOF_VALUE : c;
|
||||
#else
|
||||
#ifdef NS_EXPLICIT_FUNC_TEMPLATE_ARG
|
||||
const ofacet_type& ft=use_facet<ofacet_type>(getloc());
|
||||
#elif defined(XP_PC)
|
||||
const ofacet_type& ft=use_facet(getloc(), (ofacet_type*)0, false);
|
||||
#else
|
||||
const ofacet_type& ft=use_facet(getloc(), (ofacet_type*)0);
|
||||
#endif
|
||||
char_type ch = traits_type::to_char_type(c);
|
||||
if (!mFileDesc)
|
||||
return EOF_VALUE;
|
||||
if (traits_type::eq_int_type(c, EOF_VALUE))
|
||||
return traits_type::not_eof(c);
|
||||
if (ft.always_noconv())
|
||||
{
|
||||
PRInt32 bytesWrit1 = PR_Write(mFileDesc, &ch, sizeof(ch));
|
||||
return bytesWrit1 < sizeof(ch) ? EOF_VALUE : c;
|
||||
}
|
||||
{ // <- sic!
|
||||
state_type fst;
|
||||
const char_type* end;
|
||||
char buf[4];
|
||||
char* ebuf;
|
||||
result conv;
|
||||
if ((conv=ft.out(fst, &ch, &ch+1, end, buf, buf+3, ebuf))==
|
||||
codecvt_base::noconv)
|
||||
{
|
||||
PRInt32 bytesWrit2 = PR_Write(mFileDesc, &ch, sizeof(ch));
|
||||
return bytesWrit2 < sizeof(ch) ? EOF_VALUE : c;
|
||||
}
|
||||
if ((conv==codecvt_base::partial)||(conv==codecvt_base::error))
|
||||
return EOF_VALUE;
|
||||
*ebuf=0;
|
||||
PRInt32 bytesWrit3 = strlen(buf);
|
||||
return PR_Write(mFileDesc, buf, bytesWrit3) < bytesWrit3 ? EOF_VALUE : c;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline INT_TYPE FILE_BUFFER_TYPE::underflow()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mFileDesc)
|
||||
return EOF_VALUE;
|
||||
char_type s;
|
||||
PRInt32 request = 1;
|
||||
if (1 != PR_Read(mFileDesc, &s, request))
|
||||
return EOF_VALUE;
|
||||
PR_Seek(mFileDesc, -1, PR_SEEK_CUR);
|
||||
return (int_type)s;
|
||||
}
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
streamsize FILE_BUFFER_TYPE::xsputn(const char_type* s, streamsize n)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifndef NS_USING_STL
|
||||
PRInt32 bytesWrit1 = PR_Write(mFileDesc, s, sizeof(char) * size_t(n));
|
||||
return bytesWrit1 < 0 ? 0 : (streamsize)bytesWrit1;
|
||||
#else
|
||||
#ifdef NS_EXPLICIT_FUNC_TEMPLATE_ARG
|
||||
const ofacet_type& ft=use_facet<ofacet_type>(loc);
|
||||
#elif defined(XP_PC)
|
||||
const ofacet_type& ft=use_facet(getloc(), (ofacet_type*)0, false);
|
||||
#else
|
||||
const ofacet_type& ft=use_facet(getloc(), (ofacet_type*)0);
|
||||
#endif
|
||||
if (!mFileDesc || !n)
|
||||
return 0;
|
||||
if (ft.always_noconv())
|
||||
{
|
||||
PRInt32 bytesWrit1 = PR_Write(mFileDesc, s, sizeof(char) * size_t(n));
|
||||
return bytesWrit1 < 0 ? 0 : (streamsize)bytesWrit1;
|
||||
}
|
||||
{ // <- sic!
|
||||
state_type fst;
|
||||
const char_type* end;
|
||||
char buf[8];
|
||||
char* ebuf;
|
||||
result conv;
|
||||
#ifdef NS_EXPLICIT_FUNC_TEMPLATE_ARG
|
||||
if ((conv=use_facet<ofacet_type>(getloc()).
|
||||
#elif defined(XP_PC)
|
||||
if ((conv=use_facet(getloc(), (ofacet_type*)0, false).
|
||||
#else
|
||||
if ((conv=use_facet(getloc(), (ofacet_type*)0).
|
||||
#endif
|
||||
out(fst, s, s+n, end, buf, buf+7, ebuf))==codecvt_base::noconv)
|
||||
return (streamsize)PR_Write(mFileDesc, s, sizeof(char) * size_t(n));
|
||||
if ((conv==codecvt_base::partial) ||(conv==codecvt_base::error))
|
||||
return 0;
|
||||
*ebuf=0;
|
||||
PRInt32 bytesWrit2 = strlen(buf);
|
||||
bytesWrit2 = PR_Write(mFileDesc, buf, bytesWrit2);
|
||||
return bytesWrit2 < 0 ? 0 : streamsize(bytesWrit2 / sizeof(char_type));
|
||||
}
|
||||
#endif
|
||||
} // FILE_BUFFER_TYPE::xsputn
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline INT_TYPE FILE_BUFFER_TYPE::pbackfail(int_type c)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mFileDesc)
|
||||
return EOF_VALUE;
|
||||
if (PR_Seek(mFileDesc, -1, PR_SEEK_CUR) < 0)
|
||||
return EOF_VALUE;
|
||||
#ifdef NS_USING_STL
|
||||
return (traits::eq_int_type(c, EOF_VALUE)) ? traits::not_eof(c) : c;
|
||||
#else
|
||||
return c;
|
||||
#endif
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline INT_TYPE FILE_BUFFER_TYPE::uflow()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mFileDesc)
|
||||
return EOF_VALUE;
|
||||
char_type s;
|
||||
if (1 != PR_Read(mFileDesc, &s, 1)) // attempt to read 1 byte, confirm 1 byte
|
||||
return EOF_VALUE;
|
||||
return (int_type)s;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline streamsize FILE_BUFFER_TYPE::xsgetn(char_type* s, streamsize n)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return mFileDesc ? (streamsize)PR_Read(mFileDesc, s, sizeof(char) * size_t(n)) : 0;
|
||||
}
|
||||
|
||||
#ifdef NS_USING_STL
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline void FILE_BUFFER_TYPE::imbue(const locale& loc_arg)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifdef XP_MAC
|
||||
loc = loc_arg;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline streamsize FILE_BUFFER_TYPE::showmanyc()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (streamsize)PR_Available(mFileDesc);
|
||||
}
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
POS_TYPE FILE_BUFFER_TYPE::seekoff(
|
||||
OFF_TYPE off,
|
||||
SEEK_DIR way,
|
||||
IOS_BASE::openmode /* which */)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mFileDesc ||
|
||||
#ifdef NS_USING_STL
|
||||
((way&IOS_BASE::beg) && off<0) || ((way&IOS_BASE::end) && off > 0)
|
||||
#else
|
||||
((way == IOS_BASE::beg) && off<0) || ((way == IOS_BASE::end) && off > 0)
|
||||
#endif
|
||||
)
|
||||
return pos_type(-1);
|
||||
PRSeekWhence poseek = PR_SEEK_CUR;
|
||||
switch (way)
|
||||
{
|
||||
case IOS_BASE::beg : poseek= PR_SEEK_SET;
|
||||
break;
|
||||
case IOS_BASE::end : poseek= PR_SEEK_END;
|
||||
break;
|
||||
}
|
||||
PRInt32 position = PR_Seek(mFileDesc, off, poseek);
|
||||
if (position < 0)
|
||||
return pos_type(-1);
|
||||
return pos_type(position);
|
||||
}
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
POS_TYPE FILE_BUFFER_TYPE::seekpos(pos_type sp, IOS_BASE::openmode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mFileDesc || sp==pos_type(-1))
|
||||
return -1;
|
||||
#if defined(XP_PC) || defined(XP_UNIX)
|
||||
PRInt32 position = sp;
|
||||
#else
|
||||
PRInt32 position = sp.offset();
|
||||
#endif
|
||||
position = PR_Seek(mFileDesc, position, PR_SEEK_SET);
|
||||
if (position < 0)
|
||||
return pos_type(-1);
|
||||
return position;
|
||||
}
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
//========================================================================================
|
||||
// Implementation of nsInputFileStreamT
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline INPUT_FILE_STREAM::nsInputFileStreamT()
|
||||
: BASIC_ISTREAM(&mBuffer)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// already inited
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline INPUT_FILE_STREAM::nsInputFileStreamT(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: BASIC_ISTREAM(&mBuffer)
|
||||
{
|
||||
// already inited
|
||||
if (!mBuffer.open(inFile, openmode(mode|in), accessMode))
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
INPUT_FILE_STREAM::~nsInputFileStreamT()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
}
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline FILE_BUFFER_TYPE* INPUT_FILE_STREAM::rdbuf() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (FILE_BUFFER_TYPE*)&mBuffer;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline bool INPUT_FILE_STREAM:: is_open()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return mBuffer.is_open();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline void INPUT_FILE_STREAM::open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mBuffer.open(inFile, openmode(mode|in), accessMode))
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline void INPUT_FILE_STREAM::close()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mBuffer.close())
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
//========================================================================================
|
||||
// Implementation of nsOutputFileStreamT
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline OUTPUT_FILE_STREAM::nsOutputFileStreamT()
|
||||
: BASIC_OSTREAM(&mBuffer)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// already inited
|
||||
}
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
OUTPUT_FILE_STREAM::nsOutputFileStreamT(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: BASIC_OSTREAM(&mBuffer)
|
||||
{
|
||||
// already inited
|
||||
if (!mBuffer.open(inFile, openmode(mode|out), accessMode))
|
||||
setstate(failbit);
|
||||
}
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
#if defined(DEFINING_FILE_STREAM)
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline OUTPUT_FILE_STREAM::~nsOutputFileStreamT()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
}
|
||||
#endif // #if defined(DEFINING_FILE_STREAM)
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline FILE_BUFFER_TYPE*
|
||||
OUTPUT_FILE_STREAM::rdbuf() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (FILE_BUFFER_TYPE*)&mBuffer;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline bool OUTPUT_FILE_STREAM:: is_open()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return mBuffer.is_open();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline void OUTPUT_FILE_STREAM::open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mBuffer.open(inFile, openmode(mode | out), accessMode))
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline void OUTPUT_FILE_STREAM:: close()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mBuffer.close())
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
//========================================================================================
|
||||
TEMPLATE_DEF
|
||||
class nsIOFileStreamT : public BASIC_IOSTREAM
|
||||
//========================================================================================
|
||||
{
|
||||
#ifdef NS_USING_STL
|
||||
public:
|
||||
typedef charT char_type;
|
||||
typedef typename traits::pos_type pos_type;
|
||||
typedef typename traits::off_type off_type;
|
||||
typedef typename traits::int_type int_type;
|
||||
typedef traits traits_type;
|
||||
#endif
|
||||
|
||||
public:
|
||||
nsIOFileStreamT();
|
||||
explicit nsIOFileStreamT(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode = IOS_BASE::in|IOS_BASE::out,
|
||||
PRIntn accessMode = 0x00600);
|
||||
|
||||
virtual ~nsIOFileStreamT();
|
||||
|
||||
FILE_BUFFER_TYPE* rdbuf() const;
|
||||
inline bool is_open();
|
||||
inline void open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode = IOS_BASE::in|IOS_BASE::out,
|
||||
PRIntn accessMode = 0x00600);
|
||||
inline void close();
|
||||
|
||||
private:
|
||||
FILE_BUFFER_TYPE mBuffer;
|
||||
}; // class nsIOFileStreamT
|
||||
|
||||
//========================================================================================
|
||||
// Implementation of nsIOFileStream
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline IO_FILE_STREAM::nsIOFileStreamT()
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mBuffer(), BASIC_IOSTREAM(&mBuffer)
|
||||
{
|
||||
// already inited
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline IO_FILE_STREAM::nsIOFileStreamT(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mBuffer(), BASIC_IOSTREAM(&mBuffer)
|
||||
{
|
||||
// already inited
|
||||
if (!mBuffer.open(inFile, mode, accessMode))
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline IO_FILE_STREAM::~nsIOFileStreamT()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline FILE_BUFFER_TYPE*
|
||||
IO_FILE_STREAM::rdbuf() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (FILE_BUFFER_TYPE*)&mBuffer;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline bool IO_FILE_STREAM::is_open()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return mBuffer.is_open();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline void IO_FILE_STREAM::open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mBuffer.open(inFile, mode, accessMode))
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
TEMPLATE_DEF
|
||||
inline void IO_FILE_STREAM::close()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!mBuffer.close())
|
||||
setstate(failbit);
|
||||
}
|
||||
|
||||
//========================================================================================
|
||||
// Specializations of the stream templates
|
||||
//========================================================================================
|
||||
|
||||
#ifdef NS_USING_STL
|
||||
typedef nsFileBufferT<char, char_traits<char> > nsFileBuffer;
|
||||
typedef nsInputFileStreamT<char, char_traits<char> > nsInputFileStream;
|
||||
typedef nsOutputFileStreamT<char, char_traits<char> > nsOutputFileStream;
|
||||
typedef nsIOFileStreamT<char, char_traits<char> > nsIOFileStream;
|
||||
|
||||
#ifdef NS_USING_WIDE_CHAR
|
||||
typedef nsFileBufferT<wchar_t, char_traits<wchar_t> > nsWideFileBuffer;
|
||||
typedef nsInputFileStreamT<wchar_t, char_traits<wchar_t> > nsWideInputFileStream;
|
||||
typedef nsOutputFileStreamT<wchar_t, char_traits<wchar_t> > nsWideOutputFileStream;
|
||||
typedef nsIOFileStreamT<wchar_t, char_traits<wchar_t> > nsWideIOFileStream;
|
||||
#endif // NS_USING_WIDE_CHAR
|
||||
|
||||
#else
|
||||
|
||||
typedef nsFileBufferT nsFileBuffer;
|
||||
typedef nsInputFileStreamT nsInputFileStream;
|
||||
typedef nsOutputFileStreamT nsOutputFileStream;
|
||||
typedef nsIOFileStreamT nsIOFileStream;
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _FILESTREAM_H_ */
|
||||
|
||||
24
mozilla/base/src/MANIFEST
Normal file
24
mozilla/base/src/MANIFEST
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist directory
|
||||
#
|
||||
|
||||
nscore.h
|
||||
nsIArena.h
|
||||
nsIAtom.h
|
||||
nsIByteBuffer.h
|
||||
nsBTree.h
|
||||
nsCRT.h
|
||||
nsDeque.h
|
||||
nsITimer.h
|
||||
nsITimerCallback.h
|
||||
nsIUnicharBuffer.h
|
||||
nsRBTree.h
|
||||
nsIUnicharInputStream.h
|
||||
nsString.h
|
||||
nsVoidArray.h
|
||||
nsUnitConversion.h
|
||||
nsIBaseStream.h
|
||||
nsIInputStream.h
|
||||
nsIOutputStream.h
|
||||
nsInt64.h
|
||||
nsTime.h
|
||||
85
mozilla/base/src/Makefile.in
Normal file
85
mozilla/base/src/Makefile.in
Normal file
@@ -0,0 +1,85 @@
|
||||
#!gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DEFINES +=-D_IMPL_NS_BASE
|
||||
|
||||
DIRS = $(MOZ_TOOLKIT)
|
||||
|
||||
LIBRARY_NAME = raptorbase
|
||||
|
||||
CPPSRCS = \
|
||||
nsArena.cpp \
|
||||
nsAtomTable.cpp \
|
||||
nsBTree.cpp \
|
||||
nsByteBuffer.cpp \
|
||||
nsCRT.cpp \
|
||||
nsDeque.cpp \
|
||||
nsEscape.cpp \
|
||||
nsFileSpec.cpp \
|
||||
nsFileStream.cpp \
|
||||
nsRBTree.cpp \
|
||||
nsSizeOfHandler.cpp \
|
||||
nsString.cpp \
|
||||
nsUnicharBuffer.cpp \
|
||||
nsUnicharInputStream.cpp \
|
||||
nsVoidArray.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
nscore.h \
|
||||
nsBTree.h \
|
||||
nsCRT.h \
|
||||
nsDeque.h \
|
||||
nsIArena.h \
|
||||
nsIAtom.h \
|
||||
nsIByteBuffer.h \
|
||||
nsIBaseStream.h \
|
||||
nsIInputStream.h \
|
||||
nsIOutputStream.h \
|
||||
nsITimer.h \
|
||||
nsITimerCallback.h \
|
||||
nsIUnicharBuffer.h \
|
||||
nsIUnicharInputStream.h \
|
||||
nsInt64.h \
|
||||
nsRBTree.h \
|
||||
nsString.h \
|
||||
nsTime.h \
|
||||
nsVoidArray.h \
|
||||
nsUnitConversion.h \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
|
||||
|
||||
MODULE=base
|
||||
|
||||
REQUIRES = xpcom netlib raptor
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
TARGET = $(LIBARY)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
test:
|
||||
@echo OS_ARCH = $(OS_ARCH)
|
||||
37
mozilla/base/src/gtk/Makefile.in
Normal file
37
mozilla/base/src/gtk/Makefile.in
Normal file
@@ -0,0 +1,37 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
LIBRARY_NAME = gmbasegtk
|
||||
|
||||
MODULE=base
|
||||
|
||||
REQUIRES = xpcom raptor
|
||||
|
||||
DEFINES += -D_IMPL_NS_WIDGET
|
||||
|
||||
CPPSRCS = nsTimer.cpp
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CFLAGS += $(TK_GTK_CFLAGS)
|
||||
191
mozilla/base/src/gtk/nsTimer.cpp
Normal file
191
mozilla/base/src/gtk/nsTimer.cpp
Normal file
@@ -0,0 +1,191 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsITimer.h"
|
||||
#include "nsITimerCallback.h"
|
||||
#include "nsCRT.h"
|
||||
#include "prlog.h"
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
|
||||
|
||||
extern "C" gint nsTimerExpired(gpointer aCallData);
|
||||
|
||||
/*
|
||||
* Implementation of timers using Gtk timer facility
|
||||
*/
|
||||
class TimerImpl : public nsITimer {
|
||||
public:
|
||||
|
||||
public:
|
||||
TimerImpl();
|
||||
virtual ~TimerImpl();
|
||||
|
||||
virtual nsresult Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
virtual nsresult Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
virtual void Cancel();
|
||||
virtual PRUint32 GetDelay() { return mDelay; }
|
||||
virtual void SetDelay(PRUint32 aDelay) { mDelay=aDelay; };
|
||||
virtual void* GetClosure() { return mClosure; }
|
||||
|
||||
void FireTimeout();
|
||||
|
||||
private:
|
||||
nsresult Init(PRUint32 aDelay);
|
||||
|
||||
PRUint32 mDelay;
|
||||
nsTimerCallbackFunc mFunc;
|
||||
void *mClosure;
|
||||
nsITimerCallback *mCallback;
|
||||
// PRBool mRepeat;
|
||||
TimerImpl *mNext;
|
||||
guint mTimerId;
|
||||
};
|
||||
|
||||
void TimerImpl::FireTimeout()
|
||||
{
|
||||
if (mFunc != NULL) {
|
||||
(*mFunc)(this, mClosure);
|
||||
}
|
||||
else if (mCallback != NULL) {
|
||||
mCallback->Notify(this); // Fire the timer
|
||||
}
|
||||
|
||||
// Always repeating here
|
||||
|
||||
// if (mRepeat)
|
||||
// mTimerId = gtk_timeout_add(aDelay, nsTimerExpired, this);
|
||||
}
|
||||
|
||||
|
||||
TimerImpl::TimerImpl()
|
||||
{
|
||||
// printf("TimerImple::TimerImpl called for %p\n", this);
|
||||
NS_INIT_REFCNT();
|
||||
mFunc = NULL;
|
||||
mCallback = NULL;
|
||||
mNext = NULL;
|
||||
mTimerId = 0;
|
||||
mDelay = 0;
|
||||
mClosure = NULL;
|
||||
}
|
||||
|
||||
TimerImpl::~TimerImpl()
|
||||
{
|
||||
//printf("TimerImpl::~TimerImpl called for %p\n", this);
|
||||
Cancel();
|
||||
NS_IF_RELEASE(mCallback);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
//printf("TimerImpl::Init called with func + closure for %p\n", this);
|
||||
mFunc = aFunc;
|
||||
mClosure = aClosure;
|
||||
// mRepeat = aRepeat;
|
||||
|
||||
if ((aDelay > 10000) || (aDelay < 0)) {
|
||||
printf("Timer::Init() called with bogus value \"%d\"! Not enabling timer.\n",
|
||||
aDelay);
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
mTimerId = gtk_timeout_add(aDelay, nsTimerExpired, this);
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
//printf("TimerImpl::Init called with callback only for %p\n", this);
|
||||
mCallback = aCallback;
|
||||
// mRepeat = aRepeat;
|
||||
if ((aDelay > 10000) || (aDelay < 0)) {
|
||||
printf("Timer::Init() called with bogus value \"%d\"! Not enabling timer.\n",
|
||||
aDelay);
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
mTimerId = gtk_timeout_add(aDelay, nsTimerExpired, this);
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(PRUint32 aDelay)
|
||||
{
|
||||
//printf("TimerImpl::Init called with delay %d only for %p\n", aDelay, this);
|
||||
|
||||
mDelay = aDelay;
|
||||
NS_ADDREF(this);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
|
||||
|
||||
|
||||
void
|
||||
TimerImpl::Cancel()
|
||||
{
|
||||
//printf("TimerImpl::Cancel called for %p\n", this);
|
||||
TimerImpl *me = this;
|
||||
if (mTimerId)
|
||||
gtk_timeout_remove(mTimerId);
|
||||
NS_RELEASE(me);
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
|
||||
if (nsnull == aInstancePtrResult) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
TimerImpl *timer = new TimerImpl();
|
||||
if (nsnull == timer) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
|
||||
gint nsTimerExpired(gpointer aCallData)
|
||||
{
|
||||
//printf("nsTimerExpired for %p\n", aCallData);
|
||||
TimerImpl* timer = (TimerImpl *)aCallData;
|
||||
timer->FireTimeout();
|
||||
return 0;
|
||||
}
|
||||
603
mozilla/base/src/mac/nsFileSpecMac.cpp
Normal file
603
mozilla/base/src/mac/nsFileSpecMac.cpp
Normal file
@@ -0,0 +1,603 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// This file is included by nsFile.cp, and includes the Macintosh-specific
|
||||
// implementations.
|
||||
|
||||
#include "FullPath.h"
|
||||
#include "FileCopy.h"
|
||||
#include "nsEscape.h"
|
||||
|
||||
#include <Aliases.h>
|
||||
#include <Folders.h>
|
||||
#include <Errors.h>
|
||||
#include <TextUtils.h>
|
||||
|
||||
const unsigned char* kAliasHavenFolderName = "\pnsAliasHaven";
|
||||
|
||||
//========================================================================================
|
||||
namespace MacFileHelpers
|
||||
//========================================================================================
|
||||
{
|
||||
inline void PLstrcpy(Str255 dst, ConstStr255Param src)
|
||||
{
|
||||
memcpy(dst, src, 1 + src[0]);
|
||||
}
|
||||
|
||||
void PLstrcpy(Str255 dst, const char* src, int inMaxLen);
|
||||
|
||||
void SwapSlashColon(char * s);
|
||||
OSErr FSSpecFromFullUnixPath(
|
||||
const char * unixPath,
|
||||
FSSpec& outSpec,
|
||||
Boolean resolveAlias,
|
||||
Boolean allowPartial = false);
|
||||
char* MacPathFromUnixPath(const char* unixPath);
|
||||
char* EncodeMacPath(
|
||||
char* inPath, // NOT const - gets clobbered
|
||||
Boolean prependSlash,
|
||||
Boolean doEscape );
|
||||
OSErr FSSpecFromPathname(
|
||||
const char* inPathNamePtr,
|
||||
FSSpec& outSpec);
|
||||
char* PathNameFromFSSpec(
|
||||
const FSSpec& inSpec,
|
||||
Boolean wantLeafName );
|
||||
OSErr CreateFolderInFolder(
|
||||
short refNum, // Parent directory/volume
|
||||
long dirID,
|
||||
ConstStr255Param folderName, // Name of the new folder
|
||||
short& outRefNum, // Volume of the created folder
|
||||
long& outDirID); //
|
||||
|
||||
// Some routines to support an "alias haven" directory. Aliases in this directory
|
||||
// are never resolved. There is a ResolveAlias here that respects that. This is
|
||||
// to support attaching of aliases in mail.
|
||||
void EnsureAliasHaven();
|
||||
void SetNoResolve(Boolean inResolve);
|
||||
bool IsAliasSafe(const FSSpec& inSpec);
|
||||
OSErr MakeAliasSafe(FSSpec& inOutSpec);
|
||||
OSErr ResolveAliasFile(FSSpec& inOutSpec, Boolean& wasAliased);
|
||||
|
||||
Boolean sNoResolve = false;
|
||||
long sAliasHavenDirID = 0;
|
||||
short sAliasHavenVRefNum = 0;
|
||||
} // namespace MacFileHelpers
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void MacFileHelpers::PLstrcpy(Str255 dst, const char* src, int inMax)
|
||||
//========================================================================================
|
||||
{
|
||||
int srcLength = strlen(src);
|
||||
NS_ASSERTION(srcLength <= inMax, "Oops, string is too long!");
|
||||
if (srcLength > inMax)
|
||||
srcLength = inMax;
|
||||
dst[0] = srcLength;
|
||||
memcpy(&dst[1], src, srcLength);
|
||||
}
|
||||
|
||||
//-----------------------------------
|
||||
void MacFileHelpers::SwapSlashColon(char * s)
|
||||
//-----------------------------------
|
||||
|
||||
{
|
||||
while ( *s != 0)
|
||||
{
|
||||
if (*s == '/')
|
||||
*s++ = ':';
|
||||
else if (*s == ':')
|
||||
*s++ = '/';
|
||||
else
|
||||
*s++;
|
||||
}
|
||||
} // MacFileHelpers::SwapSlashColon
|
||||
|
||||
//-----------------------------------
|
||||
char* MacFileHelpers::EncodeMacPath(
|
||||
char* inPath, // NOT const, gets clobbered
|
||||
Boolean prependSlash,
|
||||
Boolean doEscape )
|
||||
// Transforms Macintosh style path into Unix one
|
||||
// Method: Swap ':' and '/', hex escape the result
|
||||
//-----------------------------------
|
||||
{
|
||||
if (inPath == NULL)
|
||||
return NULL;
|
||||
int pathSize = strlen(inPath);
|
||||
|
||||
// XP code sometimes chokes if there's a final slash in the unix path.
|
||||
// Since correct mac paths to folders and volumes will end in ':', strip this
|
||||
// first.
|
||||
char* c = inPath + pathSize - 1;
|
||||
if (*c == ':')
|
||||
{
|
||||
*c = 0;
|
||||
pathSize--;
|
||||
}
|
||||
|
||||
char * newPath = NULL;
|
||||
char * finalPath = NULL;
|
||||
|
||||
if (prependSlash)
|
||||
{
|
||||
newPath = new char[pathSize + 2];
|
||||
newPath[0] = ':'; // It will be converted to '/'
|
||||
memcpy(&newPath[1], inPath, pathSize + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
newPath = new char[pathSize + 1];
|
||||
strcpy(newPath, inPath);
|
||||
}
|
||||
if (newPath)
|
||||
{
|
||||
SwapSlashColon( newPath );
|
||||
if (doEscape)
|
||||
{
|
||||
finalPath = nsEscape(newPath, url_Path);
|
||||
delete [] newPath;
|
||||
}
|
||||
else
|
||||
finalPath = newPath;
|
||||
}
|
||||
delete [] inPath;
|
||||
return finalPath;
|
||||
} // MacFileHelpers::EncodeMacPath
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
inline void MacFileHelpers::SetNoResolve(Boolean inResolve)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
sNoResolve = inResolve;
|
||||
} // MacFileHelpers::SetNoResolve
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
OSErr MacFileHelpers::MakeAliasSafe(FSSpec& inOutSpec)
|
||||
// Pass in the spec of an alias. This copies the file to the safe haven folder, and
|
||||
// returns the spec of the copy to the caller
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
EnsureAliasHaven();
|
||||
nsNativeFileSpec dstDirSpec(sAliasHavenVRefNum, sAliasHavenDirID, "\p");
|
||||
|
||||
// Make sure its name is unique
|
||||
nsNativeFileSpec havenSpec(sAliasHavenVRefNum, sAliasHavenDirID, "\pG'day");
|
||||
if (havenSpec.Valid())
|
||||
havenSpec.MakeUnique(inOutSpec.name);
|
||||
// Copy the file into the haven directory
|
||||
if (havenSpec.Valid())
|
||||
{
|
||||
OSErr err = ::FSpFileCopy(
|
||||
&inOutSpec,
|
||||
dstDirSpec,
|
||||
havenSpec.GetLeafPName(),
|
||||
nil, 0, true);
|
||||
// Return the spec of the copy to the caller.
|
||||
if (err != noErr)
|
||||
return err;
|
||||
inOutSpec = havenSpec;
|
||||
}
|
||||
return noErr;
|
||||
} // MacFileHelpers::MakeAliasSafe
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* MacFileHelpers::MacPathFromUnixPath(const char* unixPath)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// Relying on the fact that the unix path is always longer than the mac path:
|
||||
size_t len = strlen(unixPath);
|
||||
char* result = new char[len + 2]; // ... but allow for the initial colon in a partial name
|
||||
if (result)
|
||||
{
|
||||
char* dst = result;
|
||||
const char* src = unixPath;
|
||||
if (*src == '/') // ¥ full path
|
||||
src++;
|
||||
else if (strchr(src, '/')) // ¥ partial path, and not just a leaf name
|
||||
*dst++ = ':';
|
||||
strcpy(dst, src);
|
||||
nsUnescape(dst); // Hex Decode
|
||||
MacFileHelpers::SwapSlashColon(dst);
|
||||
}
|
||||
return result;
|
||||
} // MacFileHelpers::MacPathFromUnixPath
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
OSErr MacFileHelpers::FSSpecFromPathname(const char* inPathNamePtr, FSSpec& outSpec)
|
||||
// FSSpecFromPathname reverses PathNameFromFSSpec.
|
||||
// It returns a FSSpec given a c string which is a mac pathname.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
OSErr err;
|
||||
// Simplify this routine to use FSMakeFSSpec if length < 255. Otherwise use the MoreFiles
|
||||
// routine FSpLocationFromFullPath, which allocates memory, to handle longer pathnames.
|
||||
if (strlen(inPathNamePtr) < 255)
|
||||
{
|
||||
Str255 path;
|
||||
|
||||
int pos = 0;
|
||||
while ( (path[++pos] = *inPathNamePtr++) != 0 )
|
||||
;
|
||||
path[0] = pos-1; // save the length of the string (pos is the next open spot)
|
||||
|
||||
err = ::FSMakeFSSpec(0, 0, path, &outSpec);
|
||||
}
|
||||
else
|
||||
err = FSpLocationFromFullPath(strlen(inPathNamePtr), inPathNamePtr, &outSpec);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
OSErr MacFileHelpers::CreateFolderInFolder(
|
||||
short refNum, // Parent directory/volume
|
||||
long dirID,
|
||||
ConstStr255Param folderName, // Name of the new folder
|
||||
short& outRefNum, // Volume of the created folder
|
||||
long& outDirID) //
|
||||
// Creates a folder named 'folderName' inside a folder.
|
||||
// The errors returned are same as PBDirCreate
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
HFileParam hpb;
|
||||
hpb.ioVRefNum = refNum;
|
||||
hpb.ioDirID = dirID;
|
||||
hpb.ioNamePtr = (StringPtr)&folderName;
|
||||
|
||||
OSErr err = PBDirCreateSync((HParmBlkPtr)&hpb);
|
||||
if (err == noErr)
|
||||
{
|
||||
outRefNum = hpb.ioVRefNum;
|
||||
outDirID = hpb.ioDirID;
|
||||
}
|
||||
else
|
||||
{
|
||||
outRefNum = 0;
|
||||
outDirID = 0;
|
||||
}
|
||||
return err;
|
||||
} // MacFileHelpers::CreateFolderInFolder
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void MacFileHelpers::EnsureAliasHaven()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// Alias Haven is a directory in which we never resolve aliases.
|
||||
if (sAliasHavenVRefNum != 0)
|
||||
return;
|
||||
|
||||
|
||||
FSSpec temp;
|
||||
if (FindFolder(0, kTemporaryFolderType, true, & temp.vRefNum, &temp.parID) == noErr)
|
||||
{
|
||||
CreateFolderInFolder(
|
||||
temp.vRefNum, // Parent directory/volume
|
||||
temp.parID,
|
||||
kAliasHavenFolderName, // Name of the new folder
|
||||
sAliasHavenVRefNum, // Volume of the created folder
|
||||
sAliasHavenDirID);
|
||||
}
|
||||
} // MacFileHelpers::EnsureAliasHaven
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
bool MacFileHelpers::IsAliasSafe(const FSSpec& inSpec)
|
||||
// Returns true if the alias is in the alias haven directory, or if alias resolution
|
||||
// has been turned off.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return sNoResolve
|
||||
|| (inSpec.parID == sAliasHavenDirID && inSpec.vRefNum == sAliasHavenVRefNum);
|
||||
} // MacFileHelpers::IsAliasSafe
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
OSErr MacFileHelpers::ResolveAliasFile(FSSpec& inOutSpec, Boolean& wasAliased)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
wasAliased = false;
|
||||
if (IsAliasSafe(inOutSpec))
|
||||
return noErr;
|
||||
Boolean dummy;
|
||||
return ::ResolveAliasFile(&inOutSpec, TRUE, &dummy, &wasAliased);
|
||||
} // MacFileHelpers::ResolveAliasFile
|
||||
|
||||
//-----------------------------------
|
||||
OSErr MacFileHelpers::FSSpecFromFullUnixPath(
|
||||
const char * unixPath,
|
||||
FSSpec& outSpec,
|
||||
Boolean resolveAlias,
|
||||
Boolean allowPartial)
|
||||
// File spec from URL. Reverses GetURLFromFileSpec
|
||||
// Its input is only the <path> part of the URL
|
||||
// JRM 97/01/08 changed this so that if it's a partial path (doesn't start with '/'),
|
||||
// then it is combined with inOutSpec's vRefNum and parID to form a new spec.
|
||||
//-----------------------------------
|
||||
{
|
||||
if (unixPath == NULL)
|
||||
return badFidErr;
|
||||
char* macPath = MacPathFromUnixPath(unixPath);
|
||||
if (!macPath)
|
||||
return memFullErr;
|
||||
|
||||
OSErr err = noErr;
|
||||
if (!allowPartial)
|
||||
{
|
||||
NS_ASSERTION(*unixPath == '/' /*full path*/, "Not a full Unix path!");
|
||||
}
|
||||
err = FSSpecFromPathname(macPath, outSpec);
|
||||
if (err == fnfErr)
|
||||
err = noErr;
|
||||
Boolean dummy;
|
||||
if (err == noErr && resolveAlias) // Added
|
||||
err = MacFileHelpers::ResolveAliasFile(outSpec, dummy);
|
||||
delete [] macPath;
|
||||
NS_ASSERTION(err==noErr||err==fnfErr||err==dirNFErr||err==nsvErr, "Not a path!");
|
||||
return err;
|
||||
} // MacFileHelpers::FSSpecFromLocalUnixPath
|
||||
|
||||
//-----------------------------------
|
||||
char* MacFileHelpers::PathNameFromFSSpec( const FSSpec& inSpec, Boolean wantLeafName )
|
||||
// Returns a full pathname to the given file
|
||||
// Returned value is allocated with new [], and must be freed with delete []
|
||||
// This is taken from FSpGetFullPath in MoreFiles, except that we need to tolerate
|
||||
// fnfErr.
|
||||
//-----------------------------------
|
||||
{
|
||||
char* result = nil;
|
||||
OSErr err = noErr;
|
||||
|
||||
short fullPathLength = 0;
|
||||
Handle fullPath = NULL;
|
||||
|
||||
FSSpec tempSpec = inSpec;
|
||||
if ( tempSpec.parID == fsRtParID )
|
||||
{
|
||||
/* The object is a volume */
|
||||
|
||||
/* Add a colon to make it a full pathname */
|
||||
tempSpec.name[++tempSpec.name[0]] = ':';
|
||||
|
||||
/* We're done */
|
||||
err = PtrToHand(&tempSpec.name[1], &fullPath, tempSpec.name[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The object isn't a volume */
|
||||
|
||||
CInfoPBRec pb = { 0 };
|
||||
Str63 dummyFileName;
|
||||
MacFileHelpers::PLstrcpy(dummyFileName, "\pG'day!");
|
||||
|
||||
/* Is the object a file or a directory? */
|
||||
pb.dirInfo.ioNamePtr = (! tempSpec.name[0]) ? (StringPtr)dummyFileName : tempSpec.name;
|
||||
pb.dirInfo.ioVRefNum = tempSpec.vRefNum;
|
||||
pb.dirInfo.ioDrDirID = tempSpec.parID;
|
||||
pb.dirInfo.ioFDirIndex = 0;
|
||||
err = PBGetCatInfoSync(&pb);
|
||||
if ( err == noErr || err == fnfErr)
|
||||
{
|
||||
// if the object is a directory, append a colon so full pathname ends with colon
|
||||
// Beware of the "illegal spec" case that Netscape uses (empty name string). In
|
||||
// this case, we don't want the colon.
|
||||
if ( err == noErr && tempSpec.name[0] && (pb.hFileInfo.ioFlAttrib & ioDirMask) != 0 )
|
||||
{
|
||||
++tempSpec.name[0];
|
||||
tempSpec.name[tempSpec.name[0]] = ':';
|
||||
}
|
||||
|
||||
/* Put the object name in first */
|
||||
err = PtrToHand(&tempSpec.name[1], &fullPath, tempSpec.name[0]);
|
||||
if ( err == noErr )
|
||||
{
|
||||
/* Get the ancestor directory names */
|
||||
pb.dirInfo.ioNamePtr = tempSpec.name;
|
||||
pb.dirInfo.ioVRefNum = tempSpec.vRefNum;
|
||||
pb.dirInfo.ioDrParID = tempSpec.parID;
|
||||
do /* loop until we have an error or find the root directory */
|
||||
{
|
||||
pb.dirInfo.ioFDirIndex = -1;
|
||||
pb.dirInfo.ioDrDirID = pb.dirInfo.ioDrParID;
|
||||
err = PBGetCatInfoSync(&pb);
|
||||
if ( err == noErr )
|
||||
{
|
||||
/* Append colon to directory name */
|
||||
++tempSpec.name[0];
|
||||
tempSpec.name[tempSpec.name[0]] = ':';
|
||||
|
||||
/* Add directory name to beginning of fullPath */
|
||||
(void) Munger(fullPath, 0, NULL, 0, &tempSpec.name[1], tempSpec.name[0]);
|
||||
err = MemError();
|
||||
}
|
||||
} while ( err == noErr && pb.dirInfo.ioDrDirID != fsRtDirID );
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( err != noErr && err != fnfErr)
|
||||
goto Clean;
|
||||
|
||||
fullPathLength = GetHandleSize(fullPath);
|
||||
err = noErr;
|
||||
int allocSize = 1 + fullPathLength;
|
||||
// We only want the leaf name if it's the root directory or wantLeafName is true.
|
||||
if (inSpec.parID != fsRtParID && !wantLeafName)
|
||||
allocSize -= inSpec.name[0];
|
||||
result = new char[allocSize];
|
||||
if (!result)
|
||||
goto Clean;
|
||||
memcpy(result, *fullPath, allocSize - 1);
|
||||
result[ allocSize - 1 ] = 0;
|
||||
Clean:
|
||||
if (fullPath)
|
||||
DisposeHandle(fullPath);
|
||||
NS_ASSERTION(result, "Out of memory"); // OOPS! very bad.
|
||||
return result;
|
||||
} // MacFileHelpers::PathNameFromFSSpec
|
||||
|
||||
//========================================================================================
|
||||
// Macintosh nsNativeFileSpec implementation
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec()
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mError(noErr)
|
||||
{
|
||||
mSpec.name[0] = '\0';
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mSpec(inSpec.mSpec)
|
||||
, mError(inSpec.Error())
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mError = MacFileHelpers::FSSpecFromFullUnixPath(inString, mSpec, true, true);
|
||||
// allow a partial path
|
||||
if (mError == fnfErr)
|
||||
mError = noErr;
|
||||
} // nsNativeFileSpec::nsNativeFileSpec
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(
|
||||
short vRefNum,
|
||||
long parID,
|
||||
ConstStr255Param name)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mError = ::FSMakeFSSpec(vRefNum, parID, name, &mSpec);
|
||||
if (mError == fnfErr)
|
||||
mError = noErr;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const nsFilePath& inPath)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
*this = inPath.GetNativeSpec();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& operator << (nsOutputFileStream& s, const nsNativeFileSpec& spec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
s << spec.mSpec.vRefNum << ", " << spec.mSpec.parID << ", \"";
|
||||
s.write((const char*)&spec.mSpec.name[1], spec.mSpec.name[0]);
|
||||
return s << "\"";
|
||||
} // nsOutputFileStream& operator << (nsOutputFileStream&, const nsNativeFileSpec&)
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mError = MacFileHelpers::FSSpecFromFullUnixPath(inString, mSpec, true);
|
||||
} // nsNativeFileSpec::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mSpec = inSpec.mSpec;
|
||||
mError = inSpec.Error();
|
||||
} // nsNativeFileSpec::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const nsFilePath& inPath)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
*this = inPath.GetNativeSpec();
|
||||
} // nsNativeFileSpec::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
bool nsNativeFileSpec::Exists() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
FSSpec temp;
|
||||
return ::FSMakeFSSpec(mSpec.vRefNum, mSpec.parID, mSpec.name, &temp) == noErr;
|
||||
} // nsNativeFileSpec::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::SetLeafName(const char* inLeafName)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
MacFileHelpers::PLstrcpy(mSpec.name, inLeafName, nsFileSpecHelpers::kMaxFilenameLength);
|
||||
} // nsNativeFileSpec::SetLeafName
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsNativeFileSpec::GetLeafName() const
|
||||
// Result needs to be delete[]ed.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
char leaf[64];
|
||||
memcpy(leaf, &mSpec.name[1], mSpec.name[0]);
|
||||
leaf[mSpec.name[0]] = '\0';
|
||||
return nsFileSpecHelpers::StringDup(leaf);
|
||||
} // nsNativeFileSpec::GetLeafName
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::MakeAliasSafe()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mError = MacFileHelpers::MakeAliasSafe(mSpec);
|
||||
} // nsNativeFileSpec::MakeAliasSafe
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::MakeUnique(ConstStr255Param inSuggestedLeafName)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (inSuggestedLeafName[0] > 0)
|
||||
MacFileHelpers::PLstrcpy(mSpec.name, inSuggestedLeafName);
|
||||
|
||||
MakeUnique();
|
||||
} // nsNativeFileSpec::MakeUnique
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::ResolveAlias(bool& wasAliased)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
Boolean wasAliased2;
|
||||
mError = MacFileHelpers::ResolveAliasFile(mSpec, wasAliased2);
|
||||
wasAliased = (wasAliased2 != false);
|
||||
} // nsNativeFileSpec::ResolveAlias
|
||||
|
||||
//========================================================================================
|
||||
// Macintosh nsFilePath implementation
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFilePath::nsFilePath(const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mNativeFileSpec(inSpec)
|
||||
{
|
||||
char * path = MacFileHelpers::PathNameFromFSSpec( inSpec.mSpec, TRUE );
|
||||
mPath = MacFileHelpers::EncodeMacPath(path, true, true);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFilePath::operator = (const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
delete [] mPath;
|
||||
char * path = MacFileHelpers::PathNameFromFSSpec( inSpec.mSpec, TRUE );
|
||||
mPath = MacFileHelpers::EncodeMacPath(path, true, true);
|
||||
mNativeFileSpec = inSpec;
|
||||
} // nsFilePath::operator =
|
||||
295
mozilla/base/src/mac/nsTimerMac.cpp
Normal file
295
mozilla/base/src/mac/nsTimerMac.cpp
Normal file
@@ -0,0 +1,295 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
//
|
||||
// Mac implementation of the nsITimer interface
|
||||
//
|
||||
|
||||
// nsMacTimerPeriodical idles,
|
||||
|
||||
|
||||
#include "nsITimer.h"
|
||||
#include "nsITimerCallback.h"
|
||||
#include "prlog.h"
|
||||
#include <LPeriodical.h>
|
||||
#include <LArray.h>
|
||||
#include <LArrayIterator.h>
|
||||
#include <LComparator.h>
|
||||
|
||||
#pragma mark class TimerImpl
|
||||
//
|
||||
// TimerImpl implements nsITimer API
|
||||
//
|
||||
class TimerImpl : public nsITimer
|
||||
{
|
||||
private:
|
||||
nsTimerCallbackFunc mCallbackFunc;
|
||||
nsITimerCallback * mCallbackObject;
|
||||
void * mClosure;
|
||||
PRUint32 mDelay;
|
||||
UInt32 mFireTime; // Timer should fire when TickCount >= this number
|
||||
|
||||
public:
|
||||
|
||||
// constructors
|
||||
|
||||
TimerImpl();
|
||||
|
||||
virtual ~TimerImpl(){};
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
UInt32 GetFireTime() const { return mFireTime; }
|
||||
|
||||
void Fire();
|
||||
|
||||
// nsITimer overrides
|
||||
|
||||
virtual nsresult Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
PRUint32 aDelay);
|
||||
|
||||
virtual nsresult Init(nsITimerCallback *aCallback,
|
||||
PRUint32 aDelay);
|
||||
|
||||
virtual void Cancel();
|
||||
|
||||
virtual PRUint32 GetDelay();
|
||||
|
||||
virtual void SetDelay(PRUint32 aDelay);
|
||||
|
||||
virtual void* GetClosure();
|
||||
|
||||
private:
|
||||
// Calculates mFireTime too
|
||||
void SetDelaySelf( PRUint32 aDelay );
|
||||
};
|
||||
|
||||
#pragma mark class TimerPeriodical
|
||||
//
|
||||
// TimerPeriodical is a singleton LPeriodical subclass that fires
|
||||
// off TimerImpl. The firing is done on idle
|
||||
//
|
||||
class TimerPeriodical : public LPeriodical
|
||||
{
|
||||
static TimerPeriodical * gPeriodical;
|
||||
|
||||
LArray mTimers; // List of TimerImpl *
|
||||
|
||||
public:
|
||||
// Returns the singleton instance
|
||||
static TimerPeriodical * GetPeriodical();
|
||||
|
||||
TimerPeriodical();
|
||||
|
||||
virtual ~TimerPeriodical();
|
||||
|
||||
nsresult AddTimer( TimerImpl * aTimer);
|
||||
|
||||
nsresult RemoveTimer( TimerImpl * aTimer);
|
||||
|
||||
virtual void SpendTime( const EventRecord &inMacEvent);
|
||||
};
|
||||
|
||||
#pragma mark class TimerImplComparator
|
||||
//
|
||||
// TimerImplComparator compares two TimerImpl
|
||||
//
|
||||
class TimerImplComparator : public LComparator
|
||||
{
|
||||
virtual Int32 Compare(
|
||||
const void* inItemOne,
|
||||
const void* inItemTwo,
|
||||
Uint32 inSizeOne,
|
||||
Uint32 inSizeTwo) const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// TimerImpl implementation
|
||||
//
|
||||
|
||||
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
|
||||
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
|
||||
|
||||
TimerImpl::TimerImpl()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mCallbackFunc = NULL;
|
||||
mCallbackObject = NULL;
|
||||
mClosure = NULL;
|
||||
mDelay = 0;
|
||||
mFireTime = 0;
|
||||
}
|
||||
|
||||
nsresult TimerImpl::Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mCallbackFunc = aFunc;
|
||||
mClosure = aClosure;
|
||||
SetDelaySelf(aDelay);
|
||||
return TimerPeriodical::GetPeriodical()->AddTimer(this);
|
||||
}
|
||||
|
||||
nsresult TimerImpl::Init(nsITimerCallback *aCallback,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mCallbackObject = aCallback;
|
||||
SetDelaySelf(aDelay);
|
||||
return TimerPeriodical::GetPeriodical()->AddTimer(this);
|
||||
}
|
||||
|
||||
void TimerImpl::Cancel()
|
||||
{
|
||||
TimerPeriodical::GetPeriodical()->RemoveTimer(this);
|
||||
}
|
||||
|
||||
PRUint32 TimerImpl::GetDelay()
|
||||
{
|
||||
return mDelay;
|
||||
}
|
||||
|
||||
void TimerImpl::SetDelay(PRUint32 aDelay)
|
||||
{
|
||||
SetDelaySelf(aDelay);
|
||||
// Make sure that timer was sorted
|
||||
NS_ADDREF(this);
|
||||
TimerPeriodical::GetPeriodical()->RemoveTimer(this);
|
||||
TimerPeriodical::GetPeriodical()->AddTimer(this);
|
||||
NS_RELEASE(this);
|
||||
}
|
||||
|
||||
void* TimerImpl::GetClosure()
|
||||
{
|
||||
return mClosure;
|
||||
}
|
||||
|
||||
void TimerImpl::Fire()
|
||||
{
|
||||
if (mCallbackFunc != NULL) {
|
||||
(*mCallbackFunc)(this, mClosure);
|
||||
}
|
||||
else if (mCallbackObject != NULL) {
|
||||
mCallbackObject->Notify(this); // Fire the timer
|
||||
}
|
||||
}
|
||||
|
||||
void TimerImpl::SetDelaySelf( PRUint32 aDelay )
|
||||
{
|
||||
mDelay = aDelay;
|
||||
mFireTime = TickCount() + (mDelay * 3) / 50; // We need mFireTime in ticks (1/60th)
|
||||
// but aDelay is in 1000th (60/1000 = 3/50)
|
||||
}
|
||||
|
||||
TimerPeriodical * TimerPeriodical::gPeriodical = NULL;
|
||||
|
||||
TimerPeriodical * TimerPeriodical::GetPeriodical()
|
||||
{
|
||||
if (gPeriodical == NULL)
|
||||
gPeriodical = new TimerPeriodical();
|
||||
return gPeriodical;
|
||||
}
|
||||
|
||||
TimerPeriodical::TimerPeriodical()
|
||||
{
|
||||
mTimers.SetComparator( new TimerImplComparator() );
|
||||
mTimers.SetKeepSorted( true );
|
||||
}
|
||||
|
||||
TimerPeriodical::~TimerPeriodical()
|
||||
{
|
||||
PR_ASSERT(mTimers.GetCount() == 0);
|
||||
}
|
||||
|
||||
nsresult TimerPeriodical::AddTimer( TimerImpl * aTimer)
|
||||
{
|
||||
try
|
||||
{
|
||||
NS_ADDREF(aTimer);
|
||||
mTimers.AddItem( &aTimer );
|
||||
StartRepeating();
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult TimerPeriodical::RemoveTimer( TimerImpl * aTimer)
|
||||
{
|
||||
mTimers.SetComparator(LLongComparator::GetComparator(), false);
|
||||
mTimers.Remove(&aTimer);
|
||||
mTimers.SetComparator(new TimerImplComparator());
|
||||
|
||||
NS_RELEASE( aTimer );
|
||||
if ( mTimers.GetCount() == 0 )
|
||||
StopRepeating();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Called through every event loop
|
||||
// Loops through the list of available timers, and
|
||||
// fires off the available ones
|
||||
void TimerPeriodical::SpendTime( const EventRecord &inMacEvent)
|
||||
{
|
||||
LArrayIterator iter(mTimers);
|
||||
TimerImpl * timer;
|
||||
while (iter.Next(&timer))
|
||||
{
|
||||
if (timer->GetFireTime() <= inMacEvent.when)
|
||||
{
|
||||
//NS_ADDREF(timer);
|
||||
RemoveTimer(timer);
|
||||
timer->Fire();
|
||||
//NS_RELEASE(timer);
|
||||
}
|
||||
else
|
||||
break; // Items are sorted, so we do not need to iterate until the end
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// class TimerImplComparator implementation
|
||||
//
|
||||
Int32 TimerImplComparator::Compare(
|
||||
const void* inItemOne,
|
||||
const void* inItemTwo,
|
||||
Uint32 inSizeOne,
|
||||
Uint32 inSizeTwo) const
|
||||
{
|
||||
const TimerImpl *timerOne = reinterpret_cast<const TimerImpl *>(*(TimerImpl **)inItemOne);
|
||||
const TimerImpl *timerTwo = reinterpret_cast<const TimerImpl *>(*(TimerImpl **)inItemTwo);
|
||||
|
||||
return (timerOne->GetFireTime() - timerTwo->GetFireTime());
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
|
||||
if (nsnull == aInstancePtrResult) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
TimerImpl *timer = new TimerImpl();
|
||||
if (nsnull == timer) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
104
mozilla/base/src/makefile.win
Normal file
104
mozilla/base/src/makefile.win
Normal file
@@ -0,0 +1,104 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=..\..
|
||||
IGNORE_MANIFEST=1
|
||||
|
||||
DIRS = windows
|
||||
|
||||
DEFINES=-D_IMPL_NS_BASE -DWIN32_LEAN_AND_MEAN
|
||||
LIBRARY_NAME=raptorbase
|
||||
|
||||
CPPSRCS = \
|
||||
nsArena.cpp \
|
||||
nsAtomTable.cpp \
|
||||
nsBTree.cpp \
|
||||
nsByteBuffer.cpp \
|
||||
nsCRT.cpp \
|
||||
nsDeque.cpp \
|
||||
nsRBTree.cpp \
|
||||
nsSizeOfHandler.cpp \
|
||||
nsString.cpp \
|
||||
nsUnicharBuffer.cpp \
|
||||
nsUnicharInputStream.cpp \
|
||||
nsVoidArray.cpp \
|
||||
nsFileSpec.cpp \
|
||||
nsFileStream.cpp \
|
||||
$(NULL)
|
||||
|
||||
CPP_OBJS = \
|
||||
.\$(OBJDIR)\nsArena.obj \
|
||||
.\$(OBJDIR)\nsAtomTable.obj \
|
||||
.\$(OBJDIR)\nsBTree.obj \
|
||||
.\$(OBJDIR)\nsByteBuffer.obj \
|
||||
.\$(OBJDIR)\nsCRT.obj \
|
||||
.\$(OBJDIR)\nsDeque.obj \
|
||||
.\$(OBJDIR)\nsRBTree.obj \
|
||||
.\$(OBJDIR)\nsSizeOfHandler.obj \
|
||||
.\$(OBJDIR)\nsString.obj \
|
||||
.\$(OBJDIR)\nsUnicharBuffer.obj \
|
||||
.\$(OBJDIR)\nsUnicharInputStream.obj \
|
||||
.\$(OBJDIR)\nsVoidArray.obj \
|
||||
.\$(OBJDIR)\nsFileSpec.obj \
|
||||
.\$(OBJDIR)\nsFileStream.obj \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS=nscore.h nsIArena.h nsIAtom.h nsIByteBuffer.h \
|
||||
nsBTree.h nsCRT.h nsDeque.h nsITimer.h \
|
||||
nsITimerCallback.h nsIUnicharBuffer.h nsRBTree.h \
|
||||
nsIUnicharInputStream.h nsString.h nsVoidArray.h \
|
||||
nsUnitConversion.h \
|
||||
nsIBaseStream.h nsIInputStream.h nsIOutputStream.h \
|
||||
nsInt64.h nsTime.h
|
||||
|
||||
MODULE=raptor
|
||||
|
||||
REQUIRES=xpcom netlib raptor
|
||||
|
||||
LINCS=-I$(PUBLIC)\xpcom -I$(PUBLIC)\netlib \
|
||||
-I$(PUBLIC)\raptor
|
||||
|
||||
MAKE_OBJ_TYPE = DLL
|
||||
DLLNAME = raptorbase
|
||||
DLL=.\$(OBJDIR)\$(DLLNAME).dll
|
||||
|
||||
OBJS = $(OBJS) .\$(OBJDIR)\nsTimer.obj
|
||||
|
||||
LCFLAGS = \
|
||||
$(LCFLAGS) \
|
||||
$(DEFINES) \
|
||||
$(NULL)
|
||||
|
||||
# These are the libraries we need to link with to create the dll
|
||||
LLIBS= \
|
||||
$(DIST)\lib\xpcom32.lib \
|
||||
$(DIST)\lib\libplc21.lib \
|
||||
$(LIBNSPR)
|
||||
!if "$(MOZ_BITS)"=="32" && defined(MOZ_DEBUG) && defined(GLOWCODE)
|
||||
LLIBS=$(LLIBS) $(GLOWDIR)\glowcode.lib
|
||||
!endif
|
||||
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
libs:: $(DLL)
|
||||
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin
|
||||
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib
|
||||
|
||||
clobber::
|
||||
rm -f $(DIST)\bin\$(DLLNAME).dll
|
||||
rm -f $(DIST)\lib\$(DLLNAME).lib
|
||||
36
mozilla/base/src/motif/Makefile.in
Normal file
36
mozilla/base/src/motif/Makefile.in
Normal file
@@ -0,0 +1,36 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
LIBRARY_NAME = gmbasemotif
|
||||
|
||||
MODULE=base
|
||||
|
||||
REQUIRES = xpcom raptor
|
||||
|
||||
DEFINES += -D_IMPL_NS_WIDGET
|
||||
|
||||
CPPSRCS = nsTimer.cpp
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
173
mozilla/base/src/motif/nsTimer.cpp
Normal file
173
mozilla/base/src/motif/nsTimer.cpp
Normal file
@@ -0,0 +1,173 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsITimer.h"
|
||||
#include "nsITimerCallback.h"
|
||||
#include "nsCRT.h"
|
||||
#include "prlog.h"
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include <X11/Intrinsic.h>
|
||||
|
||||
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
|
||||
|
||||
// Hack for now. This is Bad because it creates a dependency between the widget
|
||||
// library and this library. This needs to be replaced with having code
|
||||
// to pass an interface which can be queried for the app context.
|
||||
extern XtAppContext gAppContext;
|
||||
|
||||
extern void nsTimerExpired(XtPointer aCallData);
|
||||
|
||||
|
||||
/*
|
||||
* Implementation of timers using Xt timer facility
|
||||
*/
|
||||
class TimerImpl : public nsITimer {
|
||||
public:
|
||||
|
||||
public:
|
||||
TimerImpl();
|
||||
virtual ~TimerImpl();
|
||||
|
||||
virtual nsresult Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
virtual nsresult Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
virtual void Cancel();
|
||||
virtual PRUint32 GetDelay() { return mDelay; }
|
||||
virtual void SetDelay(PRUint32 aDelay) { mDelay=aDelay; };
|
||||
virtual void* GetClosure() { return mClosure; }
|
||||
|
||||
void FireTimeout();
|
||||
|
||||
private:
|
||||
nsresult Init(PRUint32 aDelay);
|
||||
|
||||
PRUint32 mDelay;
|
||||
nsTimerCallbackFunc mFunc;
|
||||
void *mClosure;
|
||||
nsITimerCallback *mCallback;
|
||||
// PRBool mRepeat;
|
||||
TimerImpl *mNext;
|
||||
XtIntervalId mTimerId;
|
||||
};
|
||||
|
||||
void TimerImpl::FireTimeout()
|
||||
{
|
||||
if (mFunc != NULL) {
|
||||
(*mFunc)(this, mClosure);
|
||||
}
|
||||
else if (mCallback != NULL) {
|
||||
mCallback->Notify(this); // Fire the timer
|
||||
}
|
||||
|
||||
// Always repeating here
|
||||
|
||||
// if (mRepeat)
|
||||
// mTimerId = XtAppAddTimeOut(gAppContext, GetDelay(),(XtTimerCallbackProc)nsTimerExpired, this);
|
||||
}
|
||||
|
||||
|
||||
TimerImpl::TimerImpl()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mFunc = NULL;
|
||||
mCallback = NULL;
|
||||
mNext = NULL;
|
||||
mTimerId = 0;
|
||||
mDelay = 0;
|
||||
mClosure = NULL;
|
||||
}
|
||||
|
||||
TimerImpl::~TimerImpl()
|
||||
{
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mFunc = aFunc;
|
||||
mClosure = aClosure;
|
||||
// mRepeat = aRepeat;
|
||||
|
||||
mTimerId = XtAppAddTimeOut(gAppContext, aDelay,(XtTimerCallbackProc)nsTimerExpired, this);
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mCallback = aCallback;
|
||||
// mRepeat = aRepeat;
|
||||
|
||||
mTimerId = XtAppAddTimeOut(gAppContext, aDelay, (XtTimerCallbackProc)nsTimerExpired, this);
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(PRUint32 aDelay)
|
||||
{
|
||||
mDelay = aDelay;
|
||||
NS_ADDREF(this);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
|
||||
|
||||
|
||||
void
|
||||
TimerImpl::Cancel()
|
||||
{
|
||||
XtRemoveTimeOut(mTimerId);
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
|
||||
if (nsnull == aInstancePtrResult) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
TimerImpl *timer = new TimerImpl();
|
||||
if (nsnull == timer) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
|
||||
|
||||
void nsTimerExpired(XtPointer aCallData)
|
||||
{
|
||||
TimerImpl* timer = (TimerImpl *)aCallData;
|
||||
timer->FireTimeout();
|
||||
}
|
||||
80
mozilla/base/src/nsArena.cpp
Normal file
80
mozilla/base/src/nsArena.cpp
Normal file
@@ -0,0 +1,80 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsIArena.h"
|
||||
#include "nsCRT.h"
|
||||
|
||||
#define PL_ARENA_CONST_ALIGN_MASK 7
|
||||
#include "plarena.h"
|
||||
|
||||
static NS_DEFINE_IID(kArenaIID, NS_IARENA_IID);
|
||||
|
||||
// Simple arena implementation layered on plarena
|
||||
class ArenaImpl : public nsIArena {
|
||||
public:
|
||||
ArenaImpl(PRInt32 aBlockSize);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
virtual void* Alloc(PRInt32 aSize);
|
||||
|
||||
protected:
|
||||
~ArenaImpl();
|
||||
|
||||
PLArenaPool mPool;
|
||||
PRInt32 mBlockSize;
|
||||
};
|
||||
|
||||
ArenaImpl::ArenaImpl(PRInt32 aBlockSize)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
if (aBlockSize < NS_MIN_ARENA_BLOCK_SIZE) {
|
||||
aBlockSize = NS_DEFAULT_ARENA_BLOCK_SIZE;
|
||||
}
|
||||
PL_INIT_ARENA_POOL(&mPool, "nsIArena", aBlockSize);
|
||||
mBlockSize = aBlockSize;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(ArenaImpl,kArenaIID)
|
||||
|
||||
ArenaImpl::~ArenaImpl()
|
||||
{
|
||||
PL_FinishArenaPool(&mPool);
|
||||
}
|
||||
|
||||
void* ArenaImpl::Alloc(PRInt32 size)
|
||||
{
|
||||
// Adjust size so that it's a multiple of sizeof(double)
|
||||
PRInt32 align = size & (sizeof(double) - 1);
|
||||
if (0 != align) {
|
||||
size += sizeof(double) - align;
|
||||
}
|
||||
|
||||
void* p;
|
||||
PL_ARENA_ALLOCATE(p, &mPool, size);
|
||||
return p;
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewHeapArena(nsIArena** aInstancePtrResult,
|
||||
PRInt32 aArenaBlockSize)
|
||||
{
|
||||
ArenaImpl* it = new ArenaImpl(aArenaBlockSize);
|
||||
if (nsnull == it) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
return it->QueryInterface(kArenaIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
154
mozilla/base/src/nsAtomTable.cpp
Normal file
154
mozilla/base/src/nsAtomTable.cpp
Normal file
@@ -0,0 +1,154 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsIAtom.h"
|
||||
#include "nsString.h"
|
||||
#include "nsCRT.h"
|
||||
#include "plhash.h"
|
||||
#include "nsISizeOfHandler.h"
|
||||
|
||||
/**
|
||||
* The shared hash table for atom lookups.
|
||||
*/
|
||||
static nsrefcnt gAtoms;
|
||||
static struct PLHashTable* gAtomHashTable;
|
||||
|
||||
class AtomImpl : public nsIAtom {
|
||||
public:
|
||||
AtomImpl();
|
||||
~AtomImpl();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
void* operator new(size_t size, const PRUnichar* us, PRInt32 uslen);
|
||||
|
||||
virtual void ToString(nsString& aBuf) const;
|
||||
|
||||
virtual const PRUnichar* GetUnicode() const;
|
||||
|
||||
NS_IMETHOD SizeOf(nsISizeOfHandler* aHandler) const;
|
||||
|
||||
// Actually more; 0 terminated. This slot is reserved for the
|
||||
// terminating zero.
|
||||
PRUnichar mString[1];
|
||||
};
|
||||
|
||||
AtomImpl::AtomImpl()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
// Every live atom holds a reference on the atom hashtable
|
||||
gAtoms++;
|
||||
}
|
||||
|
||||
AtomImpl::~AtomImpl()
|
||||
{
|
||||
NS_PRECONDITION(nsnull != gAtomHashTable, "null atom hashtable");
|
||||
if (nsnull != gAtomHashTable) {
|
||||
PL_HashTableRemove(gAtomHashTable, mString);
|
||||
nsrefcnt cnt = --gAtoms;
|
||||
if (0 == cnt) {
|
||||
// When the last atom is destroyed, the atom arena is destroyed
|
||||
NS_ASSERTION(0 == gAtomHashTable->nentries, "bad atom table");
|
||||
PL_HashTableDestroy(gAtomHashTable);
|
||||
gAtomHashTable = nsnull;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static NS_DEFINE_IID(kIAtomIID, NS_IATOM_IID);
|
||||
NS_IMPL_ISUPPORTS(AtomImpl, kIAtomIID);
|
||||
|
||||
void* AtomImpl::operator new(size_t size, const PRUnichar* us, PRInt32 uslen)
|
||||
{
|
||||
size = size + uslen * sizeof(PRUnichar);
|
||||
AtomImpl* ii = (AtomImpl*) new char[size];
|
||||
nsCRT::memcpy(ii->mString, us, uslen * sizeof(PRUnichar));
|
||||
ii->mString[uslen] = 0;
|
||||
return ii;
|
||||
}
|
||||
|
||||
void AtomImpl::ToString(nsString& aBuf) const
|
||||
{
|
||||
aBuf.SetLength(0);
|
||||
aBuf.Append(mString, nsCRT::strlen(mString));
|
||||
}
|
||||
|
||||
const PRUnichar* AtomImpl::GetUnicode() const
|
||||
{
|
||||
return mString;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
AtomImpl::SizeOf(nsISizeOfHandler* aHandler) const
|
||||
{
|
||||
aHandler->Add(sizeof(*this) + nsCRT::strlen(mString) * sizeof(PRUnichar));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
static PLHashNumber HashKey(const PRUnichar* k)
|
||||
{
|
||||
return (PLHashNumber) nsCRT::HashValue(k);
|
||||
}
|
||||
|
||||
static PRIntn CompareKeys(const PRUnichar* k1, const PRUnichar* k2)
|
||||
{
|
||||
return nsCRT::strcmp(k1, k2) == 0;
|
||||
}
|
||||
|
||||
NS_BASE nsIAtom* NS_NewAtom(const char* isolatin1)
|
||||
{
|
||||
nsAutoString tmp(isolatin1);
|
||||
return NS_NewAtom(tmp.GetUnicode());
|
||||
}
|
||||
|
||||
NS_BASE nsIAtom* NS_NewAtom(const nsString& aString)
|
||||
{
|
||||
return NS_NewAtom(aString.GetUnicode());
|
||||
}
|
||||
|
||||
NS_BASE nsIAtom* NS_NewAtom(const PRUnichar* us)
|
||||
{
|
||||
if (nsnull == gAtomHashTable) {
|
||||
gAtomHashTable = PL_NewHashTable(8, (PLHashFunction) HashKey,
|
||||
(PLHashComparator) CompareKeys,
|
||||
(PLHashComparator) nsnull,
|
||||
nsnull, nsnull);
|
||||
}
|
||||
PRInt32 uslen;
|
||||
PRUint32 hashCode = nsCRT::HashValue(us, &uslen);
|
||||
PLHashEntry** hep = PL_HashTableRawLookup(gAtomHashTable, hashCode, us);
|
||||
PLHashEntry* he = *hep;
|
||||
if (nsnull != he) {
|
||||
nsIAtom* id = (nsIAtom*) he->value;
|
||||
NS_ADDREF(id);
|
||||
return id;
|
||||
}
|
||||
AtomImpl* id = new(us, uslen) AtomImpl();
|
||||
PL_HashTableRawAdd(gAtomHashTable, hep, hashCode, id->mString, id);
|
||||
NS_ADDREF(id);
|
||||
return id;
|
||||
}
|
||||
|
||||
NS_BASE nsrefcnt NS_GetNumberOfAtoms(void)
|
||||
{
|
||||
if (nsnull != gAtomHashTable) {
|
||||
NS_PRECONDITION(nsrefcnt(gAtomHashTable->nentries) == gAtoms, "bad atom table");
|
||||
}
|
||||
return gAtoms;
|
||||
}
|
||||
402
mozilla/base/src/nsBTree.cpp
Normal file
402
mozilla/base/src/nsBTree.cpp
Normal file
@@ -0,0 +1,402 @@
|
||||
|
||||
/**
|
||||
* This file defines the binary tree class and it
|
||||
* nsNode child class.
|
||||
*
|
||||
* This simple version stores nodes, and the
|
||||
* nodes store void* ptrs.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
|
||||
#include "nsBTree.h"
|
||||
|
||||
/**
|
||||
* default constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsNode::nsNode(){
|
||||
mLeft=0;
|
||||
mRight=0;
|
||||
mParent=0;
|
||||
mColor=eBlack;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode::nsNode(const nsNode& aNode){
|
||||
mLeft=aNode.mLeft;
|
||||
mRight=aNode.mRight;
|
||||
mParent=aNode.mParent;
|
||||
mColor=aNode.mColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* destructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsNode::~nsNode(){
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive ptr to parent node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return ptr to parent node
|
||||
*/
|
||||
nsNode* nsNode::GetParentNode(void) const{
|
||||
return mParent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve ptr to left (less) node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return ptr to left (may be NULL)
|
||||
*/
|
||||
nsNode* nsNode::GetLeftNode(void) const{
|
||||
return mLeft;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve ptr to right (more) node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return ptr to right node (may be NULL)
|
||||
*/
|
||||
nsNode* nsNode::GetRightNode(void) const{
|
||||
return mRight;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode& nsNode::operator=(const nsNode& aNode){
|
||||
if(this!=&aNode){
|
||||
mLeft=aNode.mLeft;
|
||||
mRight=aNode.mRight;
|
||||
mParent=aNode.mParent;
|
||||
mColor=aNode.mColor;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/********************************************************
|
||||
* Here comes the BTREE class...
|
||||
********************************************************/
|
||||
|
||||
/**
|
||||
* nsBTree constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsBTree::nsBTree(){
|
||||
mRoot=0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* destructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsBTree::~nsBTree(){
|
||||
if(mRoot){
|
||||
//walk the tree and destroy the children.
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a node, we're supposed to add it into
|
||||
* our tree.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode to be added to tree
|
||||
* @return ptr to added node or NULL
|
||||
*/
|
||||
nsNode* nsBTree::Add(nsNode& aNode){
|
||||
|
||||
nsNode* node1=mRoot; //x
|
||||
nsNode* node2=0; //y
|
||||
while(node1) {
|
||||
node2=node1;
|
||||
if(aNode<*node1)
|
||||
node1=node1->mLeft;
|
||||
else node1=node1->mRight;
|
||||
}
|
||||
aNode.mParent=node2;
|
||||
if(!node2){
|
||||
mRoot=&aNode;
|
||||
}
|
||||
else{
|
||||
if(aNode<*node2)
|
||||
node2->mLeft=&aNode;
|
||||
else node2->mRight=&aNode;
|
||||
}
|
||||
|
||||
return &aNode;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Removes given node from tree if present.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode to be found and removed
|
||||
* @return ptr to remove node, or NULL
|
||||
*/
|
||||
nsNode* nsBTree::Remove(nsNode& aNode){
|
||||
nsNode* result=0;
|
||||
nsNode* node3=Find(aNode);
|
||||
|
||||
if(node3) {
|
||||
nsNode* node1;
|
||||
nsNode* node2;
|
||||
|
||||
if((!node3->mLeft) || (!node3->mRight))
|
||||
node2=node3;
|
||||
else node2=After(*node3);
|
||||
|
||||
if(node2->mLeft)
|
||||
node1=node2->mLeft;
|
||||
else node1=node2->mRight;
|
||||
|
||||
if(node1)
|
||||
node1->mParent=node2->mParent;
|
||||
|
||||
if(node2->mParent) {
|
||||
if(node2==node2->mParent->mLeft)
|
||||
node2->mParent->mLeft=node1;
|
||||
else node2->mParent->mRight=node1;
|
||||
}
|
||||
else mRoot=node1;
|
||||
|
||||
if(node2!=node3)
|
||||
(*node3)==(*node2);
|
||||
|
||||
if(node2->mColor == nsNode::eBlack)
|
||||
ReBalance(*node1);
|
||||
|
||||
delete node2;
|
||||
result=&aNode;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the tree of any data.
|
||||
* Be careful here if your objects are heap based!
|
||||
* This method doesn't free the objects, so if you
|
||||
* don't have your own pointers, they will become
|
||||
* orphaned.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return this
|
||||
*/
|
||||
nsBTree& nsBTree::Empty(nsNode* aNode) {
|
||||
mRoot=0;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method destroys all the objects in the tree.
|
||||
* WARNING: Never call this method on stored objects
|
||||
* that are stack-based!
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return this
|
||||
*/
|
||||
nsBTree& nsBTree::Erase(nsNode* aNode){
|
||||
// nsNode* node1 =(aNode) ? aNode : mRoot;
|
||||
|
||||
if(aNode) {
|
||||
Erase(aNode->mLeft); //begin by walking left side
|
||||
Erase(aNode->mRight); //then search right side
|
||||
delete aNode; //until a leaf, then delete
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve ptr to first node in tree
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return
|
||||
*/
|
||||
nsNode* nsBTree::First(void) const{
|
||||
if(mRoot)
|
||||
return First(*mRoot);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive ptr to first node rel to given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to begin scan from
|
||||
* @return ptr to first node from given node or NULL
|
||||
*/
|
||||
nsNode* nsBTree::First(const nsNode& aNode) const{
|
||||
nsNode* result=0;
|
||||
|
||||
if(mRoot) {
|
||||
result=mRoot;
|
||||
while(result->GetLeftNode()) {
|
||||
result=result->GetLeftNode();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive ptr to last node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return ptr to last node rel to root or NULL
|
||||
*/
|
||||
nsNode* nsBTree::Last(void) const{
|
||||
if(mRoot)
|
||||
return Last(*mRoot);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive ptr to last node rel to given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to begin scan from
|
||||
* @return ptr to first node from given node or NULL
|
||||
*/
|
||||
nsNode* nsBTree::Last(const nsNode& aNode) const{
|
||||
nsNode* result=0;
|
||||
|
||||
if(mRoot) {
|
||||
result=mRoot;
|
||||
while(result->GetRightNode()) {
|
||||
result=result->GetRightNode();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrive ptr to prior node rel to given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to begin scan from
|
||||
* @return ptr to prior node from given node or NULL
|
||||
*/
|
||||
nsNode* nsBTree::Before(const nsNode& aNode) const{
|
||||
|
||||
if(aNode.GetLeftNode())
|
||||
return Last(*aNode.GetLeftNode());
|
||||
|
||||
//otherwise...
|
||||
|
||||
nsNode* node1=(nsNode*)&aNode;
|
||||
nsNode* node2=aNode.GetParentNode();
|
||||
|
||||
while((node2) && (node1==node2->GetLeftNode())) {
|
||||
node1=node2;
|
||||
node2=node2->GetParentNode();
|
||||
}
|
||||
return node2;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrive ptr to next node rel to given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to begin scan from
|
||||
* @return ptr to next node from given node or NULL
|
||||
*/
|
||||
nsNode* nsBTree::After(const nsNode& aNode) const{
|
||||
|
||||
if(aNode.GetRightNode())
|
||||
return First(*aNode.GetRightNode());
|
||||
|
||||
//otherwise...
|
||||
|
||||
nsNode* node1=(nsNode*)&aNode;
|
||||
nsNode* node2=aNode.GetParentNode();
|
||||
|
||||
while((node2) && (node1==node2->GetRightNode())) {
|
||||
node1=node2;
|
||||
node2=node2->GetParentNode();
|
||||
}
|
||||
|
||||
return node2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scan for given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to find
|
||||
* @return ptr to given node, or NULL
|
||||
*/
|
||||
nsNode* nsBTree::Find(const nsNode& aNode) const{
|
||||
nsNode* result=mRoot;
|
||||
|
||||
while((result) && (!(aNode==(*result)))) {
|
||||
if(aNode<*result)
|
||||
result=result->mLeft;
|
||||
else result=result->mRight;
|
||||
}
|
||||
return (nsNode*)result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebalances tree around the given node. This only
|
||||
* needs to be called after a node is deleted.
|
||||
* This method does nothing for btrees, but is
|
||||
* needed for RBTrees.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to balance around
|
||||
* @return this
|
||||
*/
|
||||
nsBTree& nsBTree::ReBalance(nsNode& aNode){
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
const nsBTree& nsBTree::ForEach(nsNodeFunctor& aFunctor,nsNode* aNode) const{
|
||||
nsNode* node1 =(aNode) ? aNode : mRoot;
|
||||
|
||||
if(node1) {
|
||||
if(node1->mLeft)
|
||||
ForEach(aFunctor,node1->mLeft); //begin by walking left side
|
||||
aFunctor(*node1);
|
||||
if(node1->mRight)
|
||||
ForEach(aFunctor,node1->mRight); //then search right side
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
283
mozilla/base/src/nsBTree.h
Normal file
283
mozilla/base/src/nsBTree.h
Normal file
@@ -0,0 +1,283 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file defines the binary tree class and it
|
||||
* nsNode child class. Note that like all nsBTree
|
||||
* containers, this one does not automatically balance.
|
||||
* (Find for random data, bad for pre-ordered data).
|
||||
*
|
||||
* This simple version stores nodes, and the
|
||||
* nodes store void* ptrs.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* nsNode
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
|
||||
#ifndef _BTREE_H
|
||||
#define _BTREE_H
|
||||
|
||||
#include "nscore.h"
|
||||
|
||||
struct NS_BASE nsNode {
|
||||
|
||||
/**
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode();
|
||||
|
||||
/**
|
||||
* Copy constructor
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsNode(const nsNode& aNode);
|
||||
|
||||
/**
|
||||
* destructor
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
virtual ~nsNode();
|
||||
|
||||
/**
|
||||
* Retrieve parent node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return
|
||||
*/
|
||||
nsNode* GetParentNode(void) const;
|
||||
|
||||
/**
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode* GetLeftNode() const;
|
||||
|
||||
/**
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode* GetRightNode() const;
|
||||
|
||||
/**
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
virtual nsNode& operator=(const nsNode& aNode);
|
||||
|
||||
|
||||
/**
|
||||
* This method gets called to determine which of
|
||||
* two nodes is less. When you create your own
|
||||
* subclass of nsNode, this is the most important
|
||||
* method for you to overload.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
virtual PRBool operator<(const nsNode& aNode) const=0;
|
||||
|
||||
/**
|
||||
* This method gets called to determine which of
|
||||
* two nodes is less. When you create your own
|
||||
* subclass of nsNode, this is the most important
|
||||
* method for you to overload.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
virtual PRBool operator==(const nsNode& aNode) const=0;
|
||||
|
||||
enum eRBColor {eRed,eBlack};
|
||||
|
||||
nsNode* mParent;
|
||||
nsNode* mLeft;
|
||||
nsNode* mRight;
|
||||
eRBColor mColor;
|
||||
};
|
||||
|
||||
/**
|
||||
* The Nodefunctor class is used when you want to create
|
||||
* callbacks between the nsRBTree and your generic code.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
*/
|
||||
class NS_BASE nsNodeFunctor {
|
||||
public:
|
||||
virtual nsNodeFunctor& operator()(nsNode& aNode)=0;
|
||||
};
|
||||
|
||||
|
||||
/****************************************************
|
||||
* Here comes the nsBTree class...
|
||||
****************************************************/
|
||||
|
||||
class NS_BASE nsBTree {
|
||||
public:
|
||||
friend class nsBTreeIterator;
|
||||
|
||||
nsBTree();
|
||||
virtual ~nsBTree();
|
||||
|
||||
/**
|
||||
* Add given node reference into our tree.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode is a ref to a node to be added
|
||||
* @return newly added node
|
||||
*/
|
||||
nsNode* Add(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Remove given node reference into our tree.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode is a ref to a node to be removed
|
||||
* @return Ptr to node if found (and removed) or NULL
|
||||
*/
|
||||
nsNode* Remove(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Clears the tree of any data.
|
||||
* Be careful here if your objects are heap based!
|
||||
* This method doesn't free the objects, so if you
|
||||
* don't have your own pointers, they will become
|
||||
* orphaned.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return this
|
||||
*/
|
||||
nsBTree& Empty(nsNode* aNode=0);
|
||||
|
||||
/**
|
||||
* This method destroys all the objects in the tree.
|
||||
* WARNING: Never call this method on stored objects
|
||||
* that are stack-based!
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return this
|
||||
*/
|
||||
nsBTree& Erase(nsNode* aNode=0);
|
||||
|
||||
/**
|
||||
* Retrieve ptr to 1st node in tree (starting at root)
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return ptr to 1st node, possible to be NULL
|
||||
*/
|
||||
nsNode* First(void) const;
|
||||
|
||||
/**
|
||||
* Find first node in tree starting at given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode node to begin 1st search from
|
||||
* @return ptr to 1st node below given node
|
||||
*/
|
||||
nsNode* First(const nsNode& aNode) const;
|
||||
|
||||
/**
|
||||
* Retrieve ptr to last node in tree relative to root.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @return ptr to last node or NULL
|
||||
*/
|
||||
nsNode* Last(void) const;
|
||||
|
||||
/**
|
||||
* Retrieve ptr to last node in tree relative to given node.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to find last node from
|
||||
* @return ptr to last node or NULL
|
||||
*/
|
||||
nsNode* Last(const nsNode& aNode) const;
|
||||
|
||||
/**
|
||||
* Retrieve a ptr to the node that preceeds given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode used as reference to find prev.
|
||||
* @return ptr to prev node or NULL
|
||||
*/
|
||||
nsNode* Before(const nsNode& aNode) const;
|
||||
|
||||
/**
|
||||
* Retrieve a ptr to the node after given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode used as reference to find next.
|
||||
* @return ptr to next node or NULL
|
||||
*/
|
||||
nsNode* After(const nsNode& aNode) const;
|
||||
|
||||
/**
|
||||
* Find given node in tree.
|
||||
* (Why would you want to find a node you already have?)
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode is the node you're searching for
|
||||
* @return ptr to node if found, or NULL
|
||||
*/
|
||||
nsNode* Find(const nsNode& aNode) const;
|
||||
|
||||
/**
|
||||
* Walks the tree, starting with root.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
virtual const nsBTree& ForEach(nsNodeFunctor& aFunctor,nsNode* aNode=0) const;
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Rebalances tree around the given node. This only
|
||||
* needs to be called after a node is deleted.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to balance around
|
||||
* @return this
|
||||
*/
|
||||
virtual nsBTree& ReBalance(nsNode& aNode);
|
||||
|
||||
|
||||
nsNode* mRoot;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
138
mozilla/base/src/nsByteBuffer.cpp
Normal file
138
mozilla/base/src/nsByteBuffer.cpp
Normal file
@@ -0,0 +1,138 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsIByteBuffer.h"
|
||||
#include "nsIInputStream.h"
|
||||
#include "nsCRT.h"
|
||||
|
||||
#define MIN_BUFFER_SIZE 32
|
||||
|
||||
class ByteBufferImpl : public nsIByteBuffer {
|
||||
public:
|
||||
ByteBufferImpl(PRUint32 aBufferSize);
|
||||
~ByteBufferImpl();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
virtual PRUint32 GetLength(void) const;
|
||||
virtual PRUint32 GetBufferSize(void) const;
|
||||
virtual char* GetBuffer() const;
|
||||
virtual PRBool Grow(PRUint32 aNewSize);
|
||||
virtual PRInt32 Fill(nsresult* aErrorCode, nsIInputStream* aStream,
|
||||
PRUint32 aKeep);
|
||||
|
||||
char* mBuffer;
|
||||
PRUint32 mSpace;
|
||||
PRUint32 mLength;
|
||||
};
|
||||
|
||||
ByteBufferImpl::ByteBufferImpl(PRUint32 aBufferSize)
|
||||
{
|
||||
if (aBufferSize < MIN_BUFFER_SIZE) {
|
||||
aBufferSize = MIN_BUFFER_SIZE;
|
||||
}
|
||||
mSpace = aBufferSize;
|
||||
mBuffer = new char[aBufferSize];
|
||||
mLength = 0;
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
NS_DEFINE_IID(kByteBufferIID,NS_IBYTE_BUFFER_IID);
|
||||
NS_IMPL_ISUPPORTS(ByteBufferImpl,kByteBufferIID)
|
||||
|
||||
ByteBufferImpl::~ByteBufferImpl()
|
||||
{
|
||||
if (nsnull != mBuffer) {
|
||||
delete mBuffer;
|
||||
mBuffer = nsnull;
|
||||
}
|
||||
mLength = 0;
|
||||
}
|
||||
|
||||
PRUint32 ByteBufferImpl::GetLength(void) const
|
||||
{
|
||||
return mLength;
|
||||
}
|
||||
|
||||
PRUint32 ByteBufferImpl::GetBufferSize(void) const
|
||||
{
|
||||
return mSpace;
|
||||
}
|
||||
|
||||
char* ByteBufferImpl::GetBuffer(void) const
|
||||
{
|
||||
return mBuffer;
|
||||
}
|
||||
|
||||
PRBool ByteBufferImpl::Grow(PRUint32 aNewSize)
|
||||
{
|
||||
if (aNewSize < MIN_BUFFER_SIZE) {
|
||||
aNewSize = MIN_BUFFER_SIZE;
|
||||
}
|
||||
char* newbuf = new char[aNewSize];
|
||||
if (nsnull != newbuf) {
|
||||
if (0 != mLength) {
|
||||
nsCRT::memcpy(newbuf, mBuffer, mLength);
|
||||
}
|
||||
delete mBuffer;
|
||||
mBuffer = newbuf;
|
||||
return PR_TRUE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRInt32 ByteBufferImpl::Fill(nsresult* aErrorCode, nsIInputStream* aStream,
|
||||
PRUint32 aKeep)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aStream, "null stream");
|
||||
NS_PRECONDITION(aKeep <= mLength, "illegal keep count");
|
||||
if ((nsnull == aStream) || (PRUint32(aKeep) > PRUint32(mLength))) {
|
||||
// whoops
|
||||
*aErrorCode = NS_BASE_STREAM_ILLEGAL_ARGS;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (0 != aKeep) {
|
||||
// Slide over kept data
|
||||
nsCRT::memmove(mBuffer, mBuffer + (mLength - aKeep), aKeep);
|
||||
}
|
||||
|
||||
// Read in some new data
|
||||
mLength = aKeep;
|
||||
PRUint32 amount = mSpace - aKeep;
|
||||
PRUint32 nb;
|
||||
*aErrorCode = aStream->Read(mBuffer, aKeep, amount, &nb);
|
||||
if (NS_SUCCEEDED(*aErrorCode)) {
|
||||
mLength += nb;
|
||||
}
|
||||
else
|
||||
nb = 0;
|
||||
return nb;
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewByteBuffer(nsIByteBuffer** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
PRUint32 aBufferSize)
|
||||
{
|
||||
if (nsnull != aOuter) {
|
||||
return NS_ERROR_NO_AGGREGATION;
|
||||
}
|
||||
ByteBufferImpl* it = new ByteBufferImpl(aBufferSize);
|
||||
if (nsnull == it) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
return it->QueryInterface(kByteBufferIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
409
mozilla/base/src/nsCRT.cpp
Normal file
409
mozilla/base/src/nsCRT.cpp
Normal file
@@ -0,0 +1,409 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* MODULE NOTES:
|
||||
* @update gess7/30/98
|
||||
*
|
||||
* Much as I hate to do it, we were using string compares wrong.
|
||||
* Often, programmers call functions like strcmp(s1,s2), and pass
|
||||
* one or more null strings. Rather than blow up on these, I've
|
||||
* added quick checks to ensure that cases like this don't cause
|
||||
* us to fail.
|
||||
*
|
||||
* In general, if you pass a null into any of these string compare
|
||||
* routines, we simply return 0.
|
||||
*/
|
||||
|
||||
|
||||
#include "nsCRT.h"
|
||||
|
||||
// XXX Bug: These tables don't lowercase the upper 128 characters properly
|
||||
|
||||
// This table maps uppercase characters to lower case characters;
|
||||
// characters that are neither upper nor lower case are unaffected.
|
||||
static const unsigned char kUpper2Lower[256] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 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,
|
||||
|
||||
// upper band mapped to lower [A-Z] => [a-z]
|
||||
97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
||||
112,113,114,115,116,117,118,119,120,121,122,
|
||||
|
||||
91, 92, 93, 94, 95,
|
||||
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
||||
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
||||
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
|
||||
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
|
||||
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
|
||||
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
|
||||
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
|
||||
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
|
||||
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
|
||||
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
||||
};
|
||||
|
||||
static const unsigned char kLower2Upper[256] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 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, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
||||
96,
|
||||
|
||||
// lower band mapped to upper [a-z] => [A-Z]
|
||||
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
||||
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
|
||||
|
||||
123,124,125,126,127,
|
||||
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
|
||||
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
|
||||
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
|
||||
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
|
||||
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
|
||||
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
|
||||
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
|
||||
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
||||
};
|
||||
|
||||
// XXX bug: this doesn't map 0x80 to 0x9f properly
|
||||
static const PRUnichar kIsoLatin1ToUCS2[256] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 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, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
||||
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
||||
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
||||
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
|
||||
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
|
||||
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
|
||||
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
|
||||
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
|
||||
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
|
||||
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
|
||||
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
#define TOLOWER(_ucs2) \
|
||||
(((_ucs2) < 256) ? PRUnichar(kUpper2Lower[_ucs2]) : _ToLower(_ucs2))
|
||||
|
||||
#define TOUPPER(_ucs2) \
|
||||
(((_ucs2) < 256) ? PRUnichar(kLower2Upper[_ucs2]) : _ToUpper(_ucs2))
|
||||
|
||||
static PRUnichar _ToLower(PRUnichar aChar)
|
||||
{
|
||||
// XXX need i18n code here
|
||||
return aChar;
|
||||
}
|
||||
|
||||
static PRUnichar _ToUpper(PRUnichar aChar)
|
||||
{
|
||||
// XXX need i18n code here
|
||||
return aChar;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
PRUnichar nsCRT::ToUpper(PRUnichar aChar)
|
||||
{
|
||||
return TOUPPER(aChar);
|
||||
}
|
||||
|
||||
PRUnichar nsCRT::ToLower(PRUnichar aChar)
|
||||
{
|
||||
return TOLOWER(aChar);
|
||||
}
|
||||
|
||||
PRInt32 nsCRT::strlen(const PRUnichar* s)
|
||||
{
|
||||
PRInt32 len = 0;
|
||||
if(s) {
|
||||
while (*s++ != 0) {
|
||||
len++;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compare unichar string ptrs, stopping at the 1st null
|
||||
* NOTE: If both are null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 and s2 both point to unichar strings
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strcmp(const PRUnichar* s1, const PRUnichar* s2)
|
||||
{
|
||||
if(s1 && s2) {
|
||||
for (;;) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = *s2++;
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
if ((0==c1) || (0==c2)) break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare unichar string ptrs, stopping at the 1st null or nth char.
|
||||
* NOTE: If either is null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 and s2 both point to unichar strings
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strncmp(const PRUnichar* s1, const PRUnichar* s2, PRInt32 n)
|
||||
{
|
||||
if(s1 && s2) {
|
||||
if(0<n) {
|
||||
while (--n >= 0) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = *s2++;
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
if ((0==c1) || (0==c2)) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compare unichar string ptrs without regard to case
|
||||
* NOTE: If both are null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 and s2 both point to unichar strings
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strcasecmp(const PRUnichar* s1, const PRUnichar* s2)
|
||||
{
|
||||
if(s1 && s2) {
|
||||
for (;;) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = *s2++;
|
||||
if (c1 != c2) {
|
||||
c1 = TOLOWER(c1);
|
||||
c2 = TOLOWER(c2);
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if ((0==c1) || (0==c2)) break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare unichar string ptrs, stopping at the 1st null or nth char;
|
||||
* also ignoring the case of characters.
|
||||
* NOTE: If both are null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 and s2 both point to unichar strings
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strncasecmp(const PRUnichar* s1, const PRUnichar* s2, PRInt32 n)
|
||||
{
|
||||
if(s1 && s2) {
|
||||
if(0<n){
|
||||
while (--n >= 0) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = *s2++;
|
||||
if (c1 != c2) {
|
||||
c1 = TOLOWER(c1);
|
||||
c2 = TOLOWER(c2);
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if ((0==c1) || (0==c2)) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compare a unichar string ptr to cstring.
|
||||
* NOTE: If both are null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 points to unichar string
|
||||
* @param s2 points to cstring
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strcmp(const PRUnichar* s1, const char* s2)
|
||||
{
|
||||
if(s1 && s2) {
|
||||
for (;;) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
if ((0==c1) || (0==c2)) break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compare a unichar string ptr to cstring, up to N chars.
|
||||
* NOTE: If both are null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 points to unichar string
|
||||
* @param s2 points to cstring
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strncmp(const PRUnichar* s1, const char* s2, PRInt32 n)
|
||||
{
|
||||
if(s1 && s2) {
|
||||
if(0<n){
|
||||
while (--n >= 0) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
if ((0==c1) || (0==c2)) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare a unichar string ptr to cstring without regard to case
|
||||
* NOTE: If both are null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 points to unichar string
|
||||
* @param s2 points to cstring
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strcasecmp(const PRUnichar* s1, const char* s2)
|
||||
{
|
||||
if(s1 && s2) {
|
||||
for (;;) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
|
||||
if (c1 != c2) {
|
||||
c1 = TOLOWER(c1);
|
||||
c2 = TOLOWER(c2);
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if ((0==c1) || (0==c2)) break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Caseless compare up to N chars between unichar string ptr to cstring.
|
||||
* NOTE: If both are null, we return 0.
|
||||
* @update gess7/30/98
|
||||
* @param s1 points to unichar string
|
||||
* @param s2 points to cstring
|
||||
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
|
||||
*/
|
||||
PRInt32 nsCRT::strncasecmp(const PRUnichar* s1, const char* s2, PRInt32 n)
|
||||
{
|
||||
if(s1 && s2){
|
||||
if(0<n){
|
||||
while (--n >= 0) {
|
||||
PRUnichar c1 = *s1++;
|
||||
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
|
||||
if (c1 != c2) {
|
||||
c1 = TOLOWER(c1);
|
||||
c2 = TOLOWER(c2);
|
||||
if (c1 != c2) {
|
||||
if (c1 < c2) return -1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if (c1 == 0) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
PRUnichar* nsCRT::strdup(const PRUnichar* str)
|
||||
{
|
||||
PRInt32 len = nsCRT::strlen(str) + 1; // add one for null
|
||||
PRUnichar* rslt = new PRUnichar[len];
|
||||
if (rslt == NULL) return NULL;
|
||||
nsCRT::memcpy(rslt, str, len * sizeof(PRUnichar));
|
||||
return rslt;
|
||||
}
|
||||
|
||||
PRUint32 nsCRT::HashValue(const PRUnichar* us)
|
||||
{
|
||||
PRUint32 rv = 0;
|
||||
if(us) {
|
||||
PRUnichar ch;
|
||||
while ((ch = *us++) != 0) {
|
||||
// FYI: rv = rv*37 + ch
|
||||
rv = ((rv << 5) + (rv << 2) + rv) + ch;
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
PRUint32 nsCRT::HashValue(const PRUnichar* us, PRInt32* uslenp)
|
||||
{
|
||||
PRUint32 rv = 0;
|
||||
PRInt32 len = 0;
|
||||
PRUnichar ch;
|
||||
while ((ch = *us++) != 0) {
|
||||
// FYI: rv = rv*37 + ch
|
||||
rv = ((rv << 5) + (rv << 2) + rv) + ch;
|
||||
len++;
|
||||
}
|
||||
*uslenp = len;
|
||||
return rv;
|
||||
}
|
||||
|
||||
PRInt32 nsCRT::atoi( const PRUnichar *string )
|
||||
{
|
||||
return atoi(string);
|
||||
}
|
||||
|
||||
123
mozilla/base/src/nsCRT.h
Normal file
123
mozilla/base/src/nsCRT.h
Normal file
@@ -0,0 +1,123 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsCRT_h___
|
||||
#define nsCRT_h___
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "plstr.h"
|
||||
#include "nscore.h"
|
||||
|
||||
/// This is a wrapper class around all the C runtime functions.
|
||||
|
||||
class NS_BASE nsCRT {
|
||||
public:
|
||||
/** Copy bytes from aSrc to aDest.
|
||||
@param aDest the destination address
|
||||
@param aSrc the source address
|
||||
@param aCount the number of bytes to copy
|
||||
*/
|
||||
static void memcpy(void* aDest, const void* aSrc, PRInt32 aCount) {
|
||||
::memcpy(aDest, aSrc, (size_t)aCount);
|
||||
}
|
||||
|
||||
static void memmove(void* aDest, const void* aSrc, PRInt32 aCount) {
|
||||
::memmove(aDest, aSrc, (size_t)aCount);
|
||||
}
|
||||
|
||||
static void memset(void* aDest, PRUint8 aByte, PRInt32 aCount) {
|
||||
::memset(aDest, aByte, aCount);
|
||||
}
|
||||
|
||||
static void zero(void* aDest, PRInt32 aCount) {
|
||||
::memset(aDest, 0, (size_t)aCount);
|
||||
}
|
||||
|
||||
/** Compute the string length of s
|
||||
@param s the string in question
|
||||
@return the length of s
|
||||
*/
|
||||
static PRInt32 strlen(const char* s) {
|
||||
return PRInt32(::strlen(s));
|
||||
}
|
||||
|
||||
/// Compare s1 and s2.
|
||||
static PRInt32 strcmp(const char* s1, const char* s2) {
|
||||
return PRInt32(PL_strcmp(s1, s2));
|
||||
}
|
||||
|
||||
/// Case-insensitive string comparison.
|
||||
static PRInt32 strcasecmp(const char* s1, const char* s2) {
|
||||
return PRInt32(PL_strcasecmp(s1, s2));
|
||||
}
|
||||
|
||||
/// Case-insensitive string comparison with length
|
||||
static PRInt32 strncasecmp(const char* s1, const char* s2, PRInt32 aMaxLen) {
|
||||
return PRInt32(PL_strncasecmp(s1, s2, aMaxLen));
|
||||
}
|
||||
|
||||
static char* strdup(const char* str) {
|
||||
return PL_strdup(str);
|
||||
}
|
||||
|
||||
/// Like strlen except for ucs2 strings
|
||||
static PRInt32 strlen(const PRUnichar* s);
|
||||
|
||||
/// Like strcmp except for ucs2 strings
|
||||
static PRInt32 strcmp(const PRUnichar* s1, const PRUnichar* s2);
|
||||
/// Like strcmp except for ucs2 strings
|
||||
static PRInt32 strncmp(const PRUnichar* s1, const PRUnichar* s2,
|
||||
PRInt32 aMaxLen);
|
||||
|
||||
/// Like strcasecmp except for ucs2 strings
|
||||
static PRInt32 strcasecmp(const PRUnichar* s1, const PRUnichar* s2);
|
||||
/// Like strncasecmp except for ucs2 strings
|
||||
static PRInt32 strncasecmp(const PRUnichar* s1, const PRUnichar* s2,
|
||||
PRInt32 aMaxLen);
|
||||
|
||||
/// Like strcmp with a char* and a ucs2 string
|
||||
static PRInt32 strcmp(const PRUnichar* s1, const char* s2);
|
||||
/// Like strncmp with a char* and a ucs2 string
|
||||
static PRInt32 strncmp(const PRUnichar* s1, const char* s2,
|
||||
PRInt32 aMaxLen);
|
||||
|
||||
/// Like strcasecmp with a char* and a ucs2 string
|
||||
static PRInt32 strcasecmp(const PRUnichar* s1, const char* s2);
|
||||
/// Like strncasecmp with a char* and a ucs2 string
|
||||
static PRInt32 strncasecmp(const PRUnichar* s1, const char* s2,
|
||||
PRInt32 aMaxLen);
|
||||
|
||||
// Note: uses new[] to allocate memory, so you must use delete[] to
|
||||
// free the memory
|
||||
static PRUnichar* strdup(const PRUnichar* str);
|
||||
|
||||
/// Compute a hashcode for a ucs2 string
|
||||
static PRUint32 HashValue(const PRUnichar* s1);
|
||||
|
||||
/// Same as above except that we return the length in s1len
|
||||
static PRUint32 HashValue(const PRUnichar* s1, PRInt32* s1len);
|
||||
|
||||
/// String to integer.
|
||||
static PRInt32 atoi( const PRUnichar *string );
|
||||
|
||||
static PRUnichar ToUpper(PRUnichar aChar);
|
||||
|
||||
static PRUnichar ToLower(PRUnichar aChar);
|
||||
};
|
||||
|
||||
#endif /* nsCRT_h___ */
|
||||
516
mozilla/base/src/nsDeque.cpp
Normal file
516
mozilla/base/src/nsDeque.cpp
Normal file
@@ -0,0 +1,516 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
#include "nsDeque.h"
|
||||
#include "nsCRT.h"
|
||||
|
||||
//#define _SELFTEST_DEQUE 1
|
||||
#undef _SELFTEST_DEQUE
|
||||
|
||||
/**
|
||||
* Standard constructor
|
||||
* @update gess4/18/98
|
||||
* @return new deque
|
||||
*/
|
||||
nsDeque::nsDeque(nsDequeFunctor& aMemDestroyer) : mMemDestroyer(aMemDestroyer) {
|
||||
mMemDestroyer=aMemDestroyer;
|
||||
mCapacity=eGrowthDelta;
|
||||
mOrigin=mSize=0;
|
||||
mData=new void*[mCapacity];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
* @update gess4/18/98
|
||||
*/
|
||||
nsDeque::~nsDeque() {
|
||||
Erase();
|
||||
delete [] mData;
|
||||
mData=0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the number of elements currently stored in
|
||||
* this deque.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return int contains element count
|
||||
*/
|
||||
PRInt32 nsDeque::GetSize(void) const {
|
||||
return mSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all items from container without destroying them.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsDeque& nsDeque::Empty() {
|
||||
nsCRT::zero(mData,mCapacity*sizeof(mData));
|
||||
mSize=0;
|
||||
mOrigin=0;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove and delete all items from container
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return this
|
||||
*/
|
||||
nsDeque& nsDeque::Erase() {
|
||||
ForEach(mMemDestroyer);
|
||||
return Empty();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method adds an item to the end of the queue.
|
||||
* This operation has the potential to cause the
|
||||
* underlying buffer to resize.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anItem: new item to be added to queue
|
||||
* @return nada
|
||||
*/
|
||||
nsDeque& nsDeque::Push(void* anItem) {
|
||||
if(mSize==mCapacity) {
|
||||
void** temp=new void*[mCapacity+eGrowthDelta];
|
||||
|
||||
//Here's the interesting part: You can't just move the elements
|
||||
//directy (in situ) from the old buffer to the new one.
|
||||
//Since capacity has changed, the old origin doesn't make
|
||||
//sense anymore. It's better to resequence the elements now.
|
||||
|
||||
int tempi=0;
|
||||
int i=0;
|
||||
int j=0;
|
||||
for(i=mOrigin;i<mCapacity;i++) temp[tempi++]=mData[i]; //copy the leading elements...
|
||||
for(j=0;j<mOrigin;j++) temp[tempi++]=mData[j]; //copy the trailing elements...
|
||||
mCapacity+=eGrowthDelta;
|
||||
mOrigin=0; //now realign the origin...
|
||||
delete[]mData;
|
||||
mData=temp;
|
||||
}
|
||||
int offset=mOrigin+mSize;
|
||||
if(offset<mCapacity)
|
||||
mData[offset]=anItem;
|
||||
else mData[offset-mCapacity]=anItem;
|
||||
mSize++;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method gets called you want to remove and return
|
||||
* the first member in the container.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param nada
|
||||
* @return last item in container
|
||||
*/
|
||||
void* nsDeque::Pop() {
|
||||
void* result=0;
|
||||
if(mSize>0) {
|
||||
result=mData[mOrigin];
|
||||
mData[mOrigin++]=0; //zero it out for debugging purposes.
|
||||
mSize--;
|
||||
if(mCapacity==mOrigin) //you popped off the end, so cycle back around...
|
||||
mOrigin=0;
|
||||
if(0==mSize)
|
||||
mOrigin=0;
|
||||
}
|
||||
NS_ASSERTION(mOrigin<mCapacity,"Error: Bad origin");
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method gets called you want to peek at the topmost
|
||||
* member without removing it.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param nada
|
||||
* @return last item in container
|
||||
*/
|
||||
void* nsDeque::Peek() {
|
||||
void* result=0;
|
||||
if(mSize>0) {
|
||||
result=mData[mOrigin];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove and return the last item in the container.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param none
|
||||
* @return ptr to last item in container
|
||||
*/
|
||||
void* nsDeque::PopBack(void) {
|
||||
void* result=0;
|
||||
if(mSize>0) {
|
||||
int offset=mOrigin+mSize-1;
|
||||
if(offset>=mCapacity)
|
||||
offset-=mCapacity;
|
||||
result=mData[offset];
|
||||
mData[offset]=0;
|
||||
mSize--;
|
||||
if(0==mSize)
|
||||
mOrigin=0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this to retrieve the ith element from this container.
|
||||
* Keep in mind that accessing the underlying elements is
|
||||
* done in a relative fashion. Object 0 is not necessarily
|
||||
* the first element (the first element is at mOrigin).
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIndex : 0 relative offset of item you want
|
||||
* @return void* or null
|
||||
*/
|
||||
void* nsDeque::ObjectAt(PRInt32 anIndex) const {
|
||||
void* result=0;
|
||||
|
||||
if((anIndex>=0) && (anIndex<mSize))
|
||||
{
|
||||
if(anIndex<(mCapacity-mOrigin)) {
|
||||
result=mData[mOrigin+anIndex];
|
||||
}
|
||||
else {
|
||||
result=mData[anIndex-(mCapacity-mOrigin)];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and return an iterator pointing to
|
||||
* the beginning of the queue. Note that this
|
||||
* takes the circular buffer semantics into account.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return new deque iterator, init'ed to 1st item
|
||||
*/
|
||||
nsDequeIterator nsDeque::Begin(void) const{
|
||||
return nsDequeIterator(*this,0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and return an iterator pointing to
|
||||
* the last of the queue. Note that this
|
||||
* takes the circular buffer semantics into account.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return new deque iterator, init'ed to last item
|
||||
*/
|
||||
nsDequeIterator nsDeque::End(void) const{
|
||||
return nsDequeIterator(*this,mSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
void nsDeque::ForEach(nsDequeFunctor& aFunctor) const{
|
||||
int i=0;
|
||||
for(i=0;i<mSize;i++){
|
||||
void* obj=ObjectAt(i);
|
||||
obj=aFunctor(obj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code. Iteration continues until your
|
||||
* functor returns a non-null.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
const void* nsDeque::FirstThat(nsDequeFunctor& aFunctor) const{
|
||||
int i=0;
|
||||
for(i=0;i<mSize;i++){
|
||||
void* obj=ObjectAt(i);
|
||||
obj=aFunctor(obj);
|
||||
if(obj)
|
||||
return obj;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************
|
||||
* Here comes the nsDequeIterator class...
|
||||
******************************************************/
|
||||
|
||||
/**
|
||||
* DequeIterator is an object that knows how to iterate (forward and backward)
|
||||
* a Deque. Normally, you don't need to do this, but there are some special
|
||||
* cases where it is pretty handy, so here you go.
|
||||
*
|
||||
* This is a standard dequeiterator constructor
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param aQueue is the deque object to be iterated
|
||||
* @param anIndex is the starting position for your iteration
|
||||
*/
|
||||
nsDequeIterator::nsDequeIterator(const nsDeque& aQueue,int anIndex): mIndex(anIndex), mDeque(aQueue) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy construct a new iterator beginning with given
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aCopy is another iterator to copy from
|
||||
* @return
|
||||
*/
|
||||
nsDequeIterator::nsDequeIterator(const nsDequeIterator& aCopy) : mIndex(aCopy.mIndex), mDeque(aCopy.mDeque) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves iterator to first element in deque
|
||||
* @update gess4/18/98
|
||||
* @return this
|
||||
*/
|
||||
nsDequeIterator& nsDequeIterator::First(void){
|
||||
mIndex=0;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard assignment operator for dequeiterator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param aCopy is an iterator to be copied from
|
||||
* @return *this
|
||||
*/
|
||||
nsDequeIterator& nsDequeIterator::operator=(const nsDequeIterator& aCopy) {
|
||||
//queue's are already equal.
|
||||
mIndex=aCopy.mIndex;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* preform ! operation against to iterators to test for equivalence
|
||||
* (or lack thereof)!
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the object to be compared to
|
||||
* @return TRUE if NOT equal.
|
||||
*/
|
||||
PRBool nsDequeIterator::operator!=(nsDequeIterator& anIter) {
|
||||
return PRBool(!this->operator==(anIter));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compare 2 iterators for equivalence.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the other iterator to be compared to
|
||||
* @return TRUE if EQUAL
|
||||
*/
|
||||
PRBool nsDequeIterator::operator<(nsDequeIterator& anIter) {
|
||||
return PRBool(((mIndex<anIter.mIndex) && (&mDeque==&anIter.mDeque)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare 2 iterators for equivalence.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the other iterator to be compared to
|
||||
* @return TRUE if EQUAL
|
||||
*/
|
||||
PRBool nsDequeIterator::operator==(nsDequeIterator& anIter) {
|
||||
return PRBool(((mIndex==anIter.mIndex) && (&mDeque==&anIter.mDeque)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare 2 iterators for equivalence.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the other iterator to be compared to
|
||||
* @return TRUE if EQUAL
|
||||
*/
|
||||
PRBool nsDequeIterator::operator>=(nsDequeIterator& anIter) {
|
||||
return PRBool(((mIndex>=anIter.mIndex) && (&mDeque==&anIter.mDeque)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Pre-increment operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return object at preincremented index
|
||||
*/
|
||||
void* nsDequeIterator::operator++() {
|
||||
return mDeque.ObjectAt(++mIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Post-increment operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param param is ignored
|
||||
* @return object at post-incremented index
|
||||
*/
|
||||
void* nsDequeIterator::operator++(int) {
|
||||
return mDeque.ObjectAt(mIndex++);
|
||||
}
|
||||
|
||||
/**
|
||||
* Pre-decrement operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return object at pre-decremented index
|
||||
*/
|
||||
void* nsDequeIterator::operator--() {
|
||||
return mDeque.ObjectAt(--mIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Post-decrement operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param param is ignored
|
||||
* @return object at post-decremented index
|
||||
*/
|
||||
void* nsDequeIterator::operator--(int) {
|
||||
return mDeque.ObjectAt(mIndex--);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dereference operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return object at ith index
|
||||
*/
|
||||
void* nsDequeIterator::GetCurrent(void) {
|
||||
return mDeque.ObjectAt(mIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
void nsDequeIterator::ForEach(nsDequeFunctor& aFunctor) const{
|
||||
mDeque.ForEach(aFunctor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
const void* nsDequeIterator::FirstThat(nsDequeFunctor& aFunctor) const{
|
||||
return mDeque.FirstThat(aFunctor);
|
||||
}
|
||||
|
||||
#ifdef _SELFTEST_DEQUE
|
||||
/**************************************************************
|
||||
Now define the token deallocator class...
|
||||
**************************************************************/
|
||||
class _SelfTestDeallocator: public nsDequeFunctor{
|
||||
public:
|
||||
_SelfTestDeallocator::_SelfTestDeallocator() {
|
||||
nsDeque::SelfTest();
|
||||
}
|
||||
virtual void* operator()(void* anObject) {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
static _SelfTestDeallocator gDeallocator;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* conduct automated self test for this class
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
void nsDeque::SelfTest(void) {
|
||||
#ifdef _SELFTEST_DEQUE
|
||||
|
||||
{
|
||||
nsDeque theDeque(gDeallocator); //construct a simple one...
|
||||
|
||||
int ints[200];
|
||||
int count=sizeof(ints)/sizeof(int);
|
||||
int i=0;
|
||||
|
||||
for(i=0;i<count;i++){ //initialize'em
|
||||
ints[i]=10*(1+i);
|
||||
}
|
||||
|
||||
for(i=0;i<70;i++){
|
||||
theDeque.Push(&ints[i]);
|
||||
}
|
||||
|
||||
for(i=0;i<56;i++){
|
||||
int* temp=(int*)theDeque.Pop();
|
||||
}
|
||||
|
||||
for(i=0;i<55;i++){
|
||||
theDeque.Push(&ints[i]);
|
||||
}
|
||||
|
||||
for(i=0;i<35;i++){
|
||||
int* temp=(int*)theDeque.Pop();
|
||||
}
|
||||
|
||||
for(i=0;i<35;i++){
|
||||
theDeque.Push(&ints[i]);
|
||||
}
|
||||
|
||||
for(i=0;i<38;i++){
|
||||
int* temp=(int*)theDeque.Pop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int x;
|
||||
x=10;
|
||||
#endif
|
||||
}
|
||||
|
||||
396
mozilla/base/src/nsDeque.h
Normal file
396
mozilla/base/src/nsDeque.h
Normal file
@@ -0,0 +1,396 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* MODULE NOTES:
|
||||
* @update gess 4/15/98 (tax day)
|
||||
*
|
||||
* The Deque is a very small, very efficient container object
|
||||
* than can hold elements of type void*, offering the following features:
|
||||
* It's interface supports pushing and poping of children.
|
||||
* It can iterate (via an interator class) it's children.
|
||||
* When full, it can efficently resize dynamically.
|
||||
*
|
||||
*
|
||||
* NOTE: The only bit of trickery here is that this deque is
|
||||
* built upon a ring-buffer. Like all ring buffers, the first
|
||||
* element may not be at index[0]. The mOrigin member determines
|
||||
* where the first child is. This point is quietly hidden from
|
||||
* customers of this class.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NSDEQUE
|
||||
#define _NSDEQUE
|
||||
|
||||
#include "nscore.h"
|
||||
|
||||
/**
|
||||
* The nsDequefunctor class is used when you want to create
|
||||
* callbacks between the deque and your generic code.
|
||||
* Use these objects in a call to ForEach();
|
||||
*
|
||||
* @update gess4/20/98
|
||||
*/
|
||||
class NS_BASE nsDequeFunctor{
|
||||
public:
|
||||
virtual void* operator()(void* anObject)=0;
|
||||
};
|
||||
|
||||
|
||||
/******************************************************
|
||||
* Here comes the nsDeque class itself...
|
||||
******************************************************/
|
||||
|
||||
/**
|
||||
* The deque (double-ended queue) class is a common container type,
|
||||
* whose behavior mimics a line in your favorite checkout stand.
|
||||
* Classic CS describes the common behavior of a queue as FIFO.
|
||||
* A Deque allows items to be added and removed from either end of
|
||||
* the queue.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
*/
|
||||
|
||||
class NS_BASE nsDeque {
|
||||
friend class nsDequeIterator;
|
||||
public:
|
||||
nsDeque(nsDequeFunctor& aMemDestroyer);
|
||||
~nsDeque();
|
||||
|
||||
/**
|
||||
* Returns the number of elements currently stored in
|
||||
* this deque.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return int contains element count
|
||||
*/
|
||||
PRInt32 GetSize() const;
|
||||
|
||||
|
||||
/**
|
||||
* Pushes new member onto the end of the deque
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param ptr to object to store
|
||||
* @return *this
|
||||
*/
|
||||
nsDeque& Push(void* anItem);
|
||||
|
||||
/**
|
||||
* Remove and return the first item in the container.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param none
|
||||
* @return ptr to first item in container
|
||||
*/
|
||||
void* Pop(void);
|
||||
|
||||
/**
|
||||
* Return topmost item without removing it.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param none
|
||||
* @return ptr to first item in container
|
||||
*/
|
||||
void* Peek(void);
|
||||
|
||||
/**
|
||||
* Remove and return the last item in the container.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param none
|
||||
* @return ptr to first item in container
|
||||
*/
|
||||
void* PopBack(void);
|
||||
|
||||
/**
|
||||
* Remove all items from container without destroying them
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsDeque& Empty();
|
||||
|
||||
/**
|
||||
* Remove and delete all items from container
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsDeque& Erase();
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new iterator, init'ed to start of container
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return new dequeIterator
|
||||
*/
|
||||
nsDequeIterator Begin() const;
|
||||
|
||||
/**
|
||||
* Creates a new iterator, init'ed to end of container
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return new dequeIterator
|
||||
*/
|
||||
nsDequeIterator End() const;
|
||||
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
void ForEach(nsDequeFunctor& aFunctor) const;
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code. This process will interupt if
|
||||
* your function returns a null to this iterator.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
const void* FirstThat(nsDequeFunctor& aFunctor) const;
|
||||
|
||||
/**
|
||||
* Perform automated selftest on the deque
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
static void SelfTest();
|
||||
|
||||
protected:
|
||||
|
||||
PRInt32 mSize;
|
||||
PRInt32 mCapacity;
|
||||
PRInt32 mOrigin;
|
||||
nsDequeFunctor& mMemDestroyer;
|
||||
void** mData;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
enum {eGrowthDelta=64};
|
||||
|
||||
/**
|
||||
* Simple default constructor (PRIVATE)
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsDeque();
|
||||
|
||||
/**
|
||||
* Copy constructor (PRIVATE)
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsDeque(const nsDeque& other);
|
||||
|
||||
/**
|
||||
* Deque assignment operator (PRIVATE)
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param another deque
|
||||
* @return *this
|
||||
*/
|
||||
nsDeque& operator=(const nsDeque& anOther);
|
||||
|
||||
/**
|
||||
* PRIVATE method used to retrieve ptr to
|
||||
* ith member in container. DOesn't remove
|
||||
* that item.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param index of desired item
|
||||
* @return ptr to ith element in list
|
||||
*/
|
||||
void* ObjectAt(int anIndex) const;
|
||||
|
||||
};
|
||||
|
||||
/******************************************************
|
||||
* Here comes the nsDequeIterator class...
|
||||
******************************************************/
|
||||
|
||||
class NS_BASE nsDequeIterator {
|
||||
public:
|
||||
|
||||
/**
|
||||
* DequeIterator is an object that knows how to iterate (forward and backward)
|
||||
* a Deque. Normally, you don't need to do this, but there are some special
|
||||
* cases where it is pretty handy, so here you go.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param aQueue is the deque object to be iterated
|
||||
* @param anIndex is the starting position for your iteration
|
||||
*/
|
||||
nsDequeIterator(const nsDeque& aQueue,int anIndex=0);
|
||||
|
||||
/**
|
||||
* DequeIterator is an object that knows how to iterate (forward and backward)
|
||||
* a Deque. Normally, you don't need to do this, but there are some special
|
||||
* cases where it is pretty handy, so here you go.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param aQueue is the deque object to be iterated
|
||||
* @param anIndex is the starting position for your iteration
|
||||
*/
|
||||
nsDequeIterator(const nsDequeIterator& aCopy);
|
||||
|
||||
/**
|
||||
* Moves iterator to first element in deque
|
||||
* @update gess4/18/98
|
||||
* @return this
|
||||
*/
|
||||
nsDequeIterator& First(void);
|
||||
|
||||
/**
|
||||
* Standard assignment operator for deque
|
||||
* @update gess4/18/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsDequeIterator& operator=(const nsDequeIterator& aCopy);
|
||||
|
||||
/**
|
||||
* preform ! operation against to iterators to test for equivalence
|
||||
* (or lack thereof)!
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the object to be compared to
|
||||
* @return TRUE if NOT equal.
|
||||
*/
|
||||
PRBool operator!=(nsDequeIterator& anIter);
|
||||
|
||||
/**
|
||||
* Compare 2 iterators for equivalence.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the other iterator to be compared to
|
||||
* @return TRUE if EQUAL
|
||||
*/
|
||||
PRBool operator<(nsDequeIterator& anIter);
|
||||
|
||||
/**
|
||||
* Compare 2 iterators for equivalence.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the other iterator to be compared to
|
||||
* @return TRUE if EQUAL
|
||||
*/
|
||||
PRBool operator==(nsDequeIterator& anIter);
|
||||
|
||||
/**
|
||||
* Compare 2 iterators for equivalence.
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param anIter is the other iterator to be compared to
|
||||
* @return TRUE if EQUAL
|
||||
*/
|
||||
PRBool operator>=(nsDequeIterator& anIter);
|
||||
|
||||
/**
|
||||
* Pre-increment operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return object at preincremented index
|
||||
*/
|
||||
void* operator++();
|
||||
|
||||
/**
|
||||
* Post-increment operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param param is ignored
|
||||
* @return object at post-incremented index
|
||||
*/
|
||||
void* operator++(int);
|
||||
|
||||
/**
|
||||
* Pre-decrement operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return object at pre-decremented index
|
||||
*/
|
||||
void* operator--();
|
||||
|
||||
/**
|
||||
* Post-decrement operator
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @param param is ignored
|
||||
* @return object at post-decremented index
|
||||
*/
|
||||
void* operator--(int);
|
||||
|
||||
/**
|
||||
* Retrieve the ptr to the iterators notion of current node
|
||||
*
|
||||
* @update gess4/18/98
|
||||
* @return object at ith index
|
||||
*/
|
||||
void* GetCurrent(void);
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
void ForEach(nsDequeFunctor& aFunctor) const;
|
||||
|
||||
/**
|
||||
* Call this method when you wanto to iterate all the
|
||||
* members of the container, passing a functor along
|
||||
* to call your code.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
* @param aFunctor object to call for each member
|
||||
* @return *this
|
||||
*/
|
||||
const void* FirstThat(nsDequeFunctor& aFunctor) const;
|
||||
|
||||
protected:
|
||||
PRInt32 mIndex;
|
||||
const nsDeque& mDeque;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
152
mozilla/base/src/nsEscape.cpp
Normal file
152
mozilla/base/src/nsEscape.cpp
Normal file
@@ -0,0 +1,152 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// First checked in on 98/12/03 by John R. McMullen, derived from net.h/mkparse.c.
|
||||
|
||||
#include "nsEscape.h"
|
||||
|
||||
#include "plstr.h"
|
||||
|
||||
const int netCharType[256] =
|
||||
/* Bit 0 xalpha -- the alphas
|
||||
** Bit 1 xpalpha -- as xalpha but
|
||||
** converts spaces to plus and plus to %20
|
||||
** Bit 3 ... path -- as xalphas but doesn't escape '/'
|
||||
*/
|
||||
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
|
||||
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x */
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1x */
|
||||
0,0,0,0,0,0,0,0,0,0,7,4,0,7,7,4, /* 2x !"#$%&'()*+,-./ */
|
||||
7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0, /* 3x 0123456789:;<=>? */
|
||||
0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, /* 4x @ABCDEFGHIJKLMNO */
|
||||
/* bits for '@' changed from 7 to 0 so '@' can be escaped */
|
||||
/* in usernames and passwords in publishing. */
|
||||
7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,7, /* 5X PQRSTUVWXYZ[\]^_ */
|
||||
0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, /* 6x `abcdefghijklmno */
|
||||
7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0, /* 7X pqrstuvwxyz{\}~ DEL */
|
||||
0, };
|
||||
|
||||
/* decode % escaped hex codes into character values
|
||||
*/
|
||||
#define UNHEX(C) \
|
||||
((C >= '0' && C <= '9') ? C - '0' : \
|
||||
((C >= 'A' && C <= 'F') ? C - 'A' + 10 : \
|
||||
((C >= 'a' && C <= 'f') ? C - 'a' + 10 : 0)))
|
||||
|
||||
|
||||
#define IS_OK(C) (netCharType[((unsigned int) (C))] & (mask))
|
||||
#define HEX_ESCAPE '%'
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsEscape(const char * str, nsEscapeMask mask)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if(!str)
|
||||
return NULL;
|
||||
return nsEscapeCount(str, (PRInt32)PL_strlen(str), mask, NULL);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsEscapeCount(const char * str, PRInt32 len, nsEscapeMask mask, PRInt32 * out_len)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
int32 i, extra = 0;
|
||||
char *hexChars = "0123456789ABCDEF";
|
||||
|
||||
if(!str)
|
||||
return(0);
|
||||
|
||||
register const unsigned char* src = (unsigned char *) str;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (!IS_OK(src[i]))
|
||||
extra+=2; /* the escape, plus an extra byte for each nibble */
|
||||
}
|
||||
|
||||
char* result = new char[len + extra + 1];
|
||||
if (!result)
|
||||
return(0);
|
||||
|
||||
register unsigned char* dst = (unsigned char *) result;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
unsigned char c = src[i];
|
||||
if (IS_OK(c))
|
||||
{
|
||||
*dst++ = c;
|
||||
}
|
||||
else if (mask == url_XPAlphas && c == ' ')
|
||||
{
|
||||
*dst++ = '+'; /* convert spaces to pluses */
|
||||
}
|
||||
else
|
||||
{
|
||||
*dst++ = HEX_ESCAPE;
|
||||
*dst++ = hexChars[c >> 4]; /* high nibble */
|
||||
*dst++ = hexChars[c & 0x0f]; /* low nibble */
|
||||
}
|
||||
}
|
||||
|
||||
*dst = '\0'; /* tack on eos */
|
||||
if(out_len)
|
||||
*out_len = dst - (unsigned char *) result;
|
||||
return result;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsUnescape(char * str)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
nsUnescapeCount(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
PRInt32 nsUnescapeCount(char * str)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
register char *src = str;
|
||||
register char *dst = str;
|
||||
|
||||
while (*src)
|
||||
if (*src != HEX_ESCAPE)
|
||||
{
|
||||
*dst++ = *src++;
|
||||
}
|
||||
else
|
||||
{
|
||||
src++; /* walk over escape */
|
||||
if (*src)
|
||||
{
|
||||
*dst = UNHEX(*src) << 4;
|
||||
src++;
|
||||
}
|
||||
if (*src)
|
||||
{
|
||||
*dst = (*dst + UNHEX(*src));
|
||||
src++;
|
||||
}
|
||||
dst++;
|
||||
}
|
||||
|
||||
*dst = 0;
|
||||
|
||||
return (int)(dst - str);
|
||||
|
||||
} /* NET_UnEscapeCnt */
|
||||
|
||||
474
mozilla/base/src/nsFileSpec.cpp
Normal file
474
mozilla/base/src/nsFileSpec.cpp
Normal file
@@ -0,0 +1,474 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
#include "nsFileStream.h"
|
||||
#include "nsDebug.h"
|
||||
|
||||
#include "prtypes.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
//========================================================================================
|
||||
NS_NAMESPACE nsFileSpecHelpers
|
||||
//========================================================================================
|
||||
{
|
||||
enum
|
||||
{ kMaxFilenameLength = 31 // should work on Macintosh, Unix, and Win32.
|
||||
, kMaxAltDigitLength = 5
|
||||
, kMaxCoreLeafNameLength = (kMaxFilenameLength - (kMaxAltDigitLength + 1))
|
||||
};
|
||||
NS_NAMESPACE_PROTOTYPE void LeafReplace(
|
||||
char*& ioPath,
|
||||
char inSeparator,
|
||||
const char* inLeafName);
|
||||
NS_NAMESPACE_PROTOTYPE char* GetLeaf(const char* inPath, char inSeparator); // allocated
|
||||
NS_NAMESPACE_PROTOTYPE char* StringDup(const char* inString, int allocLength = 0);
|
||||
NS_NAMESPACE_PROTOTYPE char* AllocCat(const char* inString1, const char* inString2);
|
||||
NS_NAMESPACE_PROTOTYPE char* StringAssign(char*& ioString, const char* inOther);
|
||||
} NS_NAMESPACE_END
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsFileSpecHelpers::StringDup(
|
||||
const char* inString,
|
||||
int allocLength)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!allocLength && inString)
|
||||
allocLength = strlen(inString);
|
||||
char* newPath = inString || allocLength ? new char[allocLength + 1] : 0;
|
||||
if (!newPath)
|
||||
return NULL;
|
||||
strcpy(newPath, inString);
|
||||
return newPath;
|
||||
} // nsFileSpecHelpers::StringDup
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsFileSpecHelpers::AllocCat(
|
||||
const char* inString1,
|
||||
const char* inString2)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!inString1)
|
||||
return inString2 ? StringDup(inString2) : (char*)NULL;
|
||||
if (!inString2)
|
||||
return StringDup(inString1);
|
||||
char* outString = StringDup(inString1, strlen(inString1) + strlen(inString2));
|
||||
if (outString)
|
||||
strcat(outString, inString2);
|
||||
return outString;
|
||||
} // nsFileSpecHelpers::StringDup
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsFileSpecHelpers::StringAssign(
|
||||
char*& ioString,
|
||||
const char* inString2)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!inString2)
|
||||
{
|
||||
delete [] ioString;
|
||||
ioString = (char*)NULL;
|
||||
return ioString;
|
||||
}
|
||||
if (!ioString || (strlen(inString2) > strlen(ioString)))
|
||||
{
|
||||
delete [] ioString;
|
||||
ioString = StringDup(inString2);
|
||||
return ioString;
|
||||
}
|
||||
strcpy(ioString, inString2);
|
||||
return ioString;
|
||||
} // nsFileSpecHelpers::StringAssign
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFileSpecHelpers::LeafReplace(
|
||||
char*& ioPath,
|
||||
char inSeparator,
|
||||
const char* inLeafName)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// Find the existing leaf name
|
||||
if (!ioPath)
|
||||
return;
|
||||
if (!inLeafName)
|
||||
{
|
||||
*ioPath = '\0';
|
||||
return;
|
||||
}
|
||||
char* lastSeparator = strrchr(ioPath, inSeparator);
|
||||
int oldLength = strlen(ioPath);
|
||||
*(++lastSeparator) = '\0'; // strip the current leaf name
|
||||
int newLength = lastSeparator - ioPath + strlen(inLeafName);
|
||||
if (newLength > oldLength)
|
||||
{
|
||||
char* newPath = StringDup(ioPath, newLength + 1);
|
||||
delete [] ioPath;
|
||||
ioPath = newPath;
|
||||
}
|
||||
strcat(ioPath, inLeafName);
|
||||
} // nsNativeFileSpec::SetLeafName
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsFileSpecHelpers::GetLeaf(const char* inPath, char inSeparator)
|
||||
// Returns a pointer to an allocated string representing the leaf.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!inPath)
|
||||
return NULL;
|
||||
char* lastSeparator = strrchr(inPath, inSeparator);
|
||||
if (lastSeparator)
|
||||
return StringDup(lastSeparator);
|
||||
return StringDup(inPath);
|
||||
} // nsNativeFileSpec::GetLeaf
|
||||
|
||||
|
||||
#if defined(XP_PC)
|
||||
#include "windows/nsFileSpecWin.cpp" // Windows-specific implementations
|
||||
#elif defined(XP_MAC)
|
||||
#include "nsFileSpecMac.cpp" // Macintosh-specific implementations
|
||||
#elif defined(XP_UNIX)
|
||||
#include "unix/nsFileSpecUnix.cpp" // Unix-specific implementations
|
||||
#endif
|
||||
|
||||
//========================================================================================
|
||||
// nsFileURL implementation
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFileURL::nsFileURL(const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mURL(nsFileSpecHelpers::StringDup(inString))
|
||||
#ifdef XP_MAC
|
||||
, mNativeFileSpec(inString + kFileURLPrefixLength)
|
||||
#endif
|
||||
{
|
||||
NS_ASSERTION(strstr(inString, kFileURLPrefix) == inString, "Not a URL!");
|
||||
} // nsFileURL::nsFileURL
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFileURL::nsFileURL(const nsFileURL& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mURL(nsFileSpecHelpers::StringDup(inOther.mURL))
|
||||
#ifdef XP_MAC
|
||||
, mNativeFileSpec(inOther.GetNativeSpec())
|
||||
#endif
|
||||
{
|
||||
} // nsFileURL::nsFileURL
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFileURL::nsFileURL(const nsFilePath& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mURL(nsFileSpecHelpers::AllocCat(kFileURLPrefix, (const char*)inOther))
|
||||
#ifdef XP_MAC
|
||||
, mNativeFileSpec(inOther.GetNativeSpec())
|
||||
#endif
|
||||
{
|
||||
} // nsFileURL::nsFileURL
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFileURL::nsFileURL(const nsNativeFileSpec& inOther)
|
||||
: mURL(nsFileSpecHelpers::AllocCat(kFileURLPrefix, (const char*)nsFilePath(inOther)))
|
||||
#ifdef XP_MAC
|
||||
, mNativeFileSpec(inOther)
|
||||
#endif
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
} // nsFileURL::nsFileURL
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFileURL::~nsFileURL()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
delete [] mURL;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFileURL::operator = (const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
nsFileSpecHelpers::StringAssign(mURL, inString);
|
||||
NS_ASSERTION(strstr(inString, kFileURLPrefix) == inString, "Not a URL!");
|
||||
#ifdef XP_MAC
|
||||
mNativeFileSpec = inString + kFileURLPrefixLength;
|
||||
#endif
|
||||
} // nsFileURL::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFileURL::operator = (const nsFileURL& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mURL = nsFileSpecHelpers::StringAssign(mURL, inOther.mURL);
|
||||
#ifdef XP_MAC
|
||||
mNativeFileSpec = inOther.GetNativeSpec();
|
||||
#endif
|
||||
} // nsFileURL::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFileURL::operator = (const nsFilePath& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
delete [] mURL;
|
||||
mURL = nsFileSpecHelpers::AllocCat(kFileURLPrefix, (const char*)inOther);
|
||||
#ifdef XP_MAC
|
||||
mNativeFileSpec = inOther.GetNativeSpec();
|
||||
#endif
|
||||
} // nsFileURL::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFileURL::operator = (const nsNativeFileSpec& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
delete [] mURL;
|
||||
mURL = nsFileSpecHelpers::AllocCat(kFileURLPrefix, (const char*)nsFilePath(inOther));
|
||||
#ifdef XP_MAC
|
||||
mNativeFileSpec = inOther;
|
||||
#endif
|
||||
} // nsFileURL::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& operator << (nsOutputFileStream& s, const nsFileURL& url)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (s << url.mURL);
|
||||
}
|
||||
|
||||
//========================================================================================
|
||||
// nsFilePath implementation
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFilePath::nsFilePath(const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(nsFileSpecHelpers::StringDup(inString))
|
||||
#ifdef XP_MAC
|
||||
, mNativeFileSpec(inString)
|
||||
#endif
|
||||
{
|
||||
NS_ASSERTION(strstr(inString, kFileURLPrefix) != inString, "URL passed as path");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFilePath::nsFilePath(const nsFileURL& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(nsFileSpecHelpers::StringDup(inOther.mURL + kFileURLPrefixLength))
|
||||
#ifdef XP_MAC
|
||||
, mNativeFileSpec(inOther.GetNativeSpec())
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef XP_UNIX
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFilePath::nsFilePath(const nsNativeFileSpec& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(nsFileSpecHelpers::StringDup(inOther.mPath))
|
||||
{
|
||||
}
|
||||
#endif // XP_UNIX
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFilePath::~nsFilePath()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
delete [] mPath;
|
||||
}
|
||||
|
||||
#ifdef XP_UNIX
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFilePath::operator = (const nsNativeFileSpec& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mPath = nsFileSpecHelpers::StringAssign(mPath, inOther.mPath);
|
||||
}
|
||||
#endif // XP_UNIX
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFilePath::operator = (const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
NS_ASSERTION(strstr(inString, kFileURLPrefix) != inString, "URL passed as path");
|
||||
nsFileSpecHelpers::StringAssign(mPath, inString);
|
||||
#ifdef XP_MAC
|
||||
mNativeFileSpec = inString;
|
||||
#endif
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFilePath::operator = (const nsFileURL& inOther)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
nsFileSpecHelpers::StringAssign(mPath, (const char*)nsFilePath(inOther));
|
||||
#ifdef XP_MAC
|
||||
mNativeFileSpec = inOther.GetNativeSpec();
|
||||
#endif
|
||||
}
|
||||
|
||||
//========================================================================================
|
||||
// nsNativeFileSpec implementation
|
||||
//========================================================================================
|
||||
|
||||
#ifndef XP_MAC
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec()
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(NULL)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const nsFileURL& inURL)
|
||||
//----------------------------------------------------------------------------------------
|
||||
#ifndef XP_MAC
|
||||
: mPath(NULL)
|
||||
#endif
|
||||
{
|
||||
*this = nsFilePath(inURL); // convert to unix path first
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::MakeUnique(const char* inSuggestedLeafName)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (inSuggestedLeafName && *inSuggestedLeafName)
|
||||
SetLeafName(inSuggestedLeafName);
|
||||
|
||||
MakeUnique();
|
||||
} // nsNativeFileSpec::MakeUnique
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::MakeUnique()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (!Exists())
|
||||
return;
|
||||
|
||||
char* leafName = GetLeafName();
|
||||
if (!leafName)
|
||||
return;
|
||||
|
||||
char* lastDot = strrchr(leafName, '.');
|
||||
char* suffix = "";
|
||||
if (lastDot)
|
||||
{
|
||||
suffix = nsFileSpecHelpers::StringDup(lastDot); // include '.'
|
||||
*lastDot = '\0'; // strip suffix and dot.
|
||||
}
|
||||
const int kMaxRootLength
|
||||
= nsFileSpecHelpers::kMaxCoreLeafNameLength - strlen(suffix) - 1;
|
||||
if (strlen(leafName) > kMaxRootLength)
|
||||
leafName[kMaxRootLength] = '\0';
|
||||
for (short index = 1; index < 1000 && Exists(); index++)
|
||||
{
|
||||
// start with "Picture-1.jpg" after "Picture.jpg" exists
|
||||
char newName[nsFileSpecHelpers::kMaxFilenameLength + 1];
|
||||
sprintf(newName, "%s-%d%s", leafName, index, suffix);
|
||||
SetLeafName(newName);
|
||||
}
|
||||
if (*suffix)
|
||||
delete [] suffix;
|
||||
delete [] leafName;
|
||||
} // nsNativeFileSpec::MakeUnique
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const nsFileURL& inURL)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
*this = nsFilePath(inURL); // convert to unix path first
|
||||
}
|
||||
|
||||
//========================================================================================
|
||||
// UNIX & WIN nsNativeFileSpec implementation
|
||||
//========================================================================================
|
||||
|
||||
#ifdef XP_UNIX
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const nsFilePath& inPath)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(nsFileSpecHelpers::StringDup((const char*)inPath))
|
||||
{
|
||||
}
|
||||
#endif // XP_UNIX
|
||||
|
||||
#ifdef XP_UNIX
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const nsFilePath& inPath)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
nsFileSpecHelpers::StringAssign(mPath, (const char*)inPath);
|
||||
}
|
||||
#endif //XP_UNIX
|
||||
|
||||
#if defined(XP_UNIX) || defined(XP_PC)
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(nsFileSpecHelpers::StringDup(inSpec.mPath))
|
||||
{
|
||||
}
|
||||
#endif //XP_UNIX
|
||||
|
||||
#if defined(XP_UNIX) || defined(XP_PC)
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(nsFileSpecHelpers::StringDup(inString))
|
||||
{
|
||||
}
|
||||
#endif //XP_UNIX,PC
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::~nsNativeFileSpec()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifndef XP_MAC
|
||||
delete [] mPath;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(XP_UNIX) || defined(XP_PC)
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mPath = nsFileSpecHelpers::StringAssign(mPath, inSpec.mPath);
|
||||
}
|
||||
#endif //XP_UNIX
|
||||
|
||||
|
||||
#if defined(XP_UNIX) || defined(XP_PC)
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const char* inString)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
mPath = nsFileSpecHelpers::StringAssign(mPath, inString);
|
||||
}
|
||||
#endif //XP_UNIX
|
||||
|
||||
#if (defined(XP_UNIX) || defined(XP_PC))
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& operator << (nsOutputFileStream& s, const nsNativeFileSpec& spec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return (s << (const char*)spec.mPath);
|
||||
}
|
||||
#endif // DEBUG && XP_UNIX
|
||||
|
||||
435
mozilla/base/src/nsFileStream.cpp
Normal file
435
mozilla/base/src/nsFileStream.cpp
Normal file
@@ -0,0 +1,435 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// First checked in on 98/12/08 by John R. McMullen.
|
||||
// Since nsFileStream.h is entirely templates, common code (such as open())
|
||||
// which does not actually depend on the charT, can be placed here.
|
||||
|
||||
#include "nsFileStream.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef XP_MAC
|
||||
#include <Errors.h>
|
||||
#endif
|
||||
|
||||
//========================================================================================
|
||||
// nsBasicFileStream
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsBasicFileStream::nsBasicFileStream()
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mFileDesc(0)
|
||||
, mNSPRMode(0)
|
||||
, mFailed(false)
|
||||
, mEOF(false)
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsBasicFileStream::nsBasicFileStream(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mFileDesc(0)
|
||||
, mNSPRMode(0)
|
||||
, mFailed(false)
|
||||
, mEOF(false)
|
||||
{
|
||||
open(inFile, nsprMode, accessMode);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsBasicFileStream::nsBasicFileStream(PRFileDesc* desc, int nsprMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mFileDesc(desc)
|
||||
, mNSPRMode(nsprMode)
|
||||
, mFailed(false)
|
||||
, mEOF(false)
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsBasicFileStream::~nsBasicFileStream()
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
close();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsBasicFileStream::open(
|
||||
const nsFilePath& inFile,
|
||||
int nsprMode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (mFileDesc)
|
||||
return;
|
||||
|
||||
const int nspr_modes[]={
|
||||
PR_WRONLY | PR_CREATE_FILE,
|
||||
PR_WRONLY | PR_CREATE_FILE | PR_APPEND,
|
||||
PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE,
|
||||
PR_RDONLY,
|
||||
PR_RDONLY | PR_APPEND,
|
||||
PR_RDWR | PR_CREATE_FILE,
|
||||
PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE,
|
||||
// "wb",
|
||||
// "ab",
|
||||
// "wb",
|
||||
// "rb",
|
||||
// "r+b",
|
||||
// "w+b",
|
||||
0 };
|
||||
const int* currentLegalMode = nspr_modes;
|
||||
while (*currentLegalMode && nsprMode != *currentLegalMode)
|
||||
++currentLegalMode;
|
||||
if (!*currentLegalMode)
|
||||
return;
|
||||
|
||||
#ifdef XP_MAC
|
||||
// Use the file spec to open the file, because one path can be common to
|
||||
// several files on the Macintosh (you can have several volumes with the
|
||||
// same name, see).
|
||||
mFileDesc = 0;
|
||||
if (inFile.GetNativeSpec().Error() != noErr)
|
||||
return;
|
||||
OSErr err = noErr;
|
||||
#if DEBUG
|
||||
const OSType kCreator = 'CWIE';
|
||||
#else
|
||||
const OSType kCreator = 'MOSS';
|
||||
#endif
|
||||
nsNativeFileSpec nativeSpec = inFile.GetNativeSpec();
|
||||
FSSpec* spec = (FSSpec*)nativeSpec;
|
||||
if (nsprMode & PR_CREATE_FILE)
|
||||
err = FSpCreate(spec, kCreator, 'TEXT', 0);
|
||||
if (err == dupFNErr)
|
||||
err = noErr;
|
||||
if (err != noErr)
|
||||
return;
|
||||
|
||||
SInt8 perm;
|
||||
if (nsprMode & PR_RDWR)
|
||||
perm = fsRdWrPerm;
|
||||
else if (nsprMode & PR_WRONLY)
|
||||
perm = fsWrPerm;
|
||||
else
|
||||
perm = fsRdPerm;
|
||||
|
||||
short refnum;
|
||||
err = FSpOpenDF(spec, perm, &refnum);
|
||||
|
||||
if (err == noErr && (nsprMode & PR_TRUNCATE))
|
||||
err = SetEOF(refnum, 0);
|
||||
if (err == noErr && (nsprMode & PR_APPEND))
|
||||
err = SetFPos(refnum, fsFromLEOF, 0);
|
||||
if (err != noErr)
|
||||
return;
|
||||
|
||||
if ((mFileDesc = PR_ImportFile(refnum)) == 0)
|
||||
return;
|
||||
#else
|
||||
// Platforms other than Macintosh...
|
||||
if ((mFileDesc = PR_Open(inFile, nsprMode, accessMode)) == 0)
|
||||
return;
|
||||
#endif
|
||||
mNSPRMode = nsprMode;
|
||||
} // nsFileStreamHelpers::open
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsBasicFileStream::close()
|
||||
// Must precede the destructor because both are inline.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (mFileDesc==PR_STDIN || mFileDesc==PR_STDOUT || mFileDesc==PR_STDERR || mFileDesc == 0)
|
||||
return;
|
||||
if (PR_Close(mFileDesc) == PR_SUCCESS)
|
||||
mFileDesc = 0;
|
||||
} // nsBasicFileStream::close
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsBasicFileStream::seek(PRSeekWhence whence, PRInt32 offset)
|
||||
// Must precede the destructor because both are inline.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (mFileDesc==PR_STDIN || mFileDesc==PR_STDOUT || mFileDesc==PR_STDERR || mFileDesc == 0)
|
||||
return;
|
||||
mFailed = false; // reset on a seek.
|
||||
mEOF = false; // reset on a seek.
|
||||
PRInt32 position = PR_Seek(mFileDesc, 0, PR_SEEK_CUR);
|
||||
PRInt32 available = PR_Available(mFileDesc);
|
||||
PRInt32 fileSize = position + available;
|
||||
PRInt32 newPosition;
|
||||
switch (whence)
|
||||
{
|
||||
case PR_SEEK_CUR: newPosition = position + offset; break;
|
||||
case PR_SEEK_SET: newPosition = offset; break;
|
||||
case PR_SEEK_END: newPosition = fileSize + offset; break;
|
||||
}
|
||||
if (newPosition < 0)
|
||||
{
|
||||
newPosition = 0;
|
||||
mFailed = true;
|
||||
}
|
||||
else if (newPosition >= fileSize)
|
||||
{
|
||||
newPosition = fileSize;
|
||||
mEOF = true;
|
||||
}
|
||||
if (PR_Seek(mFileDesc, newPosition, PR_SEEK_SET) < 0)
|
||||
mFailed = true;
|
||||
} // nsBasicFileStream::seek
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
PRIntn nsBasicFileStream::tell() const
|
||||
// Must precede the destructor because both are inline.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
if (mFileDesc==PR_STDIN || mFileDesc==PR_STDOUT || mFileDesc==PR_STDERR || mFileDesc == 0)
|
||||
return -1;
|
||||
return PR_Seek(mFileDesc, 0, PR_SEEK_CUR);
|
||||
} // nsBasicFileStream::tell
|
||||
|
||||
//========================================================================================
|
||||
// nsInputFileStream
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsInputFileStream::nsInputFileStream(istream* stream)
|
||||
//----------------------------------------------------------------------------------------
|
||||
#ifndef NS_USE_PR_STDIO
|
||||
: nsBasicFileStream(0, kDefaultMode)
|
||||
, mStdStream(stream)
|
||||
#else
|
||||
: nsBasicFileStream(PR_STDIN, kDefaultMode)
|
||||
, mStdStream(0)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsInputFileStream::get(char& c)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
read(&c, sizeof(char));
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
bool nsInputFileStream::readline(char* s, PRInt32 n)
|
||||
// This will truncate if the buffer is too small. Result will always be null-terminated.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
bool bufferLargeEnough = true; // result
|
||||
if (!s || !n)
|
||||
return true;
|
||||
PRIntn position = tell();
|
||||
if (position < 0)
|
||||
return false;
|
||||
PRInt32 bytesRead = read(s, n - 1);
|
||||
if (mFailed)
|
||||
return false;
|
||||
s[bytesRead] = '\0'; // always terminate at the end of the buffer
|
||||
char* tp = strpbrk(s, "\n\r");
|
||||
if (tp)
|
||||
{
|
||||
char ch = *tp;
|
||||
*tp++ = '\0'; // terminate at the newline, then skip past it
|
||||
if ((ch == '\n' && *tp == '\r') || (ch == '\r' && *tp == '\n'))
|
||||
tp++; // possibly a pair.
|
||||
bytesRead = (tp - s);
|
||||
}
|
||||
else if (!eof())
|
||||
bufferLargeEnough = false;
|
||||
position += bytesRead;
|
||||
seek(position);
|
||||
return bufferLargeEnough;
|
||||
} // nsInputFileStream::getline
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
PRInt32 nsInputFileStream::read(void* s, PRInt32 n)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifndef NS_USE_PR_STDIO
|
||||
// Calling PR_Read on stdin is sure suicide on Macintosh.
|
||||
if (mStdStream)
|
||||
{
|
||||
mStdStream->read((char*)s, n);
|
||||
return n;
|
||||
}
|
||||
#endif
|
||||
if (!mFileDesc || mFailed)
|
||||
return -1;
|
||||
PRInt32 bytesRead = PR_Read(mFileDesc, s, n);
|
||||
if (bytesRead < 0)
|
||||
mFailed = true;
|
||||
else if (bytesRead < n)
|
||||
mEOF = true;
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsInputFileStream& nsInputFileStream::operator >> (char& c)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
get(c);
|
||||
return *this;
|
||||
}
|
||||
|
||||
//========================================================================================
|
||||
// nsOutputFileStream
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream::nsOutputFileStream(ostream* stream)
|
||||
//----------------------------------------------------------------------------------------
|
||||
#ifndef NS_USE_PR_STDIO
|
||||
: nsBasicFileStream(0, kDefaultMode)
|
||||
, mStdStream(stream)
|
||||
#else
|
||||
: nsBasicFileStream(PR_STDOUT, kDefaultMode)
|
||||
, mStdStream(0)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsOutputFileStream::put(char c)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
write(&c, sizeof(c));
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
PRInt32 nsOutputFileStream::write(const void* s, PRInt32 n)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifndef NS_USE_PR_STDIO
|
||||
// Calling PR_Write on stdout is sure suicide.
|
||||
if (mStdStream)
|
||||
{
|
||||
mStdStream->write((const char*)s, n);
|
||||
return n;
|
||||
}
|
||||
#endif
|
||||
if (!mFileDesc || mFailed)
|
||||
return -1;
|
||||
PRInt32 bytesWrit = PR_Write(mFileDesc, s, n);
|
||||
if (bytesWrit != n)
|
||||
mFailed = true;
|
||||
return bytesWrit;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& nsOutputFileStream::operator << (char c)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
put(c);
|
||||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& nsOutputFileStream::operator << (const char* s)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
write(s, strlen(s));
|
||||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& nsOutputFileStream::operator << (short val)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
char buf[30];
|
||||
sprintf(buf, "%d", val);
|
||||
return *this << buf;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& nsOutputFileStream::operator << (unsigned short val)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
char buf[30];
|
||||
sprintf(buf, "%ud", val);
|
||||
return *this << buf;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& nsOutputFileStream::operator << (long val)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
char buf[30];
|
||||
sprintf(buf, "%ld", val);
|
||||
return *this << buf;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& nsOutputFileStream::operator << (unsigned long val)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
char buf[30];
|
||||
sprintf(buf, "%uld", val);
|
||||
return *this << buf;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsOutputFileStream::flush()
|
||||
// Must precede the destructor because both are inline.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifndef NS_USE_PR_STDIO
|
||||
if (mStdStream)
|
||||
{
|
||||
mStdStream->flush();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (mFileDesc == 0)
|
||||
return;
|
||||
bool itFailed = PR_Sync(mFileDesc) != PR_SUCCESS;
|
||||
#ifdef XP_MAC
|
||||
// On unix, it seems to fail always.
|
||||
if (itFailed)
|
||||
mFailed = true;
|
||||
#endif
|
||||
} // nsOutputFileStream::flush
|
||||
|
||||
//========================================================================================
|
||||
// Manipulators
|
||||
//========================================================================================
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsOutputFileStream& nsEndl(nsOutputFileStream& os)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
#ifndef NS_USE_PR_STDIO
|
||||
// Calling PR_Write on stdout is sure suicide on Macintosh.
|
||||
ostream* stream = os.GetStandardStream();
|
||||
if (stream)
|
||||
{
|
||||
*stream << std::endl;
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
os.put('\n');
|
||||
os.flush();
|
||||
return os;
|
||||
}
|
||||
51
mozilla/base/src/nsIArena.h
Normal file
51
mozilla/base/src/nsIArena.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIArena_h___
|
||||
#define nsIArena_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
#define NS_MIN_ARENA_BLOCK_SIZE 64
|
||||
#define NS_DEFAULT_ARENA_BLOCK_SIZE 4096
|
||||
|
||||
/// Interface IID for nsIArena
|
||||
#define NS_IARENA_IID \
|
||||
{ 0xa24fdad0, 0x93b4, 0x11d1, \
|
||||
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
/** Interface to a memory arena abstraction. Arena's use large blocks
|
||||
* of memory to allocate smaller objects. Arena's provide no free
|
||||
* operator; instead, all of the objects in the arena are deallocated
|
||||
* by deallocating the arena (e.g. when it's reference count goes to
|
||||
* zero)
|
||||
*/
|
||||
class nsIArena : public nsISupports {
|
||||
public:
|
||||
virtual void* Alloc(PRInt32 size) = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Create a new arena using the desired block size for allocating the
|
||||
* underlying memory blocks. The underlying memory blocks are allocated
|
||||
* using the PR heap.
|
||||
*/
|
||||
extern NS_BASE nsresult NS_NewHeapArena(nsIArena** aInstancePtrResult,
|
||||
PRInt32 aArenaBlockSize = 0);
|
||||
|
||||
#endif /* nsIArena_h___ */
|
||||
77
mozilla/base/src/nsIAtom.h
Normal file
77
mozilla/base/src/nsIAtom.h
Normal file
@@ -0,0 +1,77 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIAtom_h___
|
||||
#define nsIAtom_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
class nsString;
|
||||
class nsISizeOfHandler;
|
||||
|
||||
#define NS_IATOM_IID \
|
||||
{ 0x3d1b15b0, 0x93b4, 0x11d1, \
|
||||
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
/**
|
||||
* A globally unique identfier. nsIAtom's can be compared for
|
||||
* equality by using operator '=='. These objects are reference
|
||||
* counted like other nsISupports objects. When you are done with
|
||||
* the atom, NS_RELEASE it.
|
||||
*/
|
||||
class nsIAtom : public nsISupports {
|
||||
public:
|
||||
/**
|
||||
* Translate the unicode string into the stringbuf.
|
||||
*/
|
||||
virtual void ToString(nsString& aString) const = 0;
|
||||
|
||||
/**
|
||||
* Return a pointer to a zero terminated unicode string.
|
||||
*/
|
||||
virtual const PRUnichar* GetUnicode() const = 0;
|
||||
|
||||
/**
|
||||
* Add the size, in bytes, of the atom to the handler.
|
||||
*/
|
||||
NS_IMETHOD SizeOf(nsISizeOfHandler* aHandler) const = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Find an atom that matches the given iso-latin1 C string. The
|
||||
* C string is translated into it's unicode equivalent.
|
||||
*/
|
||||
extern NS_BASE nsIAtom* NS_NewAtom(const char* isolatin1);
|
||||
|
||||
/**
|
||||
* Find an atom that matches the given unicode string. The string is assumed
|
||||
* to be zero terminated.
|
||||
*/
|
||||
extern NS_BASE nsIAtom* NS_NewAtom(const PRUnichar* unicode);
|
||||
|
||||
/**
|
||||
* Find an atom that matches the given string.
|
||||
*/
|
||||
extern NS_BASE nsIAtom* NS_NewAtom(const nsString& aString);
|
||||
|
||||
/**
|
||||
* Return a count of the total number of atoms currently
|
||||
* alive in the system.
|
||||
*/
|
||||
extern NS_BASE nsrefcnt NS_GetNumberOfAtoms(void);
|
||||
|
||||
#endif /* nsIAtom_h___ */
|
||||
56
mozilla/base/src/nsIBaseStream.h
Normal file
56
mozilla/base/src/nsIBaseStream.h
Normal file
@@ -0,0 +1,56 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIBaseStream_h___
|
||||
#define nsIBaseStream_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
|
||||
/* 6ccb17a0-e95e-11d1-beae-00805f8a66dc */
|
||||
#define NS_IBASESTREAM_IID \
|
||||
{ 0x6ccb17a0, 0xe95e, 0x11d1, \
|
||||
{0xbe, 0xae, 0x00, 0x80, 0x5f, 0x8a, 0x66, 0xdc} }
|
||||
|
||||
/** Abstract stream */
|
||||
class nsIBaseStream : public nsISupports {
|
||||
public:
|
||||
|
||||
/** Close the stream. */
|
||||
NS_IMETHOD
|
||||
Close(void) = 0;
|
||||
};
|
||||
|
||||
/** Error codes */
|
||||
//@{
|
||||
/// End of file
|
||||
#define NS_BASE_STREAM_EOF NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_BASE, 1)
|
||||
/// Stream closed
|
||||
#define NS_BASE_STREAM_CLOSED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_BASE, 2)
|
||||
/// Error from the operating system
|
||||
#define NS_BASE_STREAM_OSERROR NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_BASE, 3)
|
||||
/// Illegal arguments
|
||||
#define NS_BASE_STREAM_ILLEGAL_ARGS NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_BASE, 4)
|
||||
/// For unichar streams
|
||||
#define NS_BASE_STREAM_NO_CONVERTER NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_BASE, 5)
|
||||
/// For unichar streams
|
||||
#define NS_BASE_STREAM_BAD_CONVERSION NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_BASE, 6)
|
||||
//@}
|
||||
|
||||
|
||||
#endif /* nsInputStream_h___ */
|
||||
57
mozilla/base/src/nsIByteBuffer.h
Normal file
57
mozilla/base/src/nsIByteBuffer.h
Normal file
@@ -0,0 +1,57 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIByteBuffer_h___
|
||||
#define nsIByteBuffer_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
class nsIInputStream;
|
||||
|
||||
#define NS_IBYTE_BUFFER_IID \
|
||||
{ 0xe4a6e4b0, 0x93b4, 0x11d1, \
|
||||
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
/** Interface to a buffer that holds bytes */
|
||||
class nsIByteBuffer : public nsISupports {
|
||||
public:
|
||||
/** @return length of buffer, i.e. how many bytes are currently in it. */
|
||||
virtual PRUint32 GetLength(void) const = 0;
|
||||
|
||||
/** @return number of bytes allocated in the buffer */
|
||||
virtual PRUint32 GetBufferSize(void) const = 0;
|
||||
|
||||
/** @return the buffer */
|
||||
virtual char* GetBuffer(void) const = 0;
|
||||
|
||||
/** Grow buffer to aNewSize bytes. */
|
||||
virtual PRBool Grow(PRUint32 aNewSize) = 0;
|
||||
|
||||
/** Fill the buffer with data from aStream. Don't grow the buffer, only
|
||||
* read until length of buffer equals buffer size. */
|
||||
virtual PRInt32 Fill(nsresult* aErrorCode, nsIInputStream* aStream,
|
||||
PRUint32 aKeep) = 0;
|
||||
};
|
||||
|
||||
/** Create a new byte buffer using the given buffer size. */
|
||||
extern NS_BASE nsresult NS_NewByteBuffer(nsIByteBuffer** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
PRUint32 aBufferSize = 0);
|
||||
|
||||
#endif /* nsIByteBuffer_h___ */
|
||||
|
||||
54
mozilla/base/src/nsIInputStream.h
Normal file
54
mozilla/base/src/nsIInputStream.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIInputStream_h___
|
||||
#define nsIInputStream_h___
|
||||
|
||||
#include "nsIBaseStream.h"
|
||||
|
||||
#define NS_IINPUTSTREAM_IID \
|
||||
{ 0x022396f0, 0x93b5, 0x11d1, \
|
||||
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
/** Abstract byte input stream */
|
||||
class nsIInputStream : public nsIBaseStream {
|
||||
public:
|
||||
|
||||
/** Return the number of bytes in the stream
|
||||
* @param aLength out parameter to hold the length
|
||||
* of the stream. if an error occurs, the length
|
||||
* will be undefined
|
||||
* @return error status
|
||||
*/
|
||||
NS_IMETHOD
|
||||
GetLength(PRUint32 *aLength) = 0;
|
||||
|
||||
/** Read data from the stream.
|
||||
* @param aErrorCode the error code if an error occurs
|
||||
* @param aBuf the buffer into which the data is read
|
||||
* @param aOffset the start offset of the data
|
||||
* @param aCount the maximum number of bytes to read
|
||||
* @param aReadCount out parameter to hold the number of
|
||||
* bytes read, eof if 0. if an error occurs, the
|
||||
* read count will be undefined
|
||||
* @return error status
|
||||
*/
|
||||
NS_IMETHOD
|
||||
Read(char* aBuf, PRUint32 aOffset, PRUint32 aCount, PRUint32 *aReadCount) = 0;
|
||||
};
|
||||
|
||||
#endif /* nsInputStream_h___ */
|
||||
46
mozilla/base/src/nsIOutputStream.h
Normal file
46
mozilla/base/src/nsIOutputStream.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIOutputStream_h___
|
||||
#define nsIOutputStream_h___
|
||||
|
||||
#include "nsIBaseStream.h"
|
||||
|
||||
/* 7f13b870-e95f-11d1-beae-00805f8a66dc */
|
||||
#define NS_IOUTPUTSTREAM_IID \
|
||||
{ 0x7f13b870, 0xe95f, 0x11d1, \
|
||||
{0xbe, 0xae, 0x00, 0x80, 0x5f, 0x8a, 0x66, 0xdc} }
|
||||
|
||||
/** Abstract byte output stream */
|
||||
class nsIOutputStream : public nsIBaseStream {
|
||||
public:
|
||||
|
||||
/** Write data into the stream.
|
||||
* @param aBuf the buffer into which the data is read
|
||||
* @param aOffset the start offset of the data
|
||||
* @param aCount the maximum number of bytes to read
|
||||
* @param aWriteCount out parameter to hold the number of
|
||||
* bytes written. if an error occurs, the writecount
|
||||
* is undefined
|
||||
* @return error status
|
||||
*/
|
||||
NS_IMETHOD
|
||||
Write(const char* aBuf, PRUint32 aOffset, PRUint32 aCount, PRUint32 *aWriteCount) = 0;
|
||||
};
|
||||
|
||||
|
||||
#endif /* nsOutputStream_h___ */
|
||||
94
mozilla/base/src/nsITimer.h
Normal file
94
mozilla/base/src/nsITimer.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsITimer_h___
|
||||
#define nsITimer_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
class nsITimer;
|
||||
class nsITimerCallback;
|
||||
|
||||
// Implementations of nsITimer should be written such that there are no limitations
|
||||
// on what can be called by the TimerCallbackFunc. On platforms like the Macintosh this
|
||||
// means that callback functions must be called from the main event loop NOT from
|
||||
// an interrupt.
|
||||
|
||||
/// Signature of timer callback function
|
||||
typedef void
|
||||
(*nsTimerCallbackFunc) (nsITimer *aTimer, void *aClosure);
|
||||
|
||||
/// Interface IID for nsITimer
|
||||
#define NS_ITIMER_IID \
|
||||
{ 0x497eed20, 0xb740, 0x11d1, \
|
||||
{ 0x9b, 0xc3, 0x00, 0x60, 0x08, 0x8c, 0xa6, 0xb3 } }
|
||||
|
||||
/**
|
||||
* Timer class, used to invoke a function or method after a fixed
|
||||
* millisecond interval. <B>Note that this interface is subject to
|
||||
* change!</B>
|
||||
*/
|
||||
class nsITimer : public nsISupports {
|
||||
public:
|
||||
/**
|
||||
* Initialize a timer to fire after the given millisecond interval.
|
||||
* This version takes a function to call and a closure to pass to
|
||||
* that function.
|
||||
*
|
||||
* @param aFunc - The function to invoke
|
||||
* @param aClosure - an opaque pointer to pass to that function
|
||||
* @param aRepeat - (Not yet implemented) One-shot or repeating
|
||||
* @param aDelay - The millisecond interval
|
||||
* @result - NS_OK if this operation was successful
|
||||
*/
|
||||
virtual nsresult Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)=0;
|
||||
|
||||
/**
|
||||
* Initialize a timer to fire after the given millisecond interval.
|
||||
* This version takes an interface of type <code>nsITimerCallback</code>.
|
||||
* The <code>Notify</code> method of this method is invoked.
|
||||
*
|
||||
* @param aCallback - The interface to notify
|
||||
* @param aRepeat - (Not yet implemented) One-shot or repeating
|
||||
* @param aDelay - The millisecond interval
|
||||
* @result - NS_OK if this operation was successful
|
||||
*/
|
||||
virtual nsresult Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)=0;
|
||||
|
||||
/// Cancels the timeout
|
||||
virtual void Cancel()=0;
|
||||
|
||||
/// @return the millisecond delay of the timeout
|
||||
virtual PRUint32 GetDelay()=0;
|
||||
|
||||
/// Change the millisecond interval for the timeout
|
||||
virtual void SetDelay(PRUint32 aDelay)=0;
|
||||
|
||||
/// @return the opaque pointer
|
||||
virtual void* GetClosure()=0;
|
||||
};
|
||||
|
||||
/** Factory method for creating an nsITimer */
|
||||
extern NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult);
|
||||
|
||||
#endif
|
||||
41
mozilla/base/src/nsITimerCallback.h
Normal file
41
mozilla/base/src/nsITimerCallback.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsITimerCallback_h___
|
||||
#define nsITimerCallback_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
class nsITimer;
|
||||
|
||||
/// Interface IID for nsITimerCallback
|
||||
#define NS_ITIMERCALLBACK_IID \
|
||||
{ 0x5079b3a0, 0xb743, 0x11d1, \
|
||||
{ 0x9b, 0xc3, 0x00, 0x60, 0x08, 0x8c, 0xa6, 0xb3 } }
|
||||
|
||||
/**
|
||||
* Interface implemented by users of the nsITimer class. An instance
|
||||
* of this interface is passed in when creating a timer. The Notify()
|
||||
* method of that instance is invoked after the specified delay.
|
||||
*/
|
||||
class nsITimerCallback : public nsISupports {
|
||||
public:
|
||||
virtual void Notify(nsITimer *timer)=0;
|
||||
};
|
||||
|
||||
#endif
|
||||
46
mozilla/base/src/nsIUnicharBuffer.h
Normal file
46
mozilla/base/src/nsIUnicharBuffer.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIUnicharBuffer_h___
|
||||
#define nsIUnicharBuffer_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
class nsIUnicharInputStream;
|
||||
|
||||
#define NS_IUNICHAR_BUFFER_IID \
|
||||
{ 0x14cf6970, 0x93b5, 0x11d1, \
|
||||
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
/// Interface to a buffer that holds unicode characters
|
||||
class nsIUnicharBuffer : public nsISupports {
|
||||
public:
|
||||
virtual PRInt32 GetLength() const = 0;
|
||||
virtual PRInt32 GetBufferSize() const = 0;
|
||||
virtual PRUnichar* GetBuffer() const = 0;
|
||||
virtual PRBool Grow(PRInt32 aNewSize) = 0;
|
||||
virtual PRInt32 Fill(nsresult* aErrorCode, nsIUnicharInputStream* aStream,
|
||||
PRInt32 aKeep) = 0;
|
||||
};
|
||||
|
||||
/// Factory method for nsIUnicharBuffer.
|
||||
extern NS_BASE nsresult
|
||||
NS_NewUnicharBuffer(nsIUnicharBuffer** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
PRUint32 aBufferSize = 0);
|
||||
|
||||
#endif /* nsIUnicharBuffer_h___ */
|
||||
98
mozilla/base/src/nsIUnicharInputStream.h
Normal file
98
mozilla/base/src/nsIUnicharInputStream.h
Normal file
@@ -0,0 +1,98 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsIUnicharInputStream_h___
|
||||
#define nsIUnicharInputStream_h___
|
||||
|
||||
#include "nsIInputStream.h"
|
||||
class nsString;
|
||||
|
||||
#define NS_IUNICHAR_INPUT_STREAM_IID \
|
||||
{ 0x2d97fbf0, 0x93b5, 0x11d1, \
|
||||
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
#define NS_IB2UCONVERTER_IID \
|
||||
{ 0x35e40290, 0x93b5, 0x11d1, \
|
||||
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
/// Enumeration of character set ids.
|
||||
enum nsCharSetID {
|
||||
eCharSetID_IsoLatin1 = 0,
|
||||
eCharSetID_UTF8,
|
||||
eCharSetID_ShiftJis
|
||||
// XXX more i'm sure...
|
||||
};
|
||||
|
||||
/** Abstract unicode character input stream
|
||||
* @see nsIInputStream
|
||||
*/
|
||||
class nsIUnicharInputStream : public nsISupports {
|
||||
public:
|
||||
NS_IMETHOD Read(PRUnichar* aBuf,
|
||||
PRUint32 aOffset,
|
||||
PRUint32 aCount,
|
||||
PRUint32 *aReadCount) = 0;
|
||||
NS_IMETHOD Close() = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Create a nsIUnicharInputStream that wraps up a string. Data is fed
|
||||
* from the string out until the done. When this object is destroyed
|
||||
* it destroyes the string (so make a copy if you don't want it doing
|
||||
* that)
|
||||
*/
|
||||
extern NS_BASE nsresult
|
||||
NS_NewStringUnicharInputStream(nsIUnicharInputStream** aInstancePtrResult,
|
||||
nsString* aString);
|
||||
|
||||
/// Abstract interface for converting from bytes to unicode characters
|
||||
class nsIB2UConverter : public nsISupports {
|
||||
public:
|
||||
/** aDstLen is updated to indicate how much data was translated into
|
||||
* aDst; aSrcLen is updated to indicate how much data was used in
|
||||
* the source buffer.
|
||||
*/
|
||||
NS_IMETHOD Convert(PRUnichar* aDst,
|
||||
PRUint32 aDstOffset,
|
||||
PRUint32& aDstLen,
|
||||
const char* aSrc,
|
||||
PRUint32 aSrcOffset,
|
||||
PRUint32& aSrcLen) = 0;
|
||||
};
|
||||
|
||||
/** Create a new nsUnicharInputStream that provides a converter for the
|
||||
* byte input stream aStreamToWrap. If no converter can be found then
|
||||
* nsnull is returned and the error code is set to
|
||||
* NS_INPUTSTREAM_NO_CONVERTER.
|
||||
*/
|
||||
extern NS_BASE nsresult
|
||||
NS_NewConverterStream(nsIUnicharInputStream** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
nsIInputStream* aStreamToWrap,
|
||||
PRInt32 aBufferSize = 0,
|
||||
nsCharSetID aCharSet = eCharSetID_IsoLatin1);
|
||||
|
||||
/** Create a new nsB2UConverter for the given character set. When given
|
||||
* nsnull, the converter for iso-latin1 to unicode is provided. If no
|
||||
* converter can be found, nsnull is returned.
|
||||
*/
|
||||
extern NS_BASE nsresult
|
||||
NS_NewB2UConverter(nsIB2UConverter** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
nsCharSetID aCharSet = eCharSetID_IsoLatin1);
|
||||
|
||||
#endif /* nsUnicharInputStream_h___ */
|
||||
340
mozilla/base/src/nsInt64.h
Normal file
340
mozilla/base/src/nsInt64.h
Normal file
@@ -0,0 +1,340 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsInt64_h__
|
||||
#define nsInt64_h__
|
||||
|
||||
#include "prlong.h"
|
||||
#include "nscore.h"
|
||||
|
||||
/**
|
||||
* This class encapsulates full 64-bit integer functionality and
|
||||
* provides simple arithmetic and conversion operations.
|
||||
*/
|
||||
|
||||
// If you ever decide that you need to add a non-inline method to this
|
||||
// class, be sure to change the class declaration to "class NS_BASE
|
||||
// nsInt64".
|
||||
|
||||
class nsInt64
|
||||
{
|
||||
private:
|
||||
PRInt64 mValue;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Construct a new 64-bit integer.
|
||||
*/
|
||||
nsInt64(void) : mValue(LL_ZERO) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new 64-bit integer from a 32-bit signed integer
|
||||
*/
|
||||
nsInt64(const PRInt32 aInt32) {
|
||||
LL_I2L(mValue, aInt32);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new 64-bit integer from a 32-bit unsigned integer
|
||||
*/
|
||||
nsInt64(const PRUint32 aUint32) {
|
||||
LL_UI2L(mValue, aUint32);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new 64-bit integer from a floating point value.
|
||||
*/
|
||||
nsInt64(const PRFloat64 aFloat64) {
|
||||
LL_D2L(mValue, aFloat64);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new 64-bit integer from a native 64-bit integer
|
||||
*/
|
||||
nsInt64(const PRInt64 aInt64) : mValue(aInt64) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new 64-bit integer from another 64-bit integer
|
||||
*/
|
||||
nsInt64(const nsInt64& aObject) : mValue(aObject.mValue) {
|
||||
}
|
||||
|
||||
// ~nsInt64(void) -- XXX destructor unnecessary
|
||||
|
||||
/**
|
||||
* Assign a 64-bit integer to another 64-bit integer
|
||||
*/
|
||||
const nsInt64& operator =(const nsInt64& aObject) {
|
||||
mValue = aObject.mValue;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a 64-bit integer to a signed 32-bit value
|
||||
*/
|
||||
operator PRInt32(void) const {
|
||||
PRInt32 result;
|
||||
LL_L2I(result, mValue);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a 64-bit integer to an unsigned 32-bit value
|
||||
*/
|
||||
operator PRUint32(void) const {
|
||||
PRUint32 result;
|
||||
LL_L2UI(result, mValue);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a 64-bit integer to a floating point value
|
||||
*/
|
||||
operator PRFloat64(void) const {
|
||||
PRFloat64 result;
|
||||
LL_L2D(result, mValue);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a 64-bit integer to a native 64-bit integer.
|
||||
*/
|
||||
operator PRInt64(void) const {
|
||||
return mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform unary negation on a 64-bit integer.
|
||||
*/
|
||||
const nsInt64 operator -(void) {
|
||||
nsInt64 result;
|
||||
LL_NEG(result.mValue, mValue);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Arithmetic operators
|
||||
friend const nsInt64 operator +(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend const nsInt64 operator -(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend const nsInt64 operator *(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend const nsInt64 operator /(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend const nsInt64 operator %(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
|
||||
/**
|
||||
* Increment a 64-bit integer by a 64-bit integer amount.
|
||||
*/
|
||||
nsInt64& operator +=(const nsInt64& aObject) {
|
||||
LL_ADD(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrement a 64-bit integer by a 64-bit integer amount.
|
||||
*/
|
||||
nsInt64& operator -=(const nsInt64& aObject) {
|
||||
LL_SUB(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiply a 64-bit integer by a 64-bit integer amount.
|
||||
*/
|
||||
nsInt64& operator *=(const nsInt64& aObject) {
|
||||
LL_MUL(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Divide a 64-bit integer by a 64-bit integer amount.
|
||||
*/
|
||||
nsInt64& operator /=(const nsInt64& aObject) {
|
||||
LL_DIV(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the modulus of a 64-bit integer to a 64-bit value.
|
||||
*/
|
||||
nsInt64& operator %=(const nsInt64& aObject) {
|
||||
LL_MOD(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// Comparison operators
|
||||
friend PRBool operator ==(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend PRBool operator !=(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend PRBool operator >(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend PRBool operator >=(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend PRBool operator <(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend PRBool operator <=(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
|
||||
// Bitwise operators
|
||||
friend const nsInt64 operator &(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend const nsInt64 operator |(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
friend const nsInt64 operator ^(const nsInt64& aObject1, const nsInt64& aObject2);
|
||||
|
||||
/**
|
||||
* Compute the bitwise NOT of a 64-bit integer
|
||||
*/
|
||||
const nsInt64 operator ~(void) {
|
||||
nsInt64 result;
|
||||
LL_NOT(result.mValue, mValue);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the bitwise AND with another 64-bit integer
|
||||
*/
|
||||
nsInt64& operator &=(const nsInt64& aObject) {
|
||||
LL_AND(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the bitwise OR with another 64-bit integer
|
||||
*/
|
||||
nsInt64& operator |=(const nsInt64& aObject) {
|
||||
LL_OR(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the bitwise XOR with another 64-bit integer
|
||||
*/
|
||||
nsInt64& operator ^=(const nsInt64& aObject) {
|
||||
LL_XOR(mValue, mValue, aObject.mValue);
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Add two 64-bit integers.
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator +(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) += aObject2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtract one 64-bit integer from another.
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator -(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) -= aObject2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiply two 64-bit integers
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator *(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) *= aObject2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Divide one 64-bit integer by another
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator /(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) /= aObject2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the modulus of two 64-bit integers
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator %(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) %= aObject2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if two 64-bit integers are equal
|
||||
*/
|
||||
inline PRBool
|
||||
operator ==(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return LL_EQ(aObject1.mValue, aObject2.mValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if two 64-bit integers are not equal
|
||||
*/
|
||||
inline PRBool
|
||||
operator !=(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return LL_NE(aObject1.mValue, aObject2.mValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one 64-bit integer is strictly greater than another, using signed values
|
||||
*/
|
||||
inline PRBool
|
||||
operator >(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return LL_CMP(aObject1.mValue, >, aObject2.mValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one 64-bit integer is greater than or equal to another, using signed values
|
||||
*/
|
||||
inline PRBool
|
||||
operator >=(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return LL_CMP(aObject1.mValue, >=, aObject2.mValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one 64-bit integer is strictly less than another, using signed values
|
||||
*/
|
||||
inline PRBool
|
||||
operator <(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return LL_CMP(aObject1.mValue, <, aObject2.mValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one 64-bit integers is less than or equal to another, using signed values
|
||||
*/
|
||||
inline PRBool
|
||||
operator <=(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return LL_CMP(aObject1.mValue, <=, aObject2.mValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a bitwise AND of two 64-bit integers
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator &(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) &= aObject2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a bitwise OR of two 64-bit integers
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator |(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) |= aObject2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a bitwise XOR of two 64-bit integers
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator ^(const nsInt64& aObject1, const nsInt64& aObject2) {
|
||||
return nsInt64(aObject1) ^= aObject2;
|
||||
}
|
||||
|
||||
|
||||
#endif // nsInt64_h__
|
||||
423
mozilla/base/src/nsRBTree.cpp
Normal file
423
mozilla/base/src/nsRBTree.cpp
Normal file
@@ -0,0 +1,423 @@
|
||||
|
||||
/**
|
||||
* This file defines the binary tree class and it
|
||||
* nsNode child class.
|
||||
*
|
||||
* This simple version stores nodes, and the
|
||||
* nodes store void* ptrs.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
|
||||
#include "nsRBTree.h"
|
||||
|
||||
|
||||
|
||||
/**************************************************
|
||||
Here comes the nsRBTree class...
|
||||
*************************************************/
|
||||
|
||||
/**
|
||||
* nsRBTree constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsRBTree::nsRBTree() : nsBTree() {
|
||||
mRoot=0;
|
||||
}
|
||||
|
||||
/**
|
||||
* nsRBTree constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsRBTree::nsRBTree(const nsRBTree& aCopy) : nsBTree(aCopy) {
|
||||
mRoot=aCopy.mRoot;
|
||||
}
|
||||
|
||||
/**
|
||||
* nsRBTree destructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsRBTree::~nsRBTree(){
|
||||
if(mRoot){
|
||||
//walk the tree and destroy the children.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Given a node, we're supposed to add it into
|
||||
* our tree.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode* nsRBTree::Add(nsNode& aNode){
|
||||
|
||||
nsBTree::Add(aNode);
|
||||
|
||||
nsNode* node1=&aNode;
|
||||
nsNode* node2=0;
|
||||
|
||||
node1->mColor=nsNode::eRed;
|
||||
|
||||
while((node1!=mRoot) && (node1->mParent->mColor==nsNode::eRed)) {
|
||||
if(node1->mParent==node1->mParent->mParent->mLeft) {
|
||||
node2=node1->mParent->mParent->mLeft;
|
||||
if(node2->mColor==nsNode::eRed) {
|
||||
node1->mParent->mColor=nsNode::eBlack;
|
||||
node2->mColor=nsNode::eBlack;
|
||||
node1->mParent->mParent->mColor=nsNode::eRed;
|
||||
node1=node1->mParent->mParent;
|
||||
}
|
||||
else {
|
||||
if(node1==node1->mParent->mRight) {
|
||||
node1=node1->mParent;
|
||||
ShiftLeft(*node1);
|
||||
}
|
||||
node1->mParent->mColor=nsNode::eBlack;
|
||||
node1->mParent->mParent->mColor=nsNode::eRed;
|
||||
ShiftRight(*node1->mParent->mParent);
|
||||
}
|
||||
}
|
||||
else {
|
||||
node2=node1->mParent->mParent->mRight;
|
||||
if (node2->mColor==nsNode::eRed){
|
||||
node1->mParent->mColor=nsNode::eBlack;
|
||||
node2->mColor=nsNode::eBlack;
|
||||
node1->mParent->mParent->mColor=nsNode::eRed;
|
||||
node1=node1->mParent->mParent;
|
||||
}
|
||||
else {
|
||||
if (node1==node1->mParent->mLeft) {
|
||||
node1=node1->mParent;
|
||||
ShiftRight(*node1);
|
||||
}
|
||||
node1->mParent->mColor=nsNode::eBlack;
|
||||
node1->mParent->mParent->mColor=nsNode::eRed;
|
||||
ShiftLeft(*node1->mParent->mParent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mRoot->mColor=nsNode::eBlack;
|
||||
return &aNode;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrive the first node in the tree
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode* nsRBTree::First(){
|
||||
nsNode* result=First(*mRoot);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the first node given a starting node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode --
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* nsRBTree::First(nsNode& aNode){
|
||||
nsNode* result=0;
|
||||
|
||||
if(mRoot) {
|
||||
result=mRoot;
|
||||
while(result->GetLeftNode()) {
|
||||
result=result->GetLeftNode();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the last node in the tree
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* nsRBTree::Last(){
|
||||
nsNode* result=Last(*mRoot);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the last node from a given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node ptr to start from
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* nsRBTree::Last(nsNode& aNode){
|
||||
nsNode* result=0;
|
||||
|
||||
if(mRoot) {
|
||||
result=mRoot;
|
||||
while(result->GetRightNode()) {
|
||||
result=result->GetRightNode();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the node that preceeds the given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to find precedent of
|
||||
* @return preceeding node ptr, or null
|
||||
*/
|
||||
nsNode* nsRBTree::Before(nsNode& aNode){
|
||||
|
||||
if(aNode.GetLeftNode())
|
||||
return Last(*aNode.GetLeftNode());
|
||||
|
||||
//otherwise...
|
||||
|
||||
nsNode* node1=&aNode;
|
||||
nsNode* node2=aNode.GetParentNode();
|
||||
|
||||
while((node2) && (node1==node2->GetLeftNode())) {
|
||||
node1=node2;
|
||||
node2=node2->GetParentNode();
|
||||
}
|
||||
return node2;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve a ptr to the node following the given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to find successor node from
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* nsRBTree::After(nsNode& aNode){
|
||||
|
||||
if(aNode.GetRightNode())
|
||||
return First(*aNode.GetRightNode());
|
||||
|
||||
//otherwise...
|
||||
|
||||
nsNode* node1=&aNode;
|
||||
nsNode* node2=aNode.GetParentNode();
|
||||
|
||||
while((node2) && (node1==node2->GetRightNode())) {
|
||||
node1=node2;
|
||||
node2=node2->GetParentNode();
|
||||
}
|
||||
|
||||
return node2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a (given) node in the tree
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to find in the tree
|
||||
* @return node ptr (if found) or null
|
||||
*/
|
||||
nsNode* nsRBTree::Find(nsNode& aNode){
|
||||
nsNode* result=mRoot;
|
||||
|
||||
while((result) && (!((*result)==aNode))) {
|
||||
if(aNode<*result)
|
||||
result=result->mLeft;
|
||||
else result=result->mRight;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Causes a shift to the left, to keep the
|
||||
* underlying RB data in balance
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return this
|
||||
*/
|
||||
nsRBTree& nsRBTree::ShiftLeft(nsNode& aNode){
|
||||
|
||||
nsNode* temp= aNode.mRight;
|
||||
|
||||
aNode.mRight=temp->mLeft;
|
||||
if(temp->mLeft)
|
||||
temp->mRight->mParent=&aNode;
|
||||
temp->mParent= aNode.mParent;
|
||||
if (aNode.mParent) {
|
||||
if (&aNode==aNode.mParent->mLeft)
|
||||
aNode.mParent->mLeft=temp;
|
||||
else aNode.mParent->mRight=temp;
|
||||
}
|
||||
else mRoot=temp;
|
||||
temp->mLeft=&aNode;;
|
||||
aNode.mParent=temp;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Causes a shift right to occur, to keep the
|
||||
* underlying RB data in balance
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node at which to perform shift
|
||||
* @return this
|
||||
*/
|
||||
nsRBTree& nsRBTree::ShiftRight(nsNode& aNode){
|
||||
|
||||
nsNode* temp=aNode.mLeft;
|
||||
|
||||
aNode.mLeft=temp->mRight;
|
||||
if(temp->mRight)
|
||||
temp->mRight->mParent=&aNode;
|
||||
temp->mParent=aNode.mParent;
|
||||
if(aNode.mParent){
|
||||
if(&aNode==aNode.mParent->mRight)
|
||||
aNode.mParent->mRight=temp;
|
||||
else aNode.mParent->mLeft=temp;
|
||||
}
|
||||
else mRoot=temp;
|
||||
temp->mRight=&aNode;
|
||||
aNode.mParent=temp;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebalances tree around the given node. This only
|
||||
* needs to be called after a node is deleted.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to balance around
|
||||
* @return this
|
||||
*/
|
||||
nsBTree& nsRBTree::ReBalance(nsNode& aNode){
|
||||
|
||||
nsNode* node1=&aNode;
|
||||
nsNode* node2=0;
|
||||
|
||||
while ((node1!=mRoot) && (node1->mColor==nsNode::eBlack)) {
|
||||
if(node1==node1->mParent->mLeft) {
|
||||
node2=node1->mParent->mRight;
|
||||
if(node2->mColor==nsNode::eRed) {
|
||||
node2->mColor=nsNode::eBlack;
|
||||
node1->mParent->mColor=nsNode::eRed;
|
||||
ShiftLeft(*node1->mParent);
|
||||
node2=node1->mParent->mRight;
|
||||
}
|
||||
|
||||
if((node2->mLeft->mColor == nsNode::eBlack) &&
|
||||
(node2->mRight->mColor == nsNode::eBlack)) {
|
||||
node2->mColor=nsNode::eRed;
|
||||
node1=node1->mParent;
|
||||
}
|
||||
else {
|
||||
if(node2->mRight->mColor == nsNode::eBlack) {
|
||||
node2->mLeft->mColor=nsNode::eBlack;
|
||||
node2->mColor=nsNode::eRed;
|
||||
ShiftRight(*node2);
|
||||
node2=node1->mParent->mRight;
|
||||
}
|
||||
|
||||
node2->mColor=node1->mParent->mColor;
|
||||
node1->mParent->mColor=nsNode::eBlack;
|
||||
node2->mRight->mColor=nsNode::eBlack;
|
||||
ShiftLeft(*node1->mParent);
|
||||
node1=mRoot;
|
||||
} //else
|
||||
}
|
||||
else {
|
||||
node2=node1->mParent->mLeft;
|
||||
if(node2->mColor==nsNode::eRed) {
|
||||
node2->mColor=nsNode::eBlack;
|
||||
node1->mParent->mColor=nsNode::eRed;
|
||||
ShiftRight(*node1->mParent);
|
||||
node2=node1->mParent->mLeft;
|
||||
}
|
||||
|
||||
if((node2->mRight->mColor == nsNode::eBlack) &&
|
||||
(node2->mLeft->mColor == nsNode::eBlack)) {
|
||||
node2->mColor=nsNode::eRed;
|
||||
node1=node1->mParent;
|
||||
}
|
||||
else {
|
||||
if(node2->mLeft->mColor == nsNode::eBlack){
|
||||
node2->mRight->mColor=nsNode::eBlack;
|
||||
node2->mColor=nsNode::eRed;
|
||||
ShiftLeft(*node2);
|
||||
node2=node1->mParent->mLeft;
|
||||
}
|
||||
|
||||
node2->mColor=node1->mParent->mColor;
|
||||
node1->mParent->mColor=nsNode::eBlack;
|
||||
node2->mLeft->mColor=nsNode::eBlack;
|
||||
ShiftRight(*node1->mParent);
|
||||
node1=mRoot;
|
||||
} //else
|
||||
} //if
|
||||
} //while
|
||||
|
||||
node1->mColor=nsNode::eBlack;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
Here comes the nsRBTreeIterator class...
|
||||
*************************************************/
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsRBTreeIterator::nsRBTreeIterator(const nsRBTree& aTree) : mTree(aTree) {
|
||||
}
|
||||
|
||||
/**
|
||||
* copy constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aCopy is the object you want to copy from
|
||||
* @return newly constructed object
|
||||
*/
|
||||
nsRBTreeIterator::nsRBTreeIterator(const nsRBTreeIterator& aCopy) : mTree(aCopy.mTree) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor method
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsRBTreeIterator::~nsRBTreeIterator(){
|
||||
}
|
||||
|
||||
/**
|
||||
* This method iterates over the tree, calling
|
||||
* aFunctor for each node.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aFunctor -- object to call for each node
|
||||
* @param aNode -- node at which to start iteration
|
||||
* @return this
|
||||
*/
|
||||
const nsRBTreeIterator& nsRBTreeIterator::ForEach(nsNodeFunctor& aFunctor) const{
|
||||
mTree.ForEach(aFunctor);
|
||||
return *this;
|
||||
}
|
||||
223
mozilla/base/src/nsRBTree.h
Normal file
223
mozilla/base/src/nsRBTree.h
Normal file
@@ -0,0 +1,223 @@
|
||||
|
||||
/**
|
||||
* This file defines the binary tree class and its
|
||||
* nsNode child class.
|
||||
*
|
||||
* This simple version stores nodes, and the
|
||||
* nodes store void* ptrs.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
|
||||
/**
|
||||
* MODULE NOTES
|
||||
* @update gess 4/11/98
|
||||
*
|
||||
* This file declares the nsRBTree (red/black tree).
|
||||
* Red/black trees are auto-balancing binary trees.
|
||||
*
|
||||
* To use this class, define a subclass of nsNode
|
||||
* which stores your data type. It's important that
|
||||
* you overload the following methods:
|
||||
*
|
||||
* virtual PRBool operator<()
|
||||
* virtual PRBool operator==()
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _nsRBTree
|
||||
#define _nsRBTree
|
||||
|
||||
|
||||
#include "nsBTree.h"
|
||||
|
||||
|
||||
/**
|
||||
* Here comes the main event: our nsRBTree (red/black tree).
|
||||
* Red/Black trees are autobalancing binary trees.
|
||||
*
|
||||
* @update gess4/20/98
|
||||
*/
|
||||
|
||||
class NS_BASE nsRBTree : public nsBTree {
|
||||
public:
|
||||
friend class NS_BASE nsRBTreeIterator;
|
||||
|
||||
/**
|
||||
* nsRBTree constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsRBTree();
|
||||
|
||||
/**
|
||||
* nsRBTree constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
nsRBTree(const nsRBTree& aCopy);
|
||||
|
||||
/**
|
||||
* nsRBTree destructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
*/
|
||||
virtual ~nsRBTree();
|
||||
|
||||
/**
|
||||
* Given a node, we're supposed to add it into
|
||||
* our tree.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode* Add(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Retrive the first node in the tree
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsNode* First(void);
|
||||
|
||||
/**
|
||||
* Retrieve the first node given a starting node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode --
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* First(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Find the last node in the tree
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* Last(void);
|
||||
|
||||
/**
|
||||
* Find the last node from a given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node ptr to start from
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* Last(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Retrieve the node that preceeds the given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to find precedent of
|
||||
* @return preceeding node ptr, or null
|
||||
*/
|
||||
nsNode* Before(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Retrieve a ptr to the node following the given node
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to find successor node from
|
||||
* @return node ptr or null
|
||||
*/
|
||||
nsNode* After(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Find a (given) node in the tree
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param node to find in the tree
|
||||
* @return node ptr (if found) or null
|
||||
*/
|
||||
nsNode* Find(nsNode& aNode);
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
* Causes a shift to the left, to keep the
|
||||
* underlying RB data in balance
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return this
|
||||
*/
|
||||
nsRBTree& ShiftLeft(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Causes a shift right to occur, to keep the
|
||||
* underlying RB data in balance
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node at which to perform shift
|
||||
* @return this
|
||||
*/
|
||||
nsRBTree& ShiftRight(nsNode& aNode);
|
||||
|
||||
/**
|
||||
* Rebalances tree around the given node. This only
|
||||
* needs to be called after a node is deleted.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aNode -- node to balance around
|
||||
* @return this
|
||||
*/
|
||||
virtual nsBTree& ReBalance(nsNode& aNode);
|
||||
|
||||
};
|
||||
|
||||
class NS_BASE nsRBTreeIterator {
|
||||
public:
|
||||
|
||||
/**
|
||||
* TreeIterator constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsRBTreeIterator(const nsRBTree& aTree);
|
||||
|
||||
/**
|
||||
* TreeIterator constructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
nsRBTreeIterator(const nsRBTreeIterator& aCopy);
|
||||
|
||||
/**
|
||||
* tree iterator destructor
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
~nsRBTreeIterator();
|
||||
|
||||
/**
|
||||
* This method iterates over the tree, calling
|
||||
* aFunctor for each node.
|
||||
*
|
||||
* @update gess 4/11/98
|
||||
* @param aFunctor -- object to call for each node
|
||||
* @param aNode -- node at which to start iteration
|
||||
* @return this
|
||||
*/
|
||||
const nsRBTreeIterator& ForEach(nsNodeFunctor& aFunctor) const;
|
||||
|
||||
protected:
|
||||
const nsRBTree& mTree;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
121
mozilla/base/src/nsSizeOfHandler.cpp
Normal file
121
mozilla/base/src/nsSizeOfHandler.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsISizeOfHandler.h"
|
||||
#include "plhash.h"
|
||||
|
||||
static NS_DEFINE_IID(kISizeOfHandlerIID, NS_ISIZEOF_HANDLER_IID);
|
||||
|
||||
class nsSizeOfHandler : public nsISizeOfHandler {
|
||||
public:
|
||||
nsSizeOfHandler();
|
||||
~nsSizeOfHandler();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
// nsISizeOfHandler
|
||||
NS_IMETHOD Add(size_t aSize);
|
||||
virtual PRBool HaveSeen(void* anObject);
|
||||
NS_IMETHOD GetSize(PRUint32& aResult);
|
||||
|
||||
protected:
|
||||
PRUint32 mTotalSize;
|
||||
PLHashTable* mTable;
|
||||
};
|
||||
|
||||
static PLHashNumber
|
||||
HashKey(void* key)
|
||||
{
|
||||
return (PLHashNumber) key;
|
||||
}
|
||||
|
||||
static PRIntn
|
||||
CompareKeys(void* key1, void* key2)
|
||||
{
|
||||
return key1 == key2;
|
||||
}
|
||||
|
||||
nsSizeOfHandler::nsSizeOfHandler()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mTotalSize = 0;
|
||||
mTable = PL_NewHashTable(8, (PLHashFunction) HashKey,
|
||||
(PLHashComparator) CompareKeys,
|
||||
(PLHashComparator) nsnull,
|
||||
nsnull, nsnull);
|
||||
}
|
||||
|
||||
nsSizeOfHandler::~nsSizeOfHandler()
|
||||
{
|
||||
if (nsnull != mTable) {
|
||||
PL_HashTableDestroy(mTable);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsSizeOfHandler, kISizeOfHandlerIID)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSizeOfHandler::Add(size_t aSize)
|
||||
{
|
||||
mTotalSize += aSize;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsSizeOfHandler::HaveSeen(void* anObject)
|
||||
{
|
||||
if (nsnull == mTable) {
|
||||
// When we run out of memory, HaveSeen returns PR_TRUE to stop
|
||||
// wasting time.
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
if (nsnull != anObject) {
|
||||
PRInt32 hashCode = (PRInt32) anObject;
|
||||
PLHashEntry** hep = PL_HashTableRawLookup(mTable, hashCode, anObject);
|
||||
PLHashEntry* he = *hep;
|
||||
if (nsnull != he) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
he = PL_HashTableRawAdd(mTable, hep, hashCode, anObject, anObject);
|
||||
if (nsnull == he) {
|
||||
// When we run out of memory, HaveSeen returns PR_TRUE to stop
|
||||
// wasting time.
|
||||
return PR_TRUE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSizeOfHandler::GetSize(PRUint32& aResult)
|
||||
{
|
||||
aResult = mTotalSize;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_BASE nsresult
|
||||
NS_NewSizeOfHandler(nsISizeOfHandler** aInstancePtrResult)
|
||||
{
|
||||
nsISizeOfHandler *it = new nsSizeOfHandler();
|
||||
if (it == nsnull) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
return it->QueryInterface(kISizeOfHandlerIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
133
mozilla/base/src/nsStdFileStream.cpp
Normal file
133
mozilla/base/src/nsStdFileStream.cpp
Normal file
@@ -0,0 +1,133 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// First checked in on 98/12/08 by John R. McMullen.
|
||||
// Since nsFileStream.h is entirely templates, common code (such as open())
|
||||
// which does not actually depend on the charT, can be placed here.
|
||||
|
||||
#ifdef XP_UNIX
|
||||
// Compile the un-inlined functions in this file only.
|
||||
#define DEFINING_FILE_STREAM
|
||||
#endif
|
||||
|
||||
#include "nsStdFileStream.h"
|
||||
|
||||
#ifdef XP_MAC
|
||||
#include <Errors.h>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
PRFileDesc* nsFileStreamHelpers::open(
|
||||
const nsFilePath& inFile,
|
||||
IOS_BASE::openmode mode,
|
||||
PRIntn accessMode)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
PRFileDesc* descriptor = 0;
|
||||
const IOS_BASE::openmode valid_modes[]=
|
||||
{
|
||||
IOS_BASE::out,
|
||||
IOS_BASE::out | IOS_BASE::app,
|
||||
IOS_BASE::out | IOS_BASE::trunc,
|
||||
IOS_BASE::in,
|
||||
IOS_BASE::in | IOS_BASE::out,
|
||||
IOS_BASE::in | IOS_BASE::out | IOS_BASE::trunc,
|
||||
// IOS_BASE::out | IOS_BASE::binary,
|
||||
// IOS_BASE::out | IOS_BASE::app | IOS_BASE::binary,
|
||||
// IOS_BASE::out | IOS_BASE::trunc | IOS_BASE::binary,
|
||||
// IOS_BASE::in | IOS_BASE::binary,
|
||||
// IOS_BASE::in | IOS_BASE::out | IOS_BASE::binary,
|
||||
// IOS_BASE::in | IOS_BASE::out | IOS_BASE::trunc | IOS_BASE::binary,
|
||||
0
|
||||
};
|
||||
|
||||
const int nspr_modes[]={
|
||||
PR_WRONLY | PR_CREATE_FILE,
|
||||
PR_WRONLY | PR_CREATE_FILE | PR_APPEND,
|
||||
PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE,
|
||||
PR_RDONLY,
|
||||
PR_RDONLY | PR_APPEND,
|
||||
PR_RDWR | PR_CREATE_FILE,
|
||||
PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE,
|
||||
// "wb",
|
||||
// "ab",
|
||||
// "wb",
|
||||
// "rb",
|
||||
// "r+b",
|
||||
// "w+b",
|
||||
0 };
|
||||
int ind=0;
|
||||
while (valid_modes[ind] && valid_modes[ind] != (mode&~IOS_BASE::ate))
|
||||
++ind;
|
||||
if (!nspr_modes[ind])
|
||||
return 0;
|
||||
|
||||
#ifdef XP_MAC
|
||||
// Use the file spec to open the file, because one path can be common to
|
||||
// several files on the Macintosh (you can have several volumes with the
|
||||
// same name, see).
|
||||
descriptor = 0;
|
||||
if (inFile.GetNativeSpec().Error() != noErr)
|
||||
return 0;
|
||||
OSErr err = noErr;
|
||||
#if DEBUG
|
||||
const OSType kCreator = 'CWIE';
|
||||
#else
|
||||
const OSType kCreator = 'MOSS';
|
||||
#endif
|
||||
nsNativeFileSpec nativeSpec = inFile.GetNativeSpec();
|
||||
FSSpec* spec = (FSSpec*)nativeSpec;
|
||||
if (nspr_modes[ind] & PR_CREATE_FILE)
|
||||
err = FSpCreate(spec, kCreator, 'TEXT', 0);
|
||||
if (err == dupFNErr)
|
||||
err = noErr;
|
||||
if (err != noErr)
|
||||
return 0;
|
||||
|
||||
SInt8 perm;
|
||||
if (nspr_modes[ind] & PR_RDWR)
|
||||
perm = fsRdWrPerm;
|
||||
else if (nspr_modes[ind] & PR_WRONLY)
|
||||
perm = fsWrPerm;
|
||||
else
|
||||
perm = fsRdPerm;
|
||||
|
||||
short refnum;
|
||||
err = FSpOpenDF(spec, perm, &refnum);
|
||||
|
||||
if (err == noErr && (nspr_modes[ind] & PR_TRUNCATE))
|
||||
err = SetEOF(refnum, 0);
|
||||
if (err == noErr && (nspr_modes[ind] & PR_APPEND))
|
||||
err = SetFPos(refnum, fsFromLEOF, 0);
|
||||
if (err != noErr)
|
||||
return 0;
|
||||
|
||||
if ((descriptor = PR_ImportFile(refnum)) == 0)
|
||||
return 0;
|
||||
#else
|
||||
// Platforms other than Macintosh...
|
||||
if ((descriptor = PR_Open(inFile, nspr_modes[ind], accessMode)) != 0)
|
||||
#endif
|
||||
if (mode&IOS_BASE::ate && PR_Seek(descriptor, 0, PR_SEEK_END) >= 0)
|
||||
{
|
||||
PR_Close(descriptor);
|
||||
descriptor = 0;
|
||||
return 0;
|
||||
}
|
||||
return descriptor;
|
||||
} // nsFileStreamHelpers::open
|
||||
2252
mozilla/base/src/nsString.cpp
Normal file
2252
mozilla/base/src/nsString.cpp
Normal file
File diff suppressed because it is too large
Load Diff
791
mozilla/base/src/nsString.h
Normal file
791
mozilla/base/src/nsString.h
Normal file
@@ -0,0 +1,791 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
MODULE NOTES:
|
||||
|
||||
A. There are two philosophies to building string classes:
|
||||
1. Hide the underlying buffer & offer API's allow indirect iteration
|
||||
2. Reveal underlying buffer, risk corruption, but gain performance
|
||||
|
||||
We chose the second option for performance reasons.
|
||||
|
||||
B Our internal buffer always holds capacity+1 bytes.
|
||||
***********************************************************************/
|
||||
|
||||
|
||||
#ifndef _NSSTRING
|
||||
#define _NSSTRING
|
||||
|
||||
|
||||
#include "prtypes.h"
|
||||
#include "nscore.h"
|
||||
#include "nsIAtom.h"
|
||||
#include <iostream.h>
|
||||
#include <stdio.h>
|
||||
class nsISizeOfHandler;
|
||||
|
||||
class NS_BASE nsString {
|
||||
public:
|
||||
|
||||
/**
|
||||
* Default constructor. Note that we actually allocate a small buffer
|
||||
* to begin with. This is because the "philosophy" of the string class
|
||||
* was to allow developers direct access to the underlying buffer for
|
||||
* performance reasons.
|
||||
*/
|
||||
nsString();
|
||||
|
||||
/**
|
||||
* This constructor accepts an isolatin string
|
||||
* @param an ascii is a ptr to a 1-byte cstr
|
||||
*/
|
||||
nsString(const char* aCString);
|
||||
|
||||
/**
|
||||
* This is our copy constructor
|
||||
* @param reference to another nsString
|
||||
*/
|
||||
nsString(const nsString&);
|
||||
|
||||
/**
|
||||
* Constructor from a unicode string
|
||||
* @param anicodestr pts to a unicode string
|
||||
*/
|
||||
nsString(const PRUnichar* aUnicode);
|
||||
|
||||
/**
|
||||
* Virtual Destructor
|
||||
*/
|
||||
virtual ~nsString();
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the length of this string
|
||||
* @return string length
|
||||
*/
|
||||
PRInt32 Length() const { return mLength; }
|
||||
|
||||
|
||||
/**
|
||||
* Sets the new length of the string.
|
||||
* @param aLength is new string length.
|
||||
* @return nada
|
||||
*/
|
||||
void SetLength(PRInt32 aLength);
|
||||
|
||||
/**
|
||||
* This method truncates this string to given length.
|
||||
*
|
||||
* @param anIndex -- new length of string
|
||||
* @return nada
|
||||
*/
|
||||
void Truncate(PRInt32 anIndex=0);
|
||||
|
||||
|
||||
/**
|
||||
* This method gets called when the internal buffer needs
|
||||
* to grow to a given size.
|
||||
* @param aNewLength -- new capacity of string
|
||||
* @return void
|
||||
*/
|
||||
virtual void EnsureCapacityFor(PRInt32 aNewLength);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param
|
||||
*/
|
||||
virtual void SizeOf(nsISizeOfHandler* aHandler) const;
|
||||
|
||||
/**
|
||||
* Determine whether or not the characters in this
|
||||
* string are in sorted order.
|
||||
*
|
||||
* @return TRUE if ordered.
|
||||
*/
|
||||
PRBool IsOrdered(void) const;
|
||||
|
||||
/**********************************************************************
|
||||
Accessor methods...
|
||||
*********************************************************************/
|
||||
|
||||
/**
|
||||
* Retrieve pointer to internal string value
|
||||
* @return PRUnichar* to internal string
|
||||
*/
|
||||
const PRUnichar* GetUnicode(void) const;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
operator PRUnichar*() const;
|
||||
|
||||
/**
|
||||
* Retrieve unicode char at given index
|
||||
* @param offset into string
|
||||
* @return PRUnichar* to internal string
|
||||
*/
|
||||
PRUnichar operator()(PRInt32 anIndex) const;
|
||||
|
||||
/**
|
||||
* Retrieve reference to unicode char at given index
|
||||
* @param offset into string
|
||||
* @return PRUnichar& from internal string
|
||||
*/
|
||||
PRUnichar& operator[](PRInt32 anIndex) const;
|
||||
|
||||
/**
|
||||
* Retrieve reference to unicode char at given index
|
||||
* @param offset into string
|
||||
* @return PRUnichar& from internal string
|
||||
*/
|
||||
PRUnichar& CharAt(PRInt32 anIndex) const;
|
||||
|
||||
/**
|
||||
* Retrieve reference to first unicode char in string
|
||||
* @return PRUnichar from internal string
|
||||
*/
|
||||
PRUnichar& First() const;
|
||||
|
||||
/**
|
||||
* Retrieve reference to last unicode char in string
|
||||
* @return PRUnichar from internal string
|
||||
*/
|
||||
PRUnichar& Last() const;
|
||||
|
||||
/**********************************************************************
|
||||
String creation methods...
|
||||
*********************************************************************/
|
||||
|
||||
/**
|
||||
* Create a new string by appending given string to this
|
||||
* @param aString -- 2nd string to be appended
|
||||
* @return new string
|
||||
*/
|
||||
nsString operator+(const nsString& aString);
|
||||
|
||||
/**
|
||||
* create a new string by adding this to the given buffer.
|
||||
* @param aCString is a ptr to cstring to be added to this
|
||||
* @return newly created string
|
||||
*/
|
||||
nsString operator+(const char* aCString);
|
||||
|
||||
/**
|
||||
* create a new string by adding this to the given char.
|
||||
* @param aChar is a char to be added to this
|
||||
* @return newly created string
|
||||
*/
|
||||
nsString operator+(char aChar);
|
||||
|
||||
/**
|
||||
* create a new string by adding this to the given buffer.
|
||||
* @param aStr unichar buffer to be added to this
|
||||
* @return newly created string
|
||||
*/
|
||||
nsString operator+(const PRUnichar* aBuffer);
|
||||
|
||||
/**
|
||||
* create a new string by adding this to the given char.
|
||||
* @param aChar is a unichar to be added to this
|
||||
* @return newly created string
|
||||
*/
|
||||
nsString operator+(PRUnichar aChar);
|
||||
|
||||
/**
|
||||
* Converts all chars in internal string to lower
|
||||
*/
|
||||
void ToLowerCase();
|
||||
|
||||
/**
|
||||
* Converts all chars in given string to lower
|
||||
*/
|
||||
void ToLowerCase(nsString& aString) const;
|
||||
|
||||
/**
|
||||
* Converts all chars in given string to upper
|
||||
*/
|
||||
void ToUpperCase();
|
||||
|
||||
/**
|
||||
* Converts all chars in internal string to upper
|
||||
*/
|
||||
void ToUpperCase(nsString& aString) const;
|
||||
|
||||
/**
|
||||
* Creates a duplicate clone (ptr) of this string.
|
||||
* @return ptr to clone of this string
|
||||
*/
|
||||
nsString* ToNewString() const;
|
||||
|
||||
/**
|
||||
* Creates an ascii clone of this string
|
||||
* NOTE: This string is allocated with new; YOU MUST deallocate with delete[]!
|
||||
* @return ptr to new c-String string
|
||||
*/
|
||||
char* ToNewCString() const;
|
||||
|
||||
/**
|
||||
* Copies data from internal buffer onto given char* buffer
|
||||
* @param aBuf is the buffer where data is stored
|
||||
* @param aBuflength is the max # of chars to move to buffer
|
||||
* @return ptr to given buffer
|
||||
*/
|
||||
char* ToCString(char* aBuf,PRInt32 aBufLength) const;
|
||||
|
||||
/**
|
||||
* Copies contents of this onto given string.
|
||||
* @param aString to hold copy of this
|
||||
* @return nada.
|
||||
*/
|
||||
void Copy(nsString& aString) const;
|
||||
|
||||
/**
|
||||
* Creates an unichar clone of this string
|
||||
* @return ptr to new unichar string
|
||||
*/
|
||||
PRUnichar* ToNewUnicode() const;
|
||||
|
||||
/**
|
||||
* Perform string to float conversion.
|
||||
* @param aErrorCode will contain error if one occurs
|
||||
* @return float rep of string value
|
||||
*/
|
||||
float ToFloat(PRInt32* aErrorCode) const;
|
||||
|
||||
/**
|
||||
* Perform string to int conversion.
|
||||
* @param aErrorCode will contain error if one occurs
|
||||
* @return int rep of string value
|
||||
*/
|
||||
PRInt32 ToInteger(PRInt32* aErrorCode,PRInt32 aRadix=10) const;
|
||||
|
||||
/**********************************************************************
|
||||
String manipulation methods...
|
||||
*********************************************************************/
|
||||
|
||||
/**
|
||||
* assign given PRUnichar* to this string
|
||||
* @param aStr: buffer to be assigned to this
|
||||
* @param alength is the length of the given str (or -1)
|
||||
if you want me to determine its length
|
||||
* @return this
|
||||
*/
|
||||
nsString& SetString(const PRUnichar* aStr,PRInt32 aLength=-1);
|
||||
|
||||
/**
|
||||
* assign given char* to this string
|
||||
* @param aCString: buffer to be assigned to this
|
||||
* @param alength is the length of the given str (or -1)
|
||||
if you want me to determine its length
|
||||
* @return this
|
||||
*/
|
||||
nsString& SetString(const char* aCString,PRInt32 aLength=-1);
|
||||
|
||||
/**
|
||||
* assign given string to this one
|
||||
* @param aString: string to be added to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator=(const nsString& aString);
|
||||
|
||||
/**
|
||||
* assign given char* to this string
|
||||
* @param aCString: buffer to be assigned to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator=(const char* aCString);
|
||||
|
||||
/**
|
||||
* assign given char to this string
|
||||
* @param aChar: char to be assignd to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator=(char aChar);
|
||||
|
||||
/**
|
||||
* assign given unichar* to this string
|
||||
* @param aBuffer: unichar buffer to be assigned to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator=(const PRUnichar* aBuffer);
|
||||
|
||||
/**
|
||||
* assign given char to this string
|
||||
* @param aChar: char to be assignd to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator=(PRUnichar aChar);
|
||||
|
||||
/**
|
||||
* append given string to this string
|
||||
* @param aString : string to be appended to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator+=(const nsString& aString);
|
||||
|
||||
/**
|
||||
* append given buffer to this string
|
||||
* @param aCString: buffer to be appended to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator+=(const char* aCString);
|
||||
|
||||
/**
|
||||
* append given buffer to this string
|
||||
* @param aBuffer: buffer to be appended to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator+=(const PRUnichar* aBuffer);
|
||||
|
||||
/**
|
||||
* append given char to this string
|
||||
* @param aChar: char to be appended to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& operator+=(PRUnichar aChar);
|
||||
|
||||
/**
|
||||
* append given string to this string
|
||||
* @param aString : string to be appended to this
|
||||
* @param alength is the length of the given str (or -1)
|
||||
if you want me to determine its length
|
||||
* @return this
|
||||
*/
|
||||
nsString& Append(const nsString& aString,PRInt32 aLength=-1);
|
||||
|
||||
/**
|
||||
* append given string to this string
|
||||
* @param aString : string to be appended to this
|
||||
* @param alength is the length of the given str (or -1)
|
||||
if you want me to determine its length
|
||||
* @return this
|
||||
*/
|
||||
nsString& Append(const char* aCString,PRInt32 aLength=-1);
|
||||
|
||||
/**
|
||||
* append given string to this string
|
||||
* @param aString : string to be appended to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& Append(char aChar);
|
||||
|
||||
/**
|
||||
* append given unichar buffer to this string
|
||||
* @param aString : string to be appended to this
|
||||
* @param alength is the length of the given str (or -1)
|
||||
if you want me to determine its length
|
||||
* @return this
|
||||
*/
|
||||
nsString& Append(const PRUnichar* aBuffer,PRInt32 aLength=-1);
|
||||
|
||||
/**
|
||||
* append given unichar character to this string
|
||||
* @param aChar is the char to be appended to this
|
||||
* @return this
|
||||
*/
|
||||
nsString& Append(PRUnichar aChar);
|
||||
|
||||
/**
|
||||
* Append an integer onto this string
|
||||
* @param aInteger is the int to be appended
|
||||
* @param aRadix specifies 8,10,16
|
||||
* @return this
|
||||
*/
|
||||
nsString& Append(PRInt32 aInteger,PRInt32 aRadix); //radix=8,10 or 16
|
||||
|
||||
/**
|
||||
* Append a float value onto this string
|
||||
* @param aFloat is the float to be appended
|
||||
* @return this
|
||||
*/
|
||||
nsString& Append(float aFloat);
|
||||
|
||||
/*
|
||||
* Copies n characters from this string to given string,
|
||||
* starting at the leftmost offset.
|
||||
*
|
||||
*
|
||||
* @param aCopy -- Receiving string
|
||||
* @param aCount -- number of chars to copy
|
||||
* @return number of chars copied
|
||||
*/
|
||||
PRInt32 Left(nsString& aCopy,PRInt32 aCount) const;
|
||||
|
||||
/*
|
||||
* Copies n characters from this string to given string,
|
||||
* starting at the given offset.
|
||||
*
|
||||
*
|
||||
* @param aCopy -- Receiving string
|
||||
* @param aCount -- number of chars to copy
|
||||
* @param anOffset -- position where copying begins
|
||||
* @return number of chars copied
|
||||
*/
|
||||
PRInt32 Mid(nsString& aCopy,PRInt32 anOffset,PRInt32 aCount) const;
|
||||
|
||||
/*
|
||||
* Copies n characters from this string to given string,
|
||||
* starting at rightmost char.
|
||||
*
|
||||
*
|
||||
* @param aCopy -- Receiving string
|
||||
* @param aCount -- number of chars to copy
|
||||
* @return number of chars copied
|
||||
*/
|
||||
PRInt32 Right(nsString& aCopy,PRInt32 aCount) const;
|
||||
|
||||
/*
|
||||
* This method inserts n chars from given string into this
|
||||
* string at str[anOffset].
|
||||
*
|
||||
* @param aCopy -- String to be inserted into this
|
||||
* @param anOffset -- insertion position within this str
|
||||
* @param aCount -- number of chars to be copied from aCopy
|
||||
* @return number of chars inserted into this.
|
||||
*/
|
||||
PRInt32 Insert(nsString& aCopy,PRInt32 anOffset,PRInt32 aCount=-1);
|
||||
|
||||
/**
|
||||
* Insert a single unicode char into this string at
|
||||
* a specified offset.
|
||||
*
|
||||
* @param aChar char to be inserted into this string
|
||||
* @param anOffset is insert pos in str
|
||||
* @return the number of chars inserted into this string
|
||||
*/
|
||||
PRInt32 Insert(PRUnichar aChar,PRInt32 anOffset);
|
||||
|
||||
/*
|
||||
* This method is used to cut characters in this string
|
||||
* starting at anOffset, continuing for aCount chars.
|
||||
*
|
||||
* @param anOffset -- start pos for cut operation
|
||||
* @param aCount -- number of chars to be cut
|
||||
* @return *this
|
||||
*/
|
||||
nsString& Cut(PRInt32 anOffset,PRInt32 aCount);
|
||||
|
||||
/**
|
||||
* This method is used to remove all occurances of the
|
||||
* characters found in aSet from this string.
|
||||
*
|
||||
* @param aSet -- characters to be cut from this
|
||||
* @return *this
|
||||
*/
|
||||
nsString& StripChars(const char* aSet);
|
||||
|
||||
/**
|
||||
* This method strips whitespace throughout the string
|
||||
*
|
||||
* @return this
|
||||
*/
|
||||
nsString& StripWhitespace();
|
||||
|
||||
/**
|
||||
* This method trims characters found in aTrimSet from
|
||||
* either end of the underlying string.
|
||||
*
|
||||
* @param aTrimSet -- contains chars to be trimmed from
|
||||
* both ends
|
||||
* @return this
|
||||
*/
|
||||
nsString& Trim(const char* aSet,
|
||||
PRBool aEliminateLeading=PR_TRUE,
|
||||
PRBool aEliminateTrailing=PR_TRUE);
|
||||
|
||||
/**
|
||||
* This method strips whitespace from string.
|
||||
* You can control whether whitespace is yanked from
|
||||
* start and end of string as well.
|
||||
*
|
||||
* @param aEliminateLeading controls stripping of leading ws
|
||||
* @param aEliminateTrailing controls stripping of trailing ws
|
||||
* @return this
|
||||
*/
|
||||
nsString& CompressWhitespace( PRBool aEliminateLeading=PR_TRUE,
|
||||
PRBool aEliminateTrailing=PR_TRUE);
|
||||
|
||||
/**
|
||||
* Determine if given char is a valid space character
|
||||
*
|
||||
* @param aChar is character to be tested
|
||||
* @return TRUE if is valid space char
|
||||
*/
|
||||
static PRBool IsSpace(PRUnichar ch);
|
||||
|
||||
/**
|
||||
* Determine if given char in valid alpha range
|
||||
*
|
||||
* @param aChar is character to be tested
|
||||
* @return TRUE if in alpha range
|
||||
*/
|
||||
static PRBool IsAlpha(PRUnichar ch);
|
||||
|
||||
/**
|
||||
* Determine if given char is valid digit
|
||||
*
|
||||
* @param aChar is character to be tested
|
||||
* @return TRUE if char is a valid digit
|
||||
*/
|
||||
static PRBool IsDigit(PRUnichar ch);
|
||||
|
||||
/**********************************************************************
|
||||
Searching methods...
|
||||
*********************************************************************/
|
||||
|
||||
/**
|
||||
* Search for given character within this string.
|
||||
* This method does so by using a binary search,
|
||||
* so your string HAD BETTER BE ORDERED!
|
||||
*
|
||||
* @param aChar is the unicode char to be found
|
||||
* @return offset in string, or -1 (kNotFound)
|
||||
*/
|
||||
PRInt32 BinarySearch(PRUnichar aChar) const;
|
||||
|
||||
/**
|
||||
* Search for given substring within this string
|
||||
*
|
||||
* @param aString is substring to be sought in this
|
||||
* @return offset in string, or -1 (kNotFound)
|
||||
*/
|
||||
PRInt32 Find(const char* aString) const;
|
||||
PRInt32 Find(const PRUnichar* aString) const;
|
||||
PRInt32 Find(const nsString& aString) const;
|
||||
|
||||
/**
|
||||
* Search for given char within this string
|
||||
*
|
||||
* @param aChar - char to be found
|
||||
* @return offset in string, or -1 (kNotFound)
|
||||
*/
|
||||
PRInt32 Find(PRUnichar aChar,PRInt32 offset=0) const;
|
||||
|
||||
/**
|
||||
* This method searches this string for the first character
|
||||
* found in the given string
|
||||
* @param aString contains set of chars to be found
|
||||
* @param anOffset tells us where to start searching in this
|
||||
* @return -1 if not found, else the offset in this
|
||||
*/
|
||||
PRInt32 FindCharInSet(const char* aString,PRInt32 anOffset=0) const;
|
||||
PRInt32 FindCharInSet(nsString& aString,PRInt32 anOffset=0) const;
|
||||
|
||||
/**
|
||||
* This method searches this string for the last character
|
||||
* found in the given string
|
||||
* @param aString contains set of chars to be found
|
||||
* @param anOffset tells us where to start searching in this
|
||||
* @return -1 if not found, else the offset in this
|
||||
*/
|
||||
PRInt32 RFindCharInSet(const char* aString,PRInt32 anOffset=0) const;
|
||||
PRInt32 RFindCharInSet(nsString& aString,PRInt32 anOffset=0) const;
|
||||
|
||||
|
||||
/**
|
||||
* This methods scans the string backwards, looking for the given string
|
||||
* @param aString is substring to be sought in this
|
||||
* @param aIgnoreCase tells us whether or not to do caseless compare
|
||||
* @return offset in string, or -1 (kNotFound)
|
||||
*/
|
||||
PRInt32 RFind(const char* aCString,PRBool aIgnoreCase=PR_FALSE) const;
|
||||
PRInt32 RFind(const PRUnichar* aString,PRBool aIgnoreCase=PR_FALSE) const;
|
||||
PRInt32 RFind(const nsString& aString,PRBool aIgnoreCase=PR_FALSE) const;
|
||||
|
||||
/**
|
||||
* This methods scans the string backwards, looking for the given char
|
||||
* @param char is the char to be sought in this
|
||||
* @param aIgnoreCase tells us whether or not to do caseless compare
|
||||
* @return offset in string, or -1 (kNotFound)
|
||||
*/
|
||||
PRInt32 RFind(PRUnichar aChar,PRBool aIgnoreCase=PR_FALSE) const;
|
||||
|
||||
/**********************************************************************
|
||||
Comparison methods...
|
||||
*********************************************************************/
|
||||
|
||||
/**
|
||||
* Compares a given string type to this string.
|
||||
* @update gess 7/27/98
|
||||
* @param S is the string to be compared
|
||||
* @param aIgnoreCase tells us how to treat case
|
||||
* @return -1,0,1
|
||||
*/
|
||||
virtual PRInt32 Compare(const nsString &aString,PRBool aIgnoreCase=PR_FALSE) const;
|
||||
virtual PRInt32 Compare(const char *aString,PRBool aIgnoreCase=PR_FALSE,PRInt32 aLength=-1) const;
|
||||
virtual PRInt32 Compare(const PRUnichar *aString,PRBool aIgnoreCase=PR_FALSE,PRInt32 aLength=-1) const;
|
||||
|
||||
/**
|
||||
* These methods compare a given string type to this one
|
||||
* @param aString is the string to be compared to this
|
||||
* @return TRUE or FALSE
|
||||
*/
|
||||
PRBool operator==(const nsString &aString) const;
|
||||
PRBool operator==(const char *aString) const;
|
||||
PRBool operator==(const PRUnichar* aString) const;
|
||||
|
||||
/**
|
||||
* These methods perform a !compare of a given string type to this
|
||||
* @param aString is the string to be compared to this
|
||||
* @return TRUE
|
||||
*/
|
||||
PRBool operator!=(const nsString &aString) const;
|
||||
PRBool operator!=(const char *aString) const;
|
||||
PRBool operator!=(const PRUnichar* aString) const;
|
||||
|
||||
/**
|
||||
* These methods test if a given string is < than this
|
||||
* @param aString is the string to be compared to this
|
||||
* @return TRUE or FALSE
|
||||
*/
|
||||
PRBool operator<(const nsString &aString) const;
|
||||
PRBool operator<(const char *aString) const;
|
||||
PRBool operator<(const PRUnichar* aString) const;
|
||||
|
||||
/**
|
||||
* These methods test if a given string is > than this
|
||||
* @param aString is the string to be compared to this
|
||||
* @return TRUE or FALSE
|
||||
*/
|
||||
PRBool operator>(const nsString &S) const;
|
||||
PRBool operator>(const char *aCString) const;
|
||||
PRBool operator>(const PRUnichar* aString) const;
|
||||
|
||||
/**
|
||||
* These methods test if a given string is <= than this
|
||||
* @param aString is the string to be compared to this
|
||||
* @return TRUE or FALSE
|
||||
*/
|
||||
PRBool operator<=(const nsString &S) const;
|
||||
PRBool operator<=(const char *aCString) const;
|
||||
PRBool operator<=(const PRUnichar* aString) const;
|
||||
|
||||
/**
|
||||
* These methods test if a given string is >= than this
|
||||
* @param aString is the string to be compared to this
|
||||
* @return TRUE or FALSE
|
||||
*/
|
||||
PRBool operator>=(const nsString &S) const;
|
||||
PRBool operator>=(const char* aCString) const;
|
||||
PRBool operator>=(const PRUnichar* aString) const;
|
||||
|
||||
/**
|
||||
* Compare this to given string; note that we compare full strings here.
|
||||
* The optional length argument just lets us know how long the given string is.
|
||||
* If you provide a length, it is compared to length of this string as an
|
||||
* optimization.
|
||||
*
|
||||
* @param aString -- the string to compare to this
|
||||
* @param aLength -- optional length of given string.
|
||||
* @return TRUE if equal
|
||||
*/
|
||||
PRBool Equals(const nsString& aString) const;
|
||||
PRBool Equals(const char* aString,PRInt32 aLength=-1) const;
|
||||
PRBool Equals(const nsIAtom *aAtom) const;
|
||||
|
||||
|
||||
/**
|
||||
* Compares to unichar string ptrs to each other
|
||||
* @param s1 is a ptr to a unichar buffer
|
||||
* @param s2 is a ptr to a unichar buffer
|
||||
* @return TRUE if they match
|
||||
*/
|
||||
PRBool Equals(const PRUnichar* s1, const PRUnichar* s2) const;
|
||||
|
||||
/**
|
||||
* Compare this to given string; note that we compare full strings here.
|
||||
* The optional length argument just lets us know how long the given string is.
|
||||
* If you provide a length, it is compared to length of this string as an
|
||||
* optimization.
|
||||
*
|
||||
* @param aString -- the string to compare to this
|
||||
* @param aLength -- optional length of given string.
|
||||
* @return TRUE if equal
|
||||
*/
|
||||
PRBool EqualsIgnoreCase(const nsString& aString) const;
|
||||
PRBool EqualsIgnoreCase(const char* aString,PRInt32 aLength=-1) const;
|
||||
PRBool EqualsIgnoreCase(const nsIAtom *aAtom) const;
|
||||
|
||||
/**
|
||||
* Compares to unichar string ptrs to each other without respect to case
|
||||
* @param s1 is a ptr to a unichar buffer
|
||||
* @param s2 is a ptr to a unichar buffer
|
||||
* @return TRUE if they match
|
||||
*/
|
||||
PRBool EqualsIgnoreCase(const PRUnichar* s1, const PRUnichar* s2) const;
|
||||
|
||||
|
||||
static void SelfTest();
|
||||
virtual void DebugDump(ostream& aStream) const;
|
||||
|
||||
protected:
|
||||
|
||||
typedef PRUnichar chartype;
|
||||
|
||||
chartype* mStr;
|
||||
PRInt32 mLength;
|
||||
PRInt32 mCapacity;
|
||||
static PRBool mSelfTested;
|
||||
};
|
||||
|
||||
ostream& operator<<(ostream& os,nsString& aString);
|
||||
extern NS_BASE int fputs(const nsString& aString, FILE* out);
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* A version of nsString which is designed to be used as an automatic
|
||||
* variable. It attempts to operate out of a fixed size internal
|
||||
* buffer until too much data is added; then a dynamic buffer is
|
||||
* allocated and grown as necessary.
|
||||
*/
|
||||
// XXX template this with a parameter for the size of the buffer?
|
||||
class NS_BASE nsAutoString : public nsString {
|
||||
public:
|
||||
nsAutoString();
|
||||
nsAutoString(const nsString& other);
|
||||
nsAutoString(const nsAutoString& other);
|
||||
nsAutoString(PRUnichar aChar);
|
||||
nsAutoString(const char* aCString);
|
||||
nsAutoString(const PRUnichar* us, PRInt32 uslen = -1);
|
||||
virtual ~nsAutoString();
|
||||
|
||||
nsAutoString& operator=(const nsString& aString) {nsString::operator=(aString); return *this;}
|
||||
nsAutoString& operator=(const char* aCString) {nsString::operator=(aCString); return *this;}
|
||||
nsAutoString& operator=(char aChar) {nsString::operator=(aChar); return *this;}
|
||||
nsAutoString& operator=(const PRUnichar* aBuffer) {nsString::operator=(aBuffer); return *this;}
|
||||
nsAutoString& operator=(PRUnichar aChar) {nsString::operator=(aChar); return *this;}
|
||||
|
||||
virtual void SizeOf(nsISizeOfHandler* aHandler) const;
|
||||
|
||||
static void SelfTest();
|
||||
|
||||
protected:
|
||||
virtual void EnsureCapacityFor(PRInt32 aNewLength);
|
||||
|
||||
chartype mBuf[32];
|
||||
};
|
||||
|
||||
ostream& operator<<(ostream& os,nsAutoString& aString);
|
||||
|
||||
#endif
|
||||
|
||||
184
mozilla/base/src/nsTime.h
Normal file
184
mozilla/base/src/nsTime.h
Normal file
@@ -0,0 +1,184 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsTime_h__
|
||||
#define nsTime_h__
|
||||
|
||||
#include "prtime.h"
|
||||
#include "nsInt64.h"
|
||||
#include "nscore.h"
|
||||
|
||||
/**
|
||||
* This class encapsulates full 64-bit time functionality and
|
||||
* provides simple arithmetic and conversion operations.
|
||||
*/
|
||||
|
||||
// If you ever decide that you need to add a non-inline method to this
|
||||
// class, be sure to change the class declaration to "class NS_BASE
|
||||
// nsTime".
|
||||
|
||||
class nsTime
|
||||
{
|
||||
private:
|
||||
nsInt64 mValue;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Construct the current time.
|
||||
*/
|
||||
nsTime(void) : mValue(PR_Now()) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a time from a PRTime.
|
||||
*/
|
||||
nsTime(const PRTime aTime) : mValue(aTime) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a time from a 64-bit value.
|
||||
*/
|
||||
nsTime(const nsInt64& aTime) : mValue(aTime) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a time from another time.
|
||||
*/
|
||||
nsTime(const nsTime& aTime) : mValue(aTime.mValue) {
|
||||
}
|
||||
|
||||
// ~nsTime(void) -- XXX destructor unnecessary
|
||||
|
||||
/**
|
||||
* Assign one time to another.
|
||||
*/
|
||||
const nsTime& operator =(const nsTime& aTime) {
|
||||
mValue = aTime.mValue;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a nsTime object to a PRTime
|
||||
*/
|
||||
operator PRTime(void) const {
|
||||
return mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtract a 64-bit interval from a time.
|
||||
*/
|
||||
nsTime& operator -=(const nsInt64& aInterval) {
|
||||
mValue -= aInterval;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a 64-bit interval to a time.
|
||||
*/
|
||||
nsTime& operator +=(const nsInt64& aInterval) {
|
||||
mValue += aInterval;
|
||||
return *this;
|
||||
}
|
||||
|
||||
// Arithmetic operators
|
||||
friend const nsTime operator +(const nsTime& aTime, const nsInt64& aInterval);
|
||||
friend const nsTime operator -(const nsTime& aTime, const nsInt64& aInterval);
|
||||
friend const nsInt64 operator -(const nsTime& aTime1, const nsTime& aTime2);
|
||||
|
||||
// Comparison operators
|
||||
friend const PRBool operator ==(const nsTime& aTime1, const nsTime& aTime2);
|
||||
friend const PRBool operator !=(const nsTime& aTime1, const nsTime& aTime2);
|
||||
friend const PRBool operator <(const nsTime& aTime1, const nsTime& aTime2);
|
||||
friend const PRBool operator <=(const nsTime& aTime1, const nsTime& aTime2);
|
||||
friend const PRBool operator >(const nsTime& aTime1, const nsTime& aTime2);
|
||||
friend const PRBool operator >=(const nsTime& aTime1, const nsTime& aTime2);
|
||||
};
|
||||
|
||||
/**
|
||||
* Binary addition to add a 64-bit interval to a time.
|
||||
*/
|
||||
inline const nsTime
|
||||
operator +(const nsTime& aTime, const nsInt64& aInterval) {
|
||||
return nsTime(aTime.mValue + aInterval);
|
||||
}
|
||||
|
||||
/**
|
||||
* Binary subtraction to subtract a 64-bit interval to a time.
|
||||
*/
|
||||
inline const nsTime
|
||||
operator -(const nsTime& aTime, const nsInt64& aInterval) {
|
||||
return nsTime(aTime.mValue - aInterval);
|
||||
}
|
||||
|
||||
/**
|
||||
* Binary subtraction to compute an interval from the difference of two times.
|
||||
*/
|
||||
inline const nsInt64
|
||||
operator -(const nsTime& aTime1, const nsTime& aTime2) {
|
||||
return aTime1.mValue - aTime2.mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if two times are equal
|
||||
*/
|
||||
inline const PRBool
|
||||
operator ==(const nsTime& aTime1, const nsTime& aTime2) {
|
||||
return aTime1.mValue == aTime2.mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if two times are different
|
||||
*/
|
||||
inline const PRBool
|
||||
operator !=(const nsTime& aTime1, const nsTime& aTime2) {
|
||||
return aTime1.mValue != aTime2.mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one time is strictly less than another
|
||||
*/
|
||||
inline const PRBool
|
||||
operator <(const nsTime& aTime1, const nsTime& aTime2) {
|
||||
return aTime1.mValue < aTime2.mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one time is less than or equal to another
|
||||
*/
|
||||
inline const PRBool
|
||||
operator <=(const nsTime& aTime1, const nsTime& aTime2) {
|
||||
return aTime1.mValue <= aTime2.mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one time is strictly greater than another
|
||||
*/
|
||||
inline const PRBool
|
||||
operator >(const nsTime& aTime1, const nsTime& aTime2) {
|
||||
return aTime1.mValue > aTime2.mValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if one time is greater than or equal to another
|
||||
*/
|
||||
inline const PRBool
|
||||
operator >=(const nsTime& aTime1, const nsTime& aTime2) {
|
||||
return aTime1.mValue >= aTime2.mValue;
|
||||
}
|
||||
|
||||
#endif // nsTime_h__
|
||||
142
mozilla/base/src/nsUnicharBuffer.cpp
Normal file
142
mozilla/base/src/nsUnicharBuffer.cpp
Normal file
@@ -0,0 +1,142 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsIUnicharBuffer.h"
|
||||
#include "nsIUnicharInputStream.h"
|
||||
#include "nsCRT.h"
|
||||
|
||||
#define MIN_BUFFER_SIZE 32
|
||||
|
||||
class UnicharBufferImpl : public nsIUnicharBuffer {
|
||||
public:
|
||||
UnicharBufferImpl(PRUint32 aBufferSize);
|
||||
~UnicharBufferImpl();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
virtual PRInt32 GetLength() const;
|
||||
virtual PRInt32 GetBufferSize() const;
|
||||
virtual PRUnichar* GetBuffer() const;
|
||||
virtual PRBool Grow(PRInt32 aNewSize);
|
||||
virtual PRInt32 Fill(nsresult* aErrorCode, nsIUnicharInputStream* aStream,
|
||||
PRInt32 aKeep);
|
||||
|
||||
PRUnichar* mBuffer;
|
||||
PRUint32 mSpace;
|
||||
PRUint32 mLength;
|
||||
};
|
||||
|
||||
UnicharBufferImpl::UnicharBufferImpl(PRUint32 aBufferSize)
|
||||
{
|
||||
if (aBufferSize < MIN_BUFFER_SIZE) {
|
||||
aBufferSize = MIN_BUFFER_SIZE;
|
||||
}
|
||||
mSpace = aBufferSize;
|
||||
mBuffer = new PRUnichar[aBufferSize];
|
||||
mLength = 0;
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
NS_DEFINE_IID(kUnicharBufferIID, NS_IUNICHAR_BUFFER_IID);
|
||||
NS_IMPL_ISUPPORTS(UnicharBufferImpl,kUnicharBufferIID)
|
||||
|
||||
UnicharBufferImpl::~UnicharBufferImpl()
|
||||
{
|
||||
if (nsnull != mBuffer) {
|
||||
delete mBuffer;
|
||||
mBuffer = nsnull;
|
||||
}
|
||||
mLength = 0;
|
||||
}
|
||||
|
||||
PRInt32 UnicharBufferImpl::GetLength() const
|
||||
{
|
||||
return mLength;
|
||||
}
|
||||
|
||||
PRInt32 UnicharBufferImpl::GetBufferSize() const
|
||||
{
|
||||
return mSpace;
|
||||
}
|
||||
|
||||
PRUnichar* UnicharBufferImpl::GetBuffer() const
|
||||
{
|
||||
return mBuffer;
|
||||
}
|
||||
|
||||
PRBool UnicharBufferImpl::Grow(PRInt32 aNewSize)
|
||||
{
|
||||
if (PRUint32(aNewSize) < MIN_BUFFER_SIZE) {
|
||||
aNewSize = MIN_BUFFER_SIZE;
|
||||
}
|
||||
PRUnichar* newbuf = new PRUnichar[aNewSize];
|
||||
if (nsnull != newbuf) {
|
||||
if (0 != mLength) {
|
||||
nsCRT::memcpy(newbuf, mBuffer, mLength * sizeof(PRUnichar));
|
||||
}
|
||||
delete mBuffer;
|
||||
mBuffer = newbuf;
|
||||
return PR_TRUE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRInt32 UnicharBufferImpl::Fill(nsresult* aErrorCode,
|
||||
nsIUnicharInputStream* aStream,
|
||||
PRInt32 aKeep)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aStream, "null stream");
|
||||
NS_PRECONDITION(PRUint32(aKeep) < PRUint32(mLength), "illegal keep count");
|
||||
if ((nsnull == aStream) || (PRUint32(aKeep) >= PRUint32(mLength))) {
|
||||
// whoops
|
||||
*aErrorCode = NS_BASE_STREAM_ILLEGAL_ARGS;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (0 != aKeep) {
|
||||
// Slide over kept data
|
||||
nsCRT::memmove(mBuffer, mBuffer + (mLength - aKeep),
|
||||
aKeep * sizeof(PRUnichar));
|
||||
}
|
||||
|
||||
// Read in some new data
|
||||
mLength = aKeep;
|
||||
PRInt32 amount = mSpace - aKeep;
|
||||
PRUint32 nb;
|
||||
NS_ASSERTION(aKeep >= 0, "unsigned madness");
|
||||
NS_ASSERTION(amount >= 0, "unsigned madness");
|
||||
*aErrorCode = aStream->Read(mBuffer, (PRUint32)aKeep, (PRUint32)amount, &nb);
|
||||
if (NS_SUCCEEDED(*aErrorCode)) {
|
||||
mLength += nb;
|
||||
}
|
||||
else
|
||||
nb = 0;
|
||||
return nb;
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewUnicharBuffer(nsIUnicharBuffer** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
PRUint32 aBufferSize)
|
||||
{
|
||||
if (nsnull != aOuter) {
|
||||
return NS_ERROR_NO_AGGREGATION;
|
||||
}
|
||||
UnicharBufferImpl* it = new UnicharBufferImpl(aBufferSize);
|
||||
if (nsnull == it) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
return it->QueryInterface(kUnicharBufferIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
340
mozilla/base/src/nsUnicharInputStream.cpp
Normal file
340
mozilla/base/src/nsUnicharInputStream.cpp
Normal file
@@ -0,0 +1,340 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsIUnicharInputStream.h"
|
||||
#include "nsIByteBuffer.h"
|
||||
#include "nsIUnicharBuffer.h"
|
||||
#include "nsString.h"
|
||||
#include "nsCRT.h"
|
||||
#include <fcntl.h>
|
||||
#ifdef NS_WIN32
|
||||
#include <io.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
static NS_DEFINE_IID(kIUnicharInputStreamIID, NS_IUNICHAR_INPUT_STREAM_IID);
|
||||
|
||||
class StringUnicharInputStream : public nsIUnicharInputStream {
|
||||
public:
|
||||
StringUnicharInputStream(nsString* aString);
|
||||
~StringUnicharInputStream();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
NS_IMETHOD Read(PRUnichar* aBuf,
|
||||
PRUint32 aOffset,
|
||||
PRUint32 aCount,
|
||||
PRUint32 *aReadCount);
|
||||
NS_IMETHOD Close();
|
||||
|
||||
nsString* mString;
|
||||
PRUint32 mPos;
|
||||
PRUint32 mLen;
|
||||
};
|
||||
|
||||
StringUnicharInputStream::StringUnicharInputStream(nsString* aString)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mString = aString;
|
||||
mPos = 0;
|
||||
mLen = aString->Length();
|
||||
}
|
||||
|
||||
StringUnicharInputStream::~StringUnicharInputStream()
|
||||
{
|
||||
if (nsnull != mString) {
|
||||
delete mString;
|
||||
}
|
||||
}
|
||||
|
||||
nsresult StringUnicharInputStream::Read(PRUnichar* aBuf,
|
||||
PRUint32 aOffset,
|
||||
PRUint32 aCount,
|
||||
PRUint32 *aReadCount)
|
||||
{
|
||||
if (mPos >= mLen) {
|
||||
*aReadCount = 0;
|
||||
return (nsresult)-1;
|
||||
}
|
||||
const PRUnichar* us = mString->GetUnicode();
|
||||
NS_ASSERTION(mLen >= mPos, "unsigned madness");
|
||||
PRUint32 amount = mLen - mPos;
|
||||
if (amount > aCount) {
|
||||
amount = aCount;
|
||||
}
|
||||
nsCRT::memcpy(aBuf + aOffset, us + mPos, sizeof(PRUnichar) * amount);
|
||||
mPos += amount;
|
||||
*aReadCount = amount;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult StringUnicharInputStream::Close()
|
||||
{
|
||||
mPos = mLen;
|
||||
if (nsnull != mString) {
|
||||
delete mString;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(StringUnicharInputStream, kIUnicharInputStreamIID);
|
||||
|
||||
NS_BASE nsresult
|
||||
NS_NewStringUnicharInputStream(nsIUnicharInputStream** aInstancePtrResult,
|
||||
nsString* aString)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aString, "null ptr");
|
||||
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
|
||||
if ((nsnull == aString) || (nsnull == aInstancePtrResult)) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
StringUnicharInputStream* it = new StringUnicharInputStream(aString);
|
||||
if (nsnull == it) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
return it->QueryInterface(kIUnicharInputStreamIID,
|
||||
(void**) aInstancePtrResult);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
class IsoLatin1Converter : public nsIB2UConverter {
|
||||
public:
|
||||
IsoLatin1Converter();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_IMETHOD Convert(PRUnichar* aDst,
|
||||
PRUint32 aDstOffset,
|
||||
PRUint32& aDstLen,
|
||||
const char* aSrc,
|
||||
PRUint32 aSrcOffset,
|
||||
PRUint32& aSrcLen);
|
||||
};
|
||||
|
||||
IsoLatin1Converter::IsoLatin1Converter()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
NS_DEFINE_IID(kIB2UConverterIID, NS_IB2UCONVERTER_IID);
|
||||
NS_IMPL_ISUPPORTS(IsoLatin1Converter,kIB2UConverterIID);
|
||||
|
||||
nsresult IsoLatin1Converter::Convert(PRUnichar* aDst,
|
||||
PRUint32 aDstOffset,
|
||||
PRUint32& aDstLen,
|
||||
const char* aSrc,
|
||||
PRUint32 aSrcOffset,
|
||||
PRUint32& aSrcLen)
|
||||
{
|
||||
PRUint32 amount = aSrcLen;
|
||||
if (aSrcLen > aDstLen) {
|
||||
amount = aDstLen;
|
||||
}
|
||||
const char* end = aSrc + amount;
|
||||
while (aSrc < end) {
|
||||
PRUint8 isoLatin1 = PRUint8(*aSrc++);
|
||||
/* XXX insert table based lookup converter here */
|
||||
*aDst++ = isoLatin1;
|
||||
}
|
||||
aDstLen = amount;
|
||||
aSrcLen = amount;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_BASE nsresult
|
||||
NS_NewB2UConverter(nsIB2UConverter** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
nsCharSetID aCharSet)
|
||||
{
|
||||
if (nsnull != aOuter) {
|
||||
return NS_ERROR_NO_AGGREGATION;
|
||||
}
|
||||
if (eCharSetID_IsoLatin1 != aCharSet) {
|
||||
return NS_BASE_STREAM_NO_CONVERTER;
|
||||
}
|
||||
IsoLatin1Converter* it = new IsoLatin1Converter();
|
||||
if (nsnull == it) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
return it->QueryInterface(kIB2UConverterIID, (void**)aInstancePtrResult);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
class ConverterInputStream : public nsIUnicharInputStream {
|
||||
public:
|
||||
ConverterInputStream(nsIInputStream* aStream,
|
||||
nsIB2UConverter* aConverter,
|
||||
PRUint32 aBufSize);
|
||||
~ConverterInputStream();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_IMETHOD Read(PRUnichar* aBuf,
|
||||
PRUint32 aOffset,
|
||||
PRUint32 aCount,
|
||||
PRUint32 *aReadCount);
|
||||
NS_IMETHOD Close();
|
||||
|
||||
protected:
|
||||
PRInt32 Fill(nsresult * aErrorCode);
|
||||
|
||||
nsIInputStream* mInput;
|
||||
nsIB2UConverter* mConverter;
|
||||
nsIByteBuffer* mByteData;
|
||||
PRUint32 mByteDataOffset;
|
||||
nsIUnicharBuffer* mUnicharData;
|
||||
PRUint32 mUnicharDataOffset;
|
||||
PRUint32 mUnicharDataLength;
|
||||
};
|
||||
|
||||
ConverterInputStream::ConverterInputStream(nsIInputStream* aStream,
|
||||
nsIB2UConverter* aConverter,
|
||||
PRUint32 aBufferSize)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mInput = aStream; aStream->AddRef();
|
||||
mConverter = aConverter; aConverter->AddRef();
|
||||
if (aBufferSize == 0) {
|
||||
aBufferSize = 8192;
|
||||
}
|
||||
nsresult rv1 = NS_NewByteBuffer(&mByteData, nsnull, aBufferSize);
|
||||
nsresult rv2 = NS_NewUnicharBuffer(&mUnicharData, nsnull, aBufferSize);
|
||||
mByteDataOffset = 0;
|
||||
mUnicharDataOffset = 0;
|
||||
mUnicharDataLength = 0;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(ConverterInputStream,kIUnicharInputStreamIID);
|
||||
|
||||
ConverterInputStream::~ConverterInputStream()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
nsresult ConverterInputStream::Close()
|
||||
{
|
||||
if (nsnull != mInput) {
|
||||
mInput->Release();
|
||||
mInput = nsnull;
|
||||
}
|
||||
if (nsnull != mConverter) {
|
||||
mConverter->Release();
|
||||
mConverter = nsnull;
|
||||
}
|
||||
if (nsnull != mByteData) {
|
||||
mByteData->Release();
|
||||
mByteData = nsnull;
|
||||
}
|
||||
if (nsnull != mUnicharData) {
|
||||
mUnicharData->Release();
|
||||
mUnicharData = nsnull;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult ConverterInputStream::Read(PRUnichar* aBuf,
|
||||
PRUint32 aOffset,
|
||||
PRUint32 aCount,
|
||||
PRUint32 *aReadCount)
|
||||
{
|
||||
NS_ASSERTION(mUnicharDataLength >= mUnicharDataOffset, "unsigned madness");
|
||||
PRUint32 rv = mUnicharDataLength - mUnicharDataOffset;
|
||||
nsresult errorCode;
|
||||
if (0 == rv) {
|
||||
// Fill the unichar buffer
|
||||
rv = Fill(&errorCode);
|
||||
if (rv <= 0) {
|
||||
*aReadCount = 0;
|
||||
return errorCode;
|
||||
}
|
||||
}
|
||||
if (rv > aCount) {
|
||||
rv = aCount;
|
||||
}
|
||||
nsCRT::memcpy(aBuf + aOffset, mUnicharData->GetBuffer() + mUnicharDataOffset,
|
||||
rv * sizeof(PRUnichar));
|
||||
mUnicharDataOffset += rv;
|
||||
*aReadCount = rv;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
PRInt32 ConverterInputStream::Fill(nsresult * aErrorCode)
|
||||
{
|
||||
if (nsnull == mInput) {
|
||||
// We already closed the stream!
|
||||
*aErrorCode = NS_BASE_STREAM_CLOSED;
|
||||
return -1;
|
||||
}
|
||||
|
||||
NS_ASSERTION(mByteData->GetLength() >= mByteDataOffset, "unsigned madness");
|
||||
PRUint32 remainder = mByteData->GetLength() - mByteDataOffset;
|
||||
mByteDataOffset = remainder;
|
||||
PRInt32 nb = mByteData->Fill(aErrorCode, mInput, remainder);
|
||||
if (nb <= 0) {
|
||||
// Because we assume a many to one conversion, the lingering data
|
||||
// in the byte buffer must be a partial conversion
|
||||
// fragment. Because we know that we have recieved no more new
|
||||
// data to add to it, we can't convert it. Therefore, we discard
|
||||
// it.
|
||||
return nb;
|
||||
}
|
||||
NS_ASSERTION(remainder + nb == mByteData->GetLength(), "bad nb");
|
||||
|
||||
// Now convert as much of the byte buffer to unicode as possible
|
||||
PRUint32 dstLen = mUnicharData->GetBufferSize();
|
||||
PRUint32 srcLen = remainder + nb;
|
||||
*aErrorCode = mConverter->Convert(mUnicharData->GetBuffer(), 0, dstLen,
|
||||
mByteData->GetBuffer(), 0, srcLen);
|
||||
mUnicharDataOffset = 0;
|
||||
mUnicharDataLength = dstLen;
|
||||
mByteDataOffset += srcLen;
|
||||
return dstLen;
|
||||
}
|
||||
|
||||
// XXX hook up auto-detect here (do we need more info, like the url?)
|
||||
NS_BASE nsresult
|
||||
NS_NewConverterStream(nsIUnicharInputStream** aInstancePtrResult,
|
||||
nsISupports* aOuter,
|
||||
nsIInputStream* aStreamToWrap,
|
||||
PRInt32 aBufferSize,
|
||||
nsCharSetID aCharSet)
|
||||
{
|
||||
if (nsnull != aOuter) {
|
||||
return NS_ERROR_NO_AGGREGATION;
|
||||
}
|
||||
|
||||
// Create converter
|
||||
nsIB2UConverter* converter;
|
||||
nsresult rv = NS_NewB2UConverter(&converter, nsnull, aCharSet);
|
||||
if (NS_OK != rv) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
// Create converter input stream
|
||||
ConverterInputStream* it =
|
||||
new ConverterInputStream(aStreamToWrap, converter, aBufferSize);
|
||||
converter->Release();
|
||||
if (nsnull == it) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
return it->QueryInterface(kIUnicharInputStreamIID,
|
||||
(void **) aInstancePtrResult);
|
||||
}
|
||||
182
mozilla/base/src/nsUnitConversion.h
Normal file
182
mozilla/base/src/nsUnitConversion.h
Normal file
@@ -0,0 +1,182 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsUnitConversion_h__
|
||||
#define nsUnitConversion_h__
|
||||
|
||||
#include "nscore.h"
|
||||
#include <math.h>
|
||||
|
||||
/// handy constants
|
||||
#define TWIPS_PER_POINT_INT 20
|
||||
#define TWIPS_PER_POINT_FLOAT 20.0f
|
||||
#define ROUND_EXCLUSIVE_CONST_FLOAT 0.4999999999999999f // XXX this should be derived from platform FLOAT_MIN
|
||||
#define ROUND_CONST_FLOAT 0.5f
|
||||
#define CEIL_CONST_FLOAT 0.9999999999999999f // XXX this should be derived from platform FLOAT_MIN
|
||||
|
||||
|
||||
/*
|
||||
* Coord Rounding Functions
|
||||
*/
|
||||
inline nscoord NSToCoordFloor(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? nscoord(aValue) : nscoord(aValue - CEIL_CONST_FLOAT));
|
||||
}
|
||||
|
||||
inline nscoord NSToCoordCeil(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? nscoord(aValue + CEIL_CONST_FLOAT) : nscoord(aValue));
|
||||
}
|
||||
|
||||
inline nscoord NSToCoordRound(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? nscoord(aValue + ROUND_CONST_FLOAT) : nscoord(aValue - ROUND_CONST_FLOAT));
|
||||
}
|
||||
|
||||
inline nscoord NSToCoordRoundExclusive(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? nscoord(aValue + ROUND_EXCLUSIVE_CONST_FLOAT) :
|
||||
nscoord(aValue - ROUND_EXCLUSIVE_CONST_FLOAT));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Int Rounding Functions
|
||||
*/
|
||||
inline PRInt32 NSToIntFloor(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? PRInt32(aValue) : PRInt32(aValue - CEIL_CONST_FLOAT));
|
||||
}
|
||||
|
||||
inline PRInt32 NSToIntCeil(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? PRInt32(aValue + CEIL_CONST_FLOAT) : PRInt32(aValue));
|
||||
}
|
||||
|
||||
inline PRInt32 NSToIntRound(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? PRInt32(aValue + ROUND_CONST_FLOAT) : PRInt32(aValue - ROUND_CONST_FLOAT));
|
||||
}
|
||||
|
||||
inline PRInt32 NSToIntRoundExclusive(float aValue)
|
||||
{
|
||||
return ((0.0f <= aValue) ? PRInt32(aValue + ROUND_EXCLUSIVE_CONST_FLOAT) :
|
||||
PRInt32(aValue - ROUND_EXCLUSIVE_CONST_FLOAT));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Twips/Points conversions
|
||||
*/
|
||||
inline nscoord NSFloatPointsToTwips(float aPoints)
|
||||
{
|
||||
return NSToCoordRound(aPoints * TWIPS_PER_POINT_FLOAT);
|
||||
}
|
||||
|
||||
inline nscoord NSIntPointsToTwips(PRInt32 aPoints)
|
||||
{
|
||||
return nscoord(aPoints * TWIPS_PER_POINT_INT);
|
||||
}
|
||||
|
||||
inline PRInt32 NSTwipsToIntPoints(nscoord aTwips)
|
||||
{
|
||||
return NSToIntRound(aTwips / TWIPS_PER_POINT_FLOAT);
|
||||
}
|
||||
|
||||
inline PRInt32 NSTwipsToFloorIntPoints(nscoord aTwips)
|
||||
{
|
||||
return NSToIntFloor(aTwips / TWIPS_PER_POINT_FLOAT);
|
||||
}
|
||||
|
||||
inline PRInt32 NSTwipsToCeilIntPoints(nscoord aTwips)
|
||||
{
|
||||
return NSToIntCeil(aTwips / TWIPS_PER_POINT_FLOAT);
|
||||
}
|
||||
|
||||
inline float NSTwipsToFloatPoints(nscoord aTwips)
|
||||
{
|
||||
return (float(aTwips) / TWIPS_PER_POINT_FLOAT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Twips/Pixel conversions
|
||||
*/
|
||||
inline nscoord NSFloatPixelsToTwips(float aPixels, float aTwipsPerPixel)
|
||||
{
|
||||
return NSToCoordRound(aPixels * aTwipsPerPixel);
|
||||
}
|
||||
|
||||
inline nscoord NSIntPixelsToTwips(PRInt32 aPixels, float aTwipsPerPixel)
|
||||
{
|
||||
return NSToCoordRound(float(aPixels) * aTwipsPerPixel);
|
||||
}
|
||||
|
||||
inline float NSTwipsToFloatPixels(nscoord aTwips, float aPixelsPerTwip)
|
||||
{
|
||||
return (float(aTwips) * aPixelsPerTwip);
|
||||
}
|
||||
|
||||
inline PRInt32 NSTwipsToIntPixels(nscoord aTwips, float aPixelsPerTwip)
|
||||
{
|
||||
return NSToIntRound(float(aTwips) * aPixelsPerTwip);
|
||||
}
|
||||
|
||||
/*
|
||||
* Twips/unit conversions
|
||||
*/
|
||||
inline nscoord NSUnitsToTwips(float aValue, float aPointsPerUnit)
|
||||
{
|
||||
return NSToCoordRound(aValue * aPointsPerUnit * TWIPS_PER_POINT_FLOAT);
|
||||
}
|
||||
|
||||
inline float NSTwipsToUnits(nscoord aTwips, float aUnitsPerPoint)
|
||||
{
|
||||
return (aTwips * (aUnitsPerPoint / TWIPS_PER_POINT_FLOAT));
|
||||
}
|
||||
|
||||
|
||||
/// Unit conversion macros
|
||||
//@{
|
||||
#define NS_INCHES_TO_TWIPS(x) NSUnitsToTwips((x), 72.0f) // 72 points per inch
|
||||
#define NS_FEET_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 12.0f)) // 12 inches per foot
|
||||
#define NS_MILES_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 12.0f * 5280.0f)) // 5280 feet per mile
|
||||
|
||||
#define NS_MILLIMETERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 0.03937f))
|
||||
#define NS_CENTIMETERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 0.3937f))
|
||||
#define NS_METERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 39.37f))
|
||||
#define NS_KILOMETERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 39370.0f))
|
||||
|
||||
#define NS_PICAS_TO_TWIPS(x) NSUnitsToTwips((x), 12.0f) // 12 points per pica
|
||||
#define NS_DIDOTS_TO_TWIPS(x) NSUnitsToTwips((x), (16.0f / 15.0f)) // 15 didots per 16 points
|
||||
#define NS_CICEROS_TO_TWIPS(x) NSUnitsToTwips((x), (12.0f * (16.0f / 15.0f))) // 12 didots per cicero
|
||||
|
||||
|
||||
#define NS_TWIPS_TO_INCHES(x) NSTwipsToUnits((x), 1.0f / 72.0f)
|
||||
#define NS_TWIPS_TO_FEET(x) NSTwipsToUnits((x), 1.0f / (72.0f * 12.0f))
|
||||
#define NS_TWIPS_TO_MILES(x) NSTwipsToUnits((x), 1.0f / (72.0f * 12.0f * 5280.0f))
|
||||
|
||||
#define NS_TWIPS_TO_MILLIMETERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 0.03937f))
|
||||
#define NS_TWIPS_TO_CENTIMETERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 0.3937f))
|
||||
#define NS_TWIPS_TO_METERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 39.37f))
|
||||
#define NS_TWIPS_TO_KILOMETERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 39370.0f))
|
||||
|
||||
#define NS_TWIPS_TO_PICAS(x) NSTwipsToUnits((x), 1.0f / 12.0f)
|
||||
#define NS_TWIPS_TO_DIDOTS(x) NSTwipsToUnits((x), 1.0f / (16.0f / 15.0f))
|
||||
#define NS_TWIPS_TO_CICEROS(x) NSTwipsToUnits((x), 1.0f / (12.0f * (16.0f / 15.0f)))
|
||||
//@}
|
||||
|
||||
#endif
|
||||
227
mozilla/base/src/nsVoidArray.cpp
Normal file
227
mozilla/base/src/nsVoidArray.cpp
Normal file
@@ -0,0 +1,227 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsISizeOfHandler.h"
|
||||
|
||||
static PRInt32 kGrowArrayBy = 8;
|
||||
|
||||
nsVoidArray::nsVoidArray()
|
||||
{
|
||||
mArray = nsnull;
|
||||
mArraySize = 0;
|
||||
mCount = 0;
|
||||
}
|
||||
|
||||
nsVoidArray::nsVoidArray(PRInt32 aCount)
|
||||
{
|
||||
NS_PRECONDITION(aCount > 0, "bad count");
|
||||
mCount = mArraySize = aCount;
|
||||
mArray = new void*[mCount];
|
||||
nsCRT::memset(mArray, 0, mCount * sizeof(void*));
|
||||
}
|
||||
|
||||
nsVoidArray& nsVoidArray::operator=(const nsVoidArray& other)
|
||||
{
|
||||
if (nsnull != mArray) {
|
||||
delete mArray;
|
||||
}
|
||||
PRInt32 otherCount = other.mCount;
|
||||
mArraySize = otherCount;
|
||||
mCount = otherCount;
|
||||
if (otherCount != 0) {
|
||||
mArray = new void*[otherCount];
|
||||
nsCRT::memcpy(mArray, other.mArray, otherCount * sizeof(void*));
|
||||
} else {
|
||||
mArray = nsnull;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
nsVoidArray::~nsVoidArray()
|
||||
{
|
||||
if (nsnull != mArray) {
|
||||
delete [] mArray;
|
||||
}
|
||||
}
|
||||
void
|
||||
nsVoidArray::SizeOf(nsISizeOfHandler* aHandler) const
|
||||
{
|
||||
aHandler->Add(sizeof(*this));
|
||||
aHandler->Add(sizeof(void*) * mArraySize);
|
||||
}
|
||||
|
||||
void* nsVoidArray::ElementAt(PRInt32 aIndex) const
|
||||
{
|
||||
if (PRUint32(aIndex) >= PRUint32(mCount)) {
|
||||
return nsnull;
|
||||
}
|
||||
return mArray[aIndex];
|
||||
}
|
||||
|
||||
PRInt32 nsVoidArray::IndexOf(void* aPossibleElement) const
|
||||
{
|
||||
void** ap = mArray;
|
||||
void** end = ap + mCount;
|
||||
while (ap < end) {
|
||||
if (*ap == aPossibleElement) {
|
||||
return ap - mArray;
|
||||
}
|
||||
ap++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
PRBool nsVoidArray::InsertElementAt(void* aElement, PRInt32 aIndex)
|
||||
{
|
||||
PRInt32 oldCount = mCount;
|
||||
if (PRUint32(aIndex) > PRUint32(oldCount)) {
|
||||
// An invalid index causes the insertion to fail
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
if (oldCount + 1 > mArraySize) {
|
||||
// We have to grow the array
|
||||
PRInt32 newCount = oldCount + kGrowArrayBy;
|
||||
void** newArray = new void*[newCount];
|
||||
if (mArray != nsnull && aIndex != 0)
|
||||
nsCRT::memcpy(newArray, mArray, aIndex * sizeof(void*));
|
||||
PRInt32 slide = oldCount - aIndex;
|
||||
if (0 != slide) {
|
||||
// Slide data over to make room for the insertion
|
||||
nsCRT::memcpy(newArray + aIndex + 1, mArray + aIndex,
|
||||
slide * sizeof(void*));
|
||||
}
|
||||
if (mArray != nsnull)
|
||||
delete [] mArray;
|
||||
mArray = newArray;
|
||||
mArraySize = newCount;
|
||||
} else {
|
||||
// The array is already large enough
|
||||
PRInt32 slide = oldCount - aIndex;
|
||||
if (0 != slide) {
|
||||
// Slide data over to make room for the insertion
|
||||
nsCRT::memmove(mArray + aIndex + 1, mArray + aIndex,
|
||||
slide * sizeof(void*));
|
||||
}
|
||||
}
|
||||
mArray[aIndex] = aElement;
|
||||
mCount++;
|
||||
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsVoidArray::ReplaceElementAt(void* aElement, PRInt32 aIndex)
|
||||
{
|
||||
if (PRUint32(aIndex) >= PRUint32(mArraySize)) {
|
||||
|
||||
PRInt32 requestedCount = aIndex + 1;
|
||||
PRInt32 growDelta = requestedCount - mCount;
|
||||
PRInt32 newCount = mCount + (growDelta > kGrowArrayBy ? growDelta : kGrowArrayBy);
|
||||
void** newArray = new void*[newCount];
|
||||
nsCRT::memset(newArray, 0, newCount * sizeof(void*));
|
||||
if (newArray==nsnull)
|
||||
return PR_FALSE;
|
||||
if (mArray != nsnull && aIndex != 0) {
|
||||
nsCRT::memcpy(newArray, mArray, mCount * sizeof(void*));
|
||||
if (mArray != nsnull)
|
||||
delete [] mArray;
|
||||
}
|
||||
mArray = newArray;
|
||||
mArraySize = newCount;
|
||||
}
|
||||
mArray[aIndex] = aElement;
|
||||
if (aIndex >= mCount)
|
||||
mCount = aIndex+1;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsVoidArray::RemoveElementAt(PRInt32 aIndex)
|
||||
{
|
||||
PRInt32 oldCount = mCount;
|
||||
if (PRUint32(aIndex) >= PRUint32(oldCount)) {
|
||||
// An invalid index causes the replace to fail
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
// We don't need to move any elements if we're removing the
|
||||
// last element in the array
|
||||
if (aIndex < (oldCount - 1)) {
|
||||
nsCRT::memmove(mArray + aIndex, mArray + aIndex + 1,
|
||||
(oldCount - 1 - aIndex) * sizeof(void*));
|
||||
}
|
||||
|
||||
mCount--;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsVoidArray::RemoveElement(void* aElement)
|
||||
{
|
||||
void** ep = mArray;
|
||||
void** end = ep + mCount;
|
||||
while (ep < end) {
|
||||
void* e = *ep++;
|
||||
if (e == aElement) {
|
||||
ep--;
|
||||
return RemoveElementAt(PRInt32(ep - mArray));
|
||||
}
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
void nsVoidArray::Clear()
|
||||
{
|
||||
mCount = 0;
|
||||
}
|
||||
|
||||
void nsVoidArray::Compact()
|
||||
{
|
||||
PRInt32 count = mCount;
|
||||
if (mArraySize != count) {
|
||||
void** newArray = new void*[count];
|
||||
if (nsnull != newArray) {
|
||||
nsCRT::memcpy(newArray, mArray, count * sizeof(void*));
|
||||
delete [] mArray;
|
||||
mArray = newArray;
|
||||
mArraySize = count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PRBool nsVoidArray::EnumerateForwards(nsVoidArrayEnumFunc aFunc, void* aData)
|
||||
{
|
||||
PRInt32 index = -1;
|
||||
PRBool running = PR_TRUE;
|
||||
|
||||
while (running && (++index < mCount)) {
|
||||
running = (*aFunc)(mArray[index], aData);
|
||||
}
|
||||
return running;
|
||||
}
|
||||
|
||||
PRBool nsVoidArray::EnumerateBackwards(nsVoidArrayEnumFunc aFunc, void* aData)
|
||||
{
|
||||
PRInt32 index = mCount;
|
||||
PRBool running = PR_TRUE;
|
||||
|
||||
while (running && (0 <= --index)) {
|
||||
running = (*aFunc)(mArray[index], aData);
|
||||
}
|
||||
return running;
|
||||
}
|
||||
|
||||
74
mozilla/base/src/nsVoidArray.h
Normal file
74
mozilla/base/src/nsVoidArray.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nsVoidArray_h___
|
||||
#define nsVoidArray_h___
|
||||
|
||||
#include "nscore.h"
|
||||
class nsISizeOfHandler;
|
||||
|
||||
// Enumerator callback function. Return PR_FALSE to stop
|
||||
typedef PRBool (*nsVoidArrayEnumFunc)(void* aElement, void *aData);
|
||||
|
||||
/// A basic zero-based array of void*'s that manages its own memory
|
||||
class NS_BASE nsVoidArray {
|
||||
public:
|
||||
nsVoidArray();
|
||||
nsVoidArray(PRInt32 aCount); // initial count of aCount elements set to nsnull
|
||||
~nsVoidArray();
|
||||
|
||||
nsVoidArray& operator=(const nsVoidArray& other);
|
||||
|
||||
void SizeOf(nsISizeOfHandler* aHandler) const;
|
||||
|
||||
PRInt32 Count() const {
|
||||
return mCount;
|
||||
}
|
||||
|
||||
void* ElementAt(PRInt32 aIndex) const;
|
||||
void* operator[](PRInt32 aIndex) const { return ElementAt(aIndex); }
|
||||
|
||||
PRInt32 IndexOf(void* aPossibleElement) const;
|
||||
|
||||
PRBool InsertElementAt(void* aElement, PRInt32 aIndex);
|
||||
|
||||
PRBool ReplaceElementAt(void* aElement, PRInt32 aIndex);
|
||||
|
||||
PRBool AppendElement(void* aElement) {
|
||||
return InsertElementAt(aElement, mCount);
|
||||
}
|
||||
|
||||
PRBool RemoveElement(void* aElement);
|
||||
PRBool RemoveElementAt(PRInt32 aIndex);
|
||||
void Clear();
|
||||
|
||||
void Compact();
|
||||
|
||||
PRBool EnumerateForwards(nsVoidArrayEnumFunc aFunc, void* aData);
|
||||
PRBool EnumerateBackwards(nsVoidArrayEnumFunc aFunc, void* aData);
|
||||
|
||||
protected:
|
||||
void** mArray;
|
||||
PRInt32 mArraySize;
|
||||
PRInt32 mCount;
|
||||
|
||||
private:
|
||||
/// Copy constructors are not allowed
|
||||
nsVoidArray(const nsVoidArray& other);
|
||||
};
|
||||
|
||||
#endif /* nsVoidArray_h___ */
|
||||
161
mozilla/base/src/nscore.h
Normal file
161
mozilla/base/src/nscore.h
Normal file
@@ -0,0 +1,161 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef nscore_h___
|
||||
#define nscore_h___
|
||||
|
||||
#ifdef _WIN32
|
||||
#define NS_WIN32 1
|
||||
#endif
|
||||
|
||||
#if defined(__unix)
|
||||
#define NS_UNIX 1
|
||||
#endif
|
||||
|
||||
#include "prtypes.h"
|
||||
#include "nsDebug.h"
|
||||
|
||||
/** ucs2 datatype for 2 byte unicode characters */
|
||||
typedef PRUint16 PRUcs2;
|
||||
|
||||
/** ucs4 datatype for 4 byte unicode characters */
|
||||
typedef PRUint32 PRUcs4;
|
||||
|
||||
#ifdef NS_UCS4
|
||||
typedef PRUcs4 PRUnichar;
|
||||
#else
|
||||
typedef PRUcs2 PRUnichar;
|
||||
#endif
|
||||
|
||||
/// The preferred symbol for null.
|
||||
#define nsnull 0
|
||||
|
||||
/* Define brackets for protecting C code from C++ */
|
||||
#ifdef __cplusplus
|
||||
#define NS_BEGIN_EXTERN_C extern "C" {
|
||||
#define NS_END_EXTERN_C }
|
||||
#else
|
||||
#define NS_BEGIN_EXTERN_C
|
||||
#define NS_END_EXTERN_C
|
||||
#endif
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* Import/export defines */
|
||||
|
||||
#ifdef NS_WIN32
|
||||
#define NS_IMPORT _declspec(dllimport)
|
||||
#define NS_IMPORT_(type) type _declspec(dllimport) __stdcall
|
||||
#define NS_EXPORT _declspec(dllexport)
|
||||
// XXX NS_EXPORT_ defined in nsCOm.h (xpcom) differs in where the __declspec
|
||||
// is placed. It needs to be done this way to make the 4.x compiler happy...
|
||||
#undef NS_EXPORT_
|
||||
#define NS_EXPORT_(type) type _declspec(dllexport) __stdcall
|
||||
#elif defined(XP_MAC)
|
||||
|
||||
#define NS_IMPORT
|
||||
#define NS_IMPORT_(type) type
|
||||
|
||||
// XXX NS_EXPORT_ defined in nsCom.h actually does an export. Here it's just sugar.
|
||||
#undef NS_EXPORT
|
||||
#undef NS_EXPORT_
|
||||
|
||||
#define NS_EXPORT __declspec(export)
|
||||
#define NS_EXPORT_(type) type __declspec(export)
|
||||
|
||||
#else
|
||||
/* XXX do something useful? */
|
||||
#define NS_IMPORT
|
||||
#define NS_IMPORT_(type) type
|
||||
#define NS_EXPORT
|
||||
#define NS_EXPORT_(type) type
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_BASE
|
||||
#define NS_BASE NS_EXPORT
|
||||
#else
|
||||
#define NS_BASE NS_IMPORT
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_NET
|
||||
#define NS_NET NS_EXPORT
|
||||
#else
|
||||
#define NS_NET NS_IMPORT
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_DOM
|
||||
#define NS_DOM NS_EXPORT
|
||||
#else
|
||||
#define NS_DOM NS_IMPORT
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_WIDGET
|
||||
#define NS_WIDGET NS_EXPORT
|
||||
#else
|
||||
#define NS_WIDGET NS_IMPORT
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_VIEW
|
||||
#define NS_VIEW NS_EXPORT
|
||||
#else
|
||||
#define NS_VIEW NS_IMPORT
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_GFXNONXP
|
||||
#define NS_GFXNONXP NS_EXPORT
|
||||
#define NS_GFXNONXP_(type) NS_EXPORT_(type)
|
||||
#else
|
||||
#define NS_GFXNONXP NS_IMPORT
|
||||
#define NS_GFXNONXP_(type) NS_IMPORT_(type)
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_GFX
|
||||
#define NS_GFX NS_EXPORT
|
||||
#define NS_GFX_(type) NS_EXPORT_(type)
|
||||
#else
|
||||
#define NS_GFX NS_IMPORT
|
||||
#define NS_GFX_(type) NS_IMPORT_(type)
|
||||
#endif
|
||||
|
||||
#ifdef _IMPL_NS_PLUGIN
|
||||
#define NS_PLUGIN NS_EXPORT
|
||||
#else
|
||||
#define NS_PLUGIN NS_IMPORT
|
||||
#endif
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
// Casting macros for hiding C++ features from older compilers
|
||||
|
||||
#define HAS_C_PLUS_PLUS_CASTS // we'll be optimistic.
|
||||
#if defined(__sgi) && !defined(__GNUC__)
|
||||
#undef HAS_C_PLUS_PLUS_CASTS
|
||||
#endif
|
||||
|
||||
#if defined(HAS_C_PLUS_PLUS_CASTS)
|
||||
#define NS_STATIC_CAST(__type, __ptr) static_cast<__type>(__ptr)
|
||||
#define NS_CONST_CAST(__type, __ptr) const_cast<__type>(__ptr)
|
||||
#define NS_REINTERPRET_CAST(__type, __ptr) reinterpret_cast<__type>(__ptr)
|
||||
#else
|
||||
#define NS_STATIC_CAST(__type, __ptr) ((__type)(__ptr))
|
||||
#define NS_CONST_CAST(__type, __ptr) ((__type)(__ptr))
|
||||
#define NS_REINTERPRET_CAST(__type, __ptr) ((__type)(__ptr))
|
||||
#endif
|
||||
|
||||
// No sense in making an NS_DYNAMIC_CAST() macro: you can't duplicate
|
||||
// the semantics. So if you want to dynamic_cast, then just use it
|
||||
// "straight", no macro.
|
||||
|
||||
#endif /* nscore_h___ */
|
||||
47
mozilla/base/src/rhapsody/Makefile.in
Normal file
47
mozilla/base/src/rhapsody/Makefile.in
Normal file
@@ -0,0 +1,47 @@
|
||||
#!gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
LIBRARY_NAME = gmbaseunix
|
||||
|
||||
MODULE=base
|
||||
|
||||
REQUIRES=xpcom raptor
|
||||
|
||||
DEFINES += -D_IMPL_NS_WIDGET
|
||||
|
||||
CPPSRCS= \
|
||||
nsTimer.cpp
|
||||
|
||||
CPP_OBJS= \
|
||||
./$(OBJDIR)/nsTimer.o \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
TARGETS = $(LIBRARY)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
||||
200
mozilla/base/src/rhapsody/nsTimer.cpp
Normal file
200
mozilla/base/src/rhapsody/nsTimer.cpp
Normal file
@@ -0,0 +1,200 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsITimer.h"
|
||||
#include "nsITimerCallback.h"
|
||||
#include "nsCRT.h"
|
||||
#include "prlog.h"
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
|
||||
//
|
||||
// Copied from the unix version, Rhapsody needs to
|
||||
// make this work. Stubs to compile things for now.
|
||||
//
|
||||
|
||||
#if 0
|
||||
Michael Hanni <mhanni@sprintmail.com> suggests:
|
||||
|
||||
I understand that nsTimer.cpp in base/rhapsody/ needs to be completed,
|
||||
yes? Wouldn't this code just use some NSTimers in the NSRunLoop?
|
||||
|
||||
Timer = [NSTimer timerWithTimeInterval:0.02 //seconds
|
||||
target:self
|
||||
selector:@selector(doThis:)
|
||||
userInfo:nil
|
||||
repeats:YES];
|
||||
[[NSRunLoop currentRunLoop] addTimer:Timer
|
||||
forMode:NSDefaultRunLoopMode];
|
||||
|
||||
I only looked at nsTimer.cpp briefly, but could something like this work
|
||||
if imbedded in all that c++? ;-)
|
||||
|
||||
#endif
|
||||
|
||||
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
|
||||
|
||||
extern void nsTimerExpired(void *aCallData);
|
||||
|
||||
class TimerImpl : public nsITimer {
|
||||
public:
|
||||
|
||||
public:
|
||||
TimerImpl();
|
||||
virtual ~TimerImpl();
|
||||
|
||||
virtual nsresult Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
virtual nsresult Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
virtual void Cancel();
|
||||
virtual PRUint32 GetDelay() { return mDelay; }
|
||||
virtual void SetDelay(PRUint32 aDelay) { mDelay=aDelay; };
|
||||
virtual void* GetClosure() { return mClosure; }
|
||||
|
||||
void FireTimeout();
|
||||
|
||||
private:
|
||||
nsresult Init(PRUint32 aDelay);
|
||||
|
||||
PRUint32 mDelay;
|
||||
nsTimerCallbackFunc mFunc;
|
||||
void *mClosure;
|
||||
nsITimerCallback *mCallback;
|
||||
// PRBool mRepeat;
|
||||
TimerImpl *mNext;
|
||||
int mTimerId;
|
||||
};
|
||||
|
||||
void TimerImpl::FireTimeout()
|
||||
{
|
||||
if (mFunc != NULL) {
|
||||
(*mFunc)(this, mClosure);
|
||||
}
|
||||
else if (mCallback != NULL) {
|
||||
mCallback->Notify(this); // Fire the timer
|
||||
}
|
||||
|
||||
// Always repeating here
|
||||
|
||||
// if (mRepeat)
|
||||
// mTimerId = XtAppAddTimeOut(gAppContext, GetDelay(),(XtTimerCallbackProc)nsTimerExpired, this);
|
||||
}
|
||||
|
||||
|
||||
TimerImpl::TimerImpl()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mFunc = NULL;
|
||||
mCallback = NULL;
|
||||
mNext = NULL;
|
||||
mTimerId = 0;
|
||||
mDelay = 0;
|
||||
mClosure = NULL;
|
||||
}
|
||||
|
||||
TimerImpl::~TimerImpl()
|
||||
{
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mFunc = aFunc;
|
||||
mClosure = aClosure;
|
||||
// mRepeat = aRepeat;
|
||||
|
||||
printf("TimerImpl::Init() not implemented\n");
|
||||
|
||||
#ifdef RHAPSODY_NEEDS_TO_IMPLEMENT_THIS
|
||||
mTimerId = XtAppAddTimeOut(gAppContext, aDelay,(XtTimerCallbackProc)nsTimerExpired, this);
|
||||
#endif
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mCallback = aCallback;
|
||||
// mRepeat = aRepeat;
|
||||
|
||||
printf("TimerImpl::Init() not implmented.\n");
|
||||
|
||||
#ifdef RHAPSODY_NEEDS_TO_IMPLEMENT_THIS
|
||||
mTimerId = XtAppAddTimeOut(gAppContext, aDelay, (XtTimerCallbackProc)nsTimerExpired, this);
|
||||
#endif
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(PRUint32 aDelay)
|
||||
{
|
||||
mDelay = aDelay;
|
||||
NS_ADDREF(this);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
|
||||
|
||||
|
||||
void
|
||||
TimerImpl::Cancel()
|
||||
{
|
||||
|
||||
printf("TimerImpl::Cancel() not implemented.\n");
|
||||
|
||||
#ifdef RHAPSODY_NEEDS_TO_IMPLEMENT_THIS
|
||||
XtRemoveTimeOut(mTimerId);
|
||||
#endif
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
|
||||
if (nsnull == aInstancePtrResult) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
TimerImpl *timer = new TimerImpl();
|
||||
if (nsnull == timer) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
|
||||
|
||||
void nsTimerExpired(void *aCallData)
|
||||
{
|
||||
TimerImpl* timer = (TimerImpl *)aCallData;
|
||||
timer->FireTimeout();
|
||||
}
|
||||
6
mozilla/base/src/unix/README
Normal file
6
mozilla/base/src/unix/README
Normal file
@@ -0,0 +1,6 @@
|
||||
This directory is obsolete.
|
||||
|
||||
The nsTimer files that used to live here have been moved to ../motif
|
||||
in order to allow for multiple unix toolkits.
|
||||
|
||||
ramiro@netscape.com 11-02-1998
|
||||
42
mozilla/base/src/unix/nsFileSpecUnix.cpp
Normal file
42
mozilla/base/src/unix/nsFileSpecUnix.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// This file is included by nsFileSpec.cpp, and includes the Unix-specific
|
||||
// implementations.
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::SetLeafName(const char* inLeafName)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
nsFileSpecHelpers::LeafReplace(mPath, '/', inLeafName);
|
||||
} // nsNativeFileSpec::SetLeafName
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsNativeFileSpec::GetLeafName() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return nsFileSpecHelpers::GetLeaf(mPath, '/');
|
||||
} // nsNativeFileSpec::GetLeafName
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
bool nsNativeFileSpec::Exists() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return false; // fixme
|
||||
} // nsNativeFileSpec::Exists
|
||||
|
||||
40
mozilla/base/src/windows/makefile.win
Normal file
40
mozilla/base/src/windows/makefile.win
Normal file
@@ -0,0 +1,40 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=..\..\..
|
||||
IGNORE_MANIFEST=1
|
||||
|
||||
DEFINES=-D_IMPL_NS_BASE
|
||||
LIBRARY_NAME=gmbase
|
||||
MODULE=raptor
|
||||
REQUIRES=xpcom raptor
|
||||
|
||||
CPPSRCS=nsTimer.cpp
|
||||
|
||||
CPP_OBJS=.\$(OBJDIR)\nsTimer.obj
|
||||
|
||||
LINCS=-I$(XPDIST)\public\xpcom -I$(XPDIST)\public\raptor
|
||||
|
||||
LCFLAGS = \
|
||||
$(LCFLAGS) \
|
||||
-D_IMPL_NS_BASE \
|
||||
$(NULL)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
libs:: $(OBJS)
|
||||
$(MAKE_INSTALL) $(OBJDIR)\nsTimer.obj ..\$(OBJDIR)
|
||||
84
mozilla/base/src/windows/nsFileSpecWin.cpp
Normal file
84
mozilla/base/src/windows/nsFileSpecWin.cpp
Normal file
@@ -0,0 +1,84 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
// This file is included by nsFileSpec.cp, and includes the Windows-specific
|
||||
// implementations.
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsNativeFileSpec::nsNativeFileSpec(const nsFilePath& inPath)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(NULL)
|
||||
{
|
||||
*this = inPath;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::operator = (const nsFilePath& inPath)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// Convert '/' to '\'
|
||||
nsFileSpecHelpers::StringAssign(mPath, (const char*)inPath);
|
||||
for (char* cp = mPath; *cp; cp++)
|
||||
{
|
||||
if (*cp == '/')
|
||||
*cp = '\\';
|
||||
}
|
||||
} // nsNativeFileSpec::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
nsFilePath::nsFilePath(const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
: mPath(NULL)
|
||||
{
|
||||
*this = inSpec;
|
||||
} // nsFilePath::nsFilePath
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsFilePath::operator = (const nsNativeFileSpec& inSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// Convert '\' to '/'
|
||||
nsFileSpecHelpers::StringAssign(mPath, inSpec.mPath);
|
||||
for (char* cp = mPath; *cp; cp++)
|
||||
{
|
||||
if (*cp == '\\')
|
||||
*cp = '/';
|
||||
}
|
||||
} // nsFilePath::operator =
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void nsNativeFileSpec::SetLeafName(const char* inLeafName)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
nsFileSpecHelpers::LeafReplace(mPath, '\\', inLeafName);
|
||||
} // nsNativeFileSpec::SetLeafName
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
char* nsNativeFileSpec::GetLeafName() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return nsFileSpecHelpers::GetLeaf(mPath, '\\');
|
||||
} // nsNativeFileSpec::GetLeafName
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
bool nsNativeFileSpec::Exists() const
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
return false; // fixme
|
||||
} // nsNativeFileSpec::Exists
|
||||
|
||||
362
mozilla/base/src/windows/nsTimer.cpp
Normal file
362
mozilla/base/src/windows/nsTimer.cpp
Normal file
@@ -0,0 +1,362 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsITimer.h"
|
||||
#include "nsITimerCallback.h"
|
||||
#include "nsCRT.h"
|
||||
#include "prlog.h"
|
||||
#include <stdio.h>
|
||||
#include <windows.h>
|
||||
#include <limits.h>
|
||||
|
||||
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
|
||||
|
||||
/*
|
||||
* Implementation of timers lifted from Windows front-end file timer.cpp
|
||||
*/
|
||||
class TimerImpl : public nsITimer {
|
||||
public:
|
||||
static TimerImpl *gTimerList;
|
||||
static UINT gWindowsTimer;
|
||||
static DWORD gNextFire;
|
||||
|
||||
static void ProcessTimeouts(DWORD aNow);
|
||||
static void SyncTimeoutPeriod(DWORD aTickCount);
|
||||
|
||||
public:
|
||||
TimerImpl();
|
||||
virtual ~TimerImpl();
|
||||
|
||||
virtual nsresult Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
virtual nsresult Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
virtual void Cancel();
|
||||
void Fire(DWORD aNow);
|
||||
|
||||
virtual PRUint32 GetDelay() { return mDelay; }
|
||||
virtual void SetDelay(PRUint32 aDelay) {};
|
||||
|
||||
virtual void* GetClosure() { return mClosure; }
|
||||
|
||||
private:
|
||||
nsresult Init(PRUint32 aDelay);
|
||||
|
||||
PRUint32 mDelay;
|
||||
nsTimerCallbackFunc mFunc;
|
||||
void *mClosure;
|
||||
nsITimerCallback *mCallback;
|
||||
DWORD mFireTime;
|
||||
// PRBool mRepeat;
|
||||
TimerImpl *mNext;
|
||||
};
|
||||
|
||||
TimerImpl *TimerImpl::gTimerList = NULL;
|
||||
UINT TimerImpl::gWindowsTimer = 0;
|
||||
DWORD TimerImpl::gNextFire = (DWORD)-1;
|
||||
|
||||
void CALLBACK FireTimeout(HWND aWindow,
|
||||
UINT aMessage,
|
||||
UINT aTimerID,
|
||||
DWORD aTime)
|
||||
{
|
||||
static BOOL bCanEnter = TRUE;
|
||||
|
||||
// Don't allow old timer messages in here.
|
||||
if(aMessage != WM_TIMER) {
|
||||
PR_ASSERT(0);
|
||||
return;
|
||||
}
|
||||
|
||||
if(aTimerID != TimerImpl::gWindowsTimer) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Block only one entry into this function, or else.
|
||||
if(bCanEnter) {
|
||||
bCanEnter = FALSE;
|
||||
// see if we need to fork off any timeout functions
|
||||
if(TimerImpl::gTimerList) {
|
||||
TimerImpl::ProcessTimeouts(aTime);
|
||||
}
|
||||
bCanEnter = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// Function to correctly have the timer be set.
|
||||
void
|
||||
TimerImpl::SyncTimeoutPeriod(DWORD aTickCount)
|
||||
{
|
||||
// May want us to set tick count ourselves.
|
||||
if(aTickCount == 0) {
|
||||
aTickCount = ::GetTickCount();
|
||||
}
|
||||
|
||||
// If there's no list, we should clear the timer.
|
||||
if(!gTimerList) {
|
||||
if(gWindowsTimer) {
|
||||
::KillTimer(NULL, gWindowsTimer);
|
||||
gWindowsTimer = 0;
|
||||
gNextFire = (DWORD)-1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// See if we need to clear the current timer.
|
||||
// Curcumstances are that if the timer will not
|
||||
// fire on time for the next timeout.
|
||||
BOOL bSetTimer = FALSE;
|
||||
TimerImpl *pTimeout = gTimerList;
|
||||
if(gWindowsTimer) {
|
||||
if(pTimeout->mFireTime != gNextFire) {
|
||||
::KillTimer(NULL, gWindowsTimer);
|
||||
gWindowsTimer = 0;
|
||||
gNextFire = (DWORD)-1;
|
||||
|
||||
// Set the timer.
|
||||
bSetTimer = TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// No timer set, attempt.
|
||||
bSetTimer = TRUE;
|
||||
}
|
||||
|
||||
if(bSetTimer) {
|
||||
DWORD dwFireWhen = pTimeout->mFireTime > aTickCount ?
|
||||
pTimeout->mFireTime - aTickCount : 0;
|
||||
if(dwFireWhen > UINT_MAX) {
|
||||
dwFireWhen = UINT_MAX;
|
||||
}
|
||||
UINT uFireWhen = (UINT)dwFireWhen;
|
||||
|
||||
PR_ASSERT(gWindowsTimer == 0);
|
||||
gWindowsTimer = ::SetTimer(NULL, 0, uFireWhen, (TIMERPROC)FireTimeout);
|
||||
|
||||
if(gWindowsTimer) {
|
||||
// Set the fire time.
|
||||
gNextFire = pTimeout->mFireTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Walk down the timeout list and launch anyone appropriate
|
||||
void
|
||||
TimerImpl::ProcessTimeouts(DWORD aNow)
|
||||
{
|
||||
TimerImpl *p = gTimerList;
|
||||
if(aNow == 0) {
|
||||
aNow = ::GetTickCount();
|
||||
}
|
||||
|
||||
BOOL bCalledSync = FALSE;
|
||||
|
||||
// loop over all entries
|
||||
while(p) {
|
||||
// send it
|
||||
if(p->mFireTime < aNow) {
|
||||
// Make sure that the timer cannot be deleted during the
|
||||
// Fire(...) call which may release *all* other references
|
||||
// to p...
|
||||
NS_ADDREF(p);
|
||||
p->Fire(aNow);
|
||||
|
||||
// Clear the timer.
|
||||
// Period synced.
|
||||
p->Cancel();
|
||||
bCalledSync = TRUE;
|
||||
NS_RELEASE(p);
|
||||
|
||||
// Reset the loop (can't look at p->pNext now, and called
|
||||
// code may have added/cleared timers).
|
||||
// (could do this by going recursive and returning).
|
||||
p = gTimerList;
|
||||
} else {
|
||||
// Make sure we fire an timer.
|
||||
// Also, we need to check to see if things are backing up (they
|
||||
// may be asking to be fired long before we ever get to them,
|
||||
// and we don't want to pass in negative values to the real
|
||||
// timer code, or it takes days to fire....
|
||||
if(bCalledSync == FALSE) {
|
||||
SyncTimeoutPeriod(aNow);
|
||||
bCalledSync = TRUE;
|
||||
}
|
||||
// Get next timer.
|
||||
p = p->mNext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TimerImpl::TimerImpl()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mFunc = NULL;
|
||||
mCallback = NULL;
|
||||
mNext = NULL;
|
||||
mClosure = nsnull;
|
||||
}
|
||||
|
||||
TimerImpl::~TimerImpl()
|
||||
{
|
||||
Cancel();
|
||||
NS_IF_RELEASE(mCallback);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mFunc = aFunc;
|
||||
mClosure = aClosure;
|
||||
// mRepeat = aRepeat;
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(nsITimerCallback *aCallback,
|
||||
// PRBool aRepeat,
|
||||
PRUint32 aDelay)
|
||||
{
|
||||
mCallback = aCallback;
|
||||
NS_ADDREF(mCallback);
|
||||
// mRepeat = aRepeat;
|
||||
|
||||
return Init(aDelay);
|
||||
}
|
||||
|
||||
nsresult
|
||||
TimerImpl::Init(PRUint32 aDelay)
|
||||
{
|
||||
DWORD dwNow = ::GetTickCount();
|
||||
|
||||
mDelay = aDelay;
|
||||
mFireTime = (DWORD) aDelay + dwNow;
|
||||
mNext = NULL;
|
||||
|
||||
// add it to the list
|
||||
if(!gTimerList) {
|
||||
// no list add it
|
||||
gTimerList = this;
|
||||
}
|
||||
else {
|
||||
|
||||
// is it before everything else on the list?
|
||||
if(mFireTime < gTimerList->mFireTime) {
|
||||
|
||||
mNext = gTimerList;
|
||||
gTimerList = this;
|
||||
|
||||
} else {
|
||||
|
||||
TimerImpl * pPrev = gTimerList;
|
||||
TimerImpl * pCurrent = gTimerList;
|
||||
|
||||
while(pCurrent && (pCurrent->mFireTime <= mFireTime)) {
|
||||
pPrev = pCurrent;
|
||||
pCurrent = pCurrent->mNext;
|
||||
}
|
||||
|
||||
PR_ASSERT(pPrev);
|
||||
|
||||
// insert it after pPrev (this could be at the end of the list)
|
||||
mNext = pPrev->mNext;
|
||||
pPrev->mNext = this;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
NS_ADDREF(this);
|
||||
|
||||
// Sync the timer fire period.
|
||||
SyncTimeoutPeriod(dwNow);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
|
||||
|
||||
void
|
||||
TimerImpl::Fire(DWORD aNow)
|
||||
{
|
||||
if (mFunc != NULL) {
|
||||
(*mFunc)(this, mClosure);
|
||||
}
|
||||
else if (mCallback != NULL) {
|
||||
mCallback->Notify(this);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TimerImpl::Cancel()
|
||||
{
|
||||
TimerImpl *me = this;
|
||||
|
||||
if(gTimerList == this) {
|
||||
|
||||
// first element in the list lossage
|
||||
gTimerList = mNext;
|
||||
|
||||
} else {
|
||||
|
||||
// walk until no next pointer
|
||||
for(TimerImpl * p = gTimerList; p && p->mNext && (p->mNext != this); p = p->mNext)
|
||||
;
|
||||
|
||||
// if we found something valid pull it out of the list
|
||||
if(p && p->mNext && p->mNext == this) {
|
||||
p->mNext = mNext;
|
||||
|
||||
} else {
|
||||
// get out before we delete something that looks bogus
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// if we got here it must have been a valid element so trash it
|
||||
NS_RELEASE(me);
|
||||
|
||||
// If there's now no be sure to clear the timer.
|
||||
SyncTimeoutPeriod(0);
|
||||
}
|
||||
|
||||
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
|
||||
if (nsnull == aInstancePtrResult) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
TimerImpl *timer = new TimerImpl();
|
||||
if (nsnull == timer) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
|
||||
}
|
||||
106
mozilla/base/tests/CvtURL.cpp
Normal file
106
mozilla/base/tests/CvtURL.cpp
Normal file
@@ -0,0 +1,106 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include "nsIUnicharInputStream.h"
|
||||
#include "nsIURL.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
#include "prprf.h"
|
||||
#include "prtime.h"
|
||||
|
||||
static nsCharSetID ConvertCharacterSetName(const char* aName)
|
||||
{
|
||||
if (nsCRT::strcasecmp(aName, "iso-latin-1") == 0) {
|
||||
return eCharSetID_IsoLatin1;
|
||||
}
|
||||
return (nsCharSetID) -1;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if (3 != argc) {
|
||||
printf("usage: CvtURL url character-set-name\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
char* characterSetName = argv[2];
|
||||
nsCharSetID cset = ConvertCharacterSetName(characterSetName);
|
||||
if (PRInt32(cset) < 0) {
|
||||
printf("illegal character set name: '%s'\n", characterSetName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Create url object
|
||||
char* urlName = argv[1];
|
||||
nsIURL* url;
|
||||
nsresult rv = NS_NewURL(&url, urlName);
|
||||
if (NS_OK != rv) {
|
||||
printf("invalid URL: '%s'\n", urlName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Get an input stream from the url
|
||||
nsresult ec;
|
||||
nsIInputStream* in;
|
||||
ec = NS_OpenURL(url, &in);
|
||||
if (nsnull == in) {
|
||||
printf("open of url('%s') failed: error=%x\n", urlName, ec);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Translate the input using the argument character set id into unicode
|
||||
nsIUnicharInputStream* uin;
|
||||
rv = NS_NewConverterStream(&uin, nsnull, in, 0, cset);
|
||||
if (NS_OK != rv) {
|
||||
printf("can't create converter input stream: %d\n", rv);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Read the input and write some output
|
||||
PRTime start = PR_Now();
|
||||
PRInt32 count = 0;
|
||||
for (;;) {
|
||||
PRUnichar buf[1000];
|
||||
PRUint32 nb;
|
||||
ec = uin->Read(buf, 0, 1000, &nb);
|
||||
if (ec < 0) {
|
||||
if (ec != NS_BASE_STREAM_EOF) {
|
||||
printf("i/o error: %d\n", ec);
|
||||
}
|
||||
break;
|
||||
}
|
||||
count += nb;
|
||||
}
|
||||
PRTime end = PR_Now();
|
||||
PRTime conversion, ustoms;
|
||||
LL_I2L(ustoms, 1000);
|
||||
LL_SUB(conversion, end, start);
|
||||
LL_DIV(conversion, conversion, ustoms);
|
||||
char buf[500];
|
||||
PR_snprintf(buf, sizeof(buf),
|
||||
"converting and discarding %d bytes took %lldms",
|
||||
count, conversion);
|
||||
puts(buf);
|
||||
|
||||
// Release the objects
|
||||
in->Release();
|
||||
uin->Release();
|
||||
url->Release();
|
||||
|
||||
return 0;
|
||||
}
|
||||
91
mozilla/base/tests/FilesTest.cpp
Normal file
91
mozilla/base/tests/FilesTest.cpp
Normal file
@@ -0,0 +1,91 @@
|
||||
#include "nsFileSpec.h"
|
||||
#include "nsFileStream.h"
|
||||
|
||||
#ifdef NS_USING_STL
|
||||
using std::endl;
|
||||
using std::cout;
|
||||
#endif
|
||||
|
||||
NS_NAMESPACE FileTest
|
||||
{
|
||||
NS_NAMESPACE_PROTOTYPE void WriteStuff(nsOutputFileStream& s);
|
||||
} NS_NAMESPACE_END
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void FileTest::WriteStuff(nsOutputFileStream& s)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
// Initialize a URL from a string without suffix. Change the path to suit your machine.
|
||||
nsFileURL fileURL("file:///Development/MPW/MPW%20Shell");
|
||||
s << "File URL initialized to: \"" << fileURL << "\""<< nsEndl;
|
||||
|
||||
// Initialize a Unix path from a URL
|
||||
nsFilePath filePath(fileURL);
|
||||
s << "As a unix path: \"" << (const char*)filePath << "\""<< nsEndl;
|
||||
|
||||
// Initialize a native file spec from a URL
|
||||
nsNativeFileSpec fileSpec(fileURL);
|
||||
s << "As a file spec: " << fileSpec << nsEndl;
|
||||
|
||||
// Make the spec unique (this one has no suffix).
|
||||
fileSpec.MakeUnique();
|
||||
s << "Unique file spec: " << fileSpec << nsEndl;
|
||||
|
||||
// Assign the spec to a URL
|
||||
fileURL = fileSpec;
|
||||
s << "File URL assigned from spec: \"" << fileURL << "\""<< nsEndl;
|
||||
|
||||
// Assign a unix path using a string with a suffix.
|
||||
filePath = "/Development/MPW/SysErrs.err";
|
||||
s << "File path reassigned to: \"" << (const char*)filePath << "\""<< nsEndl;
|
||||
|
||||
// Assign to a file spec using a unix path.
|
||||
fileSpec = filePath;
|
||||
s << "File spec reassigned to: " << fileSpec << nsEndl;
|
||||
|
||||
// Make this unique (this one has a suffix).
|
||||
fileSpec.MakeUnique();
|
||||
s << "File spec made unique: " << fileSpec << nsEndl;
|
||||
} // WriteStuff
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
void main()
|
||||
// For use with DEBUG defined.
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
|
||||
// Test of nsFileSpec
|
||||
|
||||
nsOutputFileStream nsOut(cout);
|
||||
nsOut << "WRITING TEST OUTPUT TO cout" << nsEndl << nsEndl;
|
||||
|
||||
FileTest::WriteStuff(nsOut);
|
||||
nsOut << nsEndl << nsEndl;
|
||||
|
||||
// Test of nsOutputFileStream
|
||||
|
||||
nsFilePath myTextFilePath("iotest.txt");
|
||||
|
||||
{
|
||||
nsOut << "WRITING IDENTICAL OUTPUT TO " << (const char*)myTextFilePath << nsEndl << nsEndl;
|
||||
nsOutputFileStream testStream(myTextFilePath);
|
||||
NS_ASSERTION(testStream.is_open(), "File could not be opened");
|
||||
FileTest::WriteStuff(testStream);
|
||||
} // <-- Scope closes the stream (and the file).
|
||||
|
||||
// Test of nsInputFileStream
|
||||
|
||||
{
|
||||
nsOut << "READING BACK DATA FROM " << (const char*)myTextFilePath << nsEndl << nsEndl;
|
||||
nsInputFileStream testStream2(myTextFilePath);
|
||||
NS_ASSERTION(testStream2.is_open(), "File could not be opened");
|
||||
char line[1000];
|
||||
|
||||
testStream2.seek(0); // check that the seek compiles
|
||||
while (!testStream2.eof())
|
||||
{
|
||||
testStream2.readline(line, sizeof(line));
|
||||
nsOut << line << nsEndl;
|
||||
}
|
||||
}
|
||||
} // main
|
||||
60
mozilla/base/tests/Makefile.in
Normal file
60
mozilla/base/tests/Makefile.in
Normal file
@@ -0,0 +1,60 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
REQUIRES = xpcom netlib
|
||||
|
||||
CPPSRCS = TestAtoms.cpp TestCRT.cpp FilesTest.cpp
|
||||
|
||||
OBJS = $(CPPSRCS:.cpp=.o)
|
||||
|
||||
EX_LIBS = \
|
||||
$(DIST)/lib/libraptorbase.a \
|
||||
$(DIST)/lib/libxpcom.a \
|
||||
$(NULL)
|
||||
|
||||
PROGS = $(addprefix $(OBJDIR)/, $(CPPSRCS:.cpp=))
|
||||
|
||||
TARGETS = $(PROGS)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
INCLUDES += -I$(srcdir)/../src
|
||||
|
||||
# needed for mac linux
|
||||
ifeq ($(OS_ARCH),Linux)
|
||||
ifneq ($(OS_RELEASE),1.2)
|
||||
OS_LIBS += /usr/lib/libdl.so
|
||||
endif
|
||||
endif
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp
|
||||
@$(MAKE_OBJDIR)
|
||||
$(CCC) -o $@ $(CFLAGS) -c $<
|
||||
|
||||
$(PROGS):$(OBJDIR)/%: $(OBJDIR)/%.o $(EX_LIBS)
|
||||
@$(MAKE_OBJDIR)
|
||||
$(CCC) -o $@ $(LDFLAGS) $^ $(NSPR_LIBS) $(OS_LIBS)
|
||||
|
||||
install:: $(TARGETS)
|
||||
$(INSTALL) $(PROGS) $(DIST)/bin
|
||||
|
||||
109
mozilla/base/tests/TestAtoms.cpp
Normal file
109
mozilla/base/tests/TestAtoms.cpp
Normal file
@@ -0,0 +1,109 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "nsIAtom.h"
|
||||
#include "nsString.h"
|
||||
#include "prprf.h"
|
||||
#include "prtime.h"
|
||||
#include <stdio.h>
|
||||
|
||||
extern "C" int _CrtSetDbgFlag(int);
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
FILE* fp = fopen("words.txt", "r");
|
||||
if (nsnull == fp) {
|
||||
printf("can't open words.txt\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
PRInt32 count = 0;
|
||||
PRUnichar** strings = new PRUnichar*[60000];
|
||||
nsIAtom** ids = new nsIAtom*[60000];
|
||||
nsAutoString s1, s2;
|
||||
PRTime start = PR_Now();
|
||||
PRInt32 i;
|
||||
for (i = 0; i < 60000; i++) {
|
||||
char buf[1000];
|
||||
char* s = fgets(buf, sizeof(buf), fp);
|
||||
if (nsnull == s) {
|
||||
break;
|
||||
}
|
||||
nsAutoString sb(buf);
|
||||
strings[count++] = sb.ToNewUnicode();
|
||||
sb.ToUpperCase();
|
||||
strings[count++] = sb.ToNewUnicode();
|
||||
}
|
||||
PRTime end0 = PR_Now();
|
||||
|
||||
// Find and create idents
|
||||
for (i = 0; i < count; i++) {
|
||||
ids[i] = NS_NewAtom(strings[i]);
|
||||
}
|
||||
PRUnichar qqs[1]; qqs[0] = 0;
|
||||
nsIAtom* qq = NS_NewAtom(qqs);
|
||||
PRTime end1 = PR_Now();
|
||||
|
||||
// Now make sure we can find all the idents we just made
|
||||
for (i = 0; i < count; i++) {
|
||||
nsIAtom* id = NS_NewAtom(ids[i]->GetUnicode());
|
||||
if (id != ids[i]) {
|
||||
id->ToString(s1);
|
||||
ids[i]->ToString(s2);
|
||||
printf("find failed: id='%s' ids[%d]='%s'\n",
|
||||
s1.ToNewCString(), i, s2.ToNewCString());
|
||||
return -1;
|
||||
}
|
||||
NS_RELEASE(id);
|
||||
}
|
||||
PRTime end2 = PR_Now();
|
||||
|
||||
// Destroy all the atoms we just made
|
||||
NS_RELEASE(qq);
|
||||
for (i = 0; i < count; i++) {
|
||||
NS_RELEASE(ids[i]);
|
||||
}
|
||||
|
||||
// Print out timings
|
||||
PRTime end3 = PR_Now();
|
||||
PRTime creates, finds, lookups, dtor, ustoms;
|
||||
LL_I2L(ustoms, 1000);
|
||||
LL_SUB(creates, end0, start);
|
||||
LL_DIV(creates, creates, ustoms);
|
||||
LL_SUB(finds, end1, end0);
|
||||
LL_DIV(finds, finds, ustoms);
|
||||
LL_SUB(lookups, end2, end1);
|
||||
LL_DIV(lookups, lookups, ustoms);
|
||||
LL_SUB(dtor, end3, end2);
|
||||
char buf[500];
|
||||
PR_snprintf(buf, sizeof(buf), "making %d ident strings took %lldms",
|
||||
count, creates);
|
||||
puts(buf);
|
||||
PR_snprintf(buf, sizeof(buf), "%d new idents took %lldms",
|
||||
count, finds);
|
||||
puts(buf);
|
||||
PR_snprintf(buf, sizeof(buf), "%d ident lookups took %lldms",
|
||||
count, lookups);
|
||||
puts(buf);
|
||||
PR_snprintf(buf, sizeof(buf), "dtor took %lldusec", dtor);
|
||||
puts(buf);
|
||||
|
||||
printf("%d live atoms\n", NS_GetNumberOfAtoms());
|
||||
NS_POSTCONDITION(0 == NS_GetNumberOfAtoms(), "dangling atoms");
|
||||
|
||||
return 0;
|
||||
}
|
||||
89
mozilla/base/tests/TestCRT.cpp
Normal file
89
mozilla/base/tests/TestCRT.cpp
Normal file
@@ -0,0 +1,89 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
#include "plstr.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
// Verify that nsCRT versions of string comparison routines get the
|
||||
// same answers as the native non-unicode versions. We only pass in
|
||||
// iso-latin-1 strings, so the comparision must be valid.
|
||||
static void Check(const char* s1, const char* s2, PRIntn n)
|
||||
{
|
||||
PRIntn clib = PL_strcmp(s1, s2);
|
||||
PRIntn clib_n = PL_strncmp(s1, s2, n);
|
||||
PRIntn clib_case = PL_strcasecmp(s1, s2);
|
||||
PRIntn clib_case_n = PL_strncasecmp(s1, s2, n);
|
||||
|
||||
nsAutoString t1(s1), t2(s2);
|
||||
const PRUnichar* us1 = t1.GetUnicode();
|
||||
const PRUnichar* us2 = t2.GetUnicode();
|
||||
|
||||
PRIntn u = nsCRT::strcmp(us1, s2);
|
||||
PRIntn u_n = nsCRT::strncmp(us1, s2, n);
|
||||
PRIntn u_case = nsCRT::strcasecmp(us1, s2);
|
||||
PRIntn u_case_n = nsCRT::strncasecmp(us1, s2, n);
|
||||
|
||||
PRIntn u2 = nsCRT::strcmp(us1, us2);
|
||||
PRIntn u2_n = nsCRT::strncmp(us1, us2, n);
|
||||
PRIntn u2_case = nsCRT::strcasecmp(us1, us2);
|
||||
PRIntn u2_case_n = nsCRT::strncasecmp(us1, us2, n);
|
||||
|
||||
NS_ASSERTION(clib == u, "strcmp");
|
||||
NS_ASSERTION(clib_n == u_n, "strncmp");
|
||||
NS_ASSERTION(clib_case == u_case, "strcasecmp");
|
||||
NS_ASSERTION(clib_case_n == u_case_n, "strncasecmp");
|
||||
|
||||
NS_ASSERTION(clib == u2, "strcmp");
|
||||
NS_ASSERTION(clib_n == u2_n, "strncmp");
|
||||
NS_ASSERTION(clib_case == u2_case, "strcasecmp");
|
||||
NS_ASSERTION(clib_case_n == u2_case_n, "strncasecmp");
|
||||
}
|
||||
|
||||
struct Test {
|
||||
const char* s1;
|
||||
const char* s2;
|
||||
PRIntn n;
|
||||
};
|
||||
|
||||
static Test tests[] = {
|
||||
{ "foo", "foo", 3 },
|
||||
{ "foo", "fo", 3 },
|
||||
|
||||
{ "foo", "bar", 3 },
|
||||
{ "foo", "ba", 3 },
|
||||
|
||||
{ "foo", "zap", 3 },
|
||||
{ "foo", "za", 3 },
|
||||
|
||||
{ "bar", "foo", 3 },
|
||||
{ "bar", "fo", 3 },
|
||||
|
||||
{ "bar", "foo", 3 },
|
||||
{ "bar", "fo", 3 },
|
||||
};
|
||||
#define NUM_TESTS (sizeof(tests) / sizeof(tests[0]))
|
||||
|
||||
void main()
|
||||
{
|
||||
Test* tp = tests;
|
||||
for (PRIntn i = 0; i < NUM_TESTS; i++, tp++) {
|
||||
Check(tp->s1, tp->s2, tp->n);
|
||||
}
|
||||
}
|
||||
202
mozilla/base/tests/TimerTest.cpp
Normal file
202
mozilla/base/tests/TimerTest.cpp
Normal file
@@ -0,0 +1,202 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "prtypes.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsITimer.h"
|
||||
#include "nsITimerCallback.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "resources.h"
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
static char* class1Name = "TimerTest";
|
||||
|
||||
static HINSTANCE gInstance, gPrevInstance;
|
||||
static nsVoidArray *gTimeouts = NULL;
|
||||
|
||||
static void CreateRepeat(PRUint32 aDelay);
|
||||
|
||||
void
|
||||
MyCallback (nsITimer *aTimer, void *aClosure)
|
||||
{
|
||||
printf("Timer executed with delay %d\n", (int)aClosure);
|
||||
|
||||
if (gTimeouts->RemoveElement(aTimer) == PR_TRUE) {
|
||||
NS_RELEASE(aTimer);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MyRepeatCallback (nsITimer *aTimer, void *aClosure)
|
||||
{
|
||||
printf("Timer executed with delay %d\n", (int)aClosure);
|
||||
|
||||
if (gTimeouts->RemoveElement(aTimer) == PR_TRUE) {
|
||||
NS_RELEASE(aTimer);
|
||||
}
|
||||
|
||||
CreateRepeat((PRUint32)aClosure);
|
||||
}
|
||||
|
||||
static void
|
||||
CreateOneShot(PRUint32 aDelay)
|
||||
{
|
||||
nsITimer *timer;
|
||||
|
||||
NS_NewTimer(&timer);
|
||||
timer->Init(MyCallback, (void *)aDelay, aDelay);
|
||||
|
||||
gTimeouts->AppendElement(timer);
|
||||
}
|
||||
|
||||
static void
|
||||
CreateRepeat(PRUint32 aDelay)
|
||||
{
|
||||
nsITimer *timer;
|
||||
|
||||
NS_NewTimer(&timer);
|
||||
timer->Init(MyRepeatCallback, (void *)aDelay, aDelay);
|
||||
|
||||
gTimeouts->AppendElement(timer);
|
||||
}
|
||||
|
||||
static void
|
||||
CancelAll()
|
||||
{
|
||||
int i, count = gTimeouts->Count();
|
||||
|
||||
for (i=0; i < count; i++) {
|
||||
nsITimer *timer = (nsITimer *)gTimeouts->ElementAt(i);
|
||||
|
||||
if (timer != NULL) {
|
||||
timer->Cancel();
|
||||
NS_RELEASE(timer);
|
||||
}
|
||||
}
|
||||
|
||||
gTimeouts->Clear();
|
||||
}
|
||||
|
||||
long PASCAL
|
||||
WndProc(HWND hWnd, UINT msg, WPARAM param, LPARAM lparam)
|
||||
{
|
||||
HMENU hMenu;
|
||||
|
||||
switch (msg) {
|
||||
case WM_COMMAND:
|
||||
hMenu = GetMenu(hWnd);
|
||||
|
||||
switch (LOWORD(param)) {
|
||||
case TIMER_EXIT:
|
||||
::DestroyWindow(hWnd);
|
||||
exit(0);
|
||||
|
||||
case TIMER_1SECOND:
|
||||
CreateOneShot(1000);
|
||||
break;
|
||||
case TIMER_5SECOND:
|
||||
CreateOneShot(5000);
|
||||
break;
|
||||
case TIMER_10SECOND:
|
||||
CreateOneShot(10000);
|
||||
break;
|
||||
|
||||
case TIMER_1REPEAT:
|
||||
CreateRepeat(1000);
|
||||
break;
|
||||
case TIMER_5REPEAT:
|
||||
CreateRepeat(5000);
|
||||
break;
|
||||
case TIMER_10REPEAT:
|
||||
CreateRepeat(10000);
|
||||
break;
|
||||
|
||||
case TIMER_CANCEL:
|
||||
CancelAll();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return DefWindowProc(hWnd, msg, param, lparam);
|
||||
}
|
||||
|
||||
static HWND CreateTopLevel(const char* clazz, const char* title,
|
||||
int aWidth, int aHeight)
|
||||
{
|
||||
// Create a simple top level window
|
||||
HWND window = ::CreateWindowEx(WS_EX_CLIENTEDGE,
|
||||
clazz, title,
|
||||
WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
aWidth, aHeight,
|
||||
HWND_DESKTOP,
|
||||
NULL,
|
||||
gInstance,
|
||||
NULL);
|
||||
|
||||
::ShowWindow(window, SW_SHOW);
|
||||
::UpdateWindow(window);
|
||||
return window;
|
||||
}
|
||||
|
||||
int PASCAL
|
||||
WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParam, int nCmdShow)
|
||||
{
|
||||
gInstance = instance;
|
||||
|
||||
if (!prevInstance) {
|
||||
WNDCLASS wndClass;
|
||||
wndClass.style = 0;
|
||||
wndClass.lpfnWndProc = WndProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = 0;
|
||||
wndClass.hInstance = gInstance;
|
||||
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
||||
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wndClass.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
|
||||
wndClass.lpszMenuName = class1Name;
|
||||
wndClass.lpszClassName = class1Name;
|
||||
RegisterClass(&wndClass);
|
||||
}
|
||||
|
||||
// Create our first top level window
|
||||
HWND window = CreateTopLevel(class1Name, "Raptor HTML Viewer", 620, 400);
|
||||
|
||||
gTimeouts = new nsVoidArray();
|
||||
|
||||
// Process messages
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
return msg.wParam;
|
||||
}
|
||||
|
||||
void main(int argc, char **argv)
|
||||
{
|
||||
WinMain(GetModuleHandle(NULL), NULL, 0, SW_SHOW);
|
||||
}
|
||||
96
mozilla/base/tests/makefile.win
Normal file
96
mozilla/base/tests/makefile.win
Normal file
@@ -0,0 +1,96 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=..\..
|
||||
|
||||
MAKE_OBJ_TYPE = EXE
|
||||
PROG0 = .\$(OBJDIR)\TimerTest.exe
|
||||
PROG1 = .\$(OBJDIR)\TestAtoms.exe
|
||||
PROG2 = .\$(OBJDIR)\CvtURL.exe
|
||||
PROG3 = .\$(OBJDIR)\TestCRT.exe
|
||||
PROG4 = .\$(OBJDIR)\FilesTest.exe
|
||||
RESFILE = timer.res
|
||||
PROGRAMS = $(PROG0) $(PROG1) \
|
||||
!ifdef MODULAR_NETLIB
|
||||
$(PROG2) \
|
||||
$(PROG3) \
|
||||
!endif
|
||||
$(PROG4) \
|
||||
$(NULL)
|
||||
|
||||
LINCS=-I..\src -I$(PUBLIC)\xpcom -I$(PUBLIC)\netlib -I$(PUBLIC)\raptor
|
||||
|
||||
LLIBS= \
|
||||
$(DIST)\lib\xpcom32.lib \
|
||||
$(DIST)\lib\raptorbase.lib \
|
||||
!ifdef MODULAR_NETLIB
|
||||
$(DIST)\lib\netlib.lib \
|
||||
!endif
|
||||
$(LIBNSPR) \
|
||||
$(DIST)\lib\libplc21.lib \
|
||||
!if "$(MOZ_BITS)"=="32" && defined(MOZ_DEBUG) && defined(GLOWCODE)
|
||||
$(GLOWDIR)\glowcode.lib \
|
||||
!endif
|
||||
$(RESFILE)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
install:: $(PROGRAMS)
|
||||
$(MAKE_INSTALL) $(PROG0) $(DIST)\bin
|
||||
$(MAKE_INSTALL) $(PROG1) $(DIST)\bin
|
||||
!ifdef MODULAR_NETLIB
|
||||
$(MAKE_INSTALL) $(PROG2) $(DIST)\bin
|
||||
$(MAKE_INSTALL) $(PROG3) $(DIST)\bin
|
||||
!endif
|
||||
$(MAKE_INSTALL) $(PROG4) $(DIST)\bin
|
||||
|
||||
clobber::
|
||||
rm -f $(DIST)\bin\TimerTest.exe
|
||||
rm -f $(DIST)\bin\TestAtoms.exe
|
||||
!ifdef MODULAR_NETLIB
|
||||
rm -f $(DIST)\bin\CvtURL.exe
|
||||
rm -f $(DIST)\bin\TestCRT.exe
|
||||
!endif
|
||||
rm -f $(DIST)\bin\FilesTest.exe
|
||||
|
||||
# Move this into config/obj.inc when it's allowed
|
||||
.cpp{.\$(OBJDIR)\}.exe:
|
||||
$(CC) @<<$(CFGFILE)
|
||||
$(CFLAGS)
|
||||
$(LCFLAGS)
|
||||
$(LINCS)
|
||||
$(LINCS_1)
|
||||
$(INCS)
|
||||
$(LLIBS)
|
||||
$(OS_LIBS)
|
||||
-Fd$(PBDFILE)
|
||||
-Fe.\$(OBJDIR)\
|
||||
-Fo.\$(OBJDIR)\
|
||||
$(CURDIR)$(*B).cpp
|
||||
<<KEEP
|
||||
|
||||
$(PROG0): $(OBJDIR) TimerTest.cpp $(RESFILE)
|
||||
|
||||
$(PROG1): $(OBJDIR) TestAtoms.cpp
|
||||
|
||||
$(PROG4): $(OBJDIR) FilesTest.cpp
|
||||
|
||||
!ifdef MODULAR_NETLIB
|
||||
$(PROG2): $(OBJDIR) CvtURL.cpp
|
||||
|
||||
$(PROG3): $(OBJDIR) TestCRT.cpp
|
||||
!endif
|
||||
32
mozilla/base/tests/resources.h
Normal file
32
mozilla/base/tests/resources.h
Normal file
@@ -0,0 +1,32 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef resources_h___
|
||||
#define resources_h___
|
||||
|
||||
#define TIMER_1SECOND 40000
|
||||
#define TIMER_5SECOND 40001
|
||||
#define TIMER_10SECOND 40002
|
||||
|
||||
#define TIMER_1REPEAT 40003
|
||||
#define TIMER_5REPEAT 40004
|
||||
#define TIMER_10REPEAT 40005
|
||||
|
||||
#define TIMER_CANCEL 40006
|
||||
#define TIMER_EXIT 40010
|
||||
|
||||
#endif /* resources_h___ */
|
||||
38
mozilla/base/tests/timer.rc
Normal file
38
mozilla/base/tests/timer.rc
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#include "resources.h"
|
||||
|
||||
TIMERTEST MENU DISCARDABLE
|
||||
{
|
||||
POPUP "Debug"
|
||||
{
|
||||
POPUP "One Shot"
|
||||
{
|
||||
MENUITEM "1 second", TIMER_1SECOND
|
||||
MENUITEM "5 second", TIMER_5SECOND
|
||||
MENUITEM "10 second", TIMER_10SECOND
|
||||
}
|
||||
POPUP "Repeated"
|
||||
{
|
||||
MENUITEM "1 second", TIMER_1REPEAT
|
||||
MENUITEM "5 second", TIMER_5REPEAT
|
||||
MENUITEM "10 second", TIMER_10REPEAT
|
||||
}
|
||||
MENUITEM "Cancel All", TIMER_CANCEL
|
||||
MENUITEM "Exit", TIMER_EXIT
|
||||
}
|
||||
}
|
||||
890
mozilla/build/autoconf/config.guess
vendored
Executable file
890
mozilla/build/autoconf/config.guess
vendored
Executable file
@@ -0,0 +1,890 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Written by Per Bothner <bothner@cygnus.com>.
|
||||
# The master version of this file is at the FSF in /home/gd/gnu/lib.
|
||||
#
|
||||
# This script attempts to guess a canonical system name similar to
|
||||
# config.sub. If it succeeds, it prints the system name on stdout, and
|
||||
# exits with 0. Otherwise, it exits with 1.
|
||||
#
|
||||
# The plan is that this can be called by configure scripts if you
|
||||
# don't specify an explicit system type (host/target name).
|
||||
#
|
||||
# Only a few systems have been added to this list; please add others
|
||||
# (but try to keep the structure clean).
|
||||
#
|
||||
|
||||
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
|
||||
# (ghazi@noc.rutgers.edu 8/24/94.)
|
||||
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
|
||||
PATH=$PATH:/.attbin ; export PATH
|
||||
fi
|
||||
|
||||
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
|
||||
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
|
||||
trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
|
||||
|
||||
# Note: order is significant - the case branches are not exclusive.
|
||||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
alpha:OSF1:*:*)
|
||||
if test $UNAME_RELEASE = "V4.0"; then
|
||||
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
|
||||
fi
|
||||
# A Vn.n version is a released version.
|
||||
# A Tn.n version is a released field test version.
|
||||
# A Xn.n version is an unreleased experimental baselevel.
|
||||
# 1.2 uses "1.2" for uname -r.
|
||||
cat <<EOF >dummy.s
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
${CC-cc} dummy.s -o dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./dummy
|
||||
case "$?" in
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
rm -f dummy.s dummy
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
|
||||
exit 0 ;;
|
||||
21064:Windows_NT:50:3)
|
||||
echo alpha-dec-winnt3.5
|
||||
exit 0 ;;
|
||||
Amiga*:UNIX_System_V:4.0:*)
|
||||
echo m68k-cbm-sysv4
|
||||
exit 0;;
|
||||
amiga:NetBSD:*:*)
|
||||
echo m68k-cbm-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
amiga:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arc64:OpenBSD:*:*)
|
||||
echo mips64el-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hkmips:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
pmax:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sgi:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
wgrisc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit 0;;
|
||||
arm32:NetBSD:*:*)
|
||||
echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
SR2?01:HI-UX/MPP:*:*)
|
||||
echo hppa1.1-hitachi-hiuxmpp
|
||||
exit 0;;
|
||||
Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
|
||||
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
|
||||
if test "`(/bin/universe) 2>/dev/null`" = att ; then
|
||||
echo pyramid-pyramid-sysv3
|
||||
else
|
||||
echo pyramid-pyramid-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
NILE:*:*:dcosx)
|
||||
echo pyramid-pyramid-svr4
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
|
||||
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
i86pc:SunOS:5.*:*)
|
||||
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:6*:*)
|
||||
# According to config.sub, this is the proper way to canonicalize
|
||||
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
|
||||
# it's likely to be more like Solaris than SunOS4.
|
||||
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:*:*)
|
||||
case "`/usr/bin/arch -k`" in
|
||||
Series*|S4*)
|
||||
UNAME_RELEASE=`uname -v`
|
||||
;;
|
||||
esac
|
||||
# Japanese Language versions have a version number like `4.1.3-JL'.
|
||||
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
|
||||
exit 0 ;;
|
||||
sun3*:SunOS:*:*)
|
||||
echo m68k-sun-sunos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun*:*:4.2BSD:*)
|
||||
UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
|
||||
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
|
||||
case "`/bin/arch`" in
|
||||
sun3)
|
||||
echo m68k-sun-sunos${UNAME_RELEASE}
|
||||
;;
|
||||
sun4)
|
||||
echo sparc-sun-sunos${UNAME_RELEASE}
|
||||
;;
|
||||
esac
|
||||
exit 0 ;;
|
||||
aushp:SunOS:*:*)
|
||||
echo sparc-auspex-sunos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
atari*:NetBSD:*:*)
|
||||
echo m68k-atari-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
atari*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3*:NetBSD:*:*)
|
||||
echo m68k-sun-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:NetBSD:*:*)
|
||||
echo m68k-apple-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme88k:OpenBSD:*:*)
|
||||
echo m88k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
powerpc:machten:*:*)
|
||||
echo powerpc-apple-machten${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
RISC*:Mach:*:*)
|
||||
echo mips-dec-mach_bsd4.3
|
||||
exit 0 ;;
|
||||
RISC*:ULTRIX:*:*)
|
||||
echo mips-dec-ultrix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
VAX*:ULTRIX*:*:*)
|
||||
echo vax-dec-ultrix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
2020:CLIX:*:*)
|
||||
echo clipper-intergraph-clix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mips:*:*:UMIPS | mips:*:*:RISCos)
|
||||
sed 's/^ //' << EOF >dummy.c
|
||||
int main (argc, argv) int argc; char **argv; {
|
||||
#if defined (host_mips) && defined (MIPSEB)
|
||||
#if defined (SYSTYPE_SYSV)
|
||||
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#if defined (SYSTYPE_SVR4)
|
||||
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
|
||||
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
exit (-1);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} dummy.c -o dummy \
|
||||
&& ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
|
||||
&& rm dummy.c dummy && exit 0
|
||||
rm -f dummy.c dummy
|
||||
echo mips-mips-riscos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
Night_Hawk:Power_UNIX:*:*)
|
||||
echo powerpc-harris-powerunix
|
||||
exit 0 ;;
|
||||
m88k:CX/UX:7*:*)
|
||||
echo m88k-harris-cxux7
|
||||
exit 0 ;;
|
||||
m88k:*:4*:R4*)
|
||||
echo m88k-motorola-sysv4
|
||||
exit 0 ;;
|
||||
m88k:*:3*:R3*)
|
||||
echo m88k-motorola-sysv3
|
||||
exit 0 ;;
|
||||
AViiON:dgux:*:*)
|
||||
# DG/UX returns AViiON for all architectures
|
||||
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
||||
if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
|
||||
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
|
||||
-o ${TARGET_BINARY_INTERFACE}x = x ] ; then
|
||||
echo m88k-dg-dgux${UNAME_RELEASE}
|
||||
else
|
||||
echo m88k-dg-dguxbcs${UNAME_RELEASE}
|
||||
fi
|
||||
else echo i586-dg-dgux${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
|
||||
echo m88k-dolphin-sysv3
|
||||
exit 0 ;;
|
||||
M88*:*:R3*:*)
|
||||
# Delta 88k system running SVR3
|
||||
echo m88k-motorola-sysv3
|
||||
exit 0 ;;
|
||||
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
|
||||
echo m88k-tektronix-sysv3
|
||||
exit 0 ;;
|
||||
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
|
||||
echo m68k-tektronix-bsd
|
||||
exit 0 ;;
|
||||
*:IRIX*:*:*)
|
||||
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
|
||||
exit 0 ;;
|
||||
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
|
||||
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
|
||||
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
|
||||
i?86:AIX:*:*)
|
||||
echo i386-ibm-aix
|
||||
exit 0 ;;
|
||||
*:AIX:2:3)
|
||||
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
sed 's/^ //' << EOF >dummy.c
|
||||
#include <sys/systemcfg.h>
|
||||
|
||||
main()
|
||||
{
|
||||
if (!__power_pc())
|
||||
exit(1);
|
||||
puts("powerpc-ibm-aix3.2.5");
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
|
||||
rm -f dummy.c dummy
|
||||
echo rs6000-ibm-aix3.2.5
|
||||
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
echo rs6000-ibm-aix3.2.4
|
||||
else
|
||||
echo rs6000-ibm-aix3.2
|
||||
fi
|
||||
exit 0 ;;
|
||||
*:AIX:*:4)
|
||||
if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
|
||||
IBM_ARCH=rs6000
|
||||
else
|
||||
IBM_ARCH=powerpc
|
||||
fi
|
||||
if [ -x /usr/bin/oslevel ] ; then
|
||||
IBM_REV=`/usr/bin/oslevel`
|
||||
else
|
||||
IBM_REV=4.${UNAME_RELEASE}
|
||||
fi
|
||||
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
|
||||
exit 0 ;;
|
||||
*:AIX:*:*)
|
||||
echo rs6000-ibm-aix
|
||||
exit 0 ;;
|
||||
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
|
||||
echo romp-ibm-bsd4.4
|
||||
exit 0 ;;
|
||||
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
|
||||
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
|
||||
exit 0 ;; # report: romp-ibm BSD 4.3
|
||||
*:BOSX:*:*)
|
||||
echo rs6000-bull-bosx
|
||||
exit 0 ;;
|
||||
DPX/2?00:B.O.S.:*:*)
|
||||
echo m68k-bull-sysv3
|
||||
exit 0 ;;
|
||||
9000/[34]??:4.3bsd:1.*:*)
|
||||
echo m68k-hp-bsd
|
||||
exit 0 ;;
|
||||
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
|
||||
echo m68k-hp-bsd4.4
|
||||
exit 0 ;;
|
||||
9000/[3478]??:HP-UX:*:*)
|
||||
case "${UNAME_MACHINE}" in
|
||||
9000/31? ) HP_ARCH=m68000 ;;
|
||||
9000/[34]?? ) HP_ARCH=m68k ;;
|
||||
9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
|
||||
9000/8?? ) HP_ARCH=hppa1.0 ;;
|
||||
esac
|
||||
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
||||
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
|
||||
exit 0 ;;
|
||||
3050*:HI-UX:*:*)
|
||||
sed 's/^ //' << EOF >dummy.c
|
||||
#include <unistd.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
long cpu = sysconf (_SC_CPU_VERSION);
|
||||
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
|
||||
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
|
||||
results, however. */
|
||||
if (CPU_IS_PA_RISC (cpu))
|
||||
{
|
||||
switch (cpu)
|
||||
{
|
||||
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
|
||||
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
|
||||
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
|
||||
default: puts ("hppa-hitachi-hiuxwe2"); break;
|
||||
}
|
||||
}
|
||||
else if (CPU_IS_HP_MC68K (cpu))
|
||||
puts ("m68k-hitachi-hiuxwe2");
|
||||
else puts ("unknown-hitachi-hiuxwe2");
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
|
||||
rm -f dummy.c dummy
|
||||
echo unknown-hitachi-hiuxwe2
|
||||
exit 0 ;;
|
||||
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
|
||||
echo hppa1.1-hp-bsd
|
||||
exit 0 ;;
|
||||
9000/8??:4.3bsd:*:*)
|
||||
echo hppa1.0-hp-bsd
|
||||
exit 0 ;;
|
||||
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
|
||||
echo hppa1.1-hp-osf
|
||||
exit 0 ;;
|
||||
hp8??:OSF1:*:*)
|
||||
echo hppa1.0-hp-osf
|
||||
exit 0 ;;
|
||||
i?86:OSF1:*:*)
|
||||
if [ -x /usr/sbin/sysversion ] ; then
|
||||
echo ${UNAME_MACHINE}-unknown-osf1mk
|
||||
else
|
||||
echo ${UNAME_MACHINE}-unknown-osf1
|
||||
fi
|
||||
exit 0 ;;
|
||||
parisc*:Lites*:*:*)
|
||||
echo hppa1.1-hp-lites
|
||||
exit 0 ;;
|
||||
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
|
||||
if getsysinfo -f scalar_acc
|
||||
then echo c32-convex-bsd
|
||||
else echo c2-convex-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
|
||||
echo c34-convex-bsd
|
||||
exit 0 ;;
|
||||
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
|
||||
echo c38-convex-bsd
|
||||
exit 0 ;;
|
||||
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
|
||||
echo c4-convex-bsd
|
||||
exit 0 ;;
|
||||
CRAY*X-MP:*:*:*)
|
||||
echo xmp-cray-unicos
|
||||
exit 0 ;;
|
||||
CRAY*Y-MP:*:*:*)
|
||||
echo ymp-cray-unicos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY*[A-Z]90:*:*:*)
|
||||
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
|
||||
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
|
||||
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
|
||||
exit 0 ;;
|
||||
CRAY*TS:*:*:*)
|
||||
echo t90-cray-unicos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY-2:*:*:*)
|
||||
echo cray2-cray-unicos
|
||||
exit 0 ;;
|
||||
F300:UNIX_System_V:*:*)
|
||||
FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
|
||||
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
exit 0 ;;
|
||||
F301:UNIX_System_V:*:*)
|
||||
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
|
||||
exit 0 ;;
|
||||
hp3[0-9][05]:NetBSD:*:*)
|
||||
echo m68k-hp-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hp300:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
i?86:BSD/386:*:* | *:BSD/OS:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:FreeBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
exit 0 ;;
|
||||
*:NetBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
*:OpenBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin32
|
||||
exit 0 ;;
|
||||
i*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit 0 ;;
|
||||
p*:CYGWIN*:*)
|
||||
echo powerpcle-unknown-cygwin32
|
||||
exit 0 ;;
|
||||
prep*:SunOS:5.*:*)
|
||||
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
*:GNU:*:*)
|
||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit 0 ;;
|
||||
*:Linux:*:*)
|
||||
# uname on the ARM produces all sorts of strangeness, and we need to
|
||||
# filter it out.
|
||||
case "$UNAME_MACHINE" in
|
||||
arm* | sa110*) UNAME_MACHINE="arm" ;;
|
||||
esac
|
||||
|
||||
# The BFD linker knows what the default object file format is, so
|
||||
# first see if it will tell us.
|
||||
ld_help_string=`ld --help 2>&1`
|
||||
ld_supported_emulations=`echo $ld_help_string \
|
||||
| sed -ne '/supported emulations:/!d
|
||||
s/[ ][ ]*/ /g
|
||||
s/.*supported emulations: *//
|
||||
s/ .*//
|
||||
p'`
|
||||
case "$ld_supported_emulations" in
|
||||
i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
|
||||
i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
|
||||
sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
|
||||
esac
|
||||
|
||||
if test "${UNAME_MACHINE}" = "alpha" ; then
|
||||
sed 's/^ //' <<EOF >dummy.s
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
LIBC=""
|
||||
${CC-cc} dummy.s -o dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./dummy
|
||||
case "$?" in
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
|
||||
objdump --private-headers dummy | \
|
||||
grep ld.so.1 > /dev/null
|
||||
if test "$?" = 0 ; then
|
||||
LIBC="libc1"
|
||||
fi
|
||||
fi
|
||||
rm -f dummy.s dummy
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
|
||||
elif test "${UNAME_MACHINE}" = "mips" ; then
|
||||
cat >dummy.c <<EOF
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
#ifdef __MIPSEB__
|
||||
printf ("%s-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
#ifdef __MIPSEL__
|
||||
printf ("%sel-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
|
||||
rm -f dummy.c dummy
|
||||
else
|
||||
# Either a pre-BFD a.out linker (linux-gnuoldld)
|
||||
# or one that does not give us useful --help.
|
||||
# GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
|
||||
# If ld does not provide *any* "supported emulations:"
|
||||
# that means it is gnuoldld.
|
||||
echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
|
||||
test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
|
||||
|
||||
case "${UNAME_MACHINE}" in
|
||||
i?86)
|
||||
VENDOR=pc;
|
||||
;;
|
||||
*)
|
||||
VENDOR=unknown;
|
||||
;;
|
||||
esac
|
||||
# Determine whether the default compiler is a.out or elf
|
||||
cat >dummy.c <<EOF
|
||||
#include <features.h>
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
#ifdef __ELF__
|
||||
# ifdef __GLIBC__
|
||||
# if __GLIBC__ >= 2
|
||||
printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
|
||||
# else
|
||||
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
|
||||
# endif
|
||||
# else
|
||||
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
|
||||
# endif
|
||||
#else
|
||||
printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
|
||||
rm -f dummy.c dummy
|
||||
fi ;;
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
|
||||
# are messed up and put the nodename in both sysname and nodename.
|
||||
i?86:DYNIX/ptx:4*:*)
|
||||
echo i386-sequent-sysv4
|
||||
exit 0 ;;
|
||||
i?86:UNIX_SV:4.2MP:2.*)
|
||||
# Unixware is an offshoot of SVR4, but it has its own version
|
||||
# number series starting with 2...
|
||||
# I am not positive that other SVR4 systems won't match this,
|
||||
# I just have to hope. -- rms.
|
||||
# Use sysv4.2uw... so that sysv4* matches it.
|
||||
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
|
||||
exit 0 ;;
|
||||
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
|
||||
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
|
||||
echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
|
||||
else
|
||||
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:*:3.2:*)
|
||||
if test -f /usr/options/cb.name; then
|
||||
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
|
||||
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
|
||||
elif /bin/uname -X 2>/dev/null >/dev/null ; then
|
||||
UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
|
||||
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
|
||||
&& UNAME_MACHINE=i586
|
||||
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
|
||||
else
|
||||
echo ${UNAME_MACHINE}-pc-sysv32
|
||||
fi
|
||||
exit 0 ;;
|
||||
pc:*:*:*)
|
||||
# uname -m prints for DJGPP always 'pc', but it prints nothing about
|
||||
# the processor, so we play safe by assuming i386.
|
||||
echo i386-pc-msdosdjgpp
|
||||
exit 0 ;;
|
||||
Intel:Mach:3*:*)
|
||||
echo i386-pc-mach3
|
||||
exit 0 ;;
|
||||
paragon:*:*:*)
|
||||
echo i860-intel-osf1
|
||||
exit 0 ;;
|
||||
i860:*:4.*:*) # i860-SVR4
|
||||
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
|
||||
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
|
||||
else # Add other i860-SVR4 vendors below as they are discovered.
|
||||
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
|
||||
fi
|
||||
exit 0 ;;
|
||||
mini*:CTIX:SYS*5:*)
|
||||
# "miniframe"
|
||||
echo m68010-convergent-sysv
|
||||
exit 0 ;;
|
||||
M68*:*:R3V[567]*:*)
|
||||
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
|
||||
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
|
||||
OS_REL=''
|
||||
test -r /etc/.relid \
|
||||
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
|
||||
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
|
||||
&& echo i486-ncr-sysv4.3${OS_REL} && exit 0
|
||||
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
|
||||
&& echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
|
||||
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
|
||||
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
|
||||
&& echo i486-ncr-sysv4 && exit 0 ;;
|
||||
m68*:LynxOS:2.*:*)
|
||||
echo m68k-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mc68030:UNIX_System_V:4.*:*)
|
||||
echo m68k-atari-sysv4
|
||||
exit 0 ;;
|
||||
i?86:LynxOS:2.*:*)
|
||||
echo i386-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
TSUNAMI:LynxOS:2.*:*)
|
||||
echo sparc-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
|
||||
echo rs6000-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
SM[BE]S:UNIX_SV:*:*)
|
||||
echo mips-dde-sysv${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
RM*:SINIX-*:*:*)
|
||||
echo mips-sni-sysv4
|
||||
exit 0 ;;
|
||||
*:SINIX-*:*:*)
|
||||
if uname -p 2>/dev/null >/dev/null ; then
|
||||
UNAME_MACHINE=`(uname -p) 2>/dev/null`
|
||||
echo ${UNAME_MACHINE}-sni-sysv4
|
||||
else
|
||||
echo ns32k-sni-sysv
|
||||
fi
|
||||
exit 0 ;;
|
||||
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
|
||||
# says <Richard.M.Bartel@ccMail.Census.GOV>
|
||||
echo i586-unisys-sysv4
|
||||
exit 0 ;;
|
||||
*:UNIX_System_V:4*:FTX*)
|
||||
# From Gerald Hewes <hewes@openmarket.com>.
|
||||
# How about differentiating between stratus architectures? -djm
|
||||
echo hppa1.1-stratus-sysv4
|
||||
exit 0 ;;
|
||||
*:*:*:FTX*)
|
||||
# From seanf@swdc.stratus.com.
|
||||
echo i860-stratus-sysv4
|
||||
exit 0 ;;
|
||||
mc68*:A/UX:*:*)
|
||||
echo m68k-apple-aux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
news*:NEWS-OS:*:6*)
|
||||
echo mips-sony-newsos6
|
||||
exit 0 ;;
|
||||
R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
|
||||
if [ -d /usr/nec ]; then
|
||||
echo mips-nec-sysv${UNAME_RELEASE}
|
||||
else
|
||||
echo mips-unknown-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
esac
|
||||
|
||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
|
||||
|
||||
cat >dummy.c <<EOF
|
||||
#ifdef _SEQUENT_
|
||||
# include <sys/types.h>
|
||||
# include <sys/utsname.h>
|
||||
#endif
|
||||
main ()
|
||||
{
|
||||
#if defined (sony)
|
||||
#if defined (MIPSEB)
|
||||
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
|
||||
I don't know.... */
|
||||
printf ("mips-sony-bsd\n"); exit (0);
|
||||
#else
|
||||
#include <sys/param.h>
|
||||
printf ("m68k-sony-newsos%s\n",
|
||||
#ifdef NEWSOS4
|
||||
"4"
|
||||
#else
|
||||
""
|
||||
#endif
|
||||
); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__arm) && defined (__acorn) && defined (__unix)
|
||||
printf ("arm-acorn-riscix"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (hp300) && !defined (hpux)
|
||||
printf ("m68k-hp-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (NeXT)
|
||||
#if !defined (__ARCHITECTURE__)
|
||||
#define __ARCHITECTURE__ "m68k"
|
||||
#endif
|
||||
int version;
|
||||
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
|
||||
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
|
||||
exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (MULTIMAX) || defined (n16)
|
||||
#if defined (UMAXV)
|
||||
printf ("ns32k-encore-sysv\n"); exit (0);
|
||||
#else
|
||||
#if defined (CMU)
|
||||
printf ("ns32k-encore-mach\n"); exit (0);
|
||||
#else
|
||||
printf ("ns32k-encore-bsd\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__386BSD__)
|
||||
printf ("i386-pc-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (sequent)
|
||||
#if defined (i386)
|
||||
printf ("i386-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#if defined (ns32000)
|
||||
printf ("ns32k-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (_SEQUENT_)
|
||||
struct utsname un;
|
||||
|
||||
uname(&un);
|
||||
|
||||
if (strncmp(un.version, "V2", 2) == 0) {
|
||||
printf ("i386-sequent-ptx2\n"); exit (0);
|
||||
}
|
||||
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
|
||||
printf ("i386-sequent-ptx1\n"); exit (0);
|
||||
}
|
||||
printf ("i386-sequent-ptx\n"); exit (0);
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (vax)
|
||||
#if !defined (ultrix)
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
#else
|
||||
printf ("vax-dec-ultrix\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (alliant) && defined (i860)
|
||||
printf ("i860-alliant-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
exit (1);
|
||||
}
|
||||
EOF
|
||||
|
||||
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
|
||||
rm -f dummy.c dummy
|
||||
|
||||
# Apollos put the system type in the environment.
|
||||
|
||||
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
|
||||
|
||||
# Convex versions that predate uname can use getsysinfo(1)
|
||||
|
||||
if [ -x /usr/convex/getsysinfo ]
|
||||
then
|
||||
case `getsysinfo -f cpu_type` in
|
||||
c1*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
c2*)
|
||||
if getsysinfo -f scalar_acc
|
||||
then echo c32-convex-bsd
|
||||
else echo c2-convex-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
c34*)
|
||||
echo c34-convex-bsd
|
||||
exit 0 ;;
|
||||
c38*)
|
||||
echo c38-convex-bsd
|
||||
exit 0 ;;
|
||||
c4*)
|
||||
echo c4-convex-bsd
|
||||
exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
#echo '(Unable to guess system type)' 1>&2
|
||||
|
||||
exit 1
|
||||
952
mozilla/build/autoconf/config.sub
vendored
Executable file
952
mozilla/build/autoconf/config.sub
vendored
Executable file
@@ -0,0 +1,952 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script, version 1.1.
|
||||
# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
# can handle that machine. It does not imply ALL GNU software can.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||
# Supply the specified configuration type as an argument.
|
||||
# If it is invalid, we print an error message on stderr and exit with code 1.
|
||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
# that are meaningful with *any* GNU software.
|
||||
# Each package is responsible for reporting which valid configurations
|
||||
# it does not support. The user should be able to distinguish
|
||||
# a failure to support a valid configuration from a meaningless
|
||||
# configuration.
|
||||
|
||||
# The goal of this file is to map all the various variations of a given
|
||||
# machine specification into a single specification in the form:
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or in some cases, the newer four-part form:
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# It is wrong to echo any other type of specification.
|
||||
|
||||
if [ x$1 = x ]
|
||||
then
|
||||
echo Configuration name missing. 1>&2
|
||||
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
|
||||
echo "or $0 ALIAS" 1>&2
|
||||
echo where ALIAS is a recognized configuration type. 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# First pass through any local machine types.
|
||||
case $1 in
|
||||
*local*)
|
||||
echo $1
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
|
||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
linux-gnu*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
;;
|
||||
*)
|
||||
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
||||
if [ $basic_machine != $1 ]
|
||||
then os=`echo $1 | sed 's/.*-/-/'`
|
||||
else os=; fi
|
||||
;;
|
||||
esac
|
||||
|
||||
### Let's recognize common machines as not being operating systems so
|
||||
### that things like config.sub decstation-3100 work. We also
|
||||
### recognize some manufacturers as not being operating systems, so we
|
||||
### can provide default operating systems below.
|
||||
case $os in
|
||||
-sun*os*)
|
||||
# Prevent following clause from handling this invalid input.
|
||||
;;
|
||||
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
|
||||
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
|
||||
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-apple)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
-hiux*)
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
-sco5)
|
||||
os=sco3.2v5
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco4)
|
||||
os=-sco3.2v4
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2.[4-9]*)
|
||||
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2v[4-9]*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-isc)
|
||||
os=-isc2.2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-clix*)
|
||||
basic_machine=clipper-intergraph
|
||||
;;
|
||||
-isc*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-lynx*)
|
||||
os=-lynxos
|
||||
;;
|
||||
-ptx*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
|
||||
;;
|
||||
-windowsnt*)
|
||||
os=`echo $os | sed -e 's/windowsnt/winnt/'`
|
||||
;;
|
||||
-psos*)
|
||||
os=-psos
|
||||
;;
|
||||
esac
|
||||
|
||||
# Decode aliases for certain CPU-COMPANY combinations.
|
||||
case $basic_machine in
|
||||
# Recognize the basic CPU types without company name.
|
||||
# Some are omitted here because they have special meanings below.
|
||||
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
|
||||
| arme[lb] | pyramid | mn10200 | mn10300 \
|
||||
| tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
|
||||
| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
|
||||
| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
|
||||
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
|
||||
| mipstx39 | mipstx39el \
|
||||
| sparc | sparclet | sparclite | sparc64 | v850)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
# We use `pc' rather than `unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
# (2) the word "unknown" tends to confuse beginning users.
|
||||
i[34567]86)
|
||||
basic_machine=$basic_machine-pc
|
||||
;;
|
||||
# Object if more than one company name word.
|
||||
*-*-*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
# Recognize the basic CPU types with company name.
|
||||
vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
|
||||
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
|
||||
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
||||
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
|
||||
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \
|
||||
| alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
|
||||
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
|
||||
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
||||
| sparc64-* | mips64-* | mipsel-* \
|
||||
| mips64el-* | mips64orion-* | mips64orionel-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| f301-*)
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
|
||||
basic_machine=m68000-att
|
||||
;;
|
||||
3b*)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
alliant | fx80)
|
||||
basic_machine=fx80-alliant
|
||||
;;
|
||||
altos | altos3068)
|
||||
basic_machine=m68k-altos
|
||||
;;
|
||||
am29k)
|
||||
basic_machine=a29k-none
|
||||
os=-bsd
|
||||
;;
|
||||
amdahl)
|
||||
basic_machine=580-amdahl
|
||||
os=-sysv
|
||||
;;
|
||||
amiga | amiga-*)
|
||||
basic_machine=m68k-cbm
|
||||
;;
|
||||
amigaos | amigados)
|
||||
basic_machine=m68k-cbm
|
||||
os=-amigaos
|
||||
;;
|
||||
amigaunix | amix)
|
||||
basic_machine=m68k-cbm
|
||||
os=-sysv4
|
||||
;;
|
||||
apollo68)
|
||||
basic_machine=m68k-apollo
|
||||
os=-sysv
|
||||
;;
|
||||
aux)
|
||||
basic_machine=m68k-apple
|
||||
os=-aux
|
||||
;;
|
||||
balance)
|
||||
basic_machine=ns32k-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
convex-c1)
|
||||
basic_machine=c1-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c2)
|
||||
basic_machine=c2-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c32)
|
||||
basic_machine=c32-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c34)
|
||||
basic_machine=c34-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c38)
|
||||
basic_machine=c38-convex
|
||||
os=-bsd
|
||||
;;
|
||||
cray | ymp)
|
||||
basic_machine=ymp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
cray2)
|
||||
basic_machine=cray2-cray
|
||||
os=-unicos
|
||||
;;
|
||||
[ctj]90-cray)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
crds | unos)
|
||||
basic_machine=m68k-crds
|
||||
;;
|
||||
da30 | da30-*)
|
||||
basic_machine=m68k-da30
|
||||
;;
|
||||
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
|
||||
basic_machine=mips-dec
|
||||
;;
|
||||
delta | 3300 | motorola-3300 | motorola-delta \
|
||||
| 3300-motorola | delta-motorola)
|
||||
basic_machine=m68k-motorola
|
||||
;;
|
||||
delta88)
|
||||
basic_machine=m88k-motorola
|
||||
os=-sysv3
|
||||
;;
|
||||
dpx20 | dpx20-*)
|
||||
basic_machine=rs6000-bull
|
||||
os=-bosx
|
||||
;;
|
||||
dpx2* | dpx2*-bull)
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv3
|
||||
;;
|
||||
ebmon29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-ebmon
|
||||
;;
|
||||
elxsi)
|
||||
basic_machine=elxsi-elxsi
|
||||
os=-bsd
|
||||
;;
|
||||
encore | umax | mmax)
|
||||
basic_machine=ns32k-encore
|
||||
;;
|
||||
fx2800)
|
||||
basic_machine=i860-alliant
|
||||
;;
|
||||
genix)
|
||||
basic_machine=ns32k-ns
|
||||
;;
|
||||
gmicro)
|
||||
basic_machine=tron-gmicro
|
||||
os=-sysv
|
||||
;;
|
||||
h3050r* | hiux*)
|
||||
basic_machine=hppa1.1-hitachi
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
h8300hms)
|
||||
basic_machine=h8300-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
harris)
|
||||
basic_machine=m88k-harris
|
||||
os=-sysv3
|
||||
;;
|
||||
hp300-*)
|
||||
basic_machine=m68k-hp
|
||||
;;
|
||||
hp300bsd)
|
||||
basic_machine=m68k-hp
|
||||
os=-bsd
|
||||
;;
|
||||
hp300hpux)
|
||||
basic_machine=m68k-hp
|
||||
os=-hpux
|
||||
;;
|
||||
hp9k2[0-9][0-9] | hp9k31[0-9])
|
||||
basic_machine=m68000-hp
|
||||
;;
|
||||
hp9k3[2-9][0-9])
|
||||
basic_machine=m68k-hp
|
||||
;;
|
||||
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
|
||||
basic_machine=hppa1.1-hp
|
||||
;;
|
||||
hp9k8[0-9][0-9] | hp8[0-9][0-9])
|
||||
basic_machine=hppa1.0-hp
|
||||
;;
|
||||
hppa-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
i370-ibm* | ibm*)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
;;
|
||||
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
||||
i[34567]86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
;;
|
||||
i[34567]86v4*)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv4
|
||||
;;
|
||||
i[34567]86v)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv
|
||||
;;
|
||||
i[34567]86sol2)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-solaris2
|
||||
;;
|
||||
iris | iris4d)
|
||||
basic_machine=mips-sgi
|
||||
case $os in
|
||||
-irix*)
|
||||
;;
|
||||
*)
|
||||
os=-irix4
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
isi68 | isi)
|
||||
basic_machine=m68k-isi
|
||||
os=-sysv
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
magnum | m3230)
|
||||
basic_machine=mips-mips
|
||||
os=-sysv
|
||||
;;
|
||||
merlin)
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
miniframe)
|
||||
basic_machine=m68000-convergent
|
||||
;;
|
||||
mipsel*-linux*)
|
||||
basic_machine=mipsel-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
mips*-linux*)
|
||||
basic_machine=mips-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
mips3*-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
|
||||
;;
|
||||
mips3*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||
;;
|
||||
ncr3000)
|
||||
basic_machine=i486-ncr
|
||||
os=-sysv4
|
||||
;;
|
||||
news | news700 | news800 | news900)
|
||||
basic_machine=m68k-sony
|
||||
os=-newsos
|
||||
;;
|
||||
news1000)
|
||||
basic_machine=m68030-sony
|
||||
os=-newsos
|
||||
;;
|
||||
news-3600 | risc-news)
|
||||
basic_machine=mips-sony
|
||||
os=-newsos
|
||||
;;
|
||||
next | m*-next )
|
||||
basic_machine=m68k-next
|
||||
case $os in
|
||||
-nextstep* )
|
||||
;;
|
||||
-ns2*)
|
||||
os=-nextstep2
|
||||
;;
|
||||
*)
|
||||
os=-nextstep3
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
nh3000)
|
||||
basic_machine=m68k-harris
|
||||
os=-cxux
|
||||
;;
|
||||
nh[45]000)
|
||||
basic_machine=m88k-harris
|
||||
os=-cxux
|
||||
;;
|
||||
nindy960)
|
||||
basic_machine=i960-intel
|
||||
os=-nindy
|
||||
;;
|
||||
np1)
|
||||
basic_machine=np1-gould
|
||||
;;
|
||||
pa-hitachi)
|
||||
basic_machine=hppa1.1-hitachi
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
paragon)
|
||||
basic_machine=i860-intel
|
||||
os=-osf
|
||||
;;
|
||||
pbd)
|
||||
basic_machine=sparc-tti
|
||||
;;
|
||||
pbb)
|
||||
basic_machine=m68k-tti
|
||||
;;
|
||||
pc532 | pc532-*)
|
||||
basic_machine=ns32k-pc532
|
||||
;;
|
||||
pentium | p5 | k5 | nexen)
|
||||
basic_machine=i586-pc
|
||||
;;
|
||||
pentiumpro | p6 | k6 | 6x86)
|
||||
basic_machine=i686-pc
|
||||
;;
|
||||
pentiumii | pentium2)
|
||||
basic_machine=i786-pc
|
||||
;;
|
||||
pentium-* | p5-* | k5-* | nexen-*)
|
||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumpro-* | p6-* | k6-* | 6x86-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumii-* | pentium2-*)
|
||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pn)
|
||||
basic_machine=pn-gould
|
||||
;;
|
||||
power) basic_machine=rs6000-ibm
|
||||
;;
|
||||
ppc) basic_machine=powerpc-unknown
|
||||
;;
|
||||
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ps2)
|
||||
basic_machine=i386-ibm
|
||||
;;
|
||||
rm[46]00)
|
||||
basic_machine=mips-siemens
|
||||
;;
|
||||
rtpc | rtpc-*)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
sequent)
|
||||
basic_machine=i386-sequent
|
||||
;;
|
||||
sh)
|
||||
basic_machine=sh-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
sps7)
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv2
|
||||
;;
|
||||
spur)
|
||||
basic_machine=spur-unknown
|
||||
;;
|
||||
sun2)
|
||||
basic_machine=m68000-sun
|
||||
;;
|
||||
sun2os3)
|
||||
basic_machine=m68000-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun2os4)
|
||||
basic_machine=m68000-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun3os3)
|
||||
basic_machine=m68k-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun3os4)
|
||||
basic_machine=m68k-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun4os3)
|
||||
basic_machine=sparc-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun4os4)
|
||||
basic_machine=sparc-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun4sol2)
|
||||
basic_machine=sparc-sun
|
||||
os=-solaris2
|
||||
;;
|
||||
sun3 | sun3-*)
|
||||
basic_machine=m68k-sun
|
||||
;;
|
||||
sun4)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
sun386 | sun386i | roadrunner)
|
||||
basic_machine=i386-sun
|
||||
;;
|
||||
symmetry)
|
||||
basic_machine=i386-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
tx39el)
|
||||
basic_machine=mipstx39el-unknown
|
||||
;;
|
||||
tower | tower-32)
|
||||
basic_machine=m68k-ncr
|
||||
;;
|
||||
udi29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
;;
|
||||
ultra3)
|
||||
basic_machine=a29k-nyu
|
||||
os=-sym1
|
||||
;;
|
||||
vaxv)
|
||||
basic_machine=vax-dec
|
||||
os=-sysv
|
||||
;;
|
||||
vms)
|
||||
basic_machine=vax-dec
|
||||
os=-vms
|
||||
;;
|
||||
vpp*|vx|vx-*)
|
||||
basic_machine=f301-fujitsu
|
||||
;;
|
||||
vxworks960)
|
||||
basic_machine=i960-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
vxworks68)
|
||||
basic_machine=m68k-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
vxworks29k)
|
||||
basic_machine=a29k-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
xmp)
|
||||
basic_machine=xmp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
xps | xps100)
|
||||
basic_machine=xps100-honeywell
|
||||
;;
|
||||
none)
|
||||
basic_machine=none-none
|
||||
os=-none
|
||||
;;
|
||||
|
||||
# Here we handle the default manufacturer of certain CPU types. It is in
|
||||
# some cases the only manufacturer, in others, it is the most popular.
|
||||
mips)
|
||||
if [ x$os = x-linux-gnu ]; then
|
||||
basic_machine=mips-unknown
|
||||
else
|
||||
basic_machine=mips-mips
|
||||
fi
|
||||
;;
|
||||
romp)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
rs6000)
|
||||
basic_machine=rs6000-ibm
|
||||
;;
|
||||
vax)
|
||||
basic_machine=vax-dec
|
||||
;;
|
||||
pdp11)
|
||||
basic_machine=pdp11-dec
|
||||
;;
|
||||
we32k)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
sparc)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
basic_machine=cydra-cydrome
|
||||
;;
|
||||
orion)
|
||||
basic_machine=orion-highlevel
|
||||
;;
|
||||
orion105)
|
||||
basic_machine=clipper-highlevel
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Here we canonicalize certain aliases for manufacturers.
|
||||
case $basic_machine in
|
||||
*-digital*)
|
||||
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
|
||||
;;
|
||||
*-commodore*)
|
||||
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Decode manufacturer-specific aliases for certain operating systems.
|
||||
|
||||
if [ x"$os" != x"" ]
|
||||
then
|
||||
case $os in
|
||||
# First match some system type aliases
|
||||
# that might get confused with valid system types.
|
||||
# -solaris* is a basic system type, with this one exception.
|
||||
-solaris1 | -solaris1.*)
|
||||
os=`echo $os | sed -e 's|solaris1|sunos4|'`
|
||||
;;
|
||||
-solaris)
|
||||
os=-solaris2
|
||||
;;
|
||||
-svr4*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-unixware*)
|
||||
os=-sysv4.2uw
|
||||
;;
|
||||
-gnu/linux*)
|
||||
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
|
||||
;;
|
||||
# First accept the basic system types.
|
||||
# The portable systems comes first.
|
||||
# Each alternative MUST END IN A *, to match a version number.
|
||||
# -sysv* is not here because it comes later, after sysvr4.
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
||||
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -uxpv*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-linux*)
|
||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||
;;
|
||||
-sunos5*)
|
||||
os=`echo $os | sed -e 's|sunos5|solaris2|'`
|
||||
;;
|
||||
-sunos6*)
|
||||
os=`echo $os | sed -e 's|sunos6|solaris3|'`
|
||||
;;
|
||||
-osfrose*)
|
||||
os=-osfrose
|
||||
;;
|
||||
-osf*)
|
||||
os=-osf
|
||||
;;
|
||||
-utek*)
|
||||
os=-bsd
|
||||
;;
|
||||
-dynix*)
|
||||
os=-bsd
|
||||
;;
|
||||
-acis*)
|
||||
os=-aos
|
||||
;;
|
||||
-ctix* | -uts*)
|
||||
os=-sysv
|
||||
;;
|
||||
-ns2 )
|
||||
os=-nextstep2
|
||||
;;
|
||||
# Preserve the version number of sinix5.
|
||||
-sinix5.*)
|
||||
os=`echo $os | sed -e 's|sinix|sysv|'`
|
||||
;;
|
||||
-sinix*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-triton*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-oss*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-svr4)
|
||||
os=-sysv4
|
||||
;;
|
||||
-svr3)
|
||||
os=-sysv3
|
||||
;;
|
||||
-sysvr4)
|
||||
os=-sysv4
|
||||
;;
|
||||
# This must come after -sysvr4.
|
||||
-sysv*)
|
||||
;;
|
||||
-xenix)
|
||||
os=-xenix
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
*)
|
||||
# Get rid of the `-' at the beginning of $os.
|
||||
os=`echo $os | sed 's/[^-]*-//'`
|
||||
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
|
||||
# Here we handle the default operating systems that come with various machines.
|
||||
# The value should be what the vendor currently ships out the door with their
|
||||
# machine or put another way, the most popular os provided with the machine.
|
||||
|
||||
# Note that if you're going to try to match "-MANUFACTURER" here (say,
|
||||
# "-sun"), then you have to tell the case statement up towards the top
|
||||
# that MANUFACTURER isn't an operating system. Otherwise, code above
|
||||
# will signal an error saying that MANUFACTURER isn't an operating
|
||||
# system, and we'll never get to this point.
|
||||
|
||||
case $basic_machine in
|
||||
*-acorn)
|
||||
os=-riscix1.2
|
||||
;;
|
||||
arm*-semi)
|
||||
os=-aout
|
||||
;;
|
||||
pdp11-*)
|
||||
os=-none
|
||||
;;
|
||||
*-dec | vax-*)
|
||||
os=-ultrix4.2
|
||||
;;
|
||||
m68*-apollo)
|
||||
os=-domain
|
||||
;;
|
||||
i386-sun)
|
||||
os=-sunos4.0.2
|
||||
;;
|
||||
m68000-sun)
|
||||
os=-sunos3
|
||||
# This also exists in the configure program, but was not the
|
||||
# default.
|
||||
# os=-sunos4
|
||||
;;
|
||||
*-tti) # must be before sparc entry or we get the wrong os.
|
||||
os=-sysv3
|
||||
;;
|
||||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
*-ibm)
|
||||
os=-aix
|
||||
;;
|
||||
*-hp)
|
||||
os=-hpux
|
||||
;;
|
||||
*-hitachi)
|
||||
os=-hiux
|
||||
;;
|
||||
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
|
||||
os=-sysv
|
||||
;;
|
||||
*-cbm)
|
||||
os=-amigaos
|
||||
;;
|
||||
*-dg)
|
||||
os=-dgux
|
||||
;;
|
||||
*-dolphin)
|
||||
os=-sysv3
|
||||
;;
|
||||
m68k-ccur)
|
||||
os=-rtu
|
||||
;;
|
||||
m88k-omron*)
|
||||
os=-luna
|
||||
;;
|
||||
*-next )
|
||||
os=-nextstep
|
||||
;;
|
||||
*-sequent)
|
||||
os=-ptx
|
||||
;;
|
||||
*-crds)
|
||||
os=-unos
|
||||
;;
|
||||
*-ns)
|
||||
os=-genix
|
||||
;;
|
||||
i370-*)
|
||||
os=-mvs
|
||||
;;
|
||||
*-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
*-gould)
|
||||
os=-sysv
|
||||
;;
|
||||
*-highlevel)
|
||||
os=-bsd
|
||||
;;
|
||||
*-encore)
|
||||
os=-bsd
|
||||
;;
|
||||
*-sgi)
|
||||
os=-irix
|
||||
;;
|
||||
*-siemens)
|
||||
os=-sysv4
|
||||
;;
|
||||
*-masscomp)
|
||||
os=-rtu
|
||||
;;
|
||||
f301-fujitsu)
|
||||
os=-uxpv
|
||||
;;
|
||||
*)
|
||||
os=-none
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Here we handle the case where we know the os, and the CPU type, but not the
|
||||
# manufacturer. We pick the logical manufacturer.
|
||||
vendor=unknown
|
||||
case $basic_machine in
|
||||
*-unknown)
|
||||
case $os in
|
||||
-riscix*)
|
||||
vendor=acorn
|
||||
;;
|
||||
-sunos*)
|
||||
vendor=sun
|
||||
;;
|
||||
-aix*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-hpux*)
|
||||
vendor=hp
|
||||
;;
|
||||
-hiux*)
|
||||
vendor=hitachi
|
||||
;;
|
||||
-unos*)
|
||||
vendor=crds
|
||||
;;
|
||||
-dgux*)
|
||||
vendor=dg
|
||||
;;
|
||||
-luna*)
|
||||
vendor=omron
|
||||
;;
|
||||
-genix*)
|
||||
vendor=ns
|
||||
;;
|
||||
-mvs*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-ptx*)
|
||||
vendor=sequent
|
||||
;;
|
||||
-vxsim* | -vxworks*)
|
||||
vendor=wrs
|
||||
;;
|
||||
-aux*)
|
||||
vendor=apple
|
||||
;;
|
||||
esac
|
||||
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
|
||||
;;
|
||||
esac
|
||||
|
||||
echo $basic_machine$os
|
||||
186
mozilla/build/autoconf/gtk.m4
Normal file
186
mozilla/build/autoconf/gtk.m4
Normal file
@@ -0,0 +1,186 @@
|
||||
# Configure paths for GTK+
|
||||
# Owen Taylor 97-11-3
|
||||
# (copy of gtk.m4 (public domain))
|
||||
|
||||
dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
|
||||
dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
|
||||
dnl
|
||||
AC_DEFUN(AM_PATH_GTK,
|
||||
[dnl
|
||||
dnl Get the cflags and libraries from the gtk-config script
|
||||
dnl
|
||||
AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
|
||||
gtk_config_prefix="$withval", gtk_config_prefix="")
|
||||
AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
|
||||
gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
|
||||
AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
|
||||
, enable_gtktest=yes)
|
||||
|
||||
if test x$gtk_config_exec_prefix != x ; then
|
||||
gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
|
||||
if test x${GTK_CONFIG+set} != xset ; then
|
||||
GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
|
||||
fi
|
||||
fi
|
||||
if test x$gtk_config_prefix != x ; then
|
||||
gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
|
||||
if test x${GTK_CONFIG+set} != xset ; then
|
||||
GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
|
||||
min_gtk_version=ifelse([$1], ,0.99.7,$1)
|
||||
AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
|
||||
no_gtk=""
|
||||
if test "$GTK_CONFIG" = "no" ; then
|
||||
no_gtk=yes
|
||||
else
|
||||
GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
|
||||
GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
|
||||
gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||
gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||
gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
||||
if test "x$enable_gtktest" = "xyes" ; then
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
ac_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $GTK_CFLAGS"
|
||||
LIBS="$LIBS $GTK_LIBS"
|
||||
dnl
|
||||
dnl Now check if the installed GTK is sufficiently new. (Also sanity
|
||||
dnl checks the results of gtk-config to some extent
|
||||
dnl
|
||||
rm -f conf.gtktest
|
||||
AC_TRY_RUN([
|
||||
#include <gtk/gtk.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int major, minor, micro;
|
||||
char *tmp_version;
|
||||
|
||||
system ("touch conf.gtktest");
|
||||
|
||||
/* HP/UX 9 (%@#!) writes to sscanf strings */
|
||||
tmp_version = g_strdup("$min_gtk_version");
|
||||
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
|
||||
printf("%s, bad version string\n", "$min_gtk_version");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ((gtk_major_version != $gtk_config_major_version) ||
|
||||
(gtk_minor_version != $gtk_config_minor_version) ||
|
||||
(gtk_micro_version != $gtk_config_micro_version))
|
||||
{
|
||||
printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
|
||||
$gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
|
||||
gtk_major_version, gtk_minor_version, gtk_micro_version);
|
||||
printf ("*** was found! If gtk-config was correct, then it is best\n");
|
||||
printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
|
||||
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
|
||||
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
|
||||
printf("*** required on your system.\n");
|
||||
printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
|
||||
printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
|
||||
printf("*** before re-running configure\n");
|
||||
}
|
||||
#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
|
||||
else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
|
||||
(gtk_minor_version != GTK_MINOR_VERSION) ||
|
||||
(gtk_micro_version != GTK_MICRO_VERSION))
|
||||
{
|
||||
printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
|
||||
GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
|
||||
printf("*** library (version %d.%d.%d)\n",
|
||||
gtk_major_version, gtk_minor_version, gtk_micro_version);
|
||||
}
|
||||
#endif /* defined (GTK_MAJOR_VERSION) ... */
|
||||
else
|
||||
{
|
||||
if ((gtk_major_version > major) ||
|
||||
((gtk_major_version == major) && (gtk_minor_version > minor)) ||
|
||||
((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
|
||||
gtk_major_version, gtk_minor_version, gtk_micro_version);
|
||||
printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
|
||||
major, minor, micro);
|
||||
printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
|
||||
printf("***\n");
|
||||
printf("*** If you have already installed a sufficiently new version, this error\n");
|
||||
printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
|
||||
printf("*** being found. The easiest way to fix this is to remove the old version\n");
|
||||
printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
|
||||
printf("*** correct copy of gtk-config. (In this case, you will have to\n");
|
||||
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
|
||||
printf("*** so that the correct libraries are found at run-time))\n");
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
LIBS="$ac_save_LIBS"
|
||||
fi
|
||||
fi
|
||||
if test "x$no_gtk" = x ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
ifelse([$2], , :, [$2])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test "$GTK_CONFIG" = "no" ; then
|
||||
echo "*** The gtk-config script installed by GTK could not be found"
|
||||
echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
|
||||
echo "*** your path, or set the GTK_CONFIG environment variable to the"
|
||||
echo "*** full path to gtk-config."
|
||||
else
|
||||
if test -f conf.gtktest ; then
|
||||
:
|
||||
else
|
||||
echo "*** Could not run GTK test program, checking why..."
|
||||
CFLAGS="$CFLAGS $GTK_CFLAGS"
|
||||
LIBS="$LIBS $GTK_LIBS"
|
||||
AC_TRY_LINK([
|
||||
#include <gtk/gtk.h>
|
||||
#include <stdio.h>
|
||||
], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
|
||||
[ echo "*** The test program compiled, but did not run. This usually means"
|
||||
echo "*** that the run-time linker is not finding GTK or finding the wrong"
|
||||
echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
|
||||
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
|
||||
echo "*** to the installed location Also, make sure you have run ldconfig if that"
|
||||
echo "*** is required on your system"
|
||||
echo "***"
|
||||
echo "*** If you have an old version installed, it is best to remove it, although"
|
||||
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
|
||||
echo "***"
|
||||
echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
|
||||
echo "*** came with the system with the command"
|
||||
echo "***"
|
||||
echo "*** rpm --erase --nodeps gtk gtk-devel" ],
|
||||
[ echo "*** The test program failed to compile or link. See the file config.log for the"
|
||||
echo "*** exact error that occured. This usually means GTK was incorrectly installed"
|
||||
echo "*** or that you have moved GTK since it was installed. In the latter case, you"
|
||||
echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
LIBS="$ac_save_LIBS"
|
||||
fi
|
||||
fi
|
||||
GTK_CFLAGS=""
|
||||
GTK_LIBS=""
|
||||
ifelse([$3], , :, [$3])
|
||||
fi
|
||||
AC_SUBST(GTK_CFLAGS)
|
||||
AC_SUBST(GTK_LIBS)
|
||||
rm -f conf.gtktest
|
||||
])
|
||||
119
mozilla/build/autoconf/install-sh
Executable file
119
mozilla/build/autoconf/install-sh
Executable file
@@ -0,0 +1,119 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5; it is not part of GNU.
|
||||
#
|
||||
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
#
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
|
||||
instcmd="$mvprog"
|
||||
chmodcmd=""
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dstdir=`dirname $dst`
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd $dst
|
||||
$doit $mvcmd $dsttmp $dst
|
||||
|
||||
|
||||
exit 0
|
||||
1
mozilla/build/build_number
Normal file
1
mozilla/build/build_number
Normal file
@@ -0,0 +1 @@
|
||||
98091517
|
||||
25
mozilla/build/genrc.sh
Executable file
25
mozilla/build/genrc.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
DATATYPE="$1"
|
||||
INFILE="$2"
|
||||
|
||||
echo "${DATATYPE} RCDATA"
|
||||
sed 's/"/""/g' ${INFILE} | awk 'BEGIN { printf("BEGIN\n") } { printf("\"%s\\r\\n\",\n", $0) } END { printf("\"\\0\"\nEND\n") }'
|
||||
|
||||
exit 0
|
||||
61
mozilla/build/hcc
Executable file
61
mozilla/build/hcc
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
#
|
||||
# Fix brain-damaged compilers that don't understand -o and -c together
|
||||
#
|
||||
CC=`echo $1 | sed -e "s|'||g" -e 's|"||g'`
|
||||
shift
|
||||
DASH_C=0
|
||||
DASH_O=0
|
||||
for i in $*
|
||||
do
|
||||
[ "${CHECK_O}" = yes ] && {
|
||||
OBJECT=$i
|
||||
OPTS="${OPTS} -o $i"
|
||||
i=""
|
||||
CHECK_O=no
|
||||
}
|
||||
case $i in
|
||||
-c) DASH_C=1
|
||||
OPTS="${OPTS} -c"
|
||||
;;
|
||||
-o) CHECK_O=yes
|
||||
;;
|
||||
*.c) C_SRC=$i
|
||||
OPTS="${OPTS} $i"
|
||||
;;
|
||||
*.s) S_SRC=$i
|
||||
OPTS="${OPTS} $i"
|
||||
;;
|
||||
*) OPTS="${OPTS} $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
${CC} ${OPTS} || exit $?
|
||||
|
||||
# if there was no -c and -o we're done
|
||||
[ $DASH_C = 1 -a $DASH_O = 1 ] || exit 0
|
||||
|
||||
# cc always creates the .o from the .c name
|
||||
[ $C_SRC ] && OBJ=`basename $C_SRC .c`.o
|
||||
# or the .o from the .s name
|
||||
[ $S_SRC ] && OBJ=`basename $S_SRC .s`.o
|
||||
|
||||
[ -f $OBJECT ] || ( [ -f $OBJ ] && mv -f $OBJ $OBJECT )
|
||||
87
mozilla/build/hcpp
Executable file
87
mozilla/build/hcpp
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
#
|
||||
# Wrapper for brain-damaged compilers that don't understand -o and -c together.
|
||||
#
|
||||
CXX=`echo $1 | sed -e "s|'||g" -e 's|"||g'`
|
||||
shift
|
||||
DUMMY="XxxXxxX"
|
||||
DASH_C=0
|
||||
DASH_O=0
|
||||
GET_OBJECT=0
|
||||
C_SRC="${DUMMY}"
|
||||
CC_SRC="${DUMMY}"
|
||||
CPP_SRC="${DUMMY}"
|
||||
S_SRC="${DUMMY}"
|
||||
OBJECT="${DUMMY}"
|
||||
|
||||
for i in $*
|
||||
do
|
||||
if [ ${GET_OBJECT} -eq 1 ]; then
|
||||
OBJECT="$i"
|
||||
GET_OBJECT=0
|
||||
fi
|
||||
case $i in
|
||||
-c)
|
||||
DASH_C=1
|
||||
;;
|
||||
-o)
|
||||
DASH_O=1
|
||||
GET_OBJECT=1
|
||||
;;
|
||||
*.c)
|
||||
C_SRC="$i"
|
||||
;;
|
||||
+.*)
|
||||
;;
|
||||
*.cpp)
|
||||
CPP_SRC="$i"
|
||||
;;
|
||||
*.cc)
|
||||
CC_SRC="$i"
|
||||
;;
|
||||
*.s)
|
||||
S_SRC="$i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
${CXX} $* || exit $?
|
||||
|
||||
# LAME!!!
|
||||
if [ -f -O ]; then
|
||||
mv -f -- -O ${OBJECT}
|
||||
fi
|
||||
|
||||
# if there was no -c and -o we're done
|
||||
[ ${DASH_C} -eq 1 -a ${DASH_O} -eq 1 ] || exit 0
|
||||
|
||||
# cc always creates the .o from the .c name
|
||||
if [ "${C_SRC}" != "${DUMMY}" ]; then
|
||||
OBJ=`basename ${C_SRC} .c`.o
|
||||
elif [ "${CPP_SRC}" != "${DUMMY}" ]; then
|
||||
OBJ=`basename ${CPP_SRC} .cpp`.o
|
||||
elif [ "${CC_SRC}" != "${DUMMY}" ]; then
|
||||
OBJ=`basename ${CC_SRC} .cc`.o
|
||||
# or the .o from the .s name
|
||||
elif [ "${S_SRC}" != "${DUMMY}" ]; then
|
||||
OBJ=`basename ${S_SRC} .s`.o
|
||||
fi
|
||||
|
||||
[ -f $OBJECT ] || ( [ -f $OBJ ] && mv -f $OBJ $OBJECT )
|
||||
353
mozilla/build/mac/BuildList.pm
Normal file
353
mozilla/build/mac/BuildList.pm
Normal file
@@ -0,0 +1,353 @@
|
||||
#!perl
|
||||
|
||||
package BuildList;
|
||||
require Exporter;
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(BuildMozilla DistMozilla);
|
||||
|
||||
=head1 NAME
|
||||
|
||||
BuildList - build the [ordered] set of projects needed to construct Mozilla
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
...
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
The contents of this file are subject to the Netscape Public License
|
||||
Version 1.0 (the "NPL"); you may not use this file except in
|
||||
compliance with the NPL. You may obtain a copy of the NPL at
|
||||
http://www.mozilla.org/NPL/
|
||||
|
||||
Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
for the specific language governing rights and limitations under the
|
||||
NPL.
|
||||
|
||||
The Initial Developer of this code under the NPL is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
Reserved.
|
||||
|
||||
=cut
|
||||
|
||||
use Moz;
|
||||
use File::Path;
|
||||
|
||||
sub BuildMozilla()
|
||||
{
|
||||
if ( $main::DEBUG )
|
||||
{
|
||||
$D = "Debug";
|
||||
$dist_dir = ":mozilla:dist:client_debug:";
|
||||
}
|
||||
else
|
||||
{
|
||||
$D = "";
|
||||
$dist_dir = ":mozilla:dist:client:";
|
||||
}
|
||||
|
||||
#
|
||||
# Build the appropriate target of each project
|
||||
#
|
||||
|
||||
BuildProjectClean(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "Stubs");
|
||||
BuildProjectClean(":mozilla:lib:mac:NSRuntime:NSRuntime.mcp", "Stubs");
|
||||
BuildProjectClean(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "Stubs");
|
||||
# BuildProjectClean(":mozilla:cmd:macfe:projects:client:Client.mcp", "Stubs");
|
||||
|
||||
if ( $main::CARBON )
|
||||
{
|
||||
BuildProject(":mozilla:cmd:macfe:projects:interfaceLib:Interface.mcp", "Carbon Interfaces");
|
||||
}
|
||||
else
|
||||
{
|
||||
BuildProject(":mozilla:cmd:macfe:projects:interfaceLib:Interface.mcp", "MacOS Interfaces");
|
||||
}
|
||||
|
||||
BuildProject(":mozilla:lib:mac:NSRuntime:NSRuntime.mcp", "NSRuntime$D.shlb");
|
||||
MakeAlias(":mozilla:lib:mac:NSRuntime:NSRuntime$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:cmd:macfe:restext:StringLib.mcp", "Strings$D.shlb");
|
||||
MakeAlias(":mozilla:cmd:macfe:restext:Strings$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:lib:mac:MoreFiles:build:MoreFilesPPC.mcp", "MoreFiles$D.shlb");
|
||||
MakeAlias(":mozilla:lib:mac:MoreFiles:build:MoreFiles$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:nsprpub:macbuild:NSPR20PPC.mcp", "NSPR20$D.shlb");
|
||||
MakeAlias(":mozilla:nsprpub:macbuild:NSPR20$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:dbm:macbuild:DBMPPC.mcp", "DBM$D.shlb");
|
||||
MakeAlias(":mozilla:dbm:macbuild:DBM$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "MemAllocator$D.shlb");
|
||||
MakeAlias(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "NSStdLib$D.shlb");
|
||||
MakeAlias(":mozilla:lib:mac:NSStdLib:NSStdLib$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:xpcom:macbuild:xpcomPPC.mcp", "xpcom$D.shlb");
|
||||
MakeAlias(":mozilla:xpcom:macbuild:xpcom$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:lib:mac:PowerPlant:PowerPlant.mcp", "PowerPlant$D.shlb");
|
||||
MakeAlias(":mozilla:lib:mac:PowerPlant:PowerPlant$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:modules:progress:macbuild:ProgressPPC.mcp", "Progress$D.shlb");
|
||||
MakeAlias(":mozilla:modules:progress:macbuild:Progress$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:modules:zlib:macbuild:zlib.mcp", "zlib$D.shlb");
|
||||
MakeAlias(":mozilla:modules:zlib:macbuild:zlib$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:jpeg:macbuild:JPEG.mcp", "JPEG$D.shlb");
|
||||
MakeAlias(":mozilla:jpeg:macbuild:JPEG$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:sun-java:stubs:macbuild:JavaStubs.mcp", "JavaRuntime$D.shlb");
|
||||
MakeAlias(":mozilla:sun-java:stubs:macbuild:JavaRuntime$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:js:macbuild:JavaScriptPPC.mcp", "JavaScript$D.shlb");
|
||||
MakeAlias(":mozilla:js:macbuild:JavaScript$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:js:macbuild:LiveConnect.mcp", "LiveConnect$D.shlb");
|
||||
MakeAlias(":mozilla:js:macbuild:LiveConnect$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:nav-java:stubs:macbuild:NavJavaStubs.mcp", "NavJava$D.shlb");
|
||||
MakeAlias(":mozilla:nav-java:stubs:macbuild:NavJava$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:modules:rdf:macbuild:RDF.mcp", "RDF$D.shlb");
|
||||
MakeAlias(":mozilla:modules:rdf:macbuild:RDF$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:modules:xml:macbuild:XML.mcp", "XML$D.shlb");
|
||||
MakeAlias(":mozilla:modules:xml:macbuild:XML$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:modules:schedulr:macbuild:Schedulr.mcp", "Scheduler$D.shlb");
|
||||
MakeAlias(":mozilla:modules:schedulr:macbuild:Scheduler$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:build:mac:CustomLib:CustomLib.mcp", "CustomLib$D.shlb");
|
||||
MakeAlias(":mozilla:build:mac:CustomLib:CustomLib$D.shlb", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:modules:security:freenav:macbuild:NoSecurity.mcp", "Security.o");
|
||||
BuildProject(":mozilla:modules:libfont:macbuild:FontBroker.mcp", "FontBroker$D.o");
|
||||
BuildProject(":mozilla:modules:oji:macbuild:oji.mcp", "oji$D.o");
|
||||
BuildProject(":mozilla:lib:libmocha:macbuild:LibMocha.mcp", "LibMocha$D.o");
|
||||
|
||||
if ( $main::MOZ_DARK == 1 )
|
||||
{
|
||||
BuildProject(":mozilla:network:macbuild:network.mcp", "Network$D.o (mailnews)");
|
||||
}
|
||||
else
|
||||
{
|
||||
BuildProject(":mozilla:network:macbuild:network.mcp", "Network$D.o");
|
||||
}
|
||||
BuildProject(":mozilla:caps:macbuild:Caps.mcp", "Caps$D.o");
|
||||
|
||||
BuildProject(":mozilla:modules:libimg:macbuild:png.mcp", "png$D.o");
|
||||
BuildProject(":mozilla:modules:libimg:macbuild:libimg.mcp", "libimg$D.o");
|
||||
|
||||
BuildProject(":mozilla:build:mac:CustomLib:CustomLib.mcp", "CustomStaticLib$D.o");
|
||||
|
||||
if ( $main::MOZ_LITE == 1 )
|
||||
{
|
||||
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "MailNews$D.o");
|
||||
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "Composer$D.o");
|
||||
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Nav_Resources");
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( $main::MOZ_MEDIUM == 1 )
|
||||
{
|
||||
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "MailNews$D.o");
|
||||
BuildProject(":mozilla:cmd:macfe:Composer:build:Composer.mcp", "Composer$D.o");
|
||||
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Moz_Resources");
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( $main::MOZ_DARK == 1 )
|
||||
{
|
||||
BuildProject(":ns:lib:libneo:mac:macbuild:NeoLib.mcp", "NeoLib$D.o");
|
||||
MakeAlias( ":ns:lib:libneo:mac:macbuild:NeoLib$D.o", "$dist_dir");
|
||||
BuildProject(":mozilla:lib:libmsg:macbuild:MsgLib.mcp", "MsgLib$D.o (secure)");
|
||||
MakeAlias( ":mozilla:lib:libmsg:macbuild:MsgLib$D.o", "$dist_dir");
|
||||
BuildProject(":mozilla:directory:c-sdk:ldap:libraries:macintosh:LDAPClient.mcp","LDAPClient$D.o");
|
||||
MakeAlias( ":mozilla:directory:c-sdk:ldap:libraries:macintosh:LDAPClient$D.o", "$dist_dir");
|
||||
|
||||
BuildProject(":mozilla:cmd:macfe:MailNews:build:MailNews.mcp", "MailNews$D.o");
|
||||
BuildProject(":mozilla:cmd:macfe:Composer:build:Composer.mcp", "Composer$D.o");
|
||||
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "MozDark_Resources");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Client$D");
|
||||
}
|
||||
|
||||
|
||||
sub DistMozilla()
|
||||
{
|
||||
mkpath([ ":mozilla:dist:", ":mozilla:dist:client:", ":mozilla:dist:client_debug:", ":mozilla:dist:client_stubs:" ]);
|
||||
|
||||
#CONFIG
|
||||
InstallFromManifest(":mozilla:config:mac:MANIFEST", ":mozilla:dist:config:");
|
||||
InstallFromManifest(":mozilla:config:mac:MANIFEST_config", ":mozilla:dist:config:");
|
||||
|
||||
#INCLUDE
|
||||
InstallFromManifest(":mozilla:include:MANIFEST", ":mozilla:dist:include:");
|
||||
InstallFromManifest(":mozilla:cmd:macfe:pch:MANIFEST", ":mozilla:dist:include:");
|
||||
|
||||
#MAC_COMMON
|
||||
InstallFromManifest(":mozilla:build:mac:MANIFEST", ":mozilla:dist:mac:common:");
|
||||
InstallFromManifest(":mozilla:lib:mac:NSStdLib:include:MANIFEST", ":mozilla:dist:mac:common:");
|
||||
InstallFromManifest(":mozilla:lib:mac:MacMemoryAllocator:include:MANIFEST", ":mozilla:dist:mac:common:");
|
||||
InstallFromManifest(":mozilla:lib:mac:Misc:MANIFEST", ":mozilla:dist:mac:common:");
|
||||
InstallFromManifest(":mozilla:lib:mac:MoreFiles:MANIFEST", ":mozilla:dist:mac:common:morefiles:");
|
||||
InstallFromManifest(":mozilla:cmd:macfe:MANIFEST", ":mozilla:dist:mac:macfe:");
|
||||
|
||||
#NSPR
|
||||
InstallFromManifest(":mozilla:nsprpub:pr:include:MANIFEST", ":mozilla:dist:nspr:");
|
||||
InstallFromManifest(":mozilla:nsprpub:pr:src:md:mac:MANIFEST", ":mozilla:dist:nspr:mac:");
|
||||
InstallFromManifest(":mozilla:nsprpub:lib:ds:MANIFEST", ":mozilla:dist:nspr:");
|
||||
InstallFromManifest(":mozilla:nsprpub:lib:libc:include:MANIFEST", ":mozilla:dist:nspr:");
|
||||
InstallFromManifest(":mozilla:nsprpub:lib:msgc:include:MANIFEST", ":mozilla:dist:nspr:");
|
||||
|
||||
#DBM
|
||||
InstallFromManifest(":mozilla:dbm:include:MANIFEST", ":mozilla:dist:dbm:");
|
||||
|
||||
#LIBIMAGE
|
||||
InstallFromManifest(":mozilla:modules:libimg:png:MANIFEST", ":mozilla:dist:libimg:");
|
||||
InstallFromManifest(":mozilla:modules:libimg:src:MANIFEST", ":mozilla:dist:libimg:");
|
||||
InstallFromManifest(":mozilla:modules:libimg:public:MANIFEST", ":mozilla:dist:libimg:");
|
||||
|
||||
#SECURITY_freenav
|
||||
InstallFromManifest(":mozilla:modules:security:freenav:MANIFEST", ":mozilla:dist:security:");
|
||||
|
||||
#XPCOM
|
||||
InstallFromManifest(":mozilla:xpcom:public:MANIFEST", ":mozilla:dist:xpcom:");
|
||||
|
||||
#ZLIB
|
||||
InstallFromManifest(":mozilla:modules:zlib:src:MANIFEST", ":mozilla:dist:zlib:");
|
||||
|
||||
#JPEG
|
||||
InstallFromManifest(":mozilla:jpeg:MANIFEST", ":mozilla:dist:jpeg:");
|
||||
|
||||
#JSJ
|
||||
# beard: this conflicts with LiveConnect's jsjava.h.
|
||||
#InstallFromManifest(":mozilla:js:jsj:MANIFEST", ":mozilla:dist:jsj:");
|
||||
|
||||
#JSDEBUG
|
||||
InstallFromManifest(":mozilla:js:jsd:MANIFEST", ":mozilla:dist:jsdebug:");
|
||||
|
||||
#JS
|
||||
InstallFromManifest(":mozilla:js:src:MANIFEST", ":mozilla:dist:js:");
|
||||
|
||||
#LIVECONNECT
|
||||
InstallFromManifest(":mozilla:js:src:liveconnect:MANIFEST", ":mozilla:dist:liveconnect:");
|
||||
|
||||
#RDF
|
||||
InstallFromManifest(":mozilla:modules:rdf:include:MANIFEST", ":mozilla:dist:rdf:");
|
||||
|
||||
#XML
|
||||
InstallFromManifest(":mozilla:modules:xml:glue:MANIFEST", ":mozilla:dist:xml:");
|
||||
InstallFromManifest(":mozilla:modules:xml:expat:xmlparse:MANIFEST", ":mozilla:dist:xml:");
|
||||
|
||||
#LIBFONT
|
||||
InstallFromManifest(":mozilla:modules:libfont:MANIFEST", ":mozilla:dist:libfont:");
|
||||
InstallFromManifest(":mozilla:modules:libfont:src:MANIFEST", ":mozilla:dist:libfont:");
|
||||
|
||||
#LDAP
|
||||
if ( $main::MOZ_LDAP || $main::MOZ_DARK )
|
||||
{
|
||||
InstallFromManifest(":mozilla:directory:c-sdk:ldap:include:MANIFEST", ":mozilla:dist:ldap:");
|
||||
}
|
||||
|
||||
#PRIVACY
|
||||
InstallFromManifest(":mozilla:privacy:public:MANIFEST", ":mozilla:dist:privacy:");
|
||||
|
||||
#SCHEDULER
|
||||
InstallFromManifest(":mozilla:modules:schedulr:public:MANIFEST", ":mozilla:dist:schedulr:");
|
||||
|
||||
#NETWORK
|
||||
InstallFromManifest(":mozilla:network:cache:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:client:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:cnvts:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:cstream:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:main:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:mimetype:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:util:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:about:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:certld:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:dataurl:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:file:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:ftp:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:gopher:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:http:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:imap4:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:js:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:ldap:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:mailbox:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:marimba:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:nntp:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:pop3:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:remote:MANIFEST", ":mozilla:dist:network:");
|
||||
InstallFromManifest(":mozilla:network:protocol:smtp:MANIFEST", ":mozilla:dist:network:");
|
||||
|
||||
#HTML_DIALOGS
|
||||
InstallFromManifest(":mozilla:lib:htmldlgs:MANIFEST", ":mozilla:dist:htmldlgs:");
|
||||
|
||||
#LAYOUT
|
||||
InstallFromManifest(":mozilla:lib:layout:MANIFEST", ":mozilla:dist:layout:");
|
||||
|
||||
#LAYERS
|
||||
InstallFromManifest(":mozilla:lib:liblayer:include:MANIFEST", ":mozilla:dist:layers:");
|
||||
|
||||
#PARSE
|
||||
InstallFromManifest(":mozilla:lib:libparse:MANIFEST", ":mozilla:dist:libparse:");
|
||||
|
||||
#STYLE
|
||||
InstallFromManifest(":mozilla:lib:libstyle:MANIFEST", ":mozilla:dist:libstyle:");
|
||||
|
||||
#PLUGIN
|
||||
InstallFromManifest(":mozilla:modules:plugin:public:MANIFEST", ":mozilla:dist:plugin:");
|
||||
InstallFromManifest(":mozilla:modules:plugin:src:MANIFEST", ":mozilla:dist:plugin:");
|
||||
|
||||
#LIBHOOK
|
||||
InstallFromManifest(":mozilla:modules:libhook:public:MANIFEST", ":mozilla:dist:libhook:");
|
||||
|
||||
#LIBPREF
|
||||
InstallFromManifest(":mozilla:modules:libpref:public:MANIFEST", ":mozilla:dist:libpref:");
|
||||
|
||||
#LIBREG
|
||||
InstallFromManifest(":mozilla:modules:libreg:include:MANIFEST", ":mozilla:dist:libreg:");
|
||||
|
||||
#LIBUTIL
|
||||
InstallFromManifest(":mozilla:modules:libutil:public:MANIFEST", ":mozilla:dist:libutil:");
|
||||
|
||||
#PROGRESS
|
||||
InstallFromManifest(":mozilla:modules:progress:public:MANIFEST", ":mozilla:dist:progress:");
|
||||
|
||||
#EDTPLUG
|
||||
InstallFromManifest(":mozilla:modules:edtplug:include:MANIFEST", ":mozilla:dist:edtplug:");
|
||||
|
||||
#NAV_JAVA
|
||||
InstallFromManifest(":mozilla:nav-java:stubs:include:MANIFEST", ":mozilla:dist:nav-java:");
|
||||
InstallFromManifest(":mozilla:nav-java:stubs:macjri:MANIFEST", ":mozilla:dist:nav-java:");
|
||||
|
||||
#SUN_JAVA
|
||||
InstallFromManifest(":mozilla:sun-java:stubs:include:MANIFEST", ":mozilla:dist:sun-java:");
|
||||
InstallFromManifest(":mozilla:sun-java:stubs:macjri:MANIFEST", ":mozilla:dist:sun-java:");
|
||||
|
||||
#OJI
|
||||
InstallFromManifest(":mozilla:modules:oji:public:MANIFEST", ":mozilla:dist:oji:");
|
||||
InstallFromManifest(":mozilla:modules:oji:src:MANIFEST", ":mozilla:dist:oji:");
|
||||
|
||||
#CAPS
|
||||
InstallFromManifest(":mozilla:caps:include:MANIFEST", ":mozilla:dist:caps:");
|
||||
InstallFromManifest(":mozilla:caps:public:MANIFEST", ":mozilla:dist:caps:");
|
||||
|
||||
#BASE
|
||||
InstallFromManifest(":mozilla:base:public:MANIFEST", ":mozilla:dist:base:");
|
||||
InstallFromManifest(":mozilla:base:src:MANIFEST", ":mozilla:dist:base:");
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
40
mozilla/build/mac/BuildMozilla.pl
Normal file
40
mozilla/build/mac/BuildMozilla.pl
Normal file
@@ -0,0 +1,40 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
use Moz;
|
||||
use BuildList;
|
||||
|
||||
$DEBUG = 0;
|
||||
|
||||
# One of them should be 1. This will come from a config file at some stage.
|
||||
# In the meanwhile, it should match mozilla/config/mac/MacConfig.h
|
||||
$MOZ_LITE = 0;
|
||||
$MOZ_MEDIUM = 1;
|
||||
$MOZ_DARK = 0;
|
||||
|
||||
Moz::OpenErrorLog(":::Mozilla.BuildLog");
|
||||
Moz::StopForErrors();
|
||||
|
||||
chdir("::::");
|
||||
|
||||
# Make and popuplate the dist directory
|
||||
DistMozilla();
|
||||
|
||||
# Now build the projects
|
||||
BuildMozilla();
|
||||
44
mozilla/build/mac/BuildMozillaDebug.pl
Normal file
44
mozilla/build/mac/BuildMozillaDebug.pl
Normal file
@@ -0,0 +1,44 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
use Moz;
|
||||
use BuildList;
|
||||
|
||||
$DEBUG = 1;
|
||||
|
||||
# One of them should be 1. This will come from a config file at some stage.
|
||||
# In the meanwhile, it should match mozilla/config/mac/MacConfig.h
|
||||
$MOZ_LITE = 0;
|
||||
$MOZ_MEDIUM = 1;
|
||||
$MOZ_DARK = 0;
|
||||
|
||||
Moz::OpenErrorLog(":::Mozilla.BuildLog");
|
||||
Moz::StopForErrors();
|
||||
|
||||
chdir("::::");
|
||||
|
||||
# Make and popuplate the dist directory
|
||||
DistMozilla();
|
||||
|
||||
# Set the build number in about-all.html. Commented out for now
|
||||
# until ckid/mcvs resource problem is resolved.
|
||||
# SetBuildNumber();
|
||||
|
||||
# Now build the projects
|
||||
BuildMozilla();
|
||||
51
mozilla/build/mac/BuildMozillaOfficialDebug.pl
Normal file
51
mozilla/build/mac/BuildMozillaOfficialDebug.pl
Normal file
@@ -0,0 +1,51 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
use Moz;
|
||||
use BuildList;
|
||||
|
||||
$DEBUG = 1;
|
||||
|
||||
# One of them should be 1. This will come from a config file at some stage.
|
||||
# In the meanwhile, it should match mozilla/config/mac/MacConfig.h
|
||||
$MOZ_LITE = 0;
|
||||
$MOZ_MEDIUM = 1;
|
||||
$MOZ_DARK = 0;
|
||||
|
||||
Moz::OpenErrorLog(":::Mozilla.BuildLog");
|
||||
Moz::StopForErrors();
|
||||
|
||||
chdir("::::");
|
||||
|
||||
SetBuildNumber();
|
||||
|
||||
SetTimeBomb(0, 30);
|
||||
|
||||
# Make and popuplate the dist directory
|
||||
DistMozilla();
|
||||
|
||||
Delay(10);
|
||||
|
||||
# Set the build number in about-all.html. Commented out for now
|
||||
# until ckid/mcvs resource problem is resolved.
|
||||
|
||||
# SetAgentString();
|
||||
|
||||
# Now build the projects
|
||||
BuildMozilla();
|
||||
88
mozilla/build/mac/BuildNGLayout.pl
Normal file
88
mozilla/build/mac/BuildNGLayout.pl
Normal file
@@ -0,0 +1,88 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
#
|
||||
# nglayout build script (debug)
|
||||
#
|
||||
use Mac::Processes;
|
||||
use NGLayoutBuildList;
|
||||
use Cwd;
|
||||
use Moz;
|
||||
|
||||
# configuration variables
|
||||
$DEBUG = 0;
|
||||
$ALIAS_SYM_FILES = $DEBUG;
|
||||
$CLOBBER_LIBS = 0;
|
||||
|
||||
$pull{all} = 0;
|
||||
$pull{lizard} = 0;
|
||||
$pull{xpcom} = 0;
|
||||
$pull{imglib} = 0;
|
||||
$pull{netlib} = 0;
|
||||
$pull{nglayout} = 0;
|
||||
$pull{mac} = 0;
|
||||
|
||||
$build{all} = 1; # turn off to do individual builds
|
||||
$build{dist} = 0;
|
||||
$build{stubs} = 0;
|
||||
$build{common} = 0;
|
||||
$build{nglayout} = 0;
|
||||
$build{resources} = 0;
|
||||
$build{editor} = 0;
|
||||
$build{viewer} = 0;
|
||||
$build{xpapp} = 0;
|
||||
|
||||
if ($pull{all})
|
||||
{
|
||||
foreach $k (keys(%pull))
|
||||
{
|
||||
$pull{$k} = 1;
|
||||
}
|
||||
}
|
||||
if ($build{all})
|
||||
{
|
||||
foreach $k (keys(%build))
|
||||
{
|
||||
$build{$k} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# do the work
|
||||
# you should not have to edit anything bellow
|
||||
|
||||
chdir("::::");
|
||||
$MOZ_SRC = cwd();
|
||||
|
||||
OpenErrorLog("NGLayoutBuildLog");
|
||||
#OpenErrorLog("Mozilla.BuildLog"); # Tinderbox requires that name
|
||||
|
||||
Moz::StopForErrors();
|
||||
#Moz::DontStopForErrors();
|
||||
|
||||
if ($pull{all}) {
|
||||
Checkout();
|
||||
}
|
||||
|
||||
chdir($MOZ_SRC);
|
||||
BuildDist();
|
||||
|
||||
chdir($MOZ_SRC);
|
||||
BuildProjects();
|
||||
|
||||
print "Build layout complete\n";
|
||||
89
mozilla/build/mac/BuildNGLayoutDebug.pl
Normal file
89
mozilla/build/mac/BuildNGLayoutDebug.pl
Normal file
@@ -0,0 +1,89 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
#
|
||||
# nglayout build script (debug)
|
||||
#
|
||||
use Mac::Processes;
|
||||
use NGLayoutBuildList;
|
||||
use Cwd;
|
||||
use Moz;
|
||||
|
||||
# configuration variables
|
||||
$DEBUG = 1;
|
||||
$ALIAS_SYM_FILES = $DEBUG;
|
||||
$CLOBBER_LIBS = 1; # turn on to clobber existing libs and .xSYM files before
|
||||
# building each project
|
||||
|
||||
$pull{all} = 0;
|
||||
$pull{lizard} = 0;
|
||||
$pull{xpcom} = 0;
|
||||
$pull{imglib} = 0;
|
||||
$pull{netlib} = 0;
|
||||
$pull{nglayout} = 0;
|
||||
$pull{mac} = 0;
|
||||
|
||||
$build{all} = 1; # turn off to do individual builds
|
||||
$build{dist} = 0;
|
||||
$build{stubs} = 0;
|
||||
$build{common} = 0;
|
||||
$build{nglayout} = 0;
|
||||
$build{resources} = 0;
|
||||
$build{editor} = 0;
|
||||
$build{viewer} = 0;
|
||||
$build{xpapp} = 0;
|
||||
|
||||
if ($pull{all})
|
||||
{
|
||||
foreach $k (keys(%pull))
|
||||
{
|
||||
$pull{$k} = 1;
|
||||
}
|
||||
}
|
||||
if ($build{all})
|
||||
{
|
||||
foreach $k (keys(%build))
|
||||
{
|
||||
$build{$k} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# do the work
|
||||
# you should not have to edit anything bellow
|
||||
|
||||
chdir("::::");
|
||||
$MOZ_SRC = cwd();
|
||||
|
||||
OpenErrorLog("NGLayoutDebugBuildLog");
|
||||
#OpenErrorLog("Mozilla.BuildLog"); # Tinderbox requires that name
|
||||
|
||||
Moz::StopForErrors();
|
||||
#Moz::DontStopForErrors();
|
||||
|
||||
if ($pull{all}) {
|
||||
Checkout();
|
||||
}
|
||||
|
||||
chdir($MOZ_SRC);
|
||||
BuildDist();
|
||||
|
||||
chdir($MOZ_SRC);
|
||||
BuildProjects();
|
||||
|
||||
print "Build layout complete\n";
|
||||
385
mozilla/build/mac/CodeWarriorLib.pm
Normal file
385
mozilla/build/mac/CodeWarriorLib.pm
Normal file
@@ -0,0 +1,385 @@
|
||||
#!perl
|
||||
package CodeWarriorLib;
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
CodeWarriorLib - supply interface to CodeWarrior
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#!perl
|
||||
use CodeWarriorLib;
|
||||
CodeWarriorLib::activate();
|
||||
$had_errors = CodeWarriorLib::build_project(
|
||||
$project_path, $target_name, $recent_errors_file, $clean_build
|
||||
);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Replaces the AppleScript library I<CodeWarriorLib>.
|
||||
|
||||
=over 4
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
use Mac::AppleEvents::Simple;
|
||||
use Mac::AppleEvents;
|
||||
use Mac::Processes;
|
||||
use Mac::MoreFiles;
|
||||
use Mac::Types;
|
||||
use File::Basename;
|
||||
|
||||
use vars qw($VERSION);
|
||||
$VERSION = '1.02';
|
||||
|
||||
my($app) = 'CWIE';
|
||||
|
||||
# 0 == don't switch CWIE to front app in do_event(), 1 == do switch
|
||||
# note: activate() still switches when called
|
||||
$Mac::AppleEvents::Simple::SWITCH = 0;
|
||||
|
||||
# supply your own path to the source here
|
||||
#_test('PowerPudgeIV:mozilla:mozilla:');
|
||||
|
||||
|
||||
=pod
|
||||
|
||||
=item _get_project($full_path)
|
||||
|
||||
A private routine returning a reference to the open project with the given name,
|
||||
or else the empty string (when that project is not open)
|
||||
|
||||
full_path is a string identifying the project to be built and is of the form,
|
||||
e.g., "HD:ProjectFolder:MyProject.mcp". It must be supplied.
|
||||
|
||||
=cut
|
||||
|
||||
sub _get_project ($) {
|
||||
my(
|
||||
$full_path, $candidate_projects
|
||||
) = @_;
|
||||
$candidate_projects = _doc_named(basename($full_path, '*'));
|
||||
if ($candidate_projects) {
|
||||
my($cps) = _get_dobj($candidate_projects);
|
||||
my($num) = AECountItems($cps);
|
||||
if ($num) { # is a list
|
||||
foreach (1 .. AECountItems($cps)) {
|
||||
my($cp) = AEGetNthDesc($cps, $_);
|
||||
if ($full_path eq _full_path($cp)) {
|
||||
return($cp);
|
||||
}
|
||||
}
|
||||
} else { # is only one, not a list
|
||||
if ($full_path eq _full_path($cps)) {
|
||||
return($cps);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
=item build_project
|
||||
|
||||
Build a selected target of a project, saving any errors to a file, if supplied.
|
||||
|
||||
full_path is a string identifying the project to be built and is of the form,
|
||||
e.g., "HD:ProjectFolder:MyProject.mcp". It must be supplied.
|
||||
|
||||
If target_name is the empty string, the current target of the selected project
|
||||
will be built, else, target_name should be a string matching a target name in
|
||||
the selected project.
|
||||
|
||||
If error_path is the empty string, errors will not be saved to a file,
|
||||
else, error_path should be the full path of a file to save error messages into.
|
||||
|
||||
=cut
|
||||
|
||||
sub build_project ($;$$$) {
|
||||
my(
|
||||
$full_path, $target_name, $error_path,
|
||||
$remove_object, $p, $project_was_closed, $had_errors
|
||||
) = @_;
|
||||
_close_errors_window();
|
||||
|
||||
while (1) {
|
||||
$p = _get_project($full_path);
|
||||
if (!$p) {
|
||||
if ($project_was_closed) {
|
||||
print "### Error - request for project document failed after opening\n";
|
||||
die "### possibly CW Pro 4 bug: be sure to close your Find window\n";
|
||||
}
|
||||
$project_was_closed = 1;
|
||||
_open_file($full_path);
|
||||
} else {
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
$had_errors = 0;
|
||||
if ($target_name eq '') {
|
||||
if ($remove_object) {_remove_object($p)}
|
||||
_build($p);
|
||||
} else {
|
||||
if ($remove_object) {_remove_object($p, $target_name)}
|
||||
_build($p, $target_name);
|
||||
}
|
||||
|
||||
if ($error_path ne '') {
|
||||
_save_errors_window($error_path);
|
||||
}
|
||||
$had_errors = _close_errors_window();
|
||||
|
||||
if ($project_was_closed) {
|
||||
$p = _get_project($full_path);
|
||||
_close($p);
|
||||
}
|
||||
|
||||
return($had_errors);
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
=item activate()
|
||||
|
||||
Launches CodeWarrior and brings it to the front.
|
||||
|
||||
Once found, path will be saved in ':idepath.txt' for future reference.
|
||||
Edit or delete this file to change the location of the IDE. If app is
|
||||
moved, C<activate()> will prompt for a new location.
|
||||
|
||||
First looks for an open CodeWarrior app. Second, tries to open previously
|
||||
saved location in ':idepath.txt'. Third, tries to find it and allow user
|
||||
to choose it with Navigation Services (if present). Fourth, uses good old
|
||||
GUSI routines built-in to MacPerl for a Choose Directory dialog box.
|
||||
|
||||
=cut
|
||||
|
||||
sub activate () {
|
||||
local(*F);
|
||||
my($filepath, $appath, $psi) = (':idepath.txt');
|
||||
|
||||
foreach $psi (values(%Process)) {
|
||||
if ($psi->processSignature() eq $app) {
|
||||
$appath = $psi->processAppSpec(), "\n";
|
||||
_save_appath($filepath, $appath);
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
if ((!$appath || ! -x $appath) && open(F, $filepath)) {
|
||||
$appath = <F>;
|
||||
close(F);
|
||||
}
|
||||
|
||||
if (!$appath || ! -x $appath) {
|
||||
if (eval {require Mac::Navigation}) {
|
||||
my($options, $nav);
|
||||
Mac::Navigation->import();
|
||||
$options = NavGetDefaultDialogOptions();
|
||||
$options->message('Where is CodeWarrior IDE?');
|
||||
$options->windowTitle('Find CodeWarrior IDE');
|
||||
$nav = NavChooseObject($Application{$app}, $options);
|
||||
die "CodeWarrior IDE not found.\n" if (!$nav || !$nav->file(1));
|
||||
$appath = $nav->file(1);
|
||||
} else {
|
||||
local(*D);
|
||||
my $cwd = `pwd`;
|
||||
$appath = _get_folder(
|
||||
'Where is the CW IDE folder?',
|
||||
dirname($Application{$app})
|
||||
);
|
||||
die "CodeWarrior IDE not found.\n" if !$appath;
|
||||
opendir(D, $appath) or die $!;
|
||||
chdir($appath);
|
||||
foreach my $file (sort readdir (D)) {
|
||||
my(@app) = MacPerl::GetFileInfo($file);
|
||||
if ($app[0] && $app[1] &&
|
||||
$app[1] eq 'APPL' && $app[0] eq $app
|
||||
) {
|
||||
$appath .= $file;
|
||||
last;
|
||||
}
|
||||
}
|
||||
chomp($cwd);
|
||||
chdir($cwd);
|
||||
}
|
||||
_save_appath($filepath, $appath);
|
||||
}
|
||||
|
||||
my($lp) = LaunchParam->new(
|
||||
launchAppSpec => $appath,
|
||||
launchControlFlags => launchContinue() + launchNoFileFlags()
|
||||
);
|
||||
unless (LaunchApplication($lp)) {
|
||||
unlink($filepath);
|
||||
die $^E;
|
||||
}
|
||||
}
|
||||
|
||||
sub _build ($;$) {
|
||||
my($evt);
|
||||
if ($_[1]) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(TRGT), seld:TEXT(@), from:" .
|
||||
AEPrint($_[0]) . '}';
|
||||
$evt = do_event(qw/CWIE MAKE/, $app, $prm, $_[1]);
|
||||
} else {
|
||||
my($prm) = q"'----':" . AEPrint($_[0]);
|
||||
$evt = do_event(qw/CWIE MAKE/, $app, $prm);
|
||||
}
|
||||
}
|
||||
|
||||
sub _remove_object ($;$) {
|
||||
my($evt);
|
||||
if ($_[1]) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(TRGT), seld:TEXT(@), from:" .
|
||||
AEPrint($_[0]) . '}';
|
||||
$evt = do_event(qw/CWIE RMOB/, $app, $prm, $_[1]);
|
||||
} else {
|
||||
my($prm) = q"'----':" . AEPrint($_[0]);
|
||||
$evt = do_event(qw/CWIE RMOB/, $app, $prm);
|
||||
}
|
||||
}
|
||||
|
||||
sub _open_file ($) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(alis), " .
|
||||
q"seld:TEXT(@), from:'null'()}";
|
||||
|
||||
do_event(qw/aevt odoc/, $app, $prm, $_[0]);
|
||||
}
|
||||
|
||||
sub _doc_named ($) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:test, want:type(docu), from:'null'(), " .
|
||||
q"seld:cmpd{relo:'= ', 'obj1':obj {form:prop, want:type" .
|
||||
q"(prop), seld:type(pnam), from:'exmn'()}, 'obj2':TEXT(@)}}";
|
||||
|
||||
my($evt) = do_event(qw/core getd/, $app, $prm, $_[0]);
|
||||
return($evt->{REPLY} eq 'aevt\ansr{}' ? undef : $evt);
|
||||
}
|
||||
|
||||
sub _full_path ($) {
|
||||
my($obj) = $_[0];
|
||||
my($prm) =
|
||||
q"'----':obj {form:prop, want:type(prop), seld:type(FILE), " .
|
||||
q"from:" . AEPrint($_[0]) . q"}, rtyp:type(TEXT)";
|
||||
my($evt) = do_event(qw/core getd/, $app, $prm);
|
||||
|
||||
return MacPerl::MakePath(
|
||||
MacUnpack('fss ', (
|
||||
AEGetParamDesc($evt->{REP}, keyDirectObject()))->data()->get()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
sub _save_errors_window ($) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(alis), seld:TEXT(@), from:'null'()}";
|
||||
do_event(qw/MMPR SvMs/, $app, $prm, $_[0]);
|
||||
}
|
||||
|
||||
|
||||
sub _close_errors_window () {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(cwin), " .
|
||||
q"seld:TEXT(@), from:'null'()}";
|
||||
|
||||
my($evt) = do_event(qw/core clos/, $app, $prm, 'Errors & Warnings');
|
||||
return($evt->{REPLY} eq 'aevt\ansr{}' ? 1 : 0);
|
||||
}
|
||||
|
||||
sub _close () {
|
||||
my($prm) = q"'----':" . AEPrint($_[0]);
|
||||
do_event(qw/core clos/, $app, $prm);
|
||||
}
|
||||
|
||||
sub _get_dobj ($) {
|
||||
return(AEGetParamDesc($_[0]->{REP}, keyDirectObject()));
|
||||
}
|
||||
|
||||
sub _get_folder ($$) {
|
||||
require 'GUSI.ph';
|
||||
my($prompt, $default) = @_;
|
||||
MacPerl::Choose(
|
||||
GUSI::AF_FILE(), 0, $prompt, '',
|
||||
GUSI::CHOOSE_DIR() + ($default ? &GUSI::CHOOSE_DEFAULT : 0),
|
||||
$default
|
||||
);
|
||||
}
|
||||
|
||||
sub _save_appath ($$) {
|
||||
open(F, '>' . $_[0]) or die $!;
|
||||
print F $_[1];
|
||||
close(F);
|
||||
}
|
||||
|
||||
sub _test ($) {
|
||||
activate();
|
||||
my($path) = $_[0];
|
||||
build_project(
|
||||
"${path}modules:xml:macbuild:XML.mcp", '',
|
||||
"${path}build:mac:Mozilla.BuildLog.part"
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
=pod
|
||||
|
||||
=back
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
=over 4
|
||||
|
||||
=item v1.02, September 23, 1998
|
||||
|
||||
Made fixes in finding and saving location of CodeWarrior IDE.
|
||||
|
||||
=item v1.01, June 1, 1998
|
||||
|
||||
Made fixes to C<chdir()> in C<activate()>, made C<activate()> more robust
|
||||
in finding CodeWarrior IDE, added global variable to NOT switch to IDE
|
||||
for each sent event, a few other fixes.
|
||||
|
||||
=item v1.00, May 30, 1998
|
||||
|
||||
First shot
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
Chris Nandor F<E<lt>pudge@pobox.comE<gt>>, and the author of the
|
||||
original I<CodeWarriorLib>, Scott Collins F<E<lt>scc@netscape.comE<gt>>.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
BuildProject L<Moz>.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
The contents of this file are subject to the Netscape Public License
|
||||
Version 1.0 (the "NPL"); you may not use this file except in
|
||||
compliance with the NPL. You may obtain a copy of the NPL at
|
||||
http://www.mozilla.org/NPL/
|
||||
|
||||
Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
for the specific language governing rights and limitations under the
|
||||
NPL.
|
||||
|
||||
The Initial Developer of this code under the NPL is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
Reserved.
|
||||
|
||||
=cut
|
||||
4
mozilla/build/mac/CustomLib/CustomLib.c
Normal file
4
mozilla/build/mac/CustomLib/CustomLib.c
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
/* This library only exists to provide a dummy library for the final project */
|
||||
|
||||
/* There is nothing to do here. */
|
||||
BIN
mozilla/build/mac/CustomLib/CustomLib.mcp
Normal file
BIN
mozilla/build/mac/CustomLib/CustomLib.mcp
Normal file
Binary file not shown.
BIN
mozilla/build/mac/GenToc
Normal file
BIN
mozilla/build/mac/GenToc
Normal file
Binary file not shown.
260
mozilla/build/mac/GenToc.script
Normal file
260
mozilla/build/mac/GenToc.script
Normal file
@@ -0,0 +1,260 @@
|
||||
(*
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*)
|
||||
|
||||
(*
|
||||
GenToc - Generates a .toc file from the current contents of a project.
|
||||
|
||||
by Patrick C. Beard <beard@netscape.com>
|
||||
*)
|
||||
|
||||
on swapDelimiters(newDelimiters)
|
||||
set oldDelimiters to get AppleScript's text item delimiters
|
||||
set AppleScript's text item delimiters to newDelimiters
|
||||
return oldDelimiters
|
||||
end swapDelimiters
|
||||
|
||||
on setDelimiters(newDelimiters)
|
||||
set AppleScript's text item delimiters to newDelimiters
|
||||
end setDelimiters
|
||||
|
||||
on setExtension(fileName, newExtension)
|
||||
set oldDelimiters to swapDelimiters(".")
|
||||
set newFileName to (text item 1 of fileName) & newExtension
|
||||
setDelimiters(oldDelimiters)
|
||||
return newFileName
|
||||
end setExtension
|
||||
|
||||
on folderFromPath(filePath)
|
||||
set folderPath to ((filePath's text items 1 thru ((count of filePath's text items) - 1)) as string) & ":"
|
||||
return folderPath
|
||||
end folderFromPath
|
||||
|
||||
on fileFromPath(filePath)
|
||||
return last text item of filePath
|
||||
end fileFromPath
|
||||
|
||||
on openProject(aProjectFile)
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
open aProjectFile
|
||||
end tell
|
||||
end openProject
|
||||
|
||||
on selectProject(aProjectFile)
|
||||
set projectName to fileFromPath(aProjectFile as text)
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
if (name of window 1 is not projectName) then
|
||||
select window projectName
|
||||
end if
|
||||
end tell
|
||||
end selectProject
|
||||
|
||||
on getTargets()
|
||||
set targetList to {}
|
||||
set nameList to {}
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
set currentProject to project document 1
|
||||
repeat with targetIndex from 1 to (count of targets of currentProject)
|
||||
set currentTarget to (target targetIndex of currentProject)
|
||||
set targetList to targetList & {currentTarget}
|
||||
set nameList to nameList & {name of currentTarget}
|
||||
end repeat
|
||||
return {target:targetList, names:nameList}
|
||||
end tell
|
||||
end getTargets
|
||||
|
||||
(* uses "sort" scripting addition to sort a list of strings. *)
|
||||
on sortList(aList)
|
||||
if (aList {}) then
|
||||
return sort aList
|
||||
else
|
||||
return {}
|
||||
end if
|
||||
end sortList
|
||||
|
||||
(* uses "info for" scripting addition, to return the file type of a path. *)
|
||||
on getFileType(aFilePath)
|
||||
return file type of (info for alias aFilePath)
|
||||
end getFileType
|
||||
|
||||
(* returns all "TEXT" files of the named target. *)
|
||||
on getTargetFiles(targetKey)
|
||||
set targetFiles to {}
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
set currentProject to project document 1
|
||||
set currentTarget to (target targetKey of currentProject)
|
||||
try
|
||||
-- workaround for CW IDE 3.X bug, loop until error encountered.
|
||||
set fileIndex to 1
|
||||
repeat until false
|
||||
set targetFile to (target file fileIndex of currentTarget)
|
||||
-- only consider text files, since other platforms won't be managing binaries.
|
||||
-- also, only consider if target file is directly linked.
|
||||
if (linked of targetFile) then
|
||||
set targetFilePath to (Access Paths of targetFile)
|
||||
tell me
|
||||
if (getFileType(targetFilePath) = "TEXT") then
|
||||
set targetFiles to targetFiles & {targetFilePath}
|
||||
end if
|
||||
end tell
|
||||
end if
|
||||
set fileIndex to (fileIndex + 1)
|
||||
end repeat
|
||||
on error msg
|
||||
-- display dialog msg & " file count = " & fileIndex
|
||||
end try
|
||||
end tell
|
||||
return sortList(targetFiles)
|
||||
end getTargetFiles
|
||||
|
||||
on addTargetFile(targetFile, targetName)
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
add (project document 1) new target file with data {targetFile} to targets {targetName}
|
||||
end tell
|
||||
end addTargetFile
|
||||
|
||||
on setCurrentTarget(currentTargetName)
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
Set Current Target currentTargetName
|
||||
end tell
|
||||
end setCurrentTarget
|
||||
|
||||
on removeTargetFile(targetFile)
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
Remove Files {targetFile}
|
||||
end tell
|
||||
end removeTargetFile
|
||||
|
||||
on quote(aString)
|
||||
return "'" & aString & "'"
|
||||
end quote
|
||||
|
||||
on listContains(aList, anItem)
|
||||
repeat with listItem in aList
|
||||
if (listItem contains anItem) then
|
||||
return true
|
||||
end if
|
||||
end repeat
|
||||
return false
|
||||
end listContains
|
||||
|
||||
on showList(listToShow)
|
||||
choose from list listToShow with prompt "List:" with empty selection allowed
|
||||
end showList
|
||||
|
||||
on replace(aString, oldChar, newChar)
|
||||
set newString to ""
|
||||
repeat with aChar in (every character of aString)
|
||||
if (contents of aChar = oldChar) then
|
||||
set newString to newString & newChar
|
||||
else
|
||||
set newString to newString & aChar
|
||||
end if
|
||||
end repeat
|
||||
return newString
|
||||
end replace
|
||||
|
||||
on substring(aString, anOffset)
|
||||
set aSubString to ""
|
||||
repeat with charIndex from anOffset to (count aString)
|
||||
set aSubString to aSubString & (character charIndex of aString)
|
||||
end repeat
|
||||
return aSubString
|
||||
end substring
|
||||
|
||||
on setFileInfo(aFile, aCreator, aType)
|
||||
tell application "Finder"
|
||||
set creator type of aFile to aCreator
|
||||
set file type of aFile to aType
|
||||
end tell
|
||||
end setFileInfo
|
||||
|
||||
on closeFile(fileRef)
|
||||
try
|
||||
-- make sure it's not currently open.
|
||||
close access fileRef
|
||||
on error
|
||||
-- ignore error closing.
|
||||
end try
|
||||
end closeFile
|
||||
|
||||
on mroFile(aFile)
|
||||
try
|
||||
-- make sure it's modifiable.
|
||||
mro aFile
|
||||
on error
|
||||
-- ignore error MROing.
|
||||
end try
|
||||
end mroFile
|
||||
|
||||
on run
|
||||
-- so we can easily strip off file names from paths.
|
||||
set oldDelimiters to swapDelimiters(":")
|
||||
|
||||
set theProjectFile to (choose file with prompt "Choose a CW Project file." of type {"MMPr"})
|
||||
set theManifestFile to (new file with prompt "Create MANIFEST where?" default name setExtension(fileFromPath(theProjectFile as text), ".toc"))
|
||||
|
||||
set manifestRef to false
|
||||
|
||||
try
|
||||
-- make sure the file is closed & is modifiable.
|
||||
closeFile(theManifestFile)
|
||||
mroFile(theManifestFile)
|
||||
|
||||
-- open the new MANIFEST file.
|
||||
set manifestRef to (open for access theManifestFile with write permission)
|
||||
set eof manifestRef to 0
|
||||
|
||||
-- give it CodeWarrior look and feel.
|
||||
setFileInfo(theManifestFile, "CWIE", "TEXT")
|
||||
|
||||
openProject(theProjectFile)
|
||||
selectProject(theProjectFile)
|
||||
|
||||
set targetsList to getTargets()
|
||||
set targetNames to names of targetsList
|
||||
set targetCount to count items of targetNames
|
||||
|
||||
set mozillaTreePathOffset to (offset of "mozilla" in (theManifestFile as text))
|
||||
|
||||
-- dump all targets into the new MANIFEST file.
|
||||
repeat with targetName in targetNames
|
||||
write ("# target: " & targetName & return) to manifestRef
|
||||
setCurrentTarget(targetName)
|
||||
set targetFiles to getTargetFiles(contents of targetName)
|
||||
repeat with targetFile in targetFiles
|
||||
-- only store the path name relative to the source tree itself.
|
||||
set targetFilePath to substring(contents of targetFile, mozillaTreePathOffset)
|
||||
write (replace(targetFilePath, ":", "/") & return) to manifestRef
|
||||
end repeat
|
||||
end repeat
|
||||
on error msg
|
||||
display dialog msg
|
||||
end try
|
||||
if (manifestRef is not false) then
|
||||
closeFile(manifestRef)
|
||||
end if
|
||||
|
||||
-- shut the project down, and display the result.
|
||||
tell application "CodeWarrior IDE 3.3"
|
||||
activate
|
||||
Close Project
|
||||
open theManifestFile
|
||||
end tell
|
||||
|
||||
setDelimiters(oldDelimiters)
|
||||
end run
|
||||
95
mozilla/build/mac/IDE_Options.h
Normal file
95
mozilla/build/mac/IDE_Options.h
Normal file
@@ -0,0 +1,95 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
This file overrides all option settings in the IDE. It is an attempt to allow all builds
|
||||
to have the same options.
|
||||
|
||||
Note: We can't use ConditionalMacros.h in this file because it will conflict with
|
||||
the PowerPlant precompiled headers.
|
||||
|
||||
*/
|
||||
|
||||
/* warning pragmas */
|
||||
#pragma warn_hidevirtual on
|
||||
#pragma warn_emptydecl on
|
||||
#pragma warn_unusedvar on
|
||||
#pragma warn_extracomma on
|
||||
#pragma warn_illpragma on
|
||||
#pragma warn_possunwant on
|
||||
#pragma warn_unusedarg off /* turned off to reduce warnings */
|
||||
|
||||
#pragma check_header_flags on
|
||||
|
||||
/* Language features that must be the same across libraries... */
|
||||
#pragma enumsalwaysint on
|
||||
#pragma unsigned_char off
|
||||
#pragma exceptions on
|
||||
#pragma bool on
|
||||
#pragma RTTI on
|
||||
|
||||
|
||||
/* Save as much space as possible with strings... */
|
||||
#pragma pool_strings on
|
||||
#pragma dont_reuse_strings off
|
||||
|
||||
#pragma options align=native
|
||||
#pragma sym on /* Takes no memory. OK in non-debug. */
|
||||
|
||||
|
||||
|
||||
#ifdef powerc /* ...generating PowerPC */
|
||||
#pragma toc_data on
|
||||
#pragma fp_contract on
|
||||
#pragma readonly_strings on
|
||||
|
||||
#ifdef DEBUG
|
||||
#pragma traceback on
|
||||
#pragma global_optimizer off
|
||||
#pragma scheduling off
|
||||
#pragma peephole off
|
||||
#pragma optimize_for_size off
|
||||
#else
|
||||
#pragma traceback off
|
||||
#pragma global_optimizer on
|
||||
#pragma optimization_level 4
|
||||
#pragma scheduling 604
|
||||
#pragma peephole on
|
||||
#pragma optimize_for_size on
|
||||
#endif
|
||||
|
||||
#else /* ...generating 68k */
|
||||
#pragma code68020 on
|
||||
#pragma code68881 off
|
||||
|
||||
/* Far everything... */
|
||||
#pragma far_code
|
||||
#pragma far_data on
|
||||
#pragma far_strings on
|
||||
#pragma far_vtables on
|
||||
|
||||
#pragma fourbyteints on /* 4-byte ints */
|
||||
#pragma IEEEdoubles on /* 8-byte doubles (as required by Java and NSPR) */
|
||||
|
||||
#ifdef DEBUG
|
||||
#pragma macsbug on
|
||||
#pragma oldstyle_symbols off
|
||||
#else
|
||||
#pragma macsbug off
|
||||
#endif
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user