1 /*!
2  * \file        sccp_cli_table.h
3  * \brief       SCCP CLI Table Macro Header
4  * \author      Diederik de Groot <ddegroot [at] users.sf.net>
5  * \note        This program is free software and may be modified and distributed under the terms of the GNU Public License.
6  *              See the LICENSE file at the top of the source tree.
7  *
8  */
9 #ifndef DOXYGEN_SHOULD_SKIP_THIS
10 
11 #ifndef _CLI_AMI_TABLE_INCLUDE
12 #define _CLI_AMI_TABLE_INCLUDE
13 
14 #define _CLI_AMI_TABLE_LIST_LOCK(...) CLI_AMI_TABLE_LIST_LOCK(__VA_ARGS__)
15 #define _CLI_AMI_TABLE_LIST_ITERATOR(...) CLI_AMI_TABLE_LIST_ITERATOR(__VA_ARGS__)
16 #define _CLI_AMI_TABLE_LIST_UNLOCK(...) CLI_AMI_TABLE_LIST_UNLOCK(__VA_ARGS__)
17 
18 #define MERGE2_(_a,_b) _a##_b
19 #define UNIQUE_VAR(_a,_b) MERGE2_(_a,_b)
20 
21 #		define AMI_OUTPUT_PARAM(param, width, fmt, ...)                               \
22 			{                                                                      \
23 				char camelParam[width + 1];                                    \
24 				CLI_AMI_CAMEL_PARAM (param, camelParam);                       \
25 				astman_append (s, "%s: " fmt "\r\n", camelParam, __VA_ARGS__); \
26 				local_line_total++;                                            \
27 			}
28 #endif
29 	// =========== Code To be generated by include file ===============
30 pbx_cli(fd, "\n");
31 #ifdef CLI_AMI_TABLE_LIST_ITER_TYPE
32 CLI_AMI_TABLE_LIST_ITER_TYPE *CLI_AMI_TABLE_LIST_ITER_VAR = NULL;
33 #endif
34 
35 #ifndef CLI_AMI_TABLE_BEFORE_ITERATION
36 #define CLI_AMI_TABLE_BEFORE_ITERATION
37 #endif
38 #ifndef CLI_AMI_TABLE_AFTER_ITERATION
39 #define CLI_AMI_TABLE_AFTER_ITERATION
40 #endif
41 
42 	/* print headers */
43 int UNIQUE_VAR(table_width_, CLI_AMI_TABLE_NAME) = 0;
44 int UNIQUE_VAR(table_entries_, CLI_AMI_TABLE_NAME) = 0;
45 const char *UNIQUE_VAR(id, CLI_AMI_TABLE_NAME);
46 char UNIQUE_VAR(idtext, CLI_AMI_TABLE_NAME)[256] = "";
47 
48 #define CLI_AMI_TABLE_FIELD(_a,_b,_c,_d,_e) UNIQUE_VAR(table_width_,CLI_AMI_TABLE_NAME)=UNIQUE_VAR(table_width_,CLI_AMI_TABLE_NAME) + _d+ 1;
49 #define CLI_AMI_TABLE_UTF8_FIELD CLI_AMI_TABLE_FIELD
50 CLI_AMI_TABLE_FIELDS
51 #undef CLI_AMI_TABLE_FIELD
52 if (!s)
53 {
54 pbx_cli(fd, "+--- %s %.*s+\n", STRINGIFY(CLI_AMI_TABLE_NAME), UNIQUE_VAR(table_width_, CLI_AMI_TABLE_NAME) - (int) strlen(STRINGIFY(CLI_AMI_TABLE_NAME)) - 4, "------------------------------------------------------------------------------------------------------------------------------------------------------------------");
55 
56 pbx_cli(fd, "| ");
57 #define CLI_AMI_TABLE_FIELD(_a,_b,_c,_d,_e) pbx_cli(fd,"%*s ",-_d,#_a);
58 CLI_AMI_TABLE_FIELDS
59 #undef CLI_AMI_TABLE_FIELD
60     pbx_cli(fd, "|\n");
61 
62 pbx_cli(fd, "+ ");
63 #define CLI_AMI_TABLE_FIELD(_a,_b,_c,_d,_e) pbx_cli(fd,"%." STRINGIFY(_d) "s ",	"==================================================================================================================================================================");
64 CLI_AMI_TABLE_FIELDS
65 #undef CLI_AMI_TABLE_FIELD
66     pbx_cli(fd, "+\n");
67 } else {
68 	astman_append(s, "Event: TableStart\r\n");
69 	local_line_total++;
70 	astman_append(s, "TableName: %s\r\n", STRINGIFY(CLI_AMI_TABLE_NAME));
71 	local_line_total++;
72 
73 	UNIQUE_VAR(id, CLI_AMI_TABLE_NAME) = astman_get_header(m, "ActionID");
74 	if (!pbx_strlen_zero(UNIQUE_VAR(id, CLI_AMI_TABLE_NAME))) {
75 		snprintf(UNIQUE_VAR(idtext, CLI_AMI_TABLE_NAME), sizeof(UNIQUE_VAR(idtext, CLI_AMI_TABLE_NAME)), "ActionID: %s\r\n", UNIQUE_VAR(id, CLI_AMI_TABLE_NAME));
76 		astman_append(s, "%s\r\n", UNIQUE_VAR(idtext, CLI_AMI_TABLE_NAME));
77 		local_line_total++;
78 	} else {
79 	        astman_append(s, "\r\n");
80 	}
81 }
82 
83 	/* iterator through list */
84 if (!s) {
85 #define CLI_AMI_TABLE_FIELD(_a,_b,_c,_d,_e) pbx_cli(fd,"%" _b #_c " ",_e);
86 #undef CLI_AMI_TABLE_UTF8_FIELD
87 #define CLI_AMI_TABLE_UTF8_FIELD(_a,_b,_c,_d,_e) pbx_cli(fd,"%-*" #_c " ", sccp_utf8_columnwidth(_d,_e), _e);
88 #ifdef CLI_AMI_TABLE_LIST_ITERATOR
89 	_CLI_AMI_TABLE_LIST_LOCK(CLI_AMI_TABLE_LIST_ITER_HEAD);
_CLI_AMI_TABLE_LIST_ITERATOR(CLI_AMI_TABLE_LIST_ITER_HEAD,CLI_AMI_TABLE_LIST_ITER_VAR,list)90 	_CLI_AMI_TABLE_LIST_ITERATOR(CLI_AMI_TABLE_LIST_ITER_HEAD, CLI_AMI_TABLE_LIST_ITER_VAR, list) {
91 #else
92 	CLI_AMI_TABLE_ITERATOR {
93 #endif
94 		CLI_AMI_TABLE_BEFORE_ITERATION pbx_cli(fd, "| ");
95 		CLI_AMI_TABLE_FIELDS pbx_cli(fd, "|\n");
96 	CLI_AMI_TABLE_AFTER_ITERATION}
97 #ifdef CLI_AMI_TABLE_LIST_ITERATOR
98 	_CLI_AMI_TABLE_LIST_UNLOCK(CLI_AMI_TABLE_LIST_ITER_HEAD);
99 #endif
100 #undef CLI_AMI_TABLE_FIELD
101 #undef CLI_AMI_TABLE_UTF8_FIELD
102 #define CLI_AMI_TABLE_UTF8_FIELD CLI_AMI_TABLE_FIELD
103 } else {
104 #define CLI_AMI_TABLE_FIELD(_a,_b,_c,_d,_e) AMI_OUTPUT_PARAM(#_a, 0, "%" #_c, _e);
105 #ifdef CLI_AMI_TABLE_LIST_ITERATOR
106 	_CLI_AMI_TABLE_LIST_LOCK(CLI_AMI_TABLE_LIST_ITER_HEAD);
_CLI_AMI_TABLE_LIST_ITERATOR(CLI_AMI_TABLE_LIST_ITER_HEAD,CLI_AMI_TABLE_LIST_ITER_VAR,list)107 	_CLI_AMI_TABLE_LIST_ITERATOR(CLI_AMI_TABLE_LIST_ITER_HEAD, CLI_AMI_TABLE_LIST_ITER_VAR, list) {
108 #else
109 	CLI_AMI_TABLE_ITERATOR {
110 #endif
111 		CLI_AMI_TABLE_BEFORE_ITERATION astman_append(s, "Event: SCCP%sEntry\r\n", STRINGIFY(CLI_AMI_TABLE_PER_ENTRY_NAME));
112 		UNIQUE_VAR(table_entries_, CLI_AMI_TABLE_NAME)++;
113 
114 		local_line_total++;
115 		astman_append(s, "ChannelType: SCCP\r\n");
116 		local_line_total++;
117 		astman_append(s, "ChannelObjectType: %s\r\n", STRINGIFY(CLI_AMI_TABLE_PER_ENTRY_NAME));
118 		local_line_total++;
119 		if (!pbx_strlen_zero(UNIQUE_VAR(id, CLI_AMI_TABLE_NAME))) {
120 			astman_append(s, "%s", UNIQUE_VAR(idtext, CLI_AMI_TABLE_NAME));
121 		}
122 		CLI_AMI_TABLE_FIELDS
123 		astman_append(s, "\r\n");
124 		local_line_total++;
125 	CLI_AMI_TABLE_AFTER_ITERATION}
126 #ifdef CLI_AMI_TABLE_LIST_ITERATOR
127 	_CLI_AMI_TABLE_LIST_UNLOCK(CLI_AMI_TABLE_LIST_ITER_HEAD);
128 #endif
129 #undef CLI_AMI_TABLE_FIELD
130 }
131 
132 	/* print footer */
133 if (!s) {
134 	pbx_cli(fd, "+%.*s+\n", UNIQUE_VAR(table_width_, CLI_AMI_TABLE_NAME) + 1, "------------------------------------------------------------------------------------------------------------------------------------------------------------------");
135 
136 } else {
137 	astman_append(s, "Event: TableEnd\r\n");
138 	local_line_total++;
139 	astman_append(s, "TableName: %s\r\n", STRINGIFY(CLI_AMI_TABLE_NAME));
140 	local_line_total++;
141 	astman_append(s, "TableEntries: %d\r\n", UNIQUE_VAR(table_entries_, CLI_AMI_TABLE_NAME));
142 	local_line_total++;
143 	if (!pbx_strlen_zero(UNIQUE_VAR(id, CLI_AMI_TABLE_NAME))) {
144 		astman_append(s, "%s\r\n", UNIQUE_VAR(idtext, CLI_AMI_TABLE_NAME));
145 		local_line_total++;
146 	} else {
147 	        astman_append(s, "\r\n");
148 	}
149 	local_line_total++;
150 }
151 
152 #ifdef CLI_AMI_TABLE_NAME
153 #undef CLI_AMI_TABLE_NAME
154 #endif
155 
156 #ifdef CLI_AMI_TABLE_PER_ENTRY_NAME
157 #undef CLI_AMI_TABLE_PER_ENTRY_NAME
158 #endif
159 
160 #ifdef CLI_AMI_TABLE_LIST_ITER_TYPE
161 #undef CLI_AMI_TABLE_LIST_ITER_TYPE
162 #endif
163 
164 #ifdef CLI_AMI_TABLE_LIST_ITER_VAR
165 #undef CLI_AMI_TABLE_LIST_ITER_VAR
166 #endif
167 
168 #ifdef CLI_AMI_TABLE_LIST_ITER_HEAD
169 #undef CLI_AMI_TABLE_LIST_ITER_HEAD
170 #endif
171 
172 #ifdef CLI_AMI_TABLE_LIST_LOCK
173 #undef CLI_AMI_TABLE_LIST_LOCK
174 #endif
175 
176 #ifdef CLI_AMI_TABLE_LIST_ITERATOR
177 #undef CLI_AMI_TABLE_LIST_ITERATOR
178 #endif
179 
180 #ifdef CLI_AMI_TABLE_ITERATOR
181 #undef CLI_AMI_TABLE_ITERATOR
182 #endif
183 
184 #ifdef CLI_AMI_TABLE_BEFORE_ITERATION
185 #undef CLI_AMI_TABLE_BEFORE_ITERATION
186 #endif
187 
188 #ifdef CLI_AMI_TABLE_AFTER_ITERATION
189 #undef CLI_AMI_TABLE_AFTER_ITERATION
190 #endif
191 
192 #ifdef CLI_AMI_TABLE_LIST_UNLOCK
193 #undef CLI_AMI_TABLE_LIST_UNLOCK
194 #endif
195 
196 #ifdef CLI_AMI_TABLE_FIELDS
197 #undef CLI_AMI_TABLE_FIELDS
198 #endif
199 	// =========== End of Code To be generated by include file ============
200 #endif														/* DOXYGEN_SHOULD_SKIP_THIS */
201 // kate: indent-width 8; replace-tabs off; indent-mode cstyle; auto-insert-doxygen on; line-numbers on; tab-indents on; keep-extra-spaces off; auto-brackets off;
202