2 * Copyright (c) 2015, Juniper Networks, Inc.
4 * This SOFTWARE is licensed under the LICENSE provided in the
5 * ../Copyright file. By downloading, installing, copying, or otherwise
6 * using the SOFTWARE, you agree to be bound by the terms of that
8 * Phil Shafer, July 2015
20 main (int argc, char **argv)
26 struct item list[] = {
37 argc = xo_parse_args(argc, argv);
41 for (argc = 1; argv[argc]; argc++) {
42 if (strcmp(argv[argc], "xml") == 0)
43 xo_set_style(NULL, XO_STYLE_XML);
44 else if (strcmp(argv[argc], "json") == 0)
45 xo_set_style(NULL, XO_STYLE_JSON);
46 else if (strcmp(argv[argc], "text") == 0)
47 xo_set_style(NULL, XO_STYLE_TEXT);
48 else if (strcmp(argv[argc], "html") == 0)
49 xo_set_style(NULL, XO_STYLE_HTML);
50 else if (strcmp(argv[argc], "pretty") == 0)
51 xo_set_flags(NULL, XOF_PRETTY);
52 else if (strcmp(argv[argc], "xpath") == 0)
53 xo_set_flags(NULL, XOF_XPATH);
54 else if (strcmp(argv[argc], "info") == 0)
55 xo_set_flags(NULL, XOF_INFO);
56 else if (strcmp(argv[argc], "error") == 0) {
58 xo_err(1, "error detected");
62 xo_set_flags(NULL, XOF_KEYS);
63 xo_set_program("test");
65 xo_open_container_h(NULL, "top");
67 xo_open_container("data");
68 xo_open_container("contents");
71 xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
73 for (ip = list; ip->i_title; ip++) {
74 xo_open_instance("item");
76 xo_emit("{k:name/%-10s/%s}{n:count/%12u/%u}\n",
77 ip->i_title, ip->i_count);
79 xo_close_instance("item");
82 xo_close_list("item");
83 xo_close_container("contents");
84 xo_close_container("data");
88 xo_open_container("data2");
89 xo_open_container("contents");
91 xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
93 for (ip = list; ip->i_title; ip++) {
94 xo_open_instance("item");
96 xo_emit("{k:name/%-10s/%s}{n:count/%12u/%u}\n",
97 ip->i_title, ip->i_count);
100 xo_close_container("data2");
104 xo_open_container("data3");
105 xo_open_marker("m1");
106 xo_open_container("contents");
108 xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
110 for (ip = list; ip->i_title; ip++) {
111 xo_open_instance("item");
113 xo_emit("{k:name/%-10s/%s}{n:count/%12u/%u}\n",
114 ip->i_title, ip->i_count);
117 xo_close_container("data3"); /* Should be a noop */
118 xo_emit("{:test}", "one");
120 xo_close_marker("m1");
121 xo_close_container("data3"); /* Should be a noop */
125 xo_open_container("data4");
126 xo_open_marker("m1");
127 xo_open_container("contents");
129 xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
131 for (ip = list; ip->i_title; ip++) {
132 xo_open_instance("item");
134 xo_emit("{k:name/%-10s/%s}{n:count/%12u/%u}\n",
135 ip->i_title, ip->i_count);
137 xo_open_marker("m2");
138 for (i = 0; i < 3; i++) {
139 xo_open_instance("sub");
140 xo_emit("{Lwc:/Name}{:name/%d} + 1 = {:next/%d}\n", i, i + 1);
141 xo_close_container("data4");
143 xo_close_marker("m2");
144 xo_emit("{Lwc:/Last}{:last/%d}\n", i);
147 xo_close_container("data4"); /* Should be a noop */
148 xo_emit("{:test}", "one");
152 xo_close_container_h(NULL, "top");