Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef anl_func_entry_INCLUDED
00038 #define anl_func_entry_INCLUDED
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 #include <array_set.h>
00056
00057 class ANL_PRAGMA_ATTRIBUTE;
00058 typedef ARRAY_SET<ANL_PRAGMA_ATTRIBUTE*> DIR_ENTRIES;
00059
00060 class ANL_FUNC_ENTRY
00061 {
00062 private:
00063
00064 INT32 _construct_level;
00065 WN *_pu;
00066 MEM_POOL *_pool;
00067 W2CF_TRANSLATOR *_w2cf;
00068 WN_MAP _id_map;
00069 COUNTER *_next_id;
00070 DIR_ENTRIES _dir_entries;
00071
00072 void _Push_Construct_Level(ANL_CBUF *cbuf);
00073 void _Pop_Construct_Level();
00074
00075 public:
00076
00077
00078
00079 ANL_FUNC_ENTRY(WN *pu,
00080 MEM_POOL *pool,
00081 W2CF_TRANSLATOR *w2cf,
00082 WN_MAP id_map,
00083 COUNTER *next_id):
00084 _construct_level(0),
00085 _pu(pu),
00086 _pool(pool),
00087 _w2cf(w2cf),
00088 _id_map(id_map),
00089 _next_id(next_id),
00090 _dir_entries(pool)
00091 {}
00092
00093 ~ANL_FUNC_ENTRY();
00094
00095
00096
00097
00098 W2CF_TRANSLATOR *Pu_Translator() {return _w2cf;}
00099 WN *Pu_Tree() {return _pu;}
00100 COUNTER *Next_Construct_Id() {return _next_id;}
00101 DIR_ENTRIES *Dir_Entries() {return &_dir_entries;}
00102
00103 void Get_Pragma_Srcpos_Range(WN *apragma,
00104 ANL_SRCPOS *min,
00105 ANL_SRCPOS *max);
00106
00107
00108
00109
00110 void Set_Construct_Id(WN *construct, INT64 id);
00111
00112 void Emit_Nested_Original_Constructs(ANL_CBUF *cbuf,
00113 WN *from_stmt,
00114 WN *to_stmt);
00115
00116 void Emit_Dir_Entries(ANL_CBUF *cbuf,
00117 INT64 for_construct_id,
00118 INT32 for_construct_level,
00119 BOOL (*do_emit)(ANL_PRAGMA_ATTRIBUTE *dir,
00120 INT32 construct_level));
00121
00122 void Emit_Original_Construct(ANL_FILE_MNGR *outp_file);
00123
00124
00125 };
00126
00127 #endif