Merged silc_1_0_branch to trunk.
[silc.git] / lib / silccore / silcargument.h
index f5de0d996c03ec4f73022724190bdc870c70a9ca..50da74b6ba68aaebeef2b62168a85047003af56d 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 2001 Pekka Riikonen
+  Copyright (C) 2001 - 2002 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
 
 */
 
-/****h* silccore/SilcArgumentAPI
+/****h* silccore/SILC Argument Interface
  *
  * DESCRIPTION
  *
- * Implementation of the Arugment Payload, that is used to include 
+ * Implementation of the Argument Payload, that is used to include 
  * argument to other payload that needs arguments.
  *
  ***/
 #ifndef SILCPAYLOAD_H
 #define SILCPAYLOAD_H
 
+/****s* silccore/SilcArgumentAPI/SilcArgumentPayload
+ *
+ * NAME
+ * 
+ *    typedef struct SilcArgumentPayloadStruct *SilcArgumentPayload;
+ *
+ * DESCRIPTION
+ *
+ *    This context is the actual Argument Payload and is allocated
+ *    by silc_argument_payload_parse and given as argument usually to
+ *    all silc_argument_payload_* functions.  It is freed by the
+ *    silc_argument_payload_free function.
+ *
+ ***/
+typedef struct SilcArgumentPayloadStruct *SilcArgumentPayload;
+
 /****f* silccore/SilcArgumentAPI/silc_argument_payload_parse
  *
  * SYNOPSIS
  *
  *    SilcArgumentPayload 
  *    silc_argument_payload_parse(const unsigned char *payload,
- *                                uint32 payload_len,
- *                                uint32 argc);
+ *                                SilcUInt32 payload_len,
+ *                                SilcUInt32 argc);
  *
  * DESCRIPTION
  *
  *
  ***/
 SilcArgumentPayload silc_argument_payload_parse(const unsigned char *payload,
-                                               uint32 payload_len,
-                                               uint32 argc);
+                                               SilcUInt32 payload_len,
+                                               SilcUInt32 argc);
 
 /****f* silccore/SilcArgumentAPI/silc_argument_payload_encode
  *
  * SYNOPSIS
  *
- *    SilcBuffer silc_argument_payload_encode(uint32 argc,
+ *    SilcBuffer silc_argument_payload_encode(SilcUInt32 argc,
  *                                            unsigned char **argv,
- *                                            uint32 *argv_lens,
- *                                            uint32 *argv_types);
+ *                                            SilcUInt32 *argv_lens,
+ *                                            SilcUInt32 *argv_types);
  *
  * DESCRIPTION
  *
@@ -70,10 +86,32 @@ SilcArgumentPayload silc_argument_payload_parse(const unsigned char *payload,
  *    number of arguments.
  *
  ***/
-SilcBuffer silc_argument_payload_encode(uint32 argc,
+SilcBuffer silc_argument_payload_encode(SilcUInt32 argc,
                                        unsigned char **argv,
-                                       uint32 *argv_lens,
-                                       uint32 *argv_types);
+                                       SilcUInt32 *argv_lens,
+                                       SilcUInt32 *argv_types);
+
+/****f* silccore/SilcArgumentAPI/silc_argument_payload_encode_one
+ *
+ * SYNOPSIS
+ *
+ *    SilcBuffer silc_argument_payload_encode_one(SilcBuffer args,
+ *                                                unsigned char *arg,
+ *                                                SilcUInt32 arg_len,
+ *                                                SilcUInt32 arg_type);
+ *
+ * DESCRIPTION
+ *
+ *    Same as silc_argument_payload_encode but encodes one argument to
+ *    the buffer `args' and returns the buffer.  The returned buffer
+ *    may be different than the `args'.  If `args' is NULL for the first
+ *    argument this allocates the buffer and returns it.
+ *
+ ***/
+SilcBuffer silc_argument_payload_encode_one(SilcBuffer args,
+                                           unsigned char *arg,
+                                           SilcUInt32 arg_len,
+                                           SilcUInt32 arg_type);
 
 /****f* silccore/SilcArgumentAPI/silc_argument_payload_encode_payload
  *
@@ -107,21 +145,22 @@ void silc_argument_payload_free(SilcArgumentPayload payload);
  *
  * SYNOPSIS
  *
- *    uint32 silc_argument_get_arg_num(SilcArgumentPayload payload);
+ *    SilcUInt32 silc_argument_get_arg_num(SilcArgumentPayload payload);
  *
  * DESCRIPTION
  *
  *    Returns the number of argument in the Argument Payload.
  *
  ***/
-uint32 silc_argument_get_arg_num(SilcArgumentPayload payload);
+SilcUInt32 silc_argument_get_arg_num(SilcArgumentPayload payload);
 
 /****f* silccore/SilcArgumentAPI/silc_argument_get_first_arg
  *
  * SYNOPSIS
  *
  *    unsigned char *silc_argument_get_first_arg(SilcArgumentPayload payload,
- *                                               uint32 *ret_len);
+ *                                               SilcUInt32 *type,
+ *                                               SilcUInt32 *ret_len);
  *
  * DESCRIPTION
  *
@@ -131,14 +170,15 @@ uint32 silc_argument_get_arg_num(SilcArgumentPayload payload);
  *
  ***/
 unsigned char *silc_argument_get_first_arg(SilcArgumentPayload payload,
-                                          uint32 *ret_len);
+                                          SilcUInt32 *type,
+                                          SilcUInt32 *ret_len);
 
 /****f* silccore/SilcArgumentAPI/silc_argument_get_next_arg
  *
  * SYNOPSIS
  *
  *    unsigned char *silc_argument_get_next_arg(SilcArgumentPayload payload,
- *                                              uint32 *ret_len);
+ *                                              SilcUInt32 *ret_len);
  *
  * DESCRIPTION
  *
@@ -149,15 +189,16 @@ unsigned char *silc_argument_get_first_arg(SilcArgumentPayload payload,
  *
  ***/
 unsigned char *silc_argument_get_next_arg(SilcArgumentPayload payload,
-                                         uint32 *ret_len);
+                                         SilcUInt32 *type,
+                                         SilcUInt32 *ret_len);
 
 /****f* silccore/SilcArgumentAPI/silc_argument_get_arg_type
  *
  * SYNOPSIS
  *
  *    unsigned char *silc_argument_get_arg_type(SilcArgumentPayload payload,
- *                                              uint32 type,
- *                                              uint32 *ret_len);
+ *                                              SilcUInt32 type,
+ *                                              SilcUInt32 *ret_len);
  *
  * DESCRIPTION
  *
@@ -169,7 +210,7 @@ unsigned char *silc_argument_get_next_arg(SilcArgumentPayload payload,
  *
  ***/
 unsigned char *silc_argument_get_arg_type(SilcArgumentPayload payload,
-                                         uint32 type,
-                                         uint32 *ret_len);
+                                         SilcUInt32 type,
+                                         SilcUInt32 *ret_len);
 
 #endif