File: feedback2.c

package info (click to toggle)
pymol 2.5.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 42,288 kB
  • sloc: cpp: 476,472; python: 76,538; ansic: 29,510; javascript: 6,792; sh: 47; makefile: 24
file content (121 lines) | stat: -rw-r--r-- 2,522 bytes parent folder | download | duplicates (12)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include"os_std.h"
#include"const.h"
#include"vla.h"
#include"feedback2.h"

typedef struct {
  char *Stack;
  int Depth;
} Cfeedback_;

char *feedback_Mask;

Cfeedback_ Feedbk;

static int feedback_init = true;

void feedback_Init(void)
{
  int a;
  Cfeedback_ *I=&Feedbk;

  if(feedback_init) {
    feedback_init=false;

    
    vla_malloc(I->Stack,char,FB_total);
    I->Depth=0;
    feedback_Mask = I->Stack;
    
    for(a=0;a<FB_total;a++) {
      feedback_Mask[a] = FB_results | FB_errors | FB_warnings | FB_actions | FB_details;
      /*	  | FB_everything;*/
    }  
  }

}

void feedback_Free(void)
{
  Cfeedback_ *I=&Feedbk;

  vla_free(I->Stack);
}

/* below we'll presume that any standard feedback on the feedback
module itself will be effected at the Python level, since feedback
levels will be changed as a matter of course inside of PyMOL in order
to quietly perform complex actions.  */

void feedback_Push(void)
{
  Cfeedback_ *I=&Feedbk;
  int a;
  I->Depth++;
  vla_check(I->Stack,char,(I->Depth+1)*FB_total);
  feedback_Mask=I->Stack+(I->Depth*FB_total);
  for(a=0;a<FB_total;a++) {
    feedback_Mask[a] = feedback_Mask[a-FB_total];
  }
  PRINTFD(FB_feedback_) " feedback: push\n" ENDFD;
}

void feedback_Pop(void)
{
  Cfeedback_ *I=&Feedbk;
  if(I->Depth) {
    I->Depth--;
    feedback_Mask=I->Stack+(I->Depth*FB_total);
  }
  PRINTFD(FB_feedback_) " feedback: pop\n" ENDFD;
}

void feedback_SetMask(unsigned int sysmod,unsigned char mask)
{
  int a;
  if((sysmod>0)&&(sysmod<FB_total)) {
    feedback_Mask[sysmod] = mask;
  } else if(!sysmod) {
    for(a=0;a<FB_total;a++) {
      feedback_Mask[a] = mask;
    }
  }
  PRINTFD(FB_feedback_)
    " feedbackSetMask: sysmod %d, mask 0x%02X\n",sysmod,mask 
    ENDFD;
}


void feedback_Disable(unsigned int sysmod,unsigned char mask)
{
  int a;
  if((sysmod>0)&&(sysmod<FB_total)) {
    feedback_Mask[sysmod] = feedback_Mask[sysmod] & (0xFF-mask);
  } else if(!sysmod) {
    for(a=0;a<FB_total;a++) {
      feedback_Mask[a] = feedback_Mask[a] & (0xFF-mask);
    }
  }
  PRINTFD(FB_feedback_)
    " feedbackDisable: sysmod %d, mask 0x%02X\n",sysmod,mask 
    ENDFD;

}

void feedback_Enable(unsigned int sysmod,unsigned char mask)
{
  int a;
  if((sysmod>0)&&(sysmod<FB_total)) {
    feedback_Mask[sysmod] = feedback_Mask[sysmod] | mask;
  } else if(!sysmod) {
    for(a=0;a<FB_total;a++) {
      feedback_Mask[a] = feedback_Mask[a] | mask;
    }
  }
  PRINTFD(FB_feedback_)
    " feedbackEnable: sysmod %d, mask 0x%02X\n",sysmod,mask 
    ENDFD;
  
}