createrepo_c library
C library for metadata manipulation
src/load_metadata.h
00001 /* createrepo_c - Library of routines for manipulation with repodata
00002  * Copyright (C) 2012  Tomas Mlcoch
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License
00006  * as published by the Free Software Foundation; either version 2
00007  * of the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
00017  * USA.
00018  */
00019 
00020 #ifndef __C_CREATEREPOLIB_LOAD_METADATA_H__
00021 #define __C_CREATEREPOLIB_LOAD_METADATA_H__
00022 
00023 #include <glib.h>
00024 #include "locate_metadata.h"
00025 
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029 
00036 typedef enum {
00037     CR_HT_KEY_DEFAULT,                  
00038     CR_HT_KEY_HASH = CR_HT_KEY_DEFAULT, 
00039     CR_HT_KEY_NAME,                     
00040     CR_HT_KEY_FILENAME                  
00042 } cr_HashTableKey;
00043 
00044 #define cr_metadata_key(X)          ((X)->key)
00045 #define cr_metadata_hashtable(X)    ((X)->ht)
00046 #define cr_metadata_chunk(X)        ((X)->chunk)
00047 
00051 struct _cr_Metadata {
00052     cr_HashTableKey key;    
00053     GHashTable *ht;         
00054     GStringChunk *chunk;    
00055     GHashTable *pkglist_ht; 
00056 };
00057 
00061 typedef struct _cr_Metadata *cr_Metadata;
00062 
00064 #define CR_LOAD_METADATA_OK        0  
00065 #define CR_LOAD_METADATA_ERR       1  
00083 cr_Metadata cr_new_metadata(cr_HashTableKey key,
00084                             int use_single_chunk,
00085                             GSList *pkglist);
00086 
00091 void cr_destroy_metadata(cr_Metadata md);
00092 
00099 int cr_load_xml_metadata(cr_Metadata md,
00100                          struct cr_MetadataLocation *ml);
00101 
00108 int cr_locate_and_load_xml_metadata(cr_Metadata md,
00109                                     const char *repopath);
00110 
00111 #ifdef __cplusplus
00112 }
00113 #endif
00114 
00115 #endif /* __C_CREATEREPOLIB_LOAD_METADATA_H__ */