-# boolean(CMD, SUMMARY, DETAIL, [[TYPE,NAME,DESCR], [TYPE,NAME,DESCR], ...], [RETURN, DESCR])
-#
-# Response is yes/no or failure
-sub boolean {
- my $cmd = shift;
- my $summary = shift;
- my $detail = shift;
- my $args = shift;
- my $return = shift;
-
- my $cmdc = $cmd;
- $cmdc =~ s/-/_/g;
- # Synchronous C API
- push(@h, "/** \@brief $summary\n",
- " *\n",
- " * $detail\n",
- " *\n",
- c_param_docs($args),
- " * \@param $return->[0]p $return->[1]\n",
- " * \@return 0 on success, non-0 on error\n",
- " */\n",
- "int disorder_$cmdc(",
- join(", ", "disorder_client *c",
- map(c_in_decl($_), @$args),
- "int *$return->[0]p"),
- ");\n\n");
- push(@c, "int disorder_$cmdc(",
- join(", ", "disorder_client *c",
- map(c_in_decl($_), @$args),
- "int *$return->[0]p"),
- ") {\n",
- " char *v;\n",
- " int rc;\n",
- " if((rc = disorder_simple(c, &v, \"$cmd\"",
- map(", $_->[1]", @$args),
- ", (char *)0)))\n",
- " return rc;\n",
- " return boolean(\"$cmd\", v, $return->[0]p);\n",
- "}\n\n");
-
- # Asynchronous C API
- # TODO
-
- # Python API
- # TODO
-
- # Java API
- # TODO
-}
-
-# integer(CMD, SUMMARY, DETAIL, [[TYPE,NAME,DESCR], [TYPE,NAME,DESCR], ...], [RETURN, DESCR])
-#
-# Response is an integer, or failure
-sub integer {
- my $cmd = shift;
- my $summary = shift;
- my $detail = shift;
- my $args = shift;
- my $return = shift;
-
- my $cmdc = $cmd;
- $cmdc =~ s/-/_/g;
- # Synchronous C API
- push(@h, "/** \@brief $summary\n",
- " *\n",
- " * $detail\n",
- " *\n",
- c_param_docs($args),
- " * \@param $return->[0]p $return->[1]\n",
- " * \@return 0 on success, non-0 on error\n",
- " */\n",
- "int disorder_$cmdc(",
- join(", ", "disorder_client *c",
- map(c_in_decl($_), @$args),
- "long *$return->[0]p"),
- ");\n\n");
- push(@c, "int disorder_$cmdc(",
- join(", ", "disorder_client *c",
- map(c_in_decl($_), @$args),
- "long *$return->[0]p"),
- ") {\n",
- " char *v;\n",
- " int rc;\n",
- "\n",
- " if((rc = disorder_simple(c, &v, \"$cmd\"",
- map(", $_->[1]", @$args),
- ", (char *)0)))\n",
- " return rc;\n",
- " *$return->[0]p = atol(v);\n",
- " xfree(v);\n",
- " return 0;\n",
- "}\n\n");
-
- # Asynchronous C API
- # TODO
-
- # Python API
- # TODO
-
- # Java API
- # TODO
-}
-
-# list(CMD, SUMMARY, DETAIL, [[TYPE,NAME,DESCR], [TYPE,NAME,DESCR], ...], [RETURN, DESCR])
-#
-# Response is a a list of strings in a dot-stuffed body
-sub list {
- my $cmd = shift;
- my $summary = shift;
- my $detail = shift;
- my $args = shift;
- my $return = shift;
-
- my $cmdc = $cmd;
- $cmdc =~ s/-/_/g;
- # Synchronous C API
- push(@h, "/** \@brief $summary\n",
- " *\n",
- " * $detail\n",
- " *\n",
- c_param_docs($args),
- " * \@param $return->[0]p $return->[1]\n",
- " * \@param n$return->[0]p Number of elements in $return->[0]p\n",
- " * \@return 0 on success, non-0 on error\n",
- " */\n",
- "int disorder_$cmdc(",
- join(", ", "disorder_client *c",
- map(c_in_decl($_), @$args),
- "char ***$return->[0]p",
- "int *n$return->[0]p"),
- ");\n\n");
- push(@c, "int disorder_$cmdc(",
- join(", ", "disorder_client *c",
- map(c_in_decl($_), @$args),
- "char ***$return->[0]p",
- "int *n$return->[0]p"),
- ") {\n",
- " return disorder_simple_list(c, $return->[0]p, n$return->[0]p, \"$cmd\"",
- map(", $_->[1]", @$args),
- ", (char *)0);\n",
- "}\n\n");
-
- # Asynchronous C API
- # TODO
-
- # Python API
- # TODO
-
- # Java API
- # TODO
-}
-