本文整理汇总了C++中debugLog函数的典型用法代码示例。如果您正苦于以下问题:C++ debugLog函数的具体用法?C++ debugLog怎么用?C++ debugLog使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了debugLog函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DebugLog
static void DebugLog (const char* str)
{
if (debugLog)
debugLog(str);
}
示例2: txChar
//.........这里部分代码省略.........
return FALSE;
}
}
setClockLine(channel, 1);
setDataLine(channel, 1);
sei();
/*
* Both parties are agreed on who is sending and who is receiving,
* so start transmission of the byte, bit by bit.
*/
for(x = 0; x < 8; x++) {
/*
* Send out the LSB.
*/
setDataLine(channel, (data & 0x01));
setClockLine(channel, 0);
/*
* Give the receiver time to process the outgoing bit.
*/
delay_us(BIT_LOW_TIME);
/*
* Modify the parity bit to reflect the bit just sent and
* prepare the data to send the next bit.
*/
parity_bit ^= (data & 0x01);
data >>= 1;
/*
* Return communication channel to idle state to let
* the receiver know that a new bit is coming.
*/
setClockLine(channel, 1);
setDataLine(channel, 1);
delay_us(BIT_HIGH_TIME);
}
/*
* Send parity bit for error detection.
*/
setDataLine(channel, parity_bit);
setClockLine(channel, 0);
delay_us(BIT_LOW_TIME);
releaseDataLine(channel);
//just testing here...
//trying to drive the line high so it doesn't get accidentally driven low after release
//under normal operations, the receiver doesn't try to control this line until 8-10 us after it's released.
//delay_us(4);
releaseClockLine(channel);
/*
* Wait for the receiver to acknowledge receipt of the byte just sent.
* Timeout if necessary, indicating a bad transmission.
* waiting for receiver to indicate that parity bit was received properly.
*/
tx_timeout = TX_TIMEOUT_RELOAD;
while(pollDataLine(channel)) { //avr samples about 9 times here, at 5 us intervals
tx_timeout--;
if(tx_timeout == 0) {
//if (goodChannels & (0x01 << (channel - 1))) { // if the current channel is good, then...
//blinkGreen(1); // meme
//blinkRed(1);
//}
debugLog(NO_BYTE_TX_RECEIPT); //RECEIVER DIDN'T ACKNOWLEDGE PARTIY BIT
return FALSE;
}
}
/*
* Check if the byte was correctly received.
* clock line should be high. if it's low, there
* was a parity error.
*/
tx_parity_error = !pollClockLine(channel);
/*
* Wait for receiver to finish acknowledging receipt of the byte just
* sent. Timeout if necessary, indicating a bad transmission.
* waiting for receiver to release the data line so that normal
* transmissions can continue.
*/
tx_timeout = TX_TIMEOUT_RELOAD;
while(!pollDataLine(channel)) {
tx_timeout--;
if(tx_timeout == 0) {
//if (goodChannels & (0x01 << (channel - 1))) { // if the current channel is good, then...
//blinkGreen(1); // meme
//blinkRed(1);
//}
debugLog(TX_PARITY_ERROR_TIMEOUT); //receiver didn't release data line after parity bit
return FALSE;
}
}
debugLog(SUCCESSFUL_TX);
good_channels |= _BV(channel - 1); // Mark this channel as good.
return TRUE;
}
示例3: test
void PathFinding::molestPath(VectorPath &path)
{
int sz=path.getNumPathNodes();
if(!sz)
return;
int i = 0;
// make normals
std::vector<Vector> normals;
normals.resize(sz);
for (i = 0; i < sz; i++)
{
Vector node = path.getPathNode(i)->value;
float dist;
int sample = 20;
float maxDist = sample * TILE_SIZE;
{
Vector n = dsq->game->getWallNormal(node, sample, &dist);
if (dist != -1 && (n.x != 0 || n.y != 0))
{
n.setLength2D(200);
TileVector test(node + n);
if (dsq->game->isObstructed(test))
{
n.setLength2D(100);
test = TileVector(node+n);
if (dsq->game->isObstructed(test))
{
n.setLength2D(50);
test = TileVector(node+n);
if (dsq->game->isObstructed(test))
{
n = Vector(0,0,0);
}
}
}
normals[i] = n;
}
}
}
// use wall normal to push out node a bit
std::vector<Vector> newNormals;
newNormals.resize(normals.size());
for (i = 1; i < normals.size()-1; i++)
newNormals[i] = (normals[i] + normals[i-1] + normals[i+1])/3.0f;
for (i = 1; i < sz-1; i++)
path.getPathNode(i)->value += newNormals[i];
// kill bowls
int start = 0;
int runs=0;
bool hadSuccess = false;
int lastSuccessNode = 0;
int adjust = 2;
sz=path.getNumPathNodes();
for (i = start; i < sz-1; i++)
{
runs++;
if (runs > 8000)
{
debugLog("kill bowls ran too much");
start = sz*100;
}
lastSuccessNode = 0;
hadSuccess = false;
Vector node = path.getPathNode(i)->value;
for (int j = sz-1; j >= i+adjust; j--)
{
Vector target = path.getPathNode(j)->value;
if (dsq->game->trace(node, target))
{
hadSuccess = true;
lastSuccessNode = j;
break;
}
}
if (hadSuccess)
{
// this code will only delete things that are bowl-ish
// (things that take you on detours)
++i;
path.removeNodes(i, lastSuccessNode-1);
hadSuccess = false;
}
sz = path.getNumPathNodes();
}
sz=path.getNumPathNodes();
// remove last node
//path.removeNodes(path.getNumPathNodes()-2, path.getNumPathNodes()-2);
path.realPercentageCalc();
}
示例4: debugThrow
inline void debugThrow(const T& e) {
debugLog(e);
if (THROW_DEBUG_EXCEPTIONS) {
throw e;
}
}
示例5: setGourceDefaults
//.........这里部分代码省略.........
conffile.entryException(entry, "error reading specified user-image-dir");
}
for(boost::filesystem::path& p : image_dir_files) {
std::string dirfile;
#ifdef _WIN32
std::wstring dirfile_16 = p.filename().wstring();
utf8::utf16to8(dirfile_16.begin(), dirfile_16.end(), back_inserter(dirfile));
#else
dirfile = p.filename().string();
#endif
std::string file_ext = extension(p);
boost::algorithm::to_lower(file_ext);
if(file_ext != ".jpg" && file_ext != ".jpeg" && file_ext != ".png") continue;
std::string image_path = gGourceSettings.user_image_dir + dirfile;
std::string name = dirfile.substr(0,dirfile.size() - file_ext.size());
#ifdef __APPLE__
CFMutableStringRef help = CFStringCreateMutable(kCFAllocatorDefault, 0);
CFStringAppendCString(help, name.c_str(), kCFStringEncodingUTF8);
CFStringNormalize(help, kCFStringNormalizationFormC);
char data[4096];
CFStringGetCString(help,
data,
sizeof(data),
kCFStringEncodingUTF8);
name = data;
#endif
debugLog("%s => %s", name.c_str(), image_path.c_str());
user_image_map[name] = image_path;
}
}
if((entry = gource_settings->getEntry("caption-file")) != 0) {
if(!entry->hasValue()) conffile.entryException(entry, "specify caption file (filename)");
caption_file = entry->getString();
if(!boost::filesystem::exists(caption_file)) {
conffile.entryException(entry, "caption file not found");
}
}
if((entry = gource_settings->getEntry("caption-duration")) != 0) {
if(!entry->hasValue()) conffile.entryException(entry, "specify caption duration (seconds)");
caption_duration = entry->getFloat();
if(caption_duration <= 0.0f) {
conffile.invalidValueException(entry);
}
}
if((entry = gource_settings->getEntry("caption-size")) != 0) {
if(!entry->hasValue()) conffile.entryException(entry, "specify caption size");
caption_size = entry->getInt();
示例6: debugLog
void CSametimeProto::ExportContactsToList(mwSametimeList* user_list)
{
debugLog(_T("CSametimeProto::ExportContactsToList() start"));
mwSametimeGroup* stgroup = 0;
char* group_name;
char* group_alias;
mwSametimeGroupType group_type;
bool group_open;
mwSametimeUser* stuser;
char* user_alias;
char* user_shortName;
mwSametimeUserType user_type;
DBVARIANT dbv, dbv2;
char buff[256];
mwAwareIdBlock id_block;
mwIdBlock uid;
GList* gl = 0;
for (MCONTACT hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName)) {
if (!db_get_utf(hContact, m_szModuleName, "stid", &dbv)) {
if (dbv.pszVal) {
if (GetAwareIdFromContact(hContact, &id_block)) {
if (!db_get_utf(hContact, "CList", "Group", &dbv2)) {
group_alias = _strdup(dbv2.pszVal);
db_free(&dbv2);
}
else
group_alias = _strdup(Translate("None"));
if (group_alias) {
mir_snprintf(buff, "GT_%s", group_alias);
group_type = (mwSametimeGroupType)db_get_b(0, szProtoGroups, buff, (BYTE)mwSametimeGroup_NORMAL);
// apparently we don't want to upload contacts in dynamic groups - see gaim sametime plugin comments
if (group_type == mwSametimeGroup_DYNAMIC) {
db_free(&dbv);
free(id_block.user);
free(group_alias);
hContact = db_find_next(hContact, m_szModuleName);
continue;
}
mir_snprintf(buff, "GN_%s", group_alias);
if (!db_get_utf(0, szProtoGroups, buff, &dbv2)) {
group_name = _strdup(dbv2.pszVal);
db_free(&dbv2);
}
else
group_name = _strdup(group_alias);
//group_open = (db_get_b(0, szProtoGroups, buff, 0) == 1);
ptrT ptszGroup(mir_utf8decodeT(group_alias));
HANDLE hGroup = Clist_GroupExists(ptszGroup);
if (hGroup) {
int expanded;
CallService(MS_CLIST_GROUPGETNAME, (WPARAM)hGroup, (LPARAM)&expanded);
group_open = (expanded != 0);
}
else {
mir_snprintf(buff, "GO_%s", group_alias);
group_open = (db_get_b(0, szProtoGroups, buff, 0) == 1);
}
stgroup = 0;
stgroup = mwSametimeList_findGroup(user_list, group_name);
if (!stgroup) {
if (group_name) stgroup = mwSametimeGroup_new(user_list, group_type, group_name);
mwSametimeGroup_setAlias(stgroup, group_alias);
mwSametimeGroup_setOpen(stgroup, group_open);
}
free(group_name);
free(group_alias);
if (!db_get_utf(hContact, m_szModuleName, "Name", &dbv2)) {
user_shortName = _strdup(dbv2.pszVal);
db_free(&dbv2);
}
else
user_shortName = 0;
if (!db_get_utf(hContact, "CList", "MyHandle", &dbv2)) {
user_alias = _strdup(dbv2.pszVal);
db_free(&dbv2);
}
else
user_alias = 0;
user_type = (mwSametimeUserType)db_get_b(hContact, m_szModuleName, "type", (BYTE)mwSametimeUser_NORMAL);
uid.user = id_block.user;
uid.community = id_block.community;
stuser = mwSametimeUser_new(stgroup, user_type, &uid);
if (user_shortName) {
mwSametimeUser_setShortName(stuser, user_shortName);
free(user_shortName);
}
if (user_alias) {
//.........这里部分代码省略.........
示例7: profile_stop
void profile_stop() {
#ifdef LS_PERFORMANCE_PROFILE
debugLog("%s took %d ms\n", profile_name.c_str(), SDL_GetTicks() - profile_start_msec);
#endif
}
示例8: profile_start
void Logstalgia::readLog(int buffer_rows) {
profile_start("readLog");
set_utc_tz();
int entries_read = 0;
std::string linestr;
BaseLog* baselog = getLog();
time_t read_timestamp = 0;
while( baselog->getNextLine(linestr) ) {
//trim whitespace
if(linestr.size()>0) {
size_t string_end =
linestr.find_last_not_of(" \t\f\v\n\r");
if(string_end == std::string::npos) {
linestr = "";
} else if(string_end != linestr.size()-1) {
linestr = linestr.substr(0,string_end+1);
}
}
LogEntry le;
bool parsed_entry;
//determine format
if(accesslog==0) {
//is this a recognized NCSA access log?
NCSALog* ncsalog = new NCSALog();
if((parsed_entry = ncsalog->parseLine(linestr, le))) {
accesslog = ncsalog;
} else {
delete ncsalog;
}
if(accesslog==0) {
//is this a custom log?
CustomAccessLog* customlog = new CustomAccessLog();
if((parsed_entry = customlog->parseLine(linestr, le))) {
accesslog = customlog;
} else {
delete customlog;
}
}
} else {
if(!(parsed_entry = accesslog->parseLine(linestr, le))) {
debugLog("error: could not read line %s\n", linestr.c_str());
}
}
if(parsed_entry) {
if((!mintime || mintime <= le.timestamp) && (!settings.stop_time || settings.stop_time > le.timestamp)) {
queued_entries.push_back(new LogEntry(le));
total_entries++;
entries_read++;
//read at least the buffered row count if specified
//otherwise read all entries with the same time
if(buffer_rows) {
if(entries_read > buffer_rows) break;
} else {
if(read_timestamp && read_timestamp < le.timestamp) break;
}
read_timestamp = le.timestamp;
}
}
}
profile_stop();
unset_utc_tz();
if(queued_entries.empty() && seeklog != 0) {
if(total_entries==0) {
if(mintime != 0) {
logstalgia_quit("could not parse any entries in the specified time period");
} else {
logstalgia_quit("could not parse any entries");
}
}
//no more entries
end_reached = true;
return;
}
//.........这里部分代码省略.........
示例9: u2fhid_ping
void u2fhid_ping(const uint8_t *buf, uint32_t len)
{
debugLog(0, "", "u2fhid_ping");
send_u2fhid_msg(U2FHID_PING, buf, len);
}
示例10: promptRegister
static void promptRegister(bool request, const U2F_REGISTER_REQ *req)
{
#if 0
// Users find it confusing when a Ledger and a KeepKey are plugged in
// at the same time. To avoid that, we elect not to show a message in
// this case.
if (0 == memcmp(req->appId, BOGUS_APPID, U2F_APPID_SIZE)) {
layoutU2FDialog(request, "U2f Register",
"Another U2F device was used to register in this application.");
} else {
#else
{
#endif
const char *appname = "";
bool readable = getReadableAppId(req->appId, &appname);
layoutU2FDialog(request, "U2F Register",
readable
? "Do you want to register with %s?"
: "Do you want to register with this U2F application?\n\n%s",
appname);
}
}
void u2f_register(const APDU *a)
{
static U2F_REGISTER_REQ last_req;
const U2F_REGISTER_REQ *req = (U2F_REGISTER_REQ *)a->data;
if (!storage_isInitialized()) {
layout_warning_static("Cannot register u2f: not initialized");
send_u2f_error(U2F_SW_CONDITIONS_NOT_SATISFIED);
delay_ms(3000);
return;
}
// Validate basic request parameters
debugLog(0, "", "u2f register");
if (APDU_LEN(*a) != sizeof(U2F_REGISTER_REQ)) {
debugLog(0, "", "u2f register - badlen");
send_u2f_error(U2F_SW_WRONG_LENGTH);
return;
}
// If this request is different from last request, reset state machine
if (memcmp(&last_req, req, sizeof(last_req)) != 0) {
memcpy(&last_req, req, sizeof(last_req));
last_req_state = INIT;
}
// First Time request, return not present and display request dialog
if (last_req_state == INIT) {
// error: testof-user-presence is required
//buttonUpdate();
promptRegister(true, req);
last_req_state = REG;
}
// Still awaiting Keypress
if (last_req_state == REG) {
// error: testof-user-presence is required
send_u2f_error(U2F_SW_CONDITIONS_NOT_SATISFIED);
dialog_timeout = U2F_TIMEOUT;
return;
}
// Buttons said yes
if (last_req_state == REG_PASS) {
uint8_t data[sizeof(U2F_REGISTER_RESP) + 2];
U2F_REGISTER_RESP *resp = (U2F_REGISTER_RESP *)&data;
memzero(data, sizeof(data));
resp->registerId = U2F_REGISTER_ID;
resp->keyHandleLen = KEY_HANDLE_LEN;
// Generate keypair for this appId
const HDNode *node =
generateKeyHandle(req->appId, (uint8_t*)&resp->keyHandleCertSig);
if (!node) {
debugLog(0, "", "getDerivedNode Fail");
send_u2f_error(U2F_SW_WRONG_DATA); // error:bad key handle
return;
}
ecdsa_get_public_key65(node->curve->params, node->private_key,
(uint8_t *)&resp->pubKey);
memcpy(resp->keyHandleCertSig + resp->keyHandleLen,
U2F_ATT_CERT, sizeof(U2F_ATT_CERT));
uint8_t sig[64];
U2F_REGISTER_SIG_STR sig_base;
sig_base.reserved = 0;
memcpy(sig_base.appId, req->appId, U2F_APPID_SIZE);
memcpy(sig_base.chal, req->chal, U2F_CHAL_SIZE);
memcpy(sig_base.keyHandle, &resp->keyHandleCertSig, KEY_HANDLE_LEN);
memcpy(sig_base.pubKey, &resp->pubKey, U2F_PUBKEY_LEN);
if (ecdsa_sign(&nist256p1, HASHER_SHA2, U2F_ATT_PRIV_KEY, (uint8_t *)&sig_base, sizeof(sig_base), sig, NULL, NULL) != 0) {
send_u2f_error(U2F_SW_WRONG_DATA);
return;
}
//.........这里部分代码省略.........
示例11: json_at
void CSteamProto::ParsePollData(JSONNode *data)
{
JSONNode *node, *item = NULL;
std::string steamIds;
for (size_t i = 0; i < json_size(data); i++)
{
item = json_at(data, i);
if (item == NULL)
break;
node = json_get(item, "steamid_from");
ptrA steamId(mir_t2a(ptrT(json_as_string(node))));
node = json_get(item, "utc_timestamp");
time_t timestamp = atol(ptrA(mir_t2a(ptrT(json_as_string(node)))));
node = json_get(item, "type");
ptrT type(json_as_string(node));
if (!lstrcmpi(type, _T("saytext")) || !lstrcmpi(type, _T("emote")) ||
!lstrcmpi(type, _T("my_saytext")) || !lstrcmpi(type, _T("my_emote")))
{
MCONTACT hContact = FindContact(steamId);
if (!hContact)
continue;
node = json_get(item, "text");
ptrT text(json_as_string(node));
T2Utf szMessage(text);
if (_tcsstr(type, _T("my_")) == NULL)
{
PROTORECVEVENT recv = { 0 };
recv.timestamp = timestamp;
recv.szMessage = szMessage;
ProtoChainRecvMsg(hContact, &recv);
}
else
{
AddDBEvent(hContact, EVENTTYPE_MESSAGE, timestamp, DBEF_UTF | DBEF_SENT, (int)mir_strlen(szMessage) + 1, (PBYTE)(char*)szMessage);
}
}
else if (!lstrcmpi(type, _T("typing")))
{
MCONTACT hContact = FindContact(steamId);
if (hContact)
{
CallService(MS_PROTO_CONTACTISTYPING, hContact, (LPARAM)STEAM_TYPING_TIME);
}
}
else if (!lstrcmpi(type, _T("personastate")))
{
node = json_get(item, "persona_state");
int status = node ? SteamToMirandaStatus(json_as_int(node)) : -1;
if (IsMe(steamId))
{
node = json_get(item, "persona_name");
setTString("Nick", ptrT(json_as_string(node)));
if (status == -1 || status == ID_STATUS_OFFLINE)
continue;
if (status != m_iStatus)
{
debugLog(_T("CSteamProto::ParsePollData: Change own status to %i"), status);
int oldStatus = m_iStatus;
m_iStatus = m_iDesiredStatus = status;
ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, m_iStatus);
}
continue;
}
MCONTACT hContact = FindContact(steamId);
if (hContact == NULL)
continue; // probably this is info about random player playing on same server, so we ignore it
if (status != -1)
SetContactStatus(hContact, status);
node = json_get(item, "persona_name");
setTString(hContact, "Nick", ptrT(json_as_string(node)));
// todo: find difference between state changing and info changing
steamIds.append(steamId).append(",");
}
else if (!lstrcmpi(type, _T("personarelationship")))
{
node = json_get(item, "persona_state");
int state = json_as_int(node);
switch (state)
{
case 0:
{// removed
MCONTACT hContact = FindContact(steamId);
if (hContact)
{
ContactIsRemoved(hContact);
//.........这里部分代码省略.........
示例12: debugLog
void CSteamProto::PollingThread(void*)
{
debugLog(_T("CSteamProto::PollingThread: entering"));
ptrA token(getStringA("TokenSecret"));
ptrA umqId(getStringA("UMQID"));
UINT32 messageId = getDword("MessageID", 0);
//PollApi::PollResult pollResult;
int errors = 0;
bool breaked = false;
while (!isTerminated && !breaked && errors < POLLING_ERRORS_LIMIT)
{
PollRequest *request = new PollRequest(token, umqId, messageId, IdleSeconds());
//request->nlc = m_pollingConnection;
HttpResponse *response = request->Send(m_hNetlibUser);
delete request;
if (response == NULL || response->resultCode != HTTP_CODE_OK)
{
if (response != NULL)
delete response;
errors++;
continue;
}
else
errors = 0;
JSONROOT root(response->pData);
JSONNode *node = json_get(root, "error");
ptrT error(json_as_string(node));
if (!lstrcmpi(error, _T("OK")))
{
node = json_get(root, "messagelast");
messageId = json_as_int(node);
node = json_get(root, "messages");
JSONNode *nroot = json_as_array(node);
if (nroot != NULL)
{
ParsePollData(nroot);
json_delete(nroot);
}
m_pollingConnection = response->nlc;
}
else if (!lstrcmpi(error, _T("Timeout")))
{
continue;
}
/*else if (!lstrcmpi(error, _T("Not Logged On"))) // 'else' below will handle this error, we don't need this particular check right now
{
if (!IsOnline())
{
// need to relogin
debugLog(_T("CSteamProto::PollingThread: not logged on"));
SetStatus(ID_STATUS_OFFLINE);
}
breaked = true;
}*/
else
{
// something wrong
debugLog(_T("CSteamProto::PollingThread: %s (%d)"), error, response->resultCode);
// token has expired
if (response->resultCode == HTTP_CODE_UNAUTHORIZED)
delSetting("TokenSecret");
// too low timeout?
node = json_get(root, "sectimeout");
int timeout = json_as_int(node);
if (timeout < STEAM_API_TIMEOUT)
debugLog(_T("CSteamProto::PollingThread: Timeout is too low (%d)"), timeout);
breaked = true;
}
delete response;
}
setDword("MessageID", messageId);
m_hPollingThread = NULL;
debugLog(_T("CSteamProto::PollingThread: leaving"));
if (!isTerminated)
{
debugLog(_T("CSteamProto::PollingThread: unexpected termination; switching protocol to offline"));
SetStatus(ID_STATUS_OFFLINE);
}
}
示例13: repo_path
RCommitLog* RLogMill::fetchLog(std::string& log_format) {
RCommitLog* clog = 0;
//if the log format is not specified and 'logfile' is a directory, recursively look for a version control repository.
//this method allows for something strange like someone who having an svn repository inside a git repository
//(in which case it would pick the svn directory as it would encounter that first)
if(log_format.empty() && logfile != "-") {
try {
boost::filesystem::path repo_path(logfile);
if(is_directory(repo_path)) {
if(findRepository(repo_path, log_format)) {
logfile = repo_path.string();
}
}
} catch(boost::filesystem::filesystem_error& error) {
}
}
//we've been told what format to use
if(log_format.size() > 0) {
debugLog("log-format = %s", log_format.c_str());
if(log_format == "git") {
clog = new GitCommitLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
clog = new GitRawCommitLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
if(log_format == "hg") {
clog = new MercurialLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
if(log_format == "bzr") {
clog = new BazaarLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
if(log_format == "cvs") {
clog = new CVSEXPCommitLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
if(log_format == "custom") {
clog = new CustomLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
if(log_format == "apache") {
clog = new ApacheCombinedLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
if(log_format == "svn") {
clog = new SVNCommitLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
if(log_format == "cvs2cl") {
clog = new CVS2CLCommitLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
}
return 0;
}
// try different formats until one works
//git
debugLog("trying git...");
clog = new GitCommitLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
//mercurial
debugLog("trying mercurial...");
clog = new MercurialLog(logfile);
if(clog->checkFormat()) return clog;
delete clog;
//bzr
debugLog("trying bzr...");
clog = new BazaarLog(logfile);
//.........这里部分代码省略.........
示例14: getThreadTime
void IsoSurfacePolygonizer::polygonize(const Point3D &start
,double cellSize
,const Cube3D &boundingBox
,bool tetrahedralMode
,bool tetraOptimize4
,bool adaptiveCellSize
) {
const double startTime = getThreadTime();
m_cellSize = cellSize;
m_boundingBox = boundingBox;
m_delta = cellSize/(double)(RES*RES);
m_tetrahedralMode = tetrahedralMode;
m_tetraOptimize4 = tetraOptimize4;
m_adaptiveCellSize = adaptiveCellSize;
m_statistics.clear();
resetTables();
#ifdef _DEBUG
_standardRandomGenerator->setSeed(87);
#else
randomize();
#endif // _DEBUG
m_start = start;
for(int i = 0; i < 10; i++) {
m_start = findStartPoint(m_start);
if(putInitialCube()) {
break;
}
}
m_vertexArray.setCapacity( HASHSIZE);
m_cubesDoneSet.setCapacity(HASHSIZE);
m_edgeMap.setCapacity( HASHSIZE);
m_currentLevel = 0;
while(hasActiveCubes()) {
while(hasActiveCubes()) { // process active cubes until none left
const StackedCube cube = getActiveCube();
#ifdef DEBUG_POLYGONIZER
m_eval.markCurrentCube(cube);
#endif // DEBUG_POLYGONIZER
const bool done = addSurfaceVertices(cube);
if(cube.getLevel() == 0) {
// test six face directions, maybe add to stack:
testFace(cube.m_key.i-1 , cube.m_key.j , cube.m_key.k , cube, LFACE, LBN, LBF, LTN, LTF);
testFace(cube.m_key.i+1 , cube.m_key.j , cube.m_key.k , cube, RFACE, RBN, RBF, RTN, RTF);
testFace(cube.m_key.i , cube.m_key.j-1 , cube.m_key.k , cube, BFACE, LBN, LBF, RBN, RBF);
testFace(cube.m_key.i , cube.m_key.j+1 , cube.m_key.k , cube, TFACE, LTN, LTF, RTN, RTF);
testFace(cube.m_key.i , cube.m_key.j , cube.m_key.k-1 , cube, NFACE, LBN, LTN, RBN, RTN);
testFace(cube.m_key.i , cube.m_key.j , cube.m_key.k+1 , cube, FFACE, LBF, LTF, RBF, RTF);
}
if(!done) {
splitCube(cube);
}
}
m_faceCount[m_currentLevel] = (UINT)m_faceArray.size();
if(m_currentLevel>0) m_faceCount[m_currentLevel] -= m_faceCount[m_currentLevel-1];
prepareNextLevel();
m_currentLevel++;
}
saveStatistics(startTime);
flushFaceArray();
#ifdef DUMP_STATISTICS
debugLog(_T("%s\n"), m_statistics.toString().cstr());
#endif
#ifdef DUMP_CORNERMAP
dumpCornerMap();
#endif
#ifdef DUMP_EDGEMAP
dumpEdgeMap();
#endif
#ifdef DUMP_VERTEXARRAY
dumpVertexArray();
#endif
#ifdef DUMP_FACEARRAY
dumpFaceArray();
#endif
}
示例15: debugLogA
INT_PTR GGPROTO::getavatarinfo(WPARAM wParam, LPARAM lParam)
{
PROTO_AVATAR_INFORMATION *pai = (PROTO_AVATAR_INFORMATION *)lParam;
pai->filename[0] = 0;
pai->format = PA_FORMAT_UNKNOWN;
uin_t uin = (uin_t)getDword(pai->hContact, GG_KEY_UIN, 0);
if (!uin) {
debugLogA("getavatarinfo(): Incoming request for avatar information. No uin found. return GAIR_NOAVATAR");
return GAIR_NOAVATAR;
}
if (!getByte(GG_KEY_ENABLEAVATARS, GG_KEYDEF_ENABLEAVATARS)) {
debugLogA("getavatarinfo(): Incoming request for avatar information. GG_KEY_ENABLEAVATARS == 0. return GAIR_NOAVATAR");
return GAIR_NOAVATAR;
}
//directly check if contact has protected user avatar set by AVS, and if yes return it as protocol avatar
DBVARIANT dbv;
if (!db_get_ts(pai->hContact, "ContactPhoto", "Backup", &dbv)) {
if ((mir_tstrlen(dbv.ptszVal)>0) && db_get_b(pai->hContact, "ContactPhoto", "Locked", 0)){
debugLogA("getavatarinfo(): Incoming request for avatar information. Contact has assigned Locked ContactPhoto. return GAIR_SUCCESS");
_tcscpy_s(pai->filename, _countof(pai->filename) ,dbv.ptszVal);
pai->format = ProtoGetAvatarFormat(pai->filename);
db_free(&dbv);
return GAIR_SUCCESS;
}
db_free(&dbv);
}
if (!getByte(pai->hContact, GG_KEY_AVATARREQUESTED, GG_KEYDEF_AVATARREQUESTED)) {
requestAvatarInfo(pai->hContact, 1);
if ((wParam & GAIF_FORCE) != 0) {
debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. requestAvatarInfo() fired. return GAIR_WAITFOR", uin);
return GAIR_WAITFOR;
} else {
debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. requestAvatarInfo() fired. return GAIR_NOAVATAR", uin);
return GAIR_NOAVATAR;
}
}
pai->format = getByte(pai->hContact, GG_KEY_AVATARTYPE, GG_KEYDEF_AVATARTYPE);
ptrA AvatarHash(NULL);
ptrA AvatarURL( getStringA(pai->hContact, GG_KEY_AVATARURL));
ptrA AvatarTs( getStringA(pai->hContact, GG_KEY_AVATARTS));
if (AvatarURL != NULL && AvatarTs != NULL) {
char *AvatarName = strrchr(AvatarURL, '/');
AvatarName++;
char AvatarNameWithTS[128];
mir_snprintf(AvatarNameWithTS, "%s%s", AvatarName, AvatarTs);
AvatarHash = gg_avatarhash(AvatarNameWithTS);
}
ptrA AvatarSavedHash( getStringA(pai->hContact, GG_KEY_AVATARHASH));
if (AvatarHash != NULL && AvatarSavedHash != NULL) {
getAvatarFilename(pai->hContact, pai->filename, _countof(pai->filename));
if (!mir_strcmp(AvatarHash, AvatarSavedHash)) {
if (_taccess(pai->filename, 0) == 0){
debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. Avatar hash unchanged. return GAIR_SUCCESS", uin);
return GAIR_SUCCESS;
}
requestAvatarTransfer(pai->hContact, AvatarURL);
debugLog(_T("getavatarinfo(): Incoming request for avatar information. uin=%d. Avatar hash unchanged but file %s does not exist. errno=%d: %s. requestAvatarTransfer() fired. return GAIR_WAITFOR"), uin, pai->filename, errno, strerror(errno));
return GAIR_WAITFOR;
}
if ((wParam & GAIF_FORCE) != 0) {
if (_tremove(pai->filename) != 0){
debugLog(_T("getavatarinfo(): refresh. _tremove 1 file %s error. errno=%d: %s"), pai->filename, errno, strerror(errno));
TCHAR error[512];
mir_sntprintf(error, TranslateT("Cannot remove old avatar file before refresh. ERROR: %d: %s\n%s"), errno, _tcserror(errno), pai->filename);
showpopup(m_tszUserName, error, GG_POPUP_ERROR);
}
setString(pai->hContact, GG_KEY_AVATARHASH, AvatarHash);
requestAvatarTransfer(pai->hContact, AvatarURL);
debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. Avatar hash changed, requestAvatarTransfer() fired. return GAIR_WAITFOR", uin);
return GAIR_WAITFOR;
}
}
else if ((wParam & GAIF_FORCE) != 0) {
if (AvatarHash == NULL && AvatarSavedHash != NULL) {
getAvatarFilename(pai->hContact, pai->filename, _countof(pai->filename));
if (_tremove(pai->filename) != 0){
debugLog(_T("getavatarinfo(): delete. _tremove file %s error. errno=%d: %s"), pai->filename, errno, strerror(errno));
TCHAR error[512];
mir_sntprintf(error, TranslateT("Cannot remove old avatar file. ERROR: %d: %s\n%s"), errno, _tcserror(errno), pai->filename);
showpopup(m_tszUserName, error, GG_POPUP_ERROR);
}
delSetting(pai->hContact, GG_KEY_AVATARHASH);
delSetting(pai->hContact, GG_KEY_AVATARURL);
delSetting(pai->hContact, GG_KEY_AVATARTYPE);
debugLogA("getavatarinfo(): Incoming request for avatar information. Contact %d deleted avatar. return GAIR_NOAVATAR", uin);
}
else if (AvatarHash != NULL && AvatarSavedHash == NULL) {
setString(pai->hContact, GG_KEY_AVATARHASH, AvatarHash);
requestAvatarTransfer(pai->hContact, AvatarURL);
debugLogA("getavatarinfo(): Incoming request for avatar information. Contact %d set avatar. requestAvatarTransfer() fired. return GAIR_WAITFOR", uin);
return GAIR_WAITFOR;
}
//.........这里部分代码省略.........