Download NHK English news podcast automatically. XML Parser "spxml" is used. This application requires mpod mother board. See also http://mbed.org/users/geodenx/notebook/mpod/

Dependencies:   BlinkLed HTTPClient EthernetInterface FatFileSystemCpp MSCFileSystem spxml mbed-rtos mbed

Fork of mpod_nhk_english by Satoshi Togawa

Download NHK English news podcast automatically.
XML Parser "spxml" is used.
This application requires mpod mother board.
See also http://mbed.org/users/geodenx/notebook/mpod/

Committer:
togayan
Date:
Mon Aug 20 13:27:17 2012 +0000
Revision:
4:7dae52cf560f
1st revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
togayan 4:7dae52cf560f 1 /*
togayan 4:7dae52cf560f 2 * Copyright 2007 Stephen Liu
togayan 4:7dae52cf560f 3 * For license terms, see the file COPYING along with this library.
togayan 4:7dae52cf560f 4 */
togayan 4:7dae52cf560f 5
togayan 4:7dae52cf560f 6 #include <string.h>
togayan 4:7dae52cf560f 7 #include <stdlib.h>
togayan 4:7dae52cf560f 8 #include "strdup.h"
togayan 4:7dae52cf560f 9
togayan 4:7dae52cf560f 10 #include "spxmlevent.hpp"
togayan 4:7dae52cf560f 11 #include "spxmlutils.hpp"
togayan 4:7dae52cf560f 12
togayan 4:7dae52cf560f 13 SP_XmlPullEvent :: SP_XmlPullEvent( int eventType )
togayan 4:7dae52cf560f 14 : mEventType( eventType )
togayan 4:7dae52cf560f 15 {
togayan 4:7dae52cf560f 16 }
togayan 4:7dae52cf560f 17
togayan 4:7dae52cf560f 18 SP_XmlPullEvent :: ~SP_XmlPullEvent()
togayan 4:7dae52cf560f 19 {
togayan 4:7dae52cf560f 20 }
togayan 4:7dae52cf560f 21
togayan 4:7dae52cf560f 22 int SP_XmlPullEvent :: getEventType()
togayan 4:7dae52cf560f 23 {
togayan 4:7dae52cf560f 24 return mEventType;
togayan 4:7dae52cf560f 25 }
togayan 4:7dae52cf560f 26
togayan 4:7dae52cf560f 27 //=========================================================
togayan 4:7dae52cf560f 28
togayan 4:7dae52cf560f 29 SP_XmlPullEventQueue :: SP_XmlPullEventQueue()
togayan 4:7dae52cf560f 30 {
togayan 4:7dae52cf560f 31 mQueue = new SP_XmlQueue();
togayan 4:7dae52cf560f 32 }
togayan 4:7dae52cf560f 33
togayan 4:7dae52cf560f 34 SP_XmlPullEventQueue :: ~SP_XmlPullEventQueue()
togayan 4:7dae52cf560f 35 {
togayan 4:7dae52cf560f 36 for( void * item = mQueue->pop(); NULL != item; item = mQueue->pop() ) {
togayan 4:7dae52cf560f 37 delete (SP_XmlPullEvent*)item;
togayan 4:7dae52cf560f 38 }
togayan 4:7dae52cf560f 39
togayan 4:7dae52cf560f 40 delete mQueue;
togayan 4:7dae52cf560f 41 }
togayan 4:7dae52cf560f 42
togayan 4:7dae52cf560f 43 void SP_XmlPullEventQueue :: enqueue( SP_XmlPullEvent * event )
togayan 4:7dae52cf560f 44 {
togayan 4:7dae52cf560f 45 mQueue->push( event );
togayan 4:7dae52cf560f 46 }
togayan 4:7dae52cf560f 47
togayan 4:7dae52cf560f 48 SP_XmlPullEvent * SP_XmlPullEventQueue :: dequeue()
togayan 4:7dae52cf560f 49 {
togayan 4:7dae52cf560f 50 SP_XmlPullEvent * event = (SP_XmlPullEvent*)mQueue->pop();
togayan 4:7dae52cf560f 51 return event;
togayan 4:7dae52cf560f 52 }
togayan 4:7dae52cf560f 53
togayan 4:7dae52cf560f 54 //=========================================================
togayan 4:7dae52cf560f 55
togayan 4:7dae52cf560f 56 SP_XmlStartDocEvent :: SP_XmlStartDocEvent()
togayan 4:7dae52cf560f 57 : SP_XmlPullEvent( eStartDocument )
togayan 4:7dae52cf560f 58 {
togayan 4:7dae52cf560f 59 }
togayan 4:7dae52cf560f 60
togayan 4:7dae52cf560f 61 SP_XmlStartDocEvent :: ~SP_XmlStartDocEvent()
togayan 4:7dae52cf560f 62 {
togayan 4:7dae52cf560f 63 }
togayan 4:7dae52cf560f 64
togayan 4:7dae52cf560f 65 //=========================================================
togayan 4:7dae52cf560f 66
togayan 4:7dae52cf560f 67 SP_XmlEndDocEvent :: SP_XmlEndDocEvent()
togayan 4:7dae52cf560f 68 : SP_XmlPullEvent( eEndDocument )
togayan 4:7dae52cf560f 69 {
togayan 4:7dae52cf560f 70 }
togayan 4:7dae52cf560f 71
togayan 4:7dae52cf560f 72 SP_XmlEndDocEvent :: ~SP_XmlEndDocEvent()
togayan 4:7dae52cf560f 73 {
togayan 4:7dae52cf560f 74 }
togayan 4:7dae52cf560f 75
togayan 4:7dae52cf560f 76 //=========================================================
togayan 4:7dae52cf560f 77
togayan 4:7dae52cf560f 78 SP_XmlDocTypeEvent :: SP_XmlDocTypeEvent()
togayan 4:7dae52cf560f 79 : SP_XmlPullEvent( eDocType )
togayan 4:7dae52cf560f 80 {
togayan 4:7dae52cf560f 81 memset( mName, 0, sizeof( mName ) );
togayan 4:7dae52cf560f 82 memset( mSystemID, 0, sizeof( mSystemID ) );
togayan 4:7dae52cf560f 83 memset( mPublicID, 0, sizeof( mPublicID ) );
togayan 4:7dae52cf560f 84 memset( mDTD, 0, sizeof( mDTD ) );
togayan 4:7dae52cf560f 85 }
togayan 4:7dae52cf560f 86
togayan 4:7dae52cf560f 87 SP_XmlDocTypeEvent :: ~SP_XmlDocTypeEvent()
togayan 4:7dae52cf560f 88 {
togayan 4:7dae52cf560f 89 }
togayan 4:7dae52cf560f 90
togayan 4:7dae52cf560f 91 void SP_XmlDocTypeEvent :: setName( const char * name )
togayan 4:7dae52cf560f 92 {
togayan 4:7dae52cf560f 93 strncpy( mName, name, sizeof( mName ) - 1 );
togayan 4:7dae52cf560f 94 }
togayan 4:7dae52cf560f 95
togayan 4:7dae52cf560f 96 const char * SP_XmlDocTypeEvent :: getName() const
togayan 4:7dae52cf560f 97 {
togayan 4:7dae52cf560f 98 return mName;
togayan 4:7dae52cf560f 99 }
togayan 4:7dae52cf560f 100
togayan 4:7dae52cf560f 101 void SP_XmlDocTypeEvent :: setSystemID( const char * systemID )
togayan 4:7dae52cf560f 102 {
togayan 4:7dae52cf560f 103 strncpy( mSystemID, systemID, sizeof( mSystemID ) - 1 );
togayan 4:7dae52cf560f 104 }
togayan 4:7dae52cf560f 105
togayan 4:7dae52cf560f 106 const char * SP_XmlDocTypeEvent :: getSystemID() const
togayan 4:7dae52cf560f 107 {
togayan 4:7dae52cf560f 108 return mSystemID;
togayan 4:7dae52cf560f 109 }
togayan 4:7dae52cf560f 110
togayan 4:7dae52cf560f 111 void SP_XmlDocTypeEvent :: setPublicID( const char * publicID )
togayan 4:7dae52cf560f 112 {
togayan 4:7dae52cf560f 113 strncpy( mPublicID, publicID, sizeof( mPublicID ) - 1 );
togayan 4:7dae52cf560f 114 }
togayan 4:7dae52cf560f 115
togayan 4:7dae52cf560f 116 const char * SP_XmlDocTypeEvent :: getPublicID() const
togayan 4:7dae52cf560f 117 {
togayan 4:7dae52cf560f 118 return mPublicID;
togayan 4:7dae52cf560f 119 }
togayan 4:7dae52cf560f 120
togayan 4:7dae52cf560f 121 void SP_XmlDocTypeEvent :: setDTD( const char * dtd )
togayan 4:7dae52cf560f 122 {
togayan 4:7dae52cf560f 123 strncpy( mDTD, dtd, sizeof( mDTD ) - 1 );
togayan 4:7dae52cf560f 124 }
togayan 4:7dae52cf560f 125
togayan 4:7dae52cf560f 126 const char * SP_XmlDocTypeEvent :: getDTD() const
togayan 4:7dae52cf560f 127 {
togayan 4:7dae52cf560f 128 return mDTD;
togayan 4:7dae52cf560f 129 }
togayan 4:7dae52cf560f 130
togayan 4:7dae52cf560f 131 //=========================================================
togayan 4:7dae52cf560f 132
togayan 4:7dae52cf560f 133 SP_XmlPIEvent :: SP_XmlPIEvent()
togayan 4:7dae52cf560f 134 : SP_XmlPullEvent( ePI )
togayan 4:7dae52cf560f 135 {
togayan 4:7dae52cf560f 136 memset( mTarget, 0, sizeof( mTarget ) );
togayan 4:7dae52cf560f 137 mData = NULL;
togayan 4:7dae52cf560f 138 }
togayan 4:7dae52cf560f 139
togayan 4:7dae52cf560f 140 SP_XmlPIEvent :: ~SP_XmlPIEvent()
togayan 4:7dae52cf560f 141 {
togayan 4:7dae52cf560f 142 if( NULL != mData ) free( mData );
togayan 4:7dae52cf560f 143 mData = NULL;
togayan 4:7dae52cf560f 144 }
togayan 4:7dae52cf560f 145
togayan 4:7dae52cf560f 146 void SP_XmlPIEvent :: setTarget( const char * target )
togayan 4:7dae52cf560f 147 {
togayan 4:7dae52cf560f 148 snprintf( mTarget, sizeof( mTarget ), "%s", target );
togayan 4:7dae52cf560f 149 }
togayan 4:7dae52cf560f 150
togayan 4:7dae52cf560f 151 const char * SP_XmlPIEvent :: getTarget()
togayan 4:7dae52cf560f 152 {
togayan 4:7dae52cf560f 153 return mTarget;
togayan 4:7dae52cf560f 154 }
togayan 4:7dae52cf560f 155
togayan 4:7dae52cf560f 156 void SP_XmlPIEvent :: setData( const char * data, int len )
togayan 4:7dae52cf560f 157 {
togayan 4:7dae52cf560f 158 if( NULL != data ) {
togayan 4:7dae52cf560f 159 if( NULL != mData ) free( mData );
togayan 4:7dae52cf560f 160 mData = (char*)malloc( len + 1 );
togayan 4:7dae52cf560f 161 memcpy( mData, data, len );
togayan 4:7dae52cf560f 162 mData[ len ] = '\0';
togayan 4:7dae52cf560f 163 }
togayan 4:7dae52cf560f 164 }
togayan 4:7dae52cf560f 165
togayan 4:7dae52cf560f 166 const char * SP_XmlPIEvent :: getData()
togayan 4:7dae52cf560f 167 {
togayan 4:7dae52cf560f 168 return mData;
togayan 4:7dae52cf560f 169 }
togayan 4:7dae52cf560f 170
togayan 4:7dae52cf560f 171 //=========================================================
togayan 4:7dae52cf560f 172
togayan 4:7dae52cf560f 173 SP_XmlDocDeclEvent :: SP_XmlDocDeclEvent()
togayan 4:7dae52cf560f 174 : SP_XmlPullEvent( eDocDecl )
togayan 4:7dae52cf560f 175 {
togayan 4:7dae52cf560f 176 memset( mVersion, 0, sizeof( mVersion ) );
togayan 4:7dae52cf560f 177 memset( mEncoding, 0, sizeof( mEncoding ) );
togayan 4:7dae52cf560f 178 mStandalone = -1;
togayan 4:7dae52cf560f 179 }
togayan 4:7dae52cf560f 180
togayan 4:7dae52cf560f 181 SP_XmlDocDeclEvent :: ~SP_XmlDocDeclEvent()
togayan 4:7dae52cf560f 182 {
togayan 4:7dae52cf560f 183 }
togayan 4:7dae52cf560f 184
togayan 4:7dae52cf560f 185 void SP_XmlDocDeclEvent :: setVersion( const char * version )
togayan 4:7dae52cf560f 186 {
togayan 4:7dae52cf560f 187 strncpy( mVersion, version, sizeof( mVersion ) -1 );
togayan 4:7dae52cf560f 188 }
togayan 4:7dae52cf560f 189
togayan 4:7dae52cf560f 190 const char * SP_XmlDocDeclEvent :: getVersion() const
togayan 4:7dae52cf560f 191 {
togayan 4:7dae52cf560f 192 return mVersion;
togayan 4:7dae52cf560f 193 }
togayan 4:7dae52cf560f 194
togayan 4:7dae52cf560f 195 void SP_XmlDocDeclEvent :: setEncoding( const char * encoding )
togayan 4:7dae52cf560f 196 {
togayan 4:7dae52cf560f 197 strncpy( mEncoding, encoding, sizeof( mEncoding ) -1 );
togayan 4:7dae52cf560f 198 }
togayan 4:7dae52cf560f 199
togayan 4:7dae52cf560f 200 const char * SP_XmlDocDeclEvent :: getEncoding() const
togayan 4:7dae52cf560f 201 {
togayan 4:7dae52cf560f 202 return mEncoding;
togayan 4:7dae52cf560f 203 }
togayan 4:7dae52cf560f 204
togayan 4:7dae52cf560f 205 void SP_XmlDocDeclEvent :: setStandalone( int standalone )
togayan 4:7dae52cf560f 206 {
togayan 4:7dae52cf560f 207 mStandalone = standalone;
togayan 4:7dae52cf560f 208 }
togayan 4:7dae52cf560f 209
togayan 4:7dae52cf560f 210 int SP_XmlDocDeclEvent :: getStandalone() const
togayan 4:7dae52cf560f 211 {
togayan 4:7dae52cf560f 212 return mStandalone;
togayan 4:7dae52cf560f 213 }
togayan 4:7dae52cf560f 214
togayan 4:7dae52cf560f 215 //=========================================================
togayan 4:7dae52cf560f 216
togayan 4:7dae52cf560f 217 SP_XmlStartTagEvent :: SP_XmlStartTagEvent()
togayan 4:7dae52cf560f 218 : SP_XmlPullEvent( eStartTag )
togayan 4:7dae52cf560f 219 {
togayan 4:7dae52cf560f 220 mName = NULL;
togayan 4:7dae52cf560f 221 mAttrNameList = new SP_XmlArrayList();
togayan 4:7dae52cf560f 222 mAttrValueList = new SP_XmlArrayList();
togayan 4:7dae52cf560f 223 }
togayan 4:7dae52cf560f 224
togayan 4:7dae52cf560f 225 SP_XmlStartTagEvent :: ~SP_XmlStartTagEvent()
togayan 4:7dae52cf560f 226 {
togayan 4:7dae52cf560f 227 if( NULL != mName ) free( mName );
togayan 4:7dae52cf560f 228 mName = NULL;
togayan 4:7dae52cf560f 229
togayan 4:7dae52cf560f 230 int i = 0;
togayan 4:7dae52cf560f 231
togayan 4:7dae52cf560f 232 for( i = 0; i < mAttrNameList->getCount(); i++ ) {
togayan 4:7dae52cf560f 233 free( (char*)mAttrNameList->getItem( i ) );
togayan 4:7dae52cf560f 234 }
togayan 4:7dae52cf560f 235
togayan 4:7dae52cf560f 236 delete mAttrNameList;
togayan 4:7dae52cf560f 237 mAttrNameList = NULL;
togayan 4:7dae52cf560f 238
togayan 4:7dae52cf560f 239 for( i = 0; i < mAttrValueList->getCount(); i++ ) {
togayan 4:7dae52cf560f 240 free( (char*)mAttrValueList->getItem( i ) );
togayan 4:7dae52cf560f 241 }
togayan 4:7dae52cf560f 242 delete mAttrValueList;
togayan 4:7dae52cf560f 243 mAttrValueList = NULL;
togayan 4:7dae52cf560f 244 }
togayan 4:7dae52cf560f 245
togayan 4:7dae52cf560f 246 void SP_XmlStartTagEvent :: setName( const char * name )
togayan 4:7dae52cf560f 247 {
togayan 4:7dae52cf560f 248 if( NULL != name ) {
togayan 4:7dae52cf560f 249 if( NULL != mName ) free( mName );
togayan 4:7dae52cf560f 250 mName = strdup( name );
togayan 4:7dae52cf560f 251 }
togayan 4:7dae52cf560f 252 }
togayan 4:7dae52cf560f 253
togayan 4:7dae52cf560f 254 const char * SP_XmlStartTagEvent :: getName() const
togayan 4:7dae52cf560f 255 {
togayan 4:7dae52cf560f 256 return mName;
togayan 4:7dae52cf560f 257 }
togayan 4:7dae52cf560f 258
togayan 4:7dae52cf560f 259 void SP_XmlStartTagEvent :: addAttr( const char * name, const char * value )
togayan 4:7dae52cf560f 260 {
togayan 4:7dae52cf560f 261 if( NULL != name ) mAttrNameList->append( strdup( name ) );
togayan 4:7dae52cf560f 262 if( NULL != value ) mAttrValueList->append( strdup( value ) );
togayan 4:7dae52cf560f 263 }
togayan 4:7dae52cf560f 264
togayan 4:7dae52cf560f 265 const char * SP_XmlStartTagEvent :: getAttrValue( const char * name ) const
togayan 4:7dae52cf560f 266 {
togayan 4:7dae52cf560f 267 const char * ret = NULL;
togayan 4:7dae52cf560f 268
togayan 4:7dae52cf560f 269 for( int i = 0; i < mAttrNameList->getCount(); i++ ) {
togayan 4:7dae52cf560f 270 if( 0 == strcmp( name, (char*)mAttrNameList->getItem( i ) ) ) {
togayan 4:7dae52cf560f 271 ret = (char*)mAttrValueList->getItem( i );
togayan 4:7dae52cf560f 272 break;
togayan 4:7dae52cf560f 273 }
togayan 4:7dae52cf560f 274 }
togayan 4:7dae52cf560f 275
togayan 4:7dae52cf560f 276 return ret;
togayan 4:7dae52cf560f 277 }
togayan 4:7dae52cf560f 278
togayan 4:7dae52cf560f 279 int SP_XmlStartTagEvent :: getAttrCount() const
togayan 4:7dae52cf560f 280 {
togayan 4:7dae52cf560f 281 return mAttrNameList->getCount();
togayan 4:7dae52cf560f 282 }
togayan 4:7dae52cf560f 283
togayan 4:7dae52cf560f 284 const char * SP_XmlStartTagEvent :: getAttr( int index, const char ** value ) const
togayan 4:7dae52cf560f 285 {
togayan 4:7dae52cf560f 286 const char * name = (char*)mAttrNameList->getItem( index );
togayan 4:7dae52cf560f 287 if( NULL != name && NULL != value ) *value = (char*)mAttrValueList->getItem( index );
togayan 4:7dae52cf560f 288
togayan 4:7dae52cf560f 289 return name;
togayan 4:7dae52cf560f 290 }
togayan 4:7dae52cf560f 291
togayan 4:7dae52cf560f 292 void SP_XmlStartTagEvent :: removeAttr( const char * name )
togayan 4:7dae52cf560f 293 {
togayan 4:7dae52cf560f 294 int index = -1;
togayan 4:7dae52cf560f 295
togayan 4:7dae52cf560f 296 for( int i = 0; i < mAttrNameList->getCount(); i++ ) {
togayan 4:7dae52cf560f 297 if( 0 == strcmp( name, (char*)mAttrNameList->getItem( i ) ) ) {
togayan 4:7dae52cf560f 298 index = i;
togayan 4:7dae52cf560f 299 break;
togayan 4:7dae52cf560f 300 }
togayan 4:7dae52cf560f 301 }
togayan 4:7dae52cf560f 302
togayan 4:7dae52cf560f 303 if( index >= 0 ) {
togayan 4:7dae52cf560f 304 free( mAttrNameList->takeItem( index ) );
togayan 4:7dae52cf560f 305 free( mAttrValueList->takeItem( index ) );
togayan 4:7dae52cf560f 306 }
togayan 4:7dae52cf560f 307 }
togayan 4:7dae52cf560f 308
togayan 4:7dae52cf560f 309 //=========================================================
togayan 4:7dae52cf560f 310
togayan 4:7dae52cf560f 311 SP_XmlTextEvent :: SP_XmlTextEvent( int eventType )
togayan 4:7dae52cf560f 312 : SP_XmlPullEvent( eventType )
togayan 4:7dae52cf560f 313 {
togayan 4:7dae52cf560f 314 mText = NULL;
togayan 4:7dae52cf560f 315 }
togayan 4:7dae52cf560f 316
togayan 4:7dae52cf560f 317 SP_XmlTextEvent :: ~SP_XmlTextEvent()
togayan 4:7dae52cf560f 318 {
togayan 4:7dae52cf560f 319 if( NULL != mText ) free( mText );
togayan 4:7dae52cf560f 320 mText = NULL;
togayan 4:7dae52cf560f 321 }
togayan 4:7dae52cf560f 322
togayan 4:7dae52cf560f 323 void SP_XmlTextEvent :: setText( const char * text, int len )
togayan 4:7dae52cf560f 324 {
togayan 4:7dae52cf560f 325 if( NULL != text ) {
togayan 4:7dae52cf560f 326 if( NULL != mText ) free( mText );
togayan 4:7dae52cf560f 327 mText = (char*)malloc( len + 1 );
togayan 4:7dae52cf560f 328 memcpy( mText, text, len );
togayan 4:7dae52cf560f 329 mText[ len ] = '\0';
togayan 4:7dae52cf560f 330 }
togayan 4:7dae52cf560f 331 }
togayan 4:7dae52cf560f 332
togayan 4:7dae52cf560f 333 const char * SP_XmlTextEvent :: getText() const
togayan 4:7dae52cf560f 334 {
togayan 4:7dae52cf560f 335 return mText;
togayan 4:7dae52cf560f 336 }
togayan 4:7dae52cf560f 337
togayan 4:7dae52cf560f 338 //=========================================================
togayan 4:7dae52cf560f 339
togayan 4:7dae52cf560f 340 SP_XmlEndTagEvent :: SP_XmlEndTagEvent()
togayan 4:7dae52cf560f 341 : SP_XmlTextEvent( eEndTag )
togayan 4:7dae52cf560f 342 {
togayan 4:7dae52cf560f 343 }
togayan 4:7dae52cf560f 344
togayan 4:7dae52cf560f 345 SP_XmlEndTagEvent :: ~SP_XmlEndTagEvent()
togayan 4:7dae52cf560f 346 {
togayan 4:7dae52cf560f 347 }
togayan 4:7dae52cf560f 348
togayan 4:7dae52cf560f 349 //=========================================================
togayan 4:7dae52cf560f 350
togayan 4:7dae52cf560f 351 SP_XmlCDataEvent :: SP_XmlCDataEvent()
togayan 4:7dae52cf560f 352 : SP_XmlTextEvent( eCData )
togayan 4:7dae52cf560f 353 {
togayan 4:7dae52cf560f 354 }
togayan 4:7dae52cf560f 355
togayan 4:7dae52cf560f 356 SP_XmlCDataEvent :: ~SP_XmlCDataEvent()
togayan 4:7dae52cf560f 357 {
togayan 4:7dae52cf560f 358 }
togayan 4:7dae52cf560f 359
togayan 4:7dae52cf560f 360 //=========================================================
togayan 4:7dae52cf560f 361
togayan 4:7dae52cf560f 362 SP_XmlCommentEvent :: SP_XmlCommentEvent()
togayan 4:7dae52cf560f 363 : SP_XmlTextEvent( eComment )
togayan 4:7dae52cf560f 364 {
togayan 4:7dae52cf560f 365 }
togayan 4:7dae52cf560f 366
togayan 4:7dae52cf560f 367 SP_XmlCommentEvent :: ~SP_XmlCommentEvent()
togayan 4:7dae52cf560f 368 {
togayan 4:7dae52cf560f 369 }