skia2/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.h

51 lines
1.0 KiB
C
Raw Normal View History

#ifndef __LIGHT_SYMBOLS__
#define __LIGHT_SYMBOLS__
#define LS_TRACE(functionName,fileId,lineNumber) LightSymbol __lstr(functionName,fileId,lineNumber);
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//#include <pthread.h>
#include <Windows.h>
typedef char* SZ;
#define LIGHT_SYMBOLS_FILE "LIGHT_SYMBOLS_FILE"
class LightSymbol {
const char* sym;
int fileId;
int lineNumber;
LightSymbol* parentFrame;
typedef LightSymbol* PLightSymbol;
static PLightSymbol lsFrames[1000];
static HANDLE handleFrames[1000];
static SZ* fileNames;
static bool busted;
public:
LightSymbol(const char* sym, int fileId, int lineNumber);
~LightSymbol();
static bool GetCallStack(char* sz, int len, const char* separator);
private:
static LightSymbol** getThreadFrameContainer();
bool GetCallStackCore(char* sz, int len, const char* separator) const ;
static LightSymbol* GetCurrentFrame() ;
static void SetCurrentFrame(LightSymbol* ls) ;
static const char* trim(char* sz) ;
};
#endif