| Index: experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc
|
| diff --git a/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc b/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc
|
| deleted file mode 100644
|
| index 230faf587fc66ff58bf9af70d3266597a6ba12aa..0000000000000000000000000000000000000000
|
| --- a/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc
|
| +++ /dev/null
|
| @@ -1,169 +0,0 @@
|
| -#include "lightsymbols.h"
|
| -
|
| -LightSymbol::PLightSymbol LightSymbol::lsFrames[1000];
|
| -HANDLE LightSymbol::handleFrames[1000];
|
| -SZ* LightSymbol::fileNames;
|
| -bool LightSymbol::busted = false;
|
| -
|
| -
|
| -LightSymbol::LightSymbol(const char* sym, int fileId, int lineNumber) {
|
| - while (busted) {
|
| - busted = busted;
|
| - }
|
| - this->sym = sym;
|
| - this->fileId = fileId;
|
| - this->lineNumber = lineNumber;
|
| -
|
| - LightSymbol** container = getThreadFrameContainer();
|
| -
|
| - parentFrame = *container;
|
| - *container = this; // shortcut for get+set current frame
|
| -}
|
| -
|
| -LightSymbol::~LightSymbol() {
|
| -
|
| -// assert if (GetCurrentFrame() != this) {
|
| -
|
| - SetCurrentFrame(parentFrame);
|
| -}
|
| -
|
| -bool LightSymbol::GetCallStack(char* sz, int len, const char* separator) {
|
| - LightSymbol* ls = GetCurrentFrame();
|
| - if (ls == 0) {
|
| - return false;
|
| - } else {
|
| - return ls->GetCallStackCore(sz, len, separator);
|
| - }
|
| -}
|
| -
|
| -LightSymbol** LightSymbol::getThreadFrameContainer() {
|
| - //pthread_t t = pthread_self();
|
| - HANDLE h = (HANDLE)GetCurrentThreadId(); // f, keep handle so I don't have to recompie tyhe whole app; update toi DWORD one I really need changes in header file
|
| - int i = 0;
|
| - while (handleFrames[i] != h && handleFrames[i] != NULL && i < 1000 - 1) {
|
| - i++;
|
| - }
|
| - if (handleFrames[i] == h) {
|
| - return &lsFrames[i];
|
| - }
|
| - handleFrames[i] = h;
|
| - return &lsFrames[i];
|
| -}
|
| -
|
| -bool LightSymbol::GetCallStackCore(char* sz, int len, const char* separator) const {
|
| - if (busted) {
|
| - return false;
|
| - }
|
| - if (fileNames == NULL) { // f multithreading synchr
|
| - FILE* log = fopen("d:\\edisonn\\log.txt", "wt");
|
| -
|
| - if (log) { fprintf(log, "build\n");fflush(log); }
|
| -
|
| - char szLine[10000];
|
| - FILE* file = fopen(getenv(LIGHT_SYMBOLS_FILE), "rt");
|
| - if (file == NULL) {
|
| - busted = true;
|
| - return false;
|
| - }
|
| -
|
| - const char* trimed;
|
| -
|
| - // count number of lines
|
| - int id;
|
| - int entries = 0;
|
| - while (true) {
|
| - id = -1;
|
| - if (fscanf(file, "%i", &id) == 0) break;
|
| - if (id == -1) break;
|
| - if (entries <= id + 1) {
|
| - entries = id + 1;
|
| - }
|
| - *szLine = '\0';
|
| - fgets(szLine, 10000, file);
|
| - trimed = trim(szLine);
|
| - }
|
| -
|
| - fclose(file);
|
| - file = fopen(getenv(LIGHT_SYMBOLS_FILE), "rt");
|
| - if (file == NULL) {
|
| - busted = true;
|
| - return false; // f this
|
| - }
|
| -
|
| - if (log) { fprintf(log, "entries: %i\n", entries);fflush(log); }
|
| -
|
| - SZ* __fileNames = new SZ[entries];
|
| -
|
| - while (true) {
|
| - id = -1;
|
| - if (fscanf(file, "%i", &id) == 0) break;
|
| - if (id == -1) break;
|
| - *szLine = '\0';
|
| - fgets(szLine, 10000, file);
|
| - trimed = trim(szLine);
|
| -
|
| - if (log) { fprintf(log, "%i, %s", id, trimed); }
|
| -
|
| - // ass u me the file is correct
|
| -
|
| - __fileNames[id] = new char[strlen(trimed) + 1];
|
| - if (log) { fprintf(log, " - ");fflush(log); }
|
| - strcpy(__fileNames[id], trimed);
|
| - if (log) { fprintf(log, " _ \n");fflush(log); }
|
| - }
|
| - fclose(file);
|
| - fileNames = __fileNames;
|
| - if (log) { fclose(log); }
|
| - }
|
| -
|
| - const LightSymbol* ls = this;
|
| - char* szOut = sz;
|
| - // f security
|
| - while (ls != NULL && len > 1000) {
|
| - sprintf(szOut, "%s, %s:%i%s", ls->sym, fileNames[ls->fileId], ls->lineNumber, separator);
|
| - while (*szOut && len > 0) {
|
| - szOut++;
|
| - len--;
|
| - }
|
| - ls = ls->parentFrame;
|
| - }
|
| -
|
| - int more = 0;
|
| - while (ls != NULL) {
|
| - ls = ls->parentFrame;
|
| - }
|
| -
|
| - if (more > 0) {
|
| - sprintf(szOut, " ... %i more frames. allocate more memory!", more);
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -LightSymbol* LightSymbol::GetCurrentFrame() {
|
| - return *getThreadFrameContainer();
|
| -}
|
| -
|
| -void LightSymbol::SetCurrentFrame(LightSymbol* ls) {
|
| - *getThreadFrameContainer() = ls;
|
| -}
|
| -
|
| -const char* LightSymbol::trim(char* sz) {
|
| - if (sz == NULL) return NULL;
|
| -
|
| - while (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')
|
| - sz++;
|
| -
|
| - if (*sz == '\0') return sz;
|
| -
|
| - int len = strlen(sz);
|
| - char* start = sz;
|
| - sz = sz + (len - 1);
|
| -
|
| - while (sz >= start && (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')) {
|
| - *sz = '\0';
|
| - sz--;
|
| - }
|
| -
|
| - return start;
|
| -}
|
|
|