circlemud_squared_0.5.153/cnf/
circlemud_squared_0.5.153/etc/
circlemud_squared_0.5.153/etc/etc/
circlemud_squared_0.5.153/etc/house/
circlemud_squared_0.5.153/etc/misc/
circlemud_squared_0.5.153/etc/plralias/A-E/
circlemud_squared_0.5.153/etc/plralias/F-J/
circlemud_squared_0.5.153/etc/plralias/K-O/
circlemud_squared_0.5.153/etc/plralias/P-T/
circlemud_squared_0.5.153/etc/plralias/U-Z/
circlemud_squared_0.5.153/etc/plralias/ZZZ/
circlemud_squared_0.5.153/etc/plrobjs/
circlemud_squared_0.5.153/etc/plrobjs/A-E/
circlemud_squared_0.5.153/etc/plrobjs/F-J/
circlemud_squared_0.5.153/etc/plrobjs/K-O/
circlemud_squared_0.5.153/etc/plrobjs/P-T/
circlemud_squared_0.5.153/etc/plrobjs/U-Z/
circlemud_squared_0.5.153/etc/plrobjs/ZZZ/
circlemud_squared_0.5.153/etc/text/
circlemud_squared_0.5.153/etc/text/help/
circlemud_squared_0.5.153/src/util/
circlemud_squared_0.5.153/src/util/worldconv/
/**
 * @file extraDesc.c
 * @ingroup extradesc
 *
 * Extra Description code
 *
 * @author Geoff Davis <geoff@circlemudsquared.org>
 * @author Greg Buxton <greg@circlemudsquared.org>
 *
 * @par Copyright:
 *   Copyright (C) 2006 Geoff Davis <geoff@circlemudsquared.org><br>
 *                      Greg Buxton <greg@circlemudsquared.org>
 *
 * @par
 *   Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University<br>
 *   CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.
 *
 * @par
 *   All rights reserved.  See license.doc for complete information.
 *
 * @package cs
 * @version 1.0
 */

#define __EXTRADESC_C__

#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "dao.h"
#include "db.h"
#include "interpreter.h"
#include "extraDesc.h"
#include "main.h"

/**
 * Converts a list of extra descriptions to their corresponding DAOs.
 * @param parentDao the container DAO to contain the extraDescription DAOs
 * @param list the list of extra descriptions to be converted
 */
void extraDescData_listToDao(daoData_t *parentDao, struct extra_descr_data *list) {
  if (parentDao == NULL) {
    log("extraDescData_listToDao(): invalid 'parentDao' daoData_t.");
  } else if (list == NULL) {
    log("extraDescData_listToDao(): invalid 'list' struct extra_descr_data.");
  } else {
    /* Declare a counter variable */
    register unsigned long count = 0UL;

    /* Create the container for the extra description DAOs. */
    daoData_t * subContainerDao = dao_newChild(parentDao, "extraDescriptions");

    /* Iterate over the list of extra descriptions. */
    while (list) {
      /* Convert the extra description. */
      extraDescData_toDao(subContainerDao, count++, list);
      /* Advance to the next extra description in the list. */
      list = list->next;
    }
  }
}

/**
 * Save a specific extraDescData_t to DAO
 * @param parentDao the container DAO to contain the extraDescription DAO
 * @param num Number of the extraDescData_t in the list
 * @param extra extraDescData_t to save
 */
void extraDescData_toDao(daoData_t *parentDao, int num, struct extra_descr_data *extra) {
  if (parentDao == NULL) {
    log("extraDescData_toDao(): invalid 'parentDao' daoData_t.");
  } else if (extra == NULL) {
    log("extraDescData_toDao(): invalid 'entry' struct extra_descr_data.");
  } else {
    /* Create a container DAO to contain the extra description. */
    daoData_t *subContainerDao = dao_newChild(parentDao, "%d", num);
    /* Write the extra description's keywords to the DAO. */
    dao_newScalar(subContainerDao, "keywords", "%s", extra->keyword);
    /* Write the extra description's description to the DAO. */
    dao_newScalar(subContainerDao, "description", "%s", extra->description);
  }
}