/**
* @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);
}
}