StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
rtsErrMsg.h
1 #ifndef _RTS_ERR_MSG_H
2 #define _RTS_ERR_MSG_H
3 #include "iccp.h"
4 #include <stdio.h>
5 
6 #define MSG_ERR(MSGP,STRING,A1,A2,A3,A4,A5) \
7  MSG_ERR_LOCAL(MSGP, __FILE__, STRING, __LINE__, A1, A2, A3, A4, A5)
8 
9  // payload
10  // line#|file|string
11  //
12  //
13 
14 #if defined(__linux__) || defined(__APPLE__)
15 inline void MSG_ERR_LOCAL(ic_msg *msg,
16  char *file,
17  char *str,
18  long line,
19  long a1,
20  long a2,
21  long a3,
22  long a4,
23  long a5)
24 {
25  char *c = (char *)&msg->ld;
26  char buff[255];
27 
28  sprintf(buff, "%ld|%s|",line,file);
29  int i = strlen(buff);
30  sprintf(&buff[i], str, a1, a2, a3, a4, a5);
31 
32  for(int i=0;i<107;i+=4)
33  {
34 #ifdef RTS_LITTLE_ENDIAN
35  c[i] = buff[i+3];
36  c[i+1] = buff[i+2];
37  c[i+2] = buff[i+1];
38  c[i+3] = buff[i];
39 #else
40  c[i] = buff[i];
41  c[i+1] = buff[i+1];
42  c[i+2] = buff[i+2];
43  c[i+3] = buff[i+3];
44 #endif
45  }
46  c[108] = 0;
47 
48  msg->head.valid_words = (strlen(c) + 7) / 4;
49 }
50 #else
51 inline void MSG_ERR_LOCAL(ic_msg *msg,
52  char *file,
53  char *str,
54  int line,
55  int a1,
56  int a2,
57  int a3,
58  int a4,
59  int a5)
60 {
61  char *c = (char *)&msg->ld;
62  char buff[255];
63 
64  sprintf(buff, "%d|%s|",line,file);
65  int i = strlen(buff);
66  sprintf(&buff[i], str, a1, a2, a3, a4, a5);
67 
68  strncpy(c,buff,106);
69  c[107] = 0;
70  msg->head.valid_words = (strlen(c) + 7) / 4;
71 }
72 #endif
73 
74 #endif
Definition: iccp.h:685