summaryrefslogtreecommitdiff
path: root/web/yacco2/o2linker/o2linker_defs.cpp
blob: 019c43c330a27fbb7c686a07fa1f81a7dc222c39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*71:*/
//line 90 "/usr/local/yacco2/o2linker/o2linker_defs.w"

#include "o2linker.h"
/*68:*/
//line 10 "/usr/local/yacco2/o2linker/o2linker_defs.w"

extern void PRINT_CALLED_THREAD_LIST(AST*Node,std::ofstream*Ow_linker_file,int Idx)
{
char big_buf_[BIG_BUFFER_32K];
thread_attributes*ta= (thread_attributes*)AST::content(*Node);
KCHARP w_called_threads= 
"\\Linkercalledthreads{%s}{%i}";
char xlate_gfile[Max_cweb_item_size];
XLATE_SYMBOLS_FOR_cweave(ta->thread_name_->c_string()->c_str(),xlate_gfile);
int x= sprintf(big_buf_
,w_called_threads
,xlate_gfile
,Idx
);
(*Ow_linker_file).write(big_buf_,x);
(*Ow_linker_file)<<endl;
KCHARP w_called_threads_index= 
"@.%s@>";
x= sprintf(big_buf_
,w_called_threads_index
,xlate_gfile
);
(*Ow_linker_file).write(big_buf_,x);
(*Ow_linker_file)<<endl;
}

yacco2::functor_result_type
prt_called_thread_list_ast_functor::operator()(yacco2::ast_base_stack*Stk_env){
stk_env_= Stk_env;
srec_= stk_env_->cur_stk_rec_;
idx_= stk_env_->idx_;
yacco2::INT pidx= idx_-1;
cnode_= srec_->node_;
if(pidx<=0)goto prt_prefix;
{
ast_base_stack::s_rec*psrec= stk_env_->stk_rec(pidx);
}
prt_prefix:
/*69:*/
//line 75 "/usr/local/yacco2/o2linker/o2linker_defs.w"

LOCK_MUTEX(yacco2::TRACE_MU);
if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Acquired trace mu"<<std::endl;
}

/*:69*/
//line 48 "/usr/local/yacco2/o2linker/o2linker_defs.w"

yacco2::INT no_lt(0);
for(yacco2::INT x= 0;x<=idx_;++x)
if(stk_env_->stk_rec(x)->act_==ast_base_stack::left)++no_lt;
/*70:*/
//line 83 "/usr/local/yacco2/o2linker/o2linker_defs.w"

if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Releasing trace mu"<<std::endl;
}
UNLOCK_MUTEX(yacco2::TRACE_MU);

/*:70*/
//line 52 "/usr/local/yacco2/o2linker/o2linker_defs.w"

call_prt_func:
(*prt_funct_)(cnode_,ow_linker_file_,no_lt+1);
return accept_node;
}

prt_called_thread_list_ast_functor::
prt_called_thread_list_ast_functor(PFF Func)
:prt_funct_(Func),cnt_(0),ow_linker_file_(0){}

void
prt_called_thread_list_ast_functor::
reset_cnt(){
cnt_= 0;
}
void prt_called_thread_list_ast_functor::o_file(std::ofstream*Ow_linker_file){
ow_linker_file_= Ow_linker_file;
}

/*:68*/
//line 92 "/usr/local/yacco2/o2linker/o2linker_defs.w"

//line 1 "/usr/local/yacco2/o2linker/pms.w"







/*:71*/