forked from github/server
orderdb is glue code, belongs outside of kernel.
This commit is contained in:
parent
7b9e72e559
commit
91c49659ef
11 changed files with 116 additions and 48 deletions
|
@ -113,6 +113,7 @@ set (ERESSEA_SRC
|
||||||
morale.c
|
morale.c
|
||||||
move.c
|
move.c
|
||||||
names.c
|
names.c
|
||||||
|
orderdb.c
|
||||||
orderfile.c
|
orderfile.c
|
||||||
piracy.c
|
piracy.c
|
||||||
prefix.c
|
prefix.c
|
||||||
|
@ -221,6 +222,7 @@ set(TESTS_SRC
|
||||||
monsters.test.c
|
monsters.test.c
|
||||||
move.test.c
|
move.test.c
|
||||||
names.test.c
|
names.test.c
|
||||||
|
orderdb.test.c
|
||||||
orderfile.test.c
|
orderfile.test.c
|
||||||
piracy.test.c
|
piracy.test.c
|
||||||
prefix.test.c
|
prefix.test.c
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
#include "kernel/equipment.h"
|
#include "kernel/equipment.h"
|
||||||
#include "kernel/faction.h"
|
#include "kernel/faction.h"
|
||||||
#include "kernel/item.h"
|
#include "kernel/item.h"
|
||||||
#include "kernel/orderdb.h"
|
|
||||||
|
|
||||||
#include "util/functions.h"
|
#include "util/functions.h"
|
||||||
#include "util/language.h"
|
#include "util/language.h"
|
||||||
|
@ -28,6 +27,7 @@
|
||||||
#include "creport.h"
|
#include "creport.h"
|
||||||
#include "report.h"
|
#include "report.h"
|
||||||
#include "names.h"
|
#include "names.h"
|
||||||
|
#include "orderdb.h"
|
||||||
#include "reports.h"
|
#include "reports.h"
|
||||||
#include "spells.h"
|
#include "spells.h"
|
||||||
#include "vortex.h"
|
#include "vortex.h"
|
||||||
|
|
|
@ -27,7 +27,6 @@ group.test.c
|
||||||
item.test.c
|
item.test.c
|
||||||
messages.test.c
|
messages.test.c
|
||||||
order.test.c
|
order.test.c
|
||||||
orderdb.test.c
|
|
||||||
# pathfinder.test.c
|
# pathfinder.test.c
|
||||||
plane.test.c
|
plane.test.c
|
||||||
pool.test.c
|
pool.test.c
|
||||||
|
@ -61,7 +60,6 @@ group.c
|
||||||
item.c
|
item.c
|
||||||
messages.c
|
messages.c
|
||||||
order.c
|
order.c
|
||||||
orderdb.c
|
|
||||||
pathfinder.c
|
pathfinder.c
|
||||||
plane.c
|
plane.c
|
||||||
pool.c
|
pool.c
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
#include <kernel/config.h>
|
#include <kernel/config.h>
|
||||||
#include <kernel/faction.h>
|
#include <kernel/faction.h>
|
||||||
|
#include <kernel/order.h>
|
||||||
|
|
||||||
#include "db/driver.h"
|
#include "db/driver.h"
|
||||||
#include "orderdb.h"
|
#include "orderdb.h"
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include <kernel/config.h>
|
#include <kernel/config.h>
|
||||||
#include "order.h"
|
#include "order.h"
|
||||||
|
|
||||||
#include "orderdb.h"
|
|
||||||
#include "skill.h"
|
#include "skill.h"
|
||||||
#include "keyword.h"
|
#include "keyword.h"
|
||||||
|
|
||||||
|
@ -36,6 +35,36 @@
|
||||||
# define ORD_KEYWORD(ord) (keyword_t)((ord)->command & 0xFFFF)
|
# define ORD_KEYWORD(ord) (keyword_t)((ord)->command & 0xFFFF)
|
||||||
# define OD_STRING(odata) ((odata) ? (odata)->_str : NULL)
|
# define OD_STRING(odata) ((odata) ? (odata)->_str : NULL)
|
||||||
|
|
||||||
|
void odata_create(order_data **pdata, size_t len, const char *str)
|
||||||
|
{
|
||||||
|
order_data *data;
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
assert(pdata);
|
||||||
|
data = malloc(sizeof(order_data) + len + 1);
|
||||||
|
data->_refcount = 1;
|
||||||
|
result = (char *)(data + 1);
|
||||||
|
data->_str = (len > 0) ? result : NULL;
|
||||||
|
if (str) {
|
||||||
|
strcpy(result, str);
|
||||||
|
}
|
||||||
|
*pdata = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void odata_release(order_data * od)
|
||||||
|
{
|
||||||
|
if (od) {
|
||||||
|
if (--od->_refcount == 0) {
|
||||||
|
free(od);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void odata_addref(order_data *od)
|
||||||
|
{
|
||||||
|
++od->_refcount;
|
||||||
|
}
|
||||||
|
|
||||||
void replace_order(order ** dlist, order * orig, const order * src)
|
void replace_order(order ** dlist, order * orig, const order * src)
|
||||||
{
|
{
|
||||||
assert(src);
|
assert(src);
|
||||||
|
|
|
@ -37,6 +37,18 @@ extern "C" {
|
||||||
#define CMD_PERSIST 0x020000
|
#define CMD_PERSIST 0x020000
|
||||||
#define CMD_DEFAULT 0x040000
|
#define CMD_DEFAULT 0x040000
|
||||||
|
|
||||||
|
typedef struct order_data {
|
||||||
|
const char *_str;
|
||||||
|
int _refcount;
|
||||||
|
} order_data;
|
||||||
|
|
||||||
|
extern order_data *odata_load(int id);
|
||||||
|
extern int odata_save(order_data *od);
|
||||||
|
|
||||||
|
void odata_create(order_data **pdata, size_t len, const char *str);
|
||||||
|
void odata_release(order_data * od);
|
||||||
|
void odata_addref(order_data *od);
|
||||||
|
|
||||||
typedef struct order {
|
typedef struct order {
|
||||||
struct order *next;
|
struct order *next;
|
||||||
/* do not access this data: */
|
/* do not access this data: */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
|
|
||||||
#include "config.h"
|
#include "kernel/config.h"
|
||||||
#include "db/driver.h"
|
#include "kernel/db/driver.h"
|
||||||
|
|
||||||
#include "orderdb.h"
|
#include "orderdb.h"
|
||||||
|
|
||||||
|
@ -26,36 +26,6 @@ void orderdb_close(void)
|
||||||
db_driver_close(DB_SWAP);
|
db_driver_close(DB_SWAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
void odata_create(order_data **pdata, size_t len, const char *str)
|
|
||||||
{
|
|
||||||
order_data *data;
|
|
||||||
char *result;
|
|
||||||
|
|
||||||
assert(pdata);
|
|
||||||
data = malloc(sizeof(order_data) + len + 1);
|
|
||||||
data->_refcount = 1;
|
|
||||||
result = (char *)(data + 1);
|
|
||||||
data->_str = (len > 0) ? result : NULL;
|
|
||||||
if (str) {
|
|
||||||
strcpy(result, str);
|
|
||||||
}
|
|
||||||
*pdata = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
void odata_release(order_data * od)
|
|
||||||
{
|
|
||||||
if (od) {
|
|
||||||
if (--od->_refcount == 0) {
|
|
||||||
free(od);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void odata_addref(order_data *od)
|
|
||||||
{
|
|
||||||
++od->_refcount;
|
|
||||||
}
|
|
||||||
|
|
||||||
order_data *odata_load(int id)
|
order_data *odata_load(int id)
|
||||||
{
|
{
|
||||||
if (id > 0) {
|
if (id > 0) {
|
||||||
|
|
|
@ -7,18 +7,6 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct order_data {
|
|
||||||
const char *_str;
|
|
||||||
int _refcount;
|
|
||||||
} order_data;
|
|
||||||
|
|
||||||
void odata_create(order_data **pdata, size_t len, const char *str);
|
|
||||||
void odata_release(order_data * od);
|
|
||||||
void odata_addref(order_data *od);
|
|
||||||
|
|
||||||
order_data *odata_load(int id);
|
|
||||||
int odata_save(order_data *od);
|
|
||||||
|
|
||||||
void orderdb_open(void);
|
void orderdb_open(void);
|
||||||
void orderdb_close(void);
|
void orderdb_close(void);
|
||||||
|
|
||||||
|
|
43
src/orderdb.c
Normal file
43
src/orderdb.c
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#include <platform.h>
|
||||||
|
|
||||||
|
#include "kernel/config.h"
|
||||||
|
#include "kernel/db/driver.h"
|
||||||
|
|
||||||
|
#include "orderdb.h"
|
||||||
|
|
||||||
|
#include <util/log.h>
|
||||||
|
|
||||||
|
#include <critbit.h>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
void orderdb_open(void)
|
||||||
|
{
|
||||||
|
const char *dbname;
|
||||||
|
|
||||||
|
dbname = config_get("game.dbswap");
|
||||||
|
db_driver_open(DB_SWAP, dbname);
|
||||||
|
}
|
||||||
|
|
||||||
|
void orderdb_close(void)
|
||||||
|
{
|
||||||
|
db_driver_close(DB_SWAP);
|
||||||
|
}
|
||||||
|
|
||||||
|
order_data *odata_load(int id)
|
||||||
|
{
|
||||||
|
if (id > 0) {
|
||||||
|
return db_driver_order_load(id);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int odata_save(order_data *od)
|
||||||
|
{
|
||||||
|
if (od->_str) {
|
||||||
|
return db_driver_order_save(od->_str);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
25
src/orderdb.h
Normal file
25
src/orderdb.h
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef H_ORDERDB
|
||||||
|
#define H_ORDERDB
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct order_data {
|
||||||
|
const char *_str;
|
||||||
|
int _refcount;
|
||||||
|
} order_data;
|
||||||
|
|
||||||
|
void odata_create(order_data **pdata, size_t len, const char *str);
|
||||||
|
void odata_release(order_data * od);
|
||||||
|
void odata_addref(order_data *od);
|
||||||
|
|
||||||
|
void orderdb_open(void);
|
||||||
|
void orderdb_close(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
Loading…
Reference in a new issue