blob: 53c2f3653f6d1e4b8963691a1aa324458df485bf [file] [log] [blame]
skia.committer@gmail.comb89a03c2012-12-22 02:02:33 +00001#ifndef __LIGHT_SYMBOLS__
2#define __LIGHT_SYMBOLS__
3#define LS_TRACE(functionName,fileId,lineNumber) LightSymbol __lstr(functionName,fileId,lineNumber);
4
5#include <stdio.h>
6#include <string.h>
7#include <stdlib.h>
8
9//#include <pthread.h>
10#include <Windows.h>
11
12typedef char* SZ;
13
14#define LIGHT_SYMBOLS_FILE "LIGHT_SYMBOLS_FILE"
15
16class LightSymbol {
17 const char* sym;
18 int fileId;
19 int lineNumber;
20
21 LightSymbol* parentFrame;
22
23 typedef LightSymbol* PLightSymbol;
24
25 static PLightSymbol lsFrames[1000];
26 static HANDLE handleFrames[1000];
27 static SZ* fileNames;
28 static bool busted;
29
30public:
31 LightSymbol(const char* sym, int fileId, int lineNumber);
32
33 ~LightSymbol();
34
35 static bool GetCallStack(char* sz, int len, const char* separator);
36
37private:
38
39 static LightSymbol** getThreadFrameContainer();
40
41 bool GetCallStackCore(char* sz, int len, const char* separator) const ;
42
43 static LightSymbol* GetCurrentFrame() ;
44
45 static void SetCurrentFrame(LightSymbol* ls) ;
46
47 static const char* trim(char* sz) ;
48};
49
50#endif