24 #include <ktorrent_export.h>
26 #include "constants.h"
33 KTORRENT_EXPORT
double Percentage(
const TorrentStats & s);
35 inline void WriteUint64(Uint8* buf,Uint32 off,Uint64 val)
37 buf[off + 0] = (Uint8) ((val & 0xFF00000000000000ULL) >> 56);
38 buf[off + 1] = (Uint8) ((val & 0x00FF000000000000ULL) >> 48);
39 buf[off + 2] = (Uint8) ((val & 0x0000FF0000000000ULL) >> 40);
40 buf[off + 3] = (Uint8) ((val & 0x000000FF00000000ULL) >> 32);
41 buf[off + 4] = (Uint8) ((val & 0x00000000FF000000ULL) >> 24);
42 buf[off + 5] = (Uint8) ((val & 0x0000000000FF0000ULL) >> 16);
43 buf[off + 6] = (Uint8) ((val & 0x000000000000FF00ULL) >> 8);
44 buf[off + 7] = (Uint8) ((val & 0x00000000000000FFULL) >> 0);
47 inline Uint64 ReadUint64(
const Uint8* buf,Uint64 off)
50 ((Uint64)buf[off] << 56) |
51 ((Uint64)buf[off+1] << 48) |
52 ((Uint64)buf[off+2] << 40) |
53 ((Uint64)buf[off+3] << 32) |
54 ((Uint64)buf[off+4] << 24) |
55 ((Uint64)buf[off+5] << 16) |
56 ((Uint64)buf[off+6] << 8) |
57 ((Uint64)buf[off+7] << 0);
62 inline void WriteUint32(Uint8* buf,Uint32 off,Uint32 val)
64 buf[off + 0] = (Uint8) ((val & 0xFF000000) >> 24);
65 buf[off + 1] = (Uint8) ((val & 0x00FF0000) >> 16);
66 buf[off + 2] = (Uint8) ((val & 0x0000FF00) >> 8);
67 buf[off + 3] = (Uint8) (val & 0x000000FF);
70 inline Uint32 ReadUint32(
const Uint8* buf,Uint32 off)
72 return (buf[off] << 24) | (buf[off+1] << 16) | (buf[off+2] << 8) | buf[off + 3];
75 inline void WriteUint16(Uint8* buf,Uint32 off,Uint16 val)
77 buf[off + 0] = (Uint8) ((val & 0xFF00) >> 8);
78 buf[off + 1] = (Uint8) (val & 0x000FF);
81 inline Uint16 ReadUint16(
const Uint8* buf,Uint32 off)
83 return (buf[off] << 8) | buf[off + 1];
87 inline void WriteInt64(Uint8* buf,Uint32 off,Int64 val)
89 buf[off + 0] = (Uint8) ((val & 0xFF00000000000000ULL) >> 56);
90 buf[off + 1] = (Uint8) ((val & 0x00FF000000000000ULL) >> 48);
91 buf[off + 2] = (Uint8) ((val & 0x0000FF0000000000ULL) >> 40);
92 buf[off + 3] = (Uint8) ((val & 0x000000FF00000000ULL) >> 32);
93 buf[off + 4] = (Uint8) ((val & 0x00000000FF000000ULL) >> 24);
94 buf[off + 5] = (Uint8) ((val & 0x0000000000FF0000ULL) >> 16);
95 buf[off + 6] = (Uint8) ((val & 0x000000000000FF00ULL) >> 8);
96 buf[off + 7] = (Uint8) ((val & 0x00000000000000FFULL) >> 0);
99 inline Int64 ReadInt64(
const Uint8* buf,Uint32 off)
102 ((Int64)buf[off] << 56) |
103 ((Int64)buf[off+1] << 48) |
104 ((Int64)buf[off+2] << 40) |
105 ((Int64)buf[off+3] << 32) |
106 ((Int64)buf[off+4] << 24) |
107 ((Int64)buf[off+5] << 16) |
108 ((Int64)buf[off+6] << 8) |
109 ((Int64)buf[off+7] << 0);
114 inline void WriteInt32(Uint8* buf,Uint32 off,Int32 val)
116 buf[off + 0] = (Uint8) ((val & 0xFF000000) >> 24);
117 buf[off + 1] = (Uint8) ((val & 0x00FF0000) >> 16);
118 buf[off + 2] = (Uint8) ((val & 0x0000FF00) >> 8);
119 buf[off + 3] = (Uint8) (val & 0x000000FF);
122 inline Int32 ReadInt32(
const Uint8* buf,Uint32 off)
124 return (Int32)(buf[off] << 24) | (buf[off+1] << 16) | (buf[off+2] << 8) | buf[off + 3];
127 inline void WriteInt16(Uint8* buf,Uint32 off,Int16 val)
129 buf[off + 0] = (Uint8) ((val & 0xFF00) >> 8);
130 buf[off + 1] = (Uint8) (val & 0x000FF);
133 inline Int16 ReadInt16(
const Uint8* buf,Uint32 off)
135 return (Int16)(buf[off] << 8) | buf[off + 1];
138 KTORRENT_EXPORT
void UpdateCurrentTime();
140 KTORRENT_EXPORT
extern TimeStamp global_time_stamp;
142 inline TimeStamp CurrentTime() {
return global_time_stamp;}
144 KTORRENT_EXPORT TimeStamp Now();
146 KTORRENT_EXPORT QString DirSeparator();
147 KTORRENT_EXPORT
bool IsMultimediaFile(
const QString & filename);
152 KTORRENT_EXPORT
bool MaximizeLimits();
155 KTORRENT_EXPORT Uint32 MaxOpenFiles();
158 KTORRENT_EXPORT Uint32 CurrentOpenFiles();
161 KTORRENT_EXPORT
bool OpenFileAllowed();
164 KTORRENT_EXPORT
void SetNetworkInterface(
const QString & iface);
167 KTORRENT_EXPORT QString NetworkInterface();
170 KTORRENT_EXPORT QString NetworkInterfaceIPAddress(
const QString & iface);
173 KTORRENT_EXPORT QStringList NetworkInterfaceIPAddresses(
const QString & iface);
176 KTORRENT_EXPORT QString CurrentIPv6Address();
178 const double TO_KB = 1024.0;
179 const double TO_MEG = (1024.0 * 1024.0);
180 const double TO_GIG = (1024.0 * 1024.0 * 1024.0);
182 KTORRENT_EXPORT QString BytesToString(bt::Uint64 bytes);
183 KTORRENT_EXPORT QString BytesPerSecToString(
double speed);
184 KTORRENT_EXPORT QString DurationToString(bt::Uint32 nsecs);
186 template<
class T>
int CompareVal(T a,T b)
196 template<
class T> QString hex(T val)
198 return QStringLiteral(
"0x%1").arg(val,0,16);
201 struct KTORRENT_EXPORT RecursiveEntryGuard
205 RecursiveEntryGuard(
bool* g) : guard(g)
210 ~RecursiveEntryGuard()
219 KTORRENT_EXPORT
bool InitLibKTorrent();