00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00032 #ifndef __LWPR_XML_H
00033 #define __LWPR_XML_H
00034 
00035 #include <stdio.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00041 
00043 typedef struct {
00044    int level;        
00045    int numSub;       
00046    int curSubNumRF;  
00047    int curSub;       
00048    int curRF;        
00049    int curType;      
00050    void *curPtr;     
00051    int M;            
00052    int MS;           
00053    int N;            
00054    int readM;        
00055    int readN;        
00056    int numErrors;    
00057    int numWarnings;  
00058    FILE *errFile;    
00059    LWPR_Model *model;
00060 } LWPR_ParserData;
00061 
00070 int lwpr_write_xml(const LWPR_Model *model, const char *filename);
00071 
00077 void lwpr_write_xml_fp(const LWPR_Model *model,FILE *fp);
00078 
00096 int lwpr_read_xml(LWPR_Model *model, const char *filename, int *numWarnings);
00097 
00107 void lwpr_xml_write_matrix(FILE *fp, int level, const char *name, 
00108       int M, int Ms, int N, const double *val);
00109 
00117 void lwpr_xml_write_vector(FILE *fp, int level, const char *name, 
00118       int N, const double *val);
00119 
00126 void lwpr_xml_write_int(FILE *fp, int level, const char *name, int val);
00127 
00134 void lwpr_xml_write_scalar(FILE *fp, int level, const char *name, double val);
00135 
00140 void lwpr_xml_write_rf(FILE *fp, const LWPR_ReceptiveField *RF);
00141 
00149 int lwpr_xml_parse_scalar(const char **atts, const char **fieldName);
00150 
00159 int lwpr_xml_parse_vector(const char **atts, const char **fieldName, int *N);
00160 
00170 int lwpr_xml_parse_matrix(const char **atts, const char **fieldName, int *M, int *N);
00171 
00176 void lwpr_xml_error(LWPR_ParserData *ud, const char *msg);
00177 
00184 void lwpr_xml_dim_error(LWPR_ParserData *ud, const char *fieldname,int wishM,int wishN);
00185 
00190 void lwpr_xml_report_unknown(LWPR_ParserData *ud, const char *fieldname);
00191 
00193 void lwpr_xml_start_element(void *userData, const char *name, const char **atts);
00195 void lwpr_xml_end_element(void *userData, const char *name);
00197 void lwpr_xml_handle_data(void *userData, const char *s, int len);
00198 
00207 int lwpr_xml_read_file_into_buffer(const char *filename, char **buffer);
00208 
00209 #ifdef __cplusplus
00210 }
00211 #endif
00212 
00213 #endif