5e1112d43e6cfd07e4b7a1ee444b070a225b6a6b
[yazpp-moved-to-github.git] / src / yaz-z-databases.cpp
1 /*
2  * Copyright (c) 2001, Index Data.
3  * See the file LICENSE for details.
4  * 
5  * $Id: yaz-z-databases.cpp,v 1.6 2005-06-25 15:53:19 adam Exp $
6  */
7
8 #include <string.h>
9
10 #include <yaz++/z-databases.h>
11
12 using namespace yazpp_1;
13
14 Yaz_Z_Databases::Yaz_Z_Databases()
15 {
16     nmem = nmem_create ();
17     m_num = 0;
18     m_list = 0;
19 }
20
21 Yaz_Z_Databases::~Yaz_Z_Databases()
22 {
23     nmem_destroy (nmem);
24 }
25
26 void Yaz_Z_Databases::set (int num, const char **db)
27 {
28     nmem_reset (nmem);
29  
30     m_list = (char **) nmem_malloc (nmem, num * sizeof(char*));
31     m_num = num;
32     for (int i = 0; i<num; i++)
33         m_list[i] = nmem_strdup (nmem, db[i] ? db[i] : "Default");
34 }
35
36 void Yaz_Z_Databases::get (NMEM n, int *num, char ***db)
37 {
38     *num = m_num;
39     *db = (char **) nmem_malloc (n, m_num * sizeof(char*));
40     for (int i = 0; i < m_num; i++)
41         (*db)[i] = nmem_strdup (n, m_list[i]);
42 }
43
44 void Yaz_Z_Databases::get (ODR o, int *num, char ***db)
45 {
46     get (o->mem, num, db);
47 }
48
49 int Yaz_Z_Databases::match (Yaz_Z_Databases &db)
50 {
51     if (db.m_num != m_num)
52         return 0;
53     for (int i = 0; i<m_num; i++)
54         if (strcmp (m_list[i], db.m_list[i]))
55             return 0;
56     return 1;
57 }
58
59 int Yaz_Z_Databases::match (int num, const char **db)
60 {
61     if (num != m_num)
62         return 0;
63     for (int i = 0; i<m_num; i++)
64         if (strcmp (m_list[i], db[i]))
65             return 0;
66     return 1;
67 }
68 /*
69  * Local variables:
70  * c-basic-offset: 4
71  * indent-tabs-mode: nil
72  * End:
73  * vim: shiftwidth=4 tabstop=8 expandtab
74  */
75