tizen 2.3 release
[framework/uifw/embryo.git] / src / lib / Embryo.h
similarity index 80%
rename from mobile/src/lib/Embryo.h
rename to src/lib/Embryo.h
index 650aa83..62cd10d 100644 (file)
@@ -1,9 +1,10 @@
-/** 
+/**
+@internal
 @brief Embryo Library
 @brief Embryo Library
+
 These routines are used for Embryo.
 
 These routines are used for Embryo.
 
-@mainpage Embryo Library Documentation
+@page Embryo Library Documentation
 
 @image html  e_big.png
 
 
 @image html  e_big.png
 
@@ -30,11 +31,11 @@ For the basics about the Small language, see @ref Small_Page.
 
 To use Embryo in your code, you need to do at least the following:
 
 
 To use Embryo in your code, you need to do at least the following:
 
-@li Include @ref Embryo.h.
+@li Include Embryo.h.
 @li Load the Embryo program using one of the 
     @ref Embryo_Program_Creation_Group.
 @li Load the Embryo program using one of the 
     @ref Embryo_Program_Creation_Group.
-@li Set up the native calls with @ref embryo_program_native_call_add.
-@li Create a virtual machine with @ref embryo_program_vm_push.
+@li Set up the native calls with #embryo_program_native_call_add.
+@li Create a virtual machine with #embryo_program_vm_push.
 @li Then run the program with @ref embryo_program_run.
 
 @todo Clean up compiler code.
 @li Then run the program with @ref embryo_program_run.
 
 @todo Clean up compiler code.
@@ -69,7 +70,7 @@ The scope and usage of a variable depends on its declaration.
 @li A stock variable is one that may not be compiled into a program if it
     is not used.  It is declared using @c stock.
 @li A public variable is one that can be read by the host program using
 @li A stock variable is one that may not be compiled into a program if it
     is not used.  It is declared using @c stock.
 @li A public variable is one that can be read by the host program using
-    @ref embryo_program_variable_find.  It is declared using @c public
+    #embryo_program_variable_find.  It is declared using @c public
     keyword.
 
 Remember that the keywords above are to be used on their own.  That is,
     keyword.
 
 Remember that the keywords above are to be used on their own.  That is,
@@ -424,13 +425,15 @@ extern "C" {
 # define EMBRYO_CELL_TO_FLOAT(c) ((Embryo_Float_Cell) c).f
 #endif
 
 # define EMBRYO_CELL_TO_FLOAT(c) ((Embryo_Float_Cell) c).f
 #endif
 
-   /**
-    * @defgroup Embryo_Library_Group Library Maintenance Functions
-    *
-    * Functions that start up and shutdown the Embryo library.
-    */
-   
-   
+/**
+ * @internal
+ * @defgroup Embryo_Library_Group Embryo
+ * @ingroup EFL_Group
+ *
+ * Functions that start up and shutdown the Embryo library.
+ * @{
+ */
+
 /**
  * Initialises the Embryo library.
  * @return  The number of times the library has been initialised without being
 /**
  * Initialises the Embryo library.
  * @return  The number of times the library has been initialised without being
@@ -438,79 +441,85 @@ extern "C" {
  * @ingroup Embryo_Library_Group
  */
 EAPI int              embryo_init(void);
  * @ingroup Embryo_Library_Group
  */
 EAPI int              embryo_init(void);
-   
+
 /**
 /**
- * Shuts down the Embryo library.
+ * @brief Shuts down the Embryo library.
  * @return  The number of times the library has been initialised without being
  *          shutdown.
  * @ingroup Embryo_Library_Group
  */
 EAPI int              embryo_shutdown(void);
 
  * @return  The number of times the library has been initialised without being
  *          shutdown.
  * @ingroup Embryo_Library_Group
  */
 EAPI int              embryo_shutdown(void);
 
-   /**
-    * @defgroup Embryo_Program_Creation_Group Program Creation and Destruction Functions
-    *
-    * Functions that set up programs, and destroy them.
-    */
-   
 /**
 /**
- * Creates a new Embryo program, with bytecode data that can be freed.
- * @param   data Pointer to the bytecode of the program.
- * @param   size Number of bytes of bytecode.
+ * @internal
+ * @defgroup Embryo_Program_Creation_Group Program Creation and Destruction Functions
+ * @ingroup Embryo_Library_Group
+ *
+ * Functions that set up programs, and destroy them.
+ */
+
+/**
+ * @brief Creates a new Embryo program, with bytecode data that can be freed.
+ *
+ * @param[in]   data Pointer to the bytecode of the program.
+ * @param[in]   size Number of bytes of bytecode.
  * @return  A new Embryo program.
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI Embryo_Program  *embryo_program_new(void *data, int size);
  * @return  A new Embryo program.
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI Embryo_Program  *embryo_program_new(void *data, int size);
-   
+
 /**
 /**
- * Creates a new Embryo program, with bytecode data that cannot be
+ * @brief Creates a new Embryo program, with bytecode data that cannot be
  * freed.
  * freed.
- * @param   data Pointer to the bytecode of the program.
- * @param   size Number of bytes of bytecode.
+ *
+ * @param[in]   data Pointer to the bytecode of the program.
+ * @param[in]   size Number of bytes of bytecode.
  * @return  A new Embryo program.
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI Embryo_Program  *embryo_program_const_new(void *data, int size);
  * @return  A new Embryo program.
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI Embryo_Program  *embryo_program_const_new(void *data, int size);
-   
+
 /**
 /**
- * Creates a new Embryo program based on the bytecode data stored in the
+ * @brief Creates a new Embryo program based on the bytecode data stored in the
  * given file.
  * given file.
- * @param   file Filename of the given file.
+ *
+ * @param[in]   file Filename of the given file.
  * @return  A new Embryo program.
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI Embryo_Program  *embryo_program_load(const char *file);
    
 /**
  * @return  A new Embryo program.
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI Embryo_Program  *embryo_program_load(const char *file);
    
 /**
- * Frees the given Embryo program.
- * @param   ep The given program.
+ * @brief Frees the given Embryo program.
+ *
+ * @param[in]   ep The given program.
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI void             embryo_program_free(Embryo_Program *ep);
    
 /**
  * @ingroup Embryo_Program_Creation_Group
  */
 EAPI void             embryo_program_free(Embryo_Program *ep);
    
 /**
- * Adds a native program call to the given Embryo program.
- * @param   ep   The given Embryo program.
- * @param   name The name for the call used in the script.
- * @param   func The function to use when the call is made.
- * @ingroup Embryo_Func_Group
+ * @internal
+ * @defgroup Embryo_Func_Group Function Functions
+ * @ingroup Embryo_Library_Group
+ *
+ * @brief Functions that deal with Embryo program functions.
  */
 
 /**
  */
 
 /**
- * @defgroup Embryo_Func_Group Function Functions
+ * @brief Adds a native program call to the given Embryo program.
  *
  *
- * Functions that deal with Embryo program functions.
+ * @param[in]   ep   The given Embryo program.
+ * @param[in]   name The name for the call used in the script.
+ * @param[in]   func The function to use when the call is made.
+ * @ingroup Embryo_Func_Group
  */
  */
+
 EAPI void             embryo_program_native_call_add(Embryo_Program *ep, const char *name, Embryo_Cell (*func) (Embryo_Program *ep, Embryo_Cell *params));
    
 /**
 EAPI void             embryo_program_native_call_add(Embryo_Program *ep, const char *name, Embryo_Cell (*func) (Embryo_Program *ep, Embryo_Cell *params));
    
 /**
- * Resets the current virtual machine session of the given program.
- * @param   ep The given program.
- * @ingroup Embryo_Program_VM_Group
- */
-
-/**
+ * @internal
  * @defgroup Embryo_Program_VM_Group Virtual Machine Functions
  * @defgroup Embryo_Program_VM_Group Virtual Machine Functions
+ * @ingroup Embryo_Library_Group
  *
  * Functions that deal with creating and destroying virtual machine sessions
  * for a given program.
  *
  * Functions that deal with creating and destroying virtual machine sessions
  * for a given program.
@@ -523,70 +532,91 @@ EAPI void             embryo_program_native_call_add(Embryo_Program *ep, const c
  * to the old session.
  *
  * A new virtual machine session is created by pushing a new virtual machine
  * to the old session.
  *
  * A new virtual machine session is created by pushing a new virtual machine
- * onto the session stack of a program using @ref embryo_program_vm_push.
+ * onto the session stack of a program using #embryo_program_vm_push.
  * The current virtual machine session can be destroyed by calling
  * @ref embryo_program_vm_pop.
  */
  * The current virtual machine session can be destroyed by calling
  * @ref embryo_program_vm_pop.
  */
+
+/**
+ * @brief Resets the current virtual machine session of the given program.
+ * @param   ep The given program.
+ * @ingroup Embryo_Program_VM_Group
+ */
+
 EAPI void             embryo_program_vm_reset(Embryo_Program *ep);
    
 /**
 EAPI void             embryo_program_vm_reset(Embryo_Program *ep);
    
 /**
- * Starts a new virtual machine session for the given program.
+ * @brief Starts a new virtual machine session for the given program.
  *
  * See @ref Embryo_Program_VM_Group for more information about how this works.
  *
  *
  * See @ref Embryo_Program_VM_Group for more information about how this works.
  *
- * @param   ep The given program.
+ * @param[in]   ep The given program.
  * @ingroup Embryo_Program_VM_Group
  */
 EAPI void             embryo_program_vm_push(Embryo_Program *ep);
    
 /**
  * @ingroup Embryo_Program_VM_Group
  */
 EAPI void             embryo_program_vm_push(Embryo_Program *ep);
    
 /**
- * Frees the current virtual machine session associated with the given program.
+ * @brief Frees the current virtual machine session associated with the given program.
  *
  * See @ref Embryo_Program_VM_Group for more information about how this works.
  * Note that you will need to retrieve any return data or data on the stack
  * before you pop.
  *
  *
  * See @ref Embryo_Program_VM_Group for more information about how this works.
  * Note that you will need to retrieve any return data or data on the stack
  * before you pop.
  *
- * @param   ep The given program.
+ * @param[in]   ep The given program.
  * @ingroup Embryo_Program_VM_Group
  */
 EAPI void             embryo_program_vm_pop(Embryo_Program *ep);
  * @ingroup Embryo_Program_VM_Group
  */
 EAPI void             embryo_program_vm_pop(Embryo_Program *ep);
-   
-/**
- * Ensures that the given unsigned short integer is in the small
- * endian format.
- * @param   v Pointer to the given integer.
- * @ingroup Embryo_Swap_Group
- */
 
 /**
 
 /**
+ * @internal
  * @defgroup Embryo_Swap_Group Byte Swapping Functions
  * @defgroup Embryo_Swap_Group Byte Swapping Functions
+ * @ingroup Embryo_Library_Group
  *
  *
- * Functions that are used to ensure that integers passed to the
+ * @brief Functions that are used to ensure that integers passed to the
  * virtual machine are in small endian format.  These functions are
  * used to ensure that the virtual machine operates correctly on big
  * endian machines.
  */
  * virtual machine are in small endian format.  These functions are
  * used to ensure that the virtual machine operates correctly on big
  * endian machines.
  */
+
+/**
+ * @brief Ensures that the given unsigned short integer is in the small
+ * endian format.
+ * @param   v Pointer to the given integer.
+ * @ingroup Embryo_Swap_Group
+ */
 EAPI void             embryo_swap_16(unsigned short *v);
 EAPI void             embryo_swap_16(unsigned short *v);
-   
+
 /**
 /**
- * Ensures that the given unsigned integer is in the small endian
+ * @brief Ensures that the given unsigned integer is in the small endian
  * format.
  * format.
- * @param   v Pointer to the given integer.
+ *
+ * @param[in]   v Pointer to the given integer.
  * @ingroup Embryo_Swap_Group
  */
 EAPI void             embryo_swap_32(unsigned int *v);
    
 /**
  * @ingroup Embryo_Swap_Group
  */
 EAPI void             embryo_swap_32(unsigned int *v);
    
 /**
- * Returns the function in the given program with the given name.
- * @param   ep The given program.
- * @param   name The given function name.
+ * @brief Returns the function in the given program with the given name.
+ *
+ * @param[in]   ep The given program.
+ * @param[in]   name The given function name.
  * @return  The function if successful.  Otherwise, @c EMBRYO_FUNCTION_NONE.
  * @ingroup Embryo_Func_Group
  */
 EAPI Embryo_Function  embryo_program_function_find(Embryo_Program *ep, const char *name);
  * @return  The function if successful.  Otherwise, @c EMBRYO_FUNCTION_NONE.
  * @ingroup Embryo_Func_Group
  */
 EAPI Embryo_Function  embryo_program_function_find(Embryo_Program *ep, const char *name);
-   
+
+/**
+ * @internal
+ * @defgroup Embryo_Public_Variable_Group Public Variable Access Functions
+ * @ingroup Embryo_Library_Group
+ *
+ * @brief In an Embryo program, a global variable can be declared public, as
+ * described in @ref Small_Scope_Subsection.  The functions here allow
+ * the host program to access these public variables.
+ */
+
 /**
 /**
- * Retrieves the location of the public variable in the given program
+ * @brief Retrieves the location of the public variable in the given program
  * with the given name.
  * @param   ep   The given program.
  * @param   name The given name.
  * with the given name.
  * @param   ep   The given program.
  * @param   name The given name.
@@ -594,185 +624,198 @@ EAPI Embryo_Function  embryo_program_function_find(Embryo_Program *ep, const cha
  *          otherwise.
  * @ingroup Embryo_Public_Variable_Group
  */
  *          otherwise.
  * @ingroup Embryo_Public_Variable_Group
  */
+EAPI Embryo_Cell      embryo_program_variable_find(Embryo_Program *ep, const char *name);
 
 /**
 
 /**
- * @defgroup Embryo_Public_Variable_Group Public Variable Access Functions
+ * @brief Retrieves the number of public variables in the given program.
  *
  *
- * In an Embryo program, a global variable can be declared public, as
- * described in @ref Small_Scope_Subsection.  The functions here allow
- * the host program to access these public variables.
- */
-EAPI Embryo_Cell      embryo_program_variable_find(Embryo_Program *ep, const char *name);
-   
-/**
- * Retrieves the number of public variables in the given program.
- * @param   ep The given program.
+ * @param[in]   ep The given program.
  * @return  The number of public variables.
  * @ingroup Embryo_Public_Variable_Group
  */
 EAPI int              embryo_program_variable_count_get(Embryo_Program *ep);
    
 /**
  * @return  The number of public variables.
  * @ingroup Embryo_Public_Variable_Group
  */
 EAPI int              embryo_program_variable_count_get(Embryo_Program *ep);
    
 /**
- * Retrieves the location of the public variable in the given program
+ * @brief Retrieves the location of the public variable in the given program
  * with the given identifier.
  * with the given identifier.
- * @param   ep  The given program.
- * @param   num The identifier of the public variable.
+ *
+ * @param[in]   ep  The given program.
+ * @param[in]   num The identifier of the public variable.
  * @return  The virtual machine address of the variable if found.
  *          @c EMBRYO_CELL_NONE otherwise.
  * @ingroup Embryo_Public_Variable_Group
  */
 EAPI Embryo_Cell      embryo_program_variable_get(Embryo_Program *ep, int num);
  * @return  The virtual machine address of the variable if found.
  *          @c EMBRYO_CELL_NONE otherwise.
  * @ingroup Embryo_Public_Variable_Group
  */
 EAPI Embryo_Cell      embryo_program_variable_get(Embryo_Program *ep, int num);
-   
-/**
- * Sets the error code for the given program to the given code.
- * @param   ep The given program.
- * @param   error The given error code.
- * @ingroup Embryo_Error_Group
- */
 
 /**
 
 /**
+ * @internal
  * @defgroup Embryo_Error_Group Error Functions
  * @defgroup Embryo_Error_Group Error Functions
+ * @ingroup Embryo_Library_Group
  *
  * Functions that set and retrieve error codes in Embryo programs.
  */
  *
  * Functions that set and retrieve error codes in Embryo programs.
  */
-EAPI void             embryo_program_error_set(Embryo_Program *ep, Embryo_Error error);
-   
+
 /**
 /**
- * Retrieves the current error code for the given program.
+ * @brief Sets the error code for the given program to the given code.
  * @param   ep The given program.
  * @param   ep The given program.
- * @return  The current error code.
+ * @param   error The given error code.
  * @ingroup Embryo_Error_Group
  */
  * @ingroup Embryo_Error_Group
  */
-EAPI Embryo_Error     embryo_program_error_get(Embryo_Program *ep);
+EAPI void             embryo_program_error_set(Embryo_Program *ep, Embryo_Error error);
    
 /**
    
 /**
- * Sets the data associated to the given program.
- * @param   ep   The given program.
- * @param   data New bytecode data.
- * @ingroup Embryo_Program_Data_Group
+ * @brief Retrieves the current error code for the given program.
+ *
+ * @param[in]   ep The given program.
+ * @return  The current error code.
+ * @ingroup Embryo_Error_Group
  */
  */
+EAPI Embryo_Error     embryo_program_error_get(Embryo_Program *ep);
 
 /**
 
 /**
+ * @internal
  * @defgroup Embryo_Program_Data_Group Program Data Functions
  * @defgroup Embryo_Program_Data_Group Program Data Functions
+ * @ingroup Embryo_Library_Group
  *
  * Functions that set and retrieve data associated with the given
  * program.
  */
  *
  * Functions that set and retrieve data associated with the given
  * program.
  */
+
+/**
+ * @brief Sets the data associated to the given program.
+ * @param   ep   The given program.
+ * @param   data New bytecode data.
+ * @ingroup Embryo_Program_Data_Group
+ */
 EAPI void             embryo_program_data_set(Embryo_Program *ep, void *data);
    
 /**
 EAPI void             embryo_program_data_set(Embryo_Program *ep, void *data);
    
 /**
- * Retrieves the data associated to the given program.
+ * @brief Retrieves the data associated to the given program.
  * @param   ep The given program.
  * @ingroup Embryo_Program_Data_Group
  */
 EAPI void            *embryo_program_data_get(Embryo_Program *ep);
    
 /**
  * @param   ep The given program.
  * @ingroup Embryo_Program_Data_Group
  */
 EAPI void            *embryo_program_data_get(Embryo_Program *ep);
    
 /**
- * Retrieves a string describing the given error code.
- * @param   error The given error code.
+ * @brief Retrieves a string describing the given error code.
+ *
+ * @param[in]   error The given error code.
  * @return  String describing the given error code.  If the given code is not
  *          known, the string "(unknown)" is returned.
  * @ingroup Embryo_Error_Group
  */
 EAPI const char      *embryo_error_string_get(Embryo_Error error);
  * @return  String describing the given error code.  If the given code is not
  *          known, the string "(unknown)" is returned.
  * @ingroup Embryo_Error_Group
  */
 EAPI const char      *embryo_error_string_get(Embryo_Error error);
-   
-/**
- * Retrieves the length of the string starting at the given cell.
- * @param   ep       The program the cell is part of.
- * @param   str_cell Pointer to the first cell of the string.
- * @return  The length of the string.  @c 0 is returned if there is an error.
- * @ingroup Embryo_Data_String_Group
- */
 
 /**
 
 /**
+ * @internal
  * @defgroup Embryo_Data_String_Group Embryo Data String Functions
  * @defgroup Embryo_Data_String_Group Embryo Data String Functions
+ * @ingroup Embryo_Library_Group
  *
  * Functions that operate on strings in the memory of a virtual machine.
  */
  *
  * Functions that operate on strings in the memory of a virtual machine.
  */
-EAPI int              embryo_data_string_length_get(Embryo_Program *ep, Embryo_Cell *str_cell);
-   
+
 /**
 /**
- * Copies the string starting at the given cell to the given buffer.
+ * @brief Retrieves the length of the string starting at the given cell.
  * @param   ep       The program the cell is part of.
  * @param   str_cell Pointer to the first cell of the string.
  * @param   ep       The program the cell is part of.
  * @param   str_cell Pointer to the first cell of the string.
- * @param   dst      The given buffer.
+ * @return  The length of the string.  @c 0 is returned if there is an error.
+ * @ingroup Embryo_Data_String_Group
+ */
+EAPI int              embryo_data_string_length_get(Embryo_Program *ep, Embryo_Cell *str_cell);
+
+/**
+ * @brief Copies the string starting at the given cell to the given buffer.
+ *
+ * @param[in]   ep       The program the cell is part of.
+ * @param[in]   str_cell Pointer to the first cell of the string.
+ * @param[out]   dst      The given buffer.
  * @ingroup Embryo_Data_String_Group
  */
 EAPI void             embryo_data_string_get(Embryo_Program *ep, Embryo_Cell *str_cell, char *dst);
  * @ingroup Embryo_Data_String_Group
  */
 EAPI void             embryo_data_string_get(Embryo_Program *ep, Embryo_Cell *str_cell, char *dst);
-   
+
 /**
 /**
- * Copies string in the given buffer into the virtual machine memory
+ * @brief Copies string in the given buffer into the virtual machine memory
  * starting at the given cell.
  * starting at the given cell.
- * @param ep       The program the cell is part of.
- * @param src      The given buffer.
- * @param str_cell Pointer to the first cell to copy the string to.
+ *
+ * @param[in] ep       The program the cell is part of.
+ * @param[in] src      The given buffer.
+ * @param[in] str_cell Pointer to the first cell to copy the string to.
  * @ingroup Embryo_Data_String_Group
  */
 EAPI void             embryo_data_string_set(Embryo_Program *ep, const char *src, Embryo_Cell *str_cell);
    
 /**
  * @ingroup Embryo_Data_String_Group
  */
 EAPI void             embryo_data_string_set(Embryo_Program *ep, const char *src, Embryo_Cell *str_cell);
    
 /**
- * Retreives a pointer to the address in the virtual machine given by the
+ * @brief Retreives a pointer to the address in the virtual machine given by the
  * given cell.
  * given cell.
- * @param   ep   The program whose virtual machine address is being queried.
- * @param   addr The given cell.
+ *
+ * @param[in]   ep   The program whose virtual machine address is being queried.
+ * @param[in]   addr The given cell.
  * @return  A pointer to the cell at the given address.
  * @ingroup Embryo_Data_String_Group
  */
 EAPI Embryo_Cell     *embryo_data_address_get(Embryo_Program *ep, Embryo_Cell addr);
    
  * @return  A pointer to the cell at the given address.
  * @ingroup Embryo_Data_String_Group
  */
 EAPI Embryo_Cell     *embryo_data_address_get(Embryo_Program *ep, Embryo_Cell addr);
    
-/**
- * Increases the size of the heap of the given virtual machine by the given
- * number of Embryo_Cells.
- * @param   ep    The program with the given virtual machine.
- * @param   cells The given number of Embryo_Cells.
- * @return  The address of the new memory region on success.
- *          @c EMBRYO_CELL_NONE otherwise.
- * @ingroup Embryo_Heap_Group
- */
 
 /**
 
 /**
+ * @internal
  * @defgroup Embryo_Heap_Group Heap Functions
  * @defgroup Embryo_Heap_Group Heap Functions
+ * @ingroup Embryo_Library_Group
  *
  * The heap is an area of memory that can be allocated for program
  * use at runtime.  The heap functions here change the amount of heap
  * memory available.
  */
  *
  * The heap is an area of memory that can be allocated for program
  * use at runtime.  The heap functions here change the amount of heap
  * memory available.
  */
+
+/**
+ * @brief Increases the size of the heap of the given virtual machine by the given
+ * number of Embryo_Cells.
+ *
+ * @param[in]   ep    The program with the given virtual machine.
+ * @param[in]   cells The given number of Embryo_Cells.
+ * @return  The address of the new memory region on success.
+ *          @c EMBRYO_CELL_NONE otherwise.
+ * @ingroup Embryo_Heap_Group
+ */
 EAPI Embryo_Cell      embryo_data_heap_push(Embryo_Program *ep, int cells);
 EAPI Embryo_Cell      embryo_data_heap_push(Embryo_Program *ep, int cells);
-   
 /**
 /**
- * Decreases the size of the heap of the given virtual machine down to the
+ * @brief Decreases the size of the heap of the given virtual machine down to the
  * given size.
  * given size.
- * @param   ep      The program with the given virtual machine.
- * @param   down_to The given size.
+ *
+ * @param[in]   ep      The program with the given virtual machine.
+ * @param[in]   down_to The given size.
  * @ingroup Embryo_Heap_Group
  */
 EAPI void             embryo_data_heap_pop(Embryo_Program *ep, Embryo_Cell down_to);
    
  * @ingroup Embryo_Heap_Group
  */
 EAPI void             embryo_data_heap_pop(Embryo_Program *ep, Embryo_Cell down_to);
    
-/**
- * Returns the number of virtual machines are running for the given program.
- * @param   ep The given program.
- * @return  The number of virtual machines running.
- * @ingroup Embryo_Run_Group
- */
 
 /**
 
 /**
+ * @internal
  * @defgroup Embryo_Run_Group Program Run Functions
  * @defgroup Embryo_Run_Group Program Run Functions
+ * @ingroup Embryo_Library_Group
  *
  * Functions that are involved in actually running functions in an
  * Embryo program.
  */
  *
  * Functions that are involved in actually running functions in an
  * Embryo program.
  */
+
+/**
+ * @brief Returns the number of virtual machines are running for the given program.
+ * @param   ep The given program.
+ * @return  The number of virtual machines running.
+ * @ingroup Embryo_Run_Group
+ */
 EAPI int              embryo_program_recursion_get(Embryo_Program *ep);
    
 /**
 EAPI int              embryo_program_recursion_get(Embryo_Program *ep);
    
 /**
- * Runs the given function of the given Embryo program in the current
+ * @brief Runs the given function of the given Embryo program in the current
  * virtual machine.  The parameter @p fn can be found using
  * @ref embryo_program_function_find.
  *
  * @note For Embryo to be able to run a function, it must have been
  *       declared @c public in the Small source code.
  *
  * virtual machine.  The parameter @p fn can be found using
  * @ref embryo_program_function_find.
  *
  * @note For Embryo to be able to run a function, it must have been
  *       declared @c public in the Small source code.
  *
- * @param   ep The given program.
- * @param   func The given function.  Normally "main", in which case the
+ * @param[in]   ep The given program.
+ * @param[in]   func The given function.  Normally "main", in which case the
  *             constant @c EMBRYO_FUNCTION_MAIN can be used.
  * @return  @c EMBRYO_PROGRAM_OK on success.  @c EMBRYO_PROGRAM_SLEEP if the
  *          program is halted by the Small @c sleep call.
  *             constant @c EMBRYO_FUNCTION_MAIN can be used.
  * @return  @c EMBRYO_PROGRAM_OK on success.  @c EMBRYO_PROGRAM_SLEEP if the
  *          program is halted by the Small @c sleep call.
@@ -784,9 +827,10 @@ EAPI int              embryo_program_recursion_get(Embryo_Program *ep);
 EAPI Embryo_Status    embryo_program_run(Embryo_Program *ep, Embryo_Function func);
    
 /**
 EAPI Embryo_Status    embryo_program_run(Embryo_Program *ep, Embryo_Function func);
    
 /**
- * Retreives the return value of the last called function of the given
+ * @brief Retreives the return value of the last called function of the given
  * program.
  * program.
- * @param   ep The given program.
+ *
+ * @param[in]   ep The given program.
  * @return  An Embryo_Cell representing the return value of the function
  *          that was last called.
  * @ingroup Embryo_Run_Group
  * @return  An Embryo_Cell representing the return value of the function
  *          that was last called.
  * @ingroup Embryo_Run_Group
@@ -794,11 +838,11 @@ EAPI Embryo_Status    embryo_program_run(Embryo_Program *ep, Embryo_Function fun
 EAPI Embryo_Cell      embryo_program_return_value_get(Embryo_Program *ep);
    
 /**
 EAPI Embryo_Cell      embryo_program_return_value_get(Embryo_Program *ep);
    
 /**
- * Sets the maximum number of abstract machine cycles any given program run
+ * @brief Sets the maximum number of abstract machine cycles any given program run
  * can execute before being put to sleep and returning.
  *
  * can execute before being put to sleep and returning.
  *
- * @param   ep The given program.
- * @param   max The number of machine cycles as a limit.
+ * @param[in]   ep The given program.
+ * @param[in]   max The number of machine cycles as a limit.
  *
  * This sets the maximum number of abstract machine (virtual machine)
  * instructions that a single run of an embryo function (even if its main)
  *
  * This sets the maximum number of abstract machine (virtual machine)
  * instructions that a single run of an embryo function (even if its main)
@@ -844,9 +888,10 @@ EAPI Embryo_Cell      embryo_program_return_value_get(Embryo_Program *ep);
 EAPI void             embryo_program_max_cycle_run_set(Embryo_Program *ep, int max);
    
 /**
 EAPI void             embryo_program_max_cycle_run_set(Embryo_Program *ep, int max);
    
 /**
- * Retreives the maximum number of abstract machine cycles a program is allowed
+ * @brief Retreives the maximum number of abstract machine cycles a program is allowed
  * to run.
  * to run.
- * @param   ep The given program.
+ *
+ * @param[in]   ep The given program.
  * @return  The number of cycles a run cycle is allowed to run for this
  *          program.
  *
  * @return  The number of cycles a run cycle is allowed to run for this
  *          program.
  *
@@ -857,43 +902,52 @@ EAPI void             embryo_program_max_cycle_run_set(Embryo_Program *ep, int m
  */
 EAPI int              embryo_program_max_cycle_run_get(Embryo_Program *ep);
    
  */
 EAPI int              embryo_program_max_cycle_run_get(Embryo_Program *ep);
    
+
+/**
+ * @internal
+ * @defgroup Embryo_Parameter_Group Function Parameter Functions
+ * @ingroup Embryo_Library_Group
+ *
+ * Functions that set parameters for the next function that is called.
+ */
+
 /**
 /**
- * Pushes an Embryo_Cell onto the function stack to use as a parameter for
+ * @brief Pushes an Embryo_Cell onto the function stack to use as a parameter for
  * the next function that is called in the given program.
  * @param   ep   The given program.
  * @param   cell The Embryo_Cell to push onto the stack.
  * @return  @c 1 if successful.  @c 0 otherwise.
  * @ingroup Embryo_Parameter_Group
  */
  * the next function that is called in the given program.
  * @param   ep   The given program.
  * @param   cell The Embryo_Cell to push onto the stack.
  * @return  @c 1 if successful.  @c 0 otherwise.
  * @ingroup Embryo_Parameter_Group
  */
-
-/**
- * @defgroup Embryo_Parameter_Group Function Parameter Functions
- *
- * Functions that set parameters for the next function that is called.
- */
 EAPI int              embryo_parameter_cell_push(Embryo_Program *ep, Embryo_Cell cell);
    
 /**
 EAPI int              embryo_parameter_cell_push(Embryo_Program *ep, Embryo_Cell cell);
    
 /**
- * Pushes a string onto the function stack to use as a parameter for the
+ * @brief Pushes a string onto the function stack to use as a parameter for the
  * next function that is called in the given program.
  * next function that is called in the given program.
- * @param   ep The given program.
- * @param   str The string to push onto the stack.
+ *
+ * @param[in]   ep The given program.
+ * @param[in]   str The string to push onto the stack.
  * @return  @c 1 if successful.  @c 0 otherwise.
  * @ingroup Embryo_Parameter_Group
  */
 EAPI int              embryo_parameter_string_push(Embryo_Program *ep, const char *str);
    
 /**
  * @return  @c 1 if successful.  @c 0 otherwise.
  * @ingroup Embryo_Parameter_Group
  */
 EAPI int              embryo_parameter_string_push(Embryo_Program *ep, const char *str);
    
 /**
- * Pushes an array of Embryo_Cells onto the function stack to be used as
+ * @brief Pushes an array of Embryo_Cells onto the function stack to be used as
  * parameters for the next function that is called in the given program.
  * parameters for the next function that is called in the given program.
- * @param   ep    The given program.
- * @param   cells The array of Embryo_Cells.
- * @param   num   The number of cells in @p cells.
+ *
+ * @param[in]   ep    The given program.
+ * @param[in]   cells The array of Embryo_Cells.
+ * @param[in]   num   The number of cells in @p cells.
  * @return  @c 1 if successful.  @c 0 otherwise.
  * @ingroup Embryo_Parameter_Group
  */
 EAPI int              embryo_parameter_cell_array_push(Embryo_Program *ep, Embryo_Cell *cells, int num);
 
  * @return  @c 1 if successful.  @c 0 otherwise.
  * @ingroup Embryo_Parameter_Group
  */
 EAPI int              embryo_parameter_cell_array_push(Embryo_Program *ep, Embryo_Cell *cells, int num);
 
+/**
+ * @}
+ */
+
 #ifdef  __cplusplus
 }
 #endif
 #ifdef  __cplusplus
 }
 #endif