1b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#ifndef __LIGHT_SYMBOLS__
2b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#define __LIGHT_SYMBOLS__
3b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#define LS_TRACE(functionName,fileId,lineNumber) LightSymbol __lstr(functionName,fileId,lineNumber);
4b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
5b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#include <stdio.h>
6b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#include <string.h>
7b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#include <stdlib.h>
8b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
9b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com//#include <pthread.h>
100d9e3da8bb853c5ed96d13646a4264eb57b13a2abungeman@google.com#include <windows.h>
11b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
12b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.comtypedef char* SZ;
13b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
14b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#define LIGHT_SYMBOLS_FILE "LIGHT_SYMBOLS_FILE"
15b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
16b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.comclass LightSymbol {
17b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  const char* sym;
18b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  int fileId;
19b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  int lineNumber;
20b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
21b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  LightSymbol* parentFrame;
22b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
23b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  typedef LightSymbol* PLightSymbol;
24b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
25b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static PLightSymbol lsFrames[1000];
26b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static HANDLE handleFrames[1000];
27b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static SZ* fileNames;
28b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static bool busted;
29b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
30b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.compublic:
31b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  LightSymbol(const char* sym, int fileId, int lineNumber);
32b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
33b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  ~LightSymbol();
34b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
35b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static bool GetCallStack(char* sz, int len, const char* separator);
36b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
37b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.comprivate:
38b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
39b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static LightSymbol** getThreadFrameContainer();
40b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
41b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  bool GetCallStackCore(char* sz, int len, const char* separator) const ;
42b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
43b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static LightSymbol* GetCurrentFrame() ;
44b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
45b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static void SetCurrentFrame(LightSymbol* ls) ;
46b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
47b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com  static const char* trim(char* sz) ;
48b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com};
49b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com
50b89a03c890668f98d9f8b269b6ad00824409435bskia.committer@gmail.com#endif
51