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