summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Loh <denis.loh@gmail.com>2010-01-25 12:10:01 +0100
committerDenis Loh <denis.loh@gmail.com>2010-01-25 12:10:01 +0100
commit724cb5e3783311f6b8c808852dbe2de59f2399b0 (patch)
treebe1f2d617b4a3e2e156b7a2d6ba9ee335cde63cf
parent0152f33daffe3fe943d6a134409d02df7ecaa982 (diff)
downloadvdr-plugin-upnp-724cb5e3783311f6b8c808852dbe2de59f2399b0.tar.gz
vdr-plugin-upnp-724cb5e3783311f6b8c808852dbe2de59f2399b0.tar.bz2
Fixed small bug which leads to an empty TV folder
-rw-r--r--dlna/avdetector.cpp378
-rw-r--r--dlna/dlna.cpp197
-rw-r--r--dlna/profiles/aac.cpp8
-rw-r--r--dlna/profiles/ac3.cpp85
-rw-r--r--dlna/profiles/amr.cpp8
-rw-r--r--dlna/profiles/atrac3plus.cpp8
-rw-r--r--dlna/profiles/container.cpp117
-rw-r--r--dlna/profiles/jpeg.cpp11
-rw-r--r--dlna/profiles/lpcm.cpp8
-rw-r--r--dlna/profiles/mpa.cpp121
-rw-r--r--dlna/profiles/mpeg1.cpp15
-rw-r--r--dlna/profiles/mpeg2.cpp216
-rw-r--r--dlna/profiles/mpeg4_p10.cpp148
-rw-r--r--dlna/profiles/mpeg4_p2.cpp129
-rw-r--r--dlna/profiles/png.cpp11
-rw-r--r--dlna/profiles/wma.cpp8
-rw-r--r--dlna/profiles/wmv9.cpp8
-rw-r--r--doc/Source Code Documentation.zipbin0 -> 1617842 bytes
-rw-r--r--doc/doxygen.err0
-rw-r--r--doc/html/annotated.html78
-rw-r--r--doc/html/avdetector_8h-source.html48
-rw-r--r--doc/html/classcAudioVideoDetector-members.html34
-rw-r--r--doc/html/classcAudioVideoDetector.html85
-rw-r--r--doc/html/classcConnectionManager-members.html40
-rw-r--r--doc/html/classcConnectionManager.html195
-rw-r--r--doc/html/classcConnectionManager__coll__graph.map2
-rw-r--r--doc/html/classcConnectionManager__coll__graph.md51
-rw-r--r--doc/html/classcConnectionManager__coll__graph.pngbin0 -> 12806 bytes
-rw-r--r--doc/html/classcConnectionManager__inherit__graph.map1
-rw-r--r--doc/html/classcConnectionManager__inherit__graph.md51
-rw-r--r--doc/html/classcConnectionManager__inherit__graph.pngbin0 -> 7810 bytes
-rw-r--r--doc/html/classcContentDirectory-members.html40
-rw-r--r--doc/html/classcContentDirectory.html205
-rw-r--r--doc/html/classcContentDirectory__coll__graph.map7
-rw-r--r--doc/html/classcContentDirectory__coll__graph.md51
-rw-r--r--doc/html/classcContentDirectory__coll__graph.pngbin0 -> 42439 bytes
-rw-r--r--doc/html/classcContentDirectory__inherit__graph.map1
-rw-r--r--doc/html/classcContentDirectory__inherit__graph.md51
-rw-r--r--doc/html/classcContentDirectory__inherit__graph.pngbin0 -> 6233 bytes
-rw-r--r--doc/html/classcDlna-members.html42
-rw-r--r--doc/html/classcDlna.html335
-rw-r--r--doc/html/classcDlna__coll__graph.map0
-rw-r--r--doc/html/classcDlna__coll__graph.md51
-rw-r--r--doc/html/classcDlna__coll__graph.pngbin0 -> 5213 bytes
-rw-r--r--doc/html/classcFileHandle-members.html37
-rw-r--r--doc/html/classcFileHandle.html273
-rw-r--r--doc/html/classcFileHandle.pngbin0 -> 368 bytes
-rw-r--r--doc/html/classcFileHandle__inherit__graph.map2
-rw-r--r--doc/html/classcFileHandle__inherit__graph.md51
-rw-r--r--doc/html/classcFileHandle__inherit__graph.pngbin0 -> 9721 bytes
-rw-r--r--doc/html/classcFilterCriteria-members.html33
-rw-r--r--doc/html/classcFilterCriteria.html73
-rw-r--r--doc/html/classcLiveReceiver-members.html42
-rw-r--r--doc/html/classcLiveReceiver.html388
-rw-r--r--doc/html/classcLiveReceiver.pngbin0 -> 364 bytes
-rw-r--r--doc/html/classcLiveReceiver__coll__graph.map1
-rw-r--r--doc/html/classcLiveReceiver__coll__graph.md51
-rw-r--r--doc/html/classcLiveReceiver__coll__graph.pngbin0 -> 5464 bytes
-rw-r--r--doc/html/classcLiveReceiver__inherit__graph.map1
-rw-r--r--doc/html/classcLiveReceiver__inherit__graph.md51
-rw-r--r--doc/html/classcLiveReceiver__inherit__graph.pngbin0 -> 5464 bytes
-rw-r--r--doc/html/classcMediaDatabase-members.html42
-rw-r--r--doc/html/classcMediaDatabase.html390
-rw-r--r--doc/html/classcMediaDatabase__coll__graph.map5
-rw-r--r--doc/html/classcMediaDatabase__coll__graph.md51
-rw-r--r--doc/html/classcMediaDatabase__coll__graph.pngbin0 -> 33669 bytes
-rw-r--r--doc/html/classcMediatorInterface-members.html37
-rw-r--r--doc/html/classcMediatorInterface.html226
-rw-r--r--doc/html/classcMediatorInterface__inherit__graph.map6
-rw-r--r--doc/html/classcMediatorInterface__inherit__graph.md51
-rw-r--r--doc/html/classcMediatorInterface__inherit__graph.pngbin0 -> 19327 bytes
-rw-r--r--doc/html/classcMenuSetupUPnP-members.html36
-rw-r--r--doc/html/classcMenuSetupUPnP.html151
-rw-r--r--doc/html/classcMenuSetupUPnP__coll__graph.map12
-rw-r--r--doc/html/classcMenuSetupUPnP__coll__graph.md51
-rw-r--r--doc/html/classcMenuSetupUPnP__coll__graph.pngbin0 -> 83074 bytes
-rw-r--r--doc/html/classcPathParser-members.html33
-rw-r--r--doc/html/classcPathParser.html100
-rw-r--r--doc/html/classcPluginUpnp-members.html44
-rw-r--r--doc/html/classcPluginUpnp.html361
-rw-r--r--doc/html/classcPluginUpnp__coll__graph.map12
-rw-r--r--doc/html/classcPluginUpnp__coll__graph.md51
-rw-r--r--doc/html/classcPluginUpnp__coll__graph.pngbin0 -> 82300 bytes
-rw-r--r--doc/html/classcRecordingPlayer-members.html39
-rw-r--r--doc/html/classcRecordingPlayer.html284
-rw-r--r--doc/html/classcRecordingPlayer__coll__graph.map1
-rw-r--r--doc/html/classcRecordingPlayer__coll__graph.md51
-rw-r--r--doc/html/classcRecordingPlayer__coll__graph.pngbin0 -> 5532 bytes
-rw-r--r--doc/html/classcRecordingPlayer__inherit__graph.map1
-rw-r--r--doc/html/classcRecordingPlayer__inherit__graph.md51
-rw-r--r--doc/html/classcRecordingPlayer__inherit__graph.pngbin0 -> 5532 bytes
-rw-r--r--doc/html/classcRegisteredProfile-members.html34
-rw-r--r--doc/html/classcRegisteredProfile.html52
-rw-r--r--doc/html/classcRegisteredProfile__coll__graph.map1
-rw-r--r--doc/html/classcRegisteredProfile__coll__graph.md51
-rw-r--r--doc/html/classcRegisteredProfile__coll__graph.pngbin0 -> 3045 bytes
-rw-r--r--doc/html/classcRow-members.html36
-rw-r--r--doc/html/classcRow.html156
-rw-r--r--doc/html/classcRows-members.html34
-rw-r--r--doc/html/classcRows.html88
-rw-r--r--doc/html/classcRows__coll__graph.map1
-rw-r--r--doc/html/classcRows__coll__graph.md51
-rw-r--r--doc/html/classcRows__coll__graph.pngbin0 -> 3061 bytes
-rw-r--r--doc/html/classcSQLiteDatabase-members.html43
-rw-r--r--doc/html/classcSQLiteDatabase.html343
-rw-r--r--doc/html/classcSQLiteDatabase__coll__graph.map2
-rw-r--r--doc/html/classcSQLiteDatabase__coll__graph.md51
-rw-r--r--doc/html/classcSQLiteDatabase__coll__graph.pngbin0 -> 10351 bytes
-rw-r--r--doc/html/classcSortCriteria-members.html33
-rw-r--r--doc/html/classcSortCriteria.html82
-rw-r--r--doc/html/classcSortCriteria__coll__graph.map1
-rw-r--r--doc/html/classcSortCriteria__coll__graph.md51
-rw-r--r--doc/html/classcSortCriteria__coll__graph.pngbin0 -> 3734 bytes
-rw-r--r--doc/html/classcUPnPClassContainer-members.html110
-rw-r--r--doc/html/classcUPnPClassContainer.html897
-rw-r--r--doc/html/classcUPnPClassContainer__coll__graph.map3
-rw-r--r--doc/html/classcUPnPClassContainer__coll__graph.md51
-rw-r--r--doc/html/classcUPnPClassContainer__coll__graph.pngbin0 -> 28651 bytes
-rw-r--r--doc/html/classcUPnPClassContainer__inherit__graph.map1
-rw-r--r--doc/html/classcUPnPClassContainer__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPClassContainer__inherit__graph.pngbin0 -> 19210 bytes
-rw-r--r--doc/html/classcUPnPClassItem-members.html86
-rw-r--r--doc/html/classcUPnPClassItem.html337
-rw-r--r--doc/html/classcUPnPClassItem__coll__graph.map2
-rw-r--r--doc/html/classcUPnPClassItem__coll__graph.md51
-rw-r--r--doc/html/classcUPnPClassItem__coll__graph.pngbin0 -> 19548 bytes
-rw-r--r--doc/html/classcUPnPClassItem__inherit__graph.map4
-rw-r--r--doc/html/classcUPnPClassItem__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPClassItem__inherit__graph.pngbin0 -> 35614 bytes
-rw-r--r--doc/html/classcUPnPClassMovie-members.html126
-rw-r--r--doc/html/classcUPnPClassMovie.html331
-rw-r--r--doc/html/classcUPnPClassMovie__coll__graph.map4
-rw-r--r--doc/html/classcUPnPClassMovie__coll__graph.md51
-rw-r--r--doc/html/classcUPnPClassMovie__coll__graph.pngbin0 -> 32902 bytes
-rw-r--r--doc/html/classcUPnPClassMovie__inherit__graph.map3
-rw-r--r--doc/html/classcUPnPClassMovie__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPClassMovie__inherit__graph.pngbin0 -> 25190 bytes
-rw-r--r--doc/html/classcUPnPClassObject-members.html80
-rw-r--r--doc/html/classcUPnPClassObject.html1039
-rw-r--r--doc/html/classcUPnPClassObject__coll__graph.map1
-rw-r--r--doc/html/classcUPnPClassObject__coll__graph.md51
-rw-r--r--doc/html/classcUPnPClassObject__coll__graph.pngbin0 -> 14875 bytes
-rw-r--r--doc/html/classcUPnPClassObject__inherit__graph.map5
-rw-r--r--doc/html/classcUPnPClassObject__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPClassObject__inherit__graph.pngbin0 -> 48263 bytes
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast-members.html132
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast.html446
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast__coll__graph.map4
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast__coll__graph.md51
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast__coll__graph.pngbin0 -> 34677 bytes
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map3
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPClassVideoBroadcast__inherit__graph.pngbin0 -> 27404 bytes
-rw-r--r--doc/html/classcUPnPClassVideoItem-members.html118
-rw-r--r--doc/html/classcUPnPClassVideoItem.html815
-rw-r--r--doc/html/classcUPnPClassVideoItem__coll__graph.map3
-rw-r--r--doc/html/classcUPnPClassVideoItem__coll__graph.md51
-rw-r--r--doc/html/classcUPnPClassVideoItem__coll__graph.pngbin0 -> 29140 bytes
-rw-r--r--doc/html/classcUPnPClassVideoItem__inherit__graph.map4
-rw-r--r--doc/html/classcUPnPClassVideoItem__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPClassVideoItem__inherit__graph.pngbin0 -> 35964 bytes
-rw-r--r--doc/html/classcUPnPConfig-members.html40
-rw-r--r--doc/html/classcUPnPConfig.html178
-rw-r--r--doc/html/classcUPnPConfig__coll__graph.map0
-rw-r--r--doc/html/classcUPnPConfig__coll__graph.md51
-rw-r--r--doc/html/classcUPnPConfig__coll__graph.pngbin0 -> 3507 bytes
-rw-r--r--doc/html/classcUPnPContainerMediator-members.html46
-rw-r--r--doc/html/classcUPnPContainerMediator.html240
-rw-r--r--doc/html/classcUPnPContainerMediator__coll__graph.map8
-rw-r--r--doc/html/classcUPnPContainerMediator__coll__graph.md51
-rw-r--r--doc/html/classcUPnPContainerMediator__coll__graph.pngbin0 -> 50722 bytes
-rw-r--r--doc/html/classcUPnPContainerMediator__inherit__graph.map2
-rw-r--r--doc/html/classcUPnPContainerMediator__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPContainerMediator__inherit__graph.pngbin0 -> 7593 bytes
-rw-r--r--doc/html/classcUPnPItemMediator-members.html46
-rw-r--r--doc/html/classcUPnPItemMediator.html248
-rw-r--r--doc/html/classcUPnPItemMediator__coll__graph.map8
-rw-r--r--doc/html/classcUPnPItemMediator__coll__graph.md51
-rw-r--r--doc/html/classcUPnPItemMediator__coll__graph.pngbin0 -> 50741 bytes
-rw-r--r--doc/html/classcUPnPItemMediator__inherit__graph.map5
-rw-r--r--doc/html/classcUPnPItemMediator__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPItemMediator__inherit__graph.pngbin0 -> 16957 bytes
-rw-r--r--doc/html/classcUPnPMovieMediator-members.html50
-rw-r--r--doc/html/classcUPnPMovieMediator.html240
-rw-r--r--doc/html/classcUPnPMovieMediator__coll__graph.map10
-rw-r--r--doc/html/classcUPnPMovieMediator__coll__graph.md51
-rw-r--r--doc/html/classcUPnPMovieMediator__coll__graph.pngbin0 -> 58255 bytes
-rw-r--r--doc/html/classcUPnPMovieMediator__inherit__graph.map4
-rw-r--r--doc/html/classcUPnPMovieMediator__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPMovieMediator__inherit__graph.pngbin0 -> 11924 bytes
-rw-r--r--doc/html/classcUPnPObjectFactory-members.html39
-rw-r--r--doc/html/classcUPnPObjectFactory.html332
-rw-r--r--doc/html/classcUPnPObjectFactory__coll__graph.map3
-rw-r--r--doc/html/classcUPnPObjectFactory__coll__graph.md51
-rw-r--r--doc/html/classcUPnPObjectFactory__coll__graph.pngbin0 -> 15735 bytes
-rw-r--r--doc/html/classcUPnPObjectMediator-members.html44
-rw-r--r--doc/html/classcUPnPObjectMediator.html410
-rw-r--r--doc/html/classcUPnPObjectMediator__coll__graph.map7
-rw-r--r--doc/html/classcUPnPObjectMediator__coll__graph.md51
-rw-r--r--doc/html/classcUPnPObjectMediator__coll__graph.pngbin0 -> 47043 bytes
-rw-r--r--doc/html/classcUPnPObjectMediator__inherit__graph.map6
-rw-r--r--doc/html/classcUPnPObjectMediator__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPObjectMediator__inherit__graph.pngbin0 -> 19333 bytes
-rw-r--r--doc/html/classcUPnPObjects-members.html34
-rw-r--r--doc/html/classcUPnPObjects.html81
-rw-r--r--doc/html/classcUPnPResource-members.html50
-rw-r--r--doc/html/classcUPnPResource.html444
-rw-r--r--doc/html/classcUPnPResourceMediator-members.html36
-rw-r--r--doc/html/classcUPnPResourceMediator.html177
-rw-r--r--doc/html/classcUPnPResourceMediator__coll__graph.map3
-rw-r--r--doc/html/classcUPnPResourceMediator__coll__graph.md51
-rw-r--r--doc/html/classcUPnPResourceMediator__coll__graph.pngbin0 -> 13837 bytes
-rw-r--r--doc/html/classcUPnPResource__coll__graph.map1
-rw-r--r--doc/html/classcUPnPResource__coll__graph.md51
-rw-r--r--doc/html/classcUPnPResource__coll__graph.pngbin0 -> 10453 bytes
-rw-r--r--doc/html/classcUPnPResources-members.html39
-rw-r--r--doc/html/classcUPnPResources.html289
-rw-r--r--doc/html/classcUPnPResources__coll__graph.map4
-rw-r--r--doc/html/classcUPnPResources__coll__graph.md51
-rw-r--r--doc/html/classcUPnPResources__coll__graph.pngbin0 -> 19388 bytes
-rw-r--r--doc/html/classcUPnPServer-members.html48
-rw-r--r--doc/html/classcUPnPServer.html493
-rw-r--r--doc/html/classcUPnPServer__coll__graph.map11
-rw-r--r--doc/html/classcUPnPServer__coll__graph.md51
-rw-r--r--doc/html/classcUPnPServer__coll__graph.pngbin0 -> 74574 bytes
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator-members.html50
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator.html240
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map10
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md51
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator__coll__graph.pngbin0 -> 58682 bytes
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map4
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.pngbin0 -> 12710 bytes
-rw-r--r--doc/html/classcUPnPVideoItemMediator-members.html48
-rw-r--r--doc/html/classcUPnPVideoItemMediator.html248
-rw-r--r--doc/html/classcUPnPVideoItemMediator__coll__graph.map9
-rw-r--r--doc/html/classcUPnPVideoItemMediator__coll__graph.md51
-rw-r--r--doc/html/classcUPnPVideoItemMediator__coll__graph.pngbin0 -> 54556 bytes
-rw-r--r--doc/html/classcUPnPVideoItemMediator__inherit__graph.map5
-rw-r--r--doc/html/classcUPnPVideoItemMediator__inherit__graph.md51
-rw-r--r--doc/html/classcUPnPVideoItemMediator__inherit__graph.pngbin0 -> 16876 bytes
-rw-r--r--doc/html/classcUPnPWebServer-members.html42
-rw-r--r--doc/html/classcUPnPWebServer.html396
-rw-r--r--doc/html/classcUPnPWebServer__coll__graph.map0
-rw-r--r--doc/html/classcUPnPWebServer__coll__graph.md51
-rw-r--r--doc/html/classcUPnPWebServer__coll__graph.pngbin0 -> 3893 bytes
-rw-r--r--doc/html/classcUpnpService-members.html38
-rw-r--r--doc/html/classcUpnpService.html294
-rw-r--r--doc/html/classcUpnpService__inherit__graph.map2
-rw-r--r--doc/html/classcUpnpService__inherit__graph.md51
-rw-r--r--doc/html/classcUpnpService__inherit__graph.pngbin0 -> 11369 bytes
-rw-r--r--doc/html/classcVirtualConnection-members.html32
-rw-r--r--doc/html/classcVirtualConnection.html45
-rw-r--r--doc/html/classes.html35
-rw-r--r--doc/html/common_8h-source.html766
-rw-r--r--doc/html/config_8h-source.html59
-rw-r--r--doc/html/connectionmanager_8h-source.html95
-rw-r--r--doc/html/contentdirectory_8h-source.html67
-rw-r--r--doc/html/database_8h-source.html898
-rw-r--r--doc/html/dlna_8h-source.html95
-rw-r--r--doc/html/doxygen.css441
-rw-r--r--doc/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--doc/html/filehandle_8h-source.html68
-rw-r--r--doc/html/files.html50
-rw-r--r--doc/html/functions.html68
-rw-r--r--doc/html/functions_0x61.html84
-rw-r--r--doc/html/functions_0x62.html70
-rw-r--r--doc/html/functions_0x63.html136
-rw-r--r--doc/html/functions_0x64.html85
-rw-r--r--doc/html/functions_0x65.html74
-rw-r--r--doc/html/functions_0x66.html70
-rw-r--r--doc/html/functions_0x67.html234
-rw-r--r--doc/html/functions_0x68.html68
-rw-r--r--doc/html/functions_0x69.html91
-rw-r--r--doc/html/functions_0x6c.html70
-rw-r--r--doc/html/functions_0x6d.html167
-rw-r--r--doc/html/functions_0x6e.html71
-rw-r--r--doc/html/functions_0x6f.html100
-rw-r--r--doc/html/functions_0x70.html84
-rw-r--r--doc/html/functions_0x72.html87
-rw-r--r--doc/html/functions_0x73.html190
-rw-r--r--doc/html/functions_0x75.html74
-rw-r--r--doc/html/functions_0x76.html68
-rw-r--r--doc/html/functions_0x77.html73
-rw-r--r--doc/html/functions_0x7e.html68
-rw-r--r--doc/html/functions_func.html82
-rw-r--r--doc/html/functions_func_0x62.html66
-rw-r--r--doc/html/functions_func_0x63.html134
-rw-r--r--doc/html/functions_func_0x64.html83
-rw-r--r--doc/html/functions_func_0x65.html72
-rw-r--r--doc/html/functions_func_0x66.html68
-rw-r--r--doc/html/functions_func_0x67.html232
-rw-r--r--doc/html/functions_func_0x69.html84
-rw-r--r--doc/html/functions_func_0x6c.html68
-rw-r--r--doc/html/functions_func_0x6d.html66
-rw-r--r--doc/html/functions_func_0x6e.html69
-rw-r--r--doc/html/functions_func_0x6f.html98
-rw-r--r--doc/html/functions_func_0x70.html80
-rw-r--r--doc/html/functions_func_0x72.html85
-rw-r--r--doc/html/functions_func_0x73.html186
-rw-r--r--doc/html/functions_func_0x75.html72
-rw-r--r--doc/html/functions_func_0x76.html66
-rw-r--r--doc/html/functions_func_0x77.html69
-rw-r--r--doc/html/functions_func_0x7e.html66
-rw-r--r--doc/html/functions_vars.html183
-rw-r--r--doc/html/graph_legend.dot22
-rw-r--r--doc/html/graph_legend.html85
-rw-r--r--doc/html/graph_legend.pngbin0 -> 4341 bytes
-rw-r--r--doc/html/hierarchy.html98
-rw-r--r--doc/html/index.html25
-rw-r--r--doc/html/inherit__graph__0.map1
-rw-r--r--doc/html/inherit__graph__0.md51
-rw-r--r--doc/html/inherit__graph__0.pngbin0 -> 595 bytes
-rw-r--r--doc/html/inherit__graph__1.map1
-rw-r--r--doc/html/inherit__graph__1.md51
-rw-r--r--doc/html/inherit__graph__1.pngbin0 -> 332 bytes
-rw-r--r--doc/html/inherit__graph__10.map1
-rw-r--r--doc/html/inherit__graph__10.md51
-rw-r--r--doc/html/inherit__graph__10.pngbin0 -> 557 bytes
-rw-r--r--doc/html/inherit__graph__11.map1
-rw-r--r--doc/html/inherit__graph__11.md51
-rw-r--r--doc/html/inherit__graph__11.pngbin0 -> 299 bytes
-rw-r--r--doc/html/inherit__graph__12.map1
-rw-r--r--doc/html/inherit__graph__12.md51
-rw-r--r--doc/html/inherit__graph__12.pngbin0 -> 325 bytes
-rw-r--r--doc/html/inherit__graph__13.map1
-rw-r--r--doc/html/inherit__graph__13.md51
-rw-r--r--doc/html/inherit__graph__13.pngbin0 -> 383 bytes
-rw-r--r--doc/html/inherit__graph__14.map1
-rw-r--r--doc/html/inherit__graph__14.md51
-rw-r--r--doc/html/inherit__graph__14.pngbin0 -> 456 bytes
-rw-r--r--doc/html/inherit__graph__15.map1
-rw-r--r--doc/html/inherit__graph__15.md51
-rw-r--r--doc/html/inherit__graph__15.pngbin0 -> 552 bytes
-rw-r--r--doc/html/inherit__graph__16.map6
-rw-r--r--doc/html/inherit__graph__16.md51
-rw-r--r--doc/html/inherit__graph__16.pngbin0 -> 2327 bytes
-rw-r--r--doc/html/inherit__graph__17.map1
-rw-r--r--doc/html/inherit__graph__17.md51
-rw-r--r--doc/html/inherit__graph__17.pngbin0 -> 442 bytes
-rw-r--r--doc/html/inherit__graph__18.map1
-rw-r--r--doc/html/inherit__graph__18.md51
-rw-r--r--doc/html/inherit__graph__18.pngbin0 -> 593 bytes
-rw-r--r--doc/html/inherit__graph__19.map1
-rw-r--r--doc/html/inherit__graph__19.md51
-rw-r--r--doc/html/inherit__graph__19.pngbin0 -> 485 bytes
-rw-r--r--doc/html/inherit__graph__2.map1
-rw-r--r--doc/html/inherit__graph__2.md51
-rw-r--r--doc/html/inherit__graph__2.pngbin0 -> 305 bytes
-rw-r--r--doc/html/inherit__graph__20.map1
-rw-r--r--doc/html/inherit__graph__20.md51
-rw-r--r--doc/html/inherit__graph__20.pngbin0 -> 474 bytes
-rw-r--r--doc/html/inherit__graph__21.map1
-rw-r--r--doc/html/inherit__graph__21.md51
-rw-r--r--doc/html/inherit__graph__21.pngbin0 -> 449 bytes
-rw-r--r--doc/html/inherit__graph__22.map1
-rw-r--r--doc/html/inherit__graph__22.md51
-rw-r--r--doc/html/inherit__graph__22.pngbin0 -> 623 bytes
-rw-r--r--doc/html/inherit__graph__23.map1
-rw-r--r--doc/html/inherit__graph__23.md51
-rw-r--r--doc/html/inherit__graph__23.pngbin0 -> 465 bytes
-rw-r--r--doc/html/inherit__graph__24.map1
-rw-r--r--doc/html/inherit__graph__24.md51
-rw-r--r--doc/html/inherit__graph__24.pngbin0 -> 489 bytes
-rw-r--r--doc/html/inherit__graph__25.map1
-rw-r--r--doc/html/inherit__graph__25.md51
-rw-r--r--doc/html/inherit__graph__25.pngbin0 -> 433 bytes
-rw-r--r--doc/html/inherit__graph__26.map3
-rw-r--r--doc/html/inherit__graph__26.md51
-rw-r--r--doc/html/inherit__graph__26.pngbin0 -> 1401 bytes
-rw-r--r--doc/html/inherit__graph__27.map1
-rw-r--r--doc/html/inherit__graph__27.md51
-rw-r--r--doc/html/inherit__graph__27.pngbin0 -> 515 bytes
-rw-r--r--doc/html/inherit__graph__28.map1
-rw-r--r--doc/html/inherit__graph__28.md51
-rw-r--r--doc/html/inherit__graph__28.pngbin0 -> 533 bytes
-rw-r--r--doc/html/inherit__graph__29.map1
-rw-r--r--doc/html/inherit__graph__29.md51
-rw-r--r--doc/html/inherit__graph__29.pngbin0 -> 491 bytes
-rw-r--r--doc/html/inherit__graph__3.map3
-rw-r--r--doc/html/inherit__graph__3.md51
-rw-r--r--doc/html/inherit__graph__3.pngbin0 -> 1237 bytes
-rw-r--r--doc/html/inherit__graph__30.map1
-rw-r--r--doc/html/inherit__graph__30.md51
-rw-r--r--doc/html/inherit__graph__30.pngbin0 -> 423 bytes
-rw-r--r--doc/html/inherit__graph__4.map1
-rw-r--r--doc/html/inherit__graph__4.md51
-rw-r--r--doc/html/inherit__graph__4.pngbin0 -> 465 bytes
-rw-r--r--doc/html/inherit__graph__5.map1
-rw-r--r--doc/html/inherit__graph__5.md51
-rw-r--r--doc/html/inherit__graph__5.pngbin0 -> 535 bytes
-rw-r--r--doc/html/inherit__graph__6.map7
-rw-r--r--doc/html/inherit__graph__6.md51
-rw-r--r--doc/html/inherit__graph__6.pngbin0 -> 3048 bytes
-rw-r--r--doc/html/inherit__graph__7.map1
-rw-r--r--doc/html/inherit__graph__7.md51
-rw-r--r--doc/html/inherit__graph__7.pngbin0 -> 522 bytes
-rw-r--r--doc/html/inherit__graph__8.map1
-rw-r--r--doc/html/inherit__graph__8.md51
-rw-r--r--doc/html/inherit__graph__8.pngbin0 -> 409 bytes
-rw-r--r--doc/html/inherit__graph__9.map1
-rw-r--r--doc/html/inherit__graph__9.md51
-rw-r--r--doc/html/inherit__graph__9.pngbin0 -> 427 bytes
-rw-r--r--doc/html/inherits.html127
-rw-r--r--doc/html/interfacecFileHandle-members.html37
-rw-r--r--doc/html/livereceiver_8h-source.html78
-rw-r--r--doc/html/menusetup_8h-source.html70
-rw-r--r--doc/html/metadata_8h-source.html108
-rw-r--r--doc/html/object_8h-source.html498
-rw-r--r--doc/html/recplayer_8h-source.html65
-rw-r--r--doc/html/resources_8h-source.html77
-rw-r--r--doc/html/search_8h-source.html125
-rw-r--r--doc/html/server_8h-source.html85
-rw-r--r--doc/html/structDLNAIconProfile-members.html35
-rw-r--r--doc/html/structDLNAIconProfile.html58
-rw-r--r--doc/html/structDLNAProfile-members.html33
-rw-r--r--doc/html/structDLNAProfile.html50
-rw-r--r--doc/html/structcClass-members.html35
-rw-r--r--doc/html/structcClass.html108
-rw-r--r--doc/html/structcSortCrit-members.html33
-rw-r--r--doc/html/structcSortCrit.html50
-rw-r--r--doc/html/structcUPnPObjectID-members.html52
-rw-r--r--doc/html/structcUPnPObjectID.html540
-rw-r--r--doc/html/structcUPnPResultSet-members.html34
-rw-r--r--doc/html/structcUPnPResultSet.html54
-rw-r--r--doc/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--doc/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--doc/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--doc/html/tabs.css105
-rw-r--r--doc/html/upnp_8h-source.html69
-rw-r--r--doc/html/upnpservice_8h-source.html71
-rw-r--r--doc/html/upnpwebserver_8h-source.html72
-rw-r--r--doc/html/util_8h-source.html79
-rw-r--r--doc/latex/FreeSans.ttfbin0 -> 22932 bytes
-rw-r--r--doc/latex/Makefile19
-rw-r--r--doc/latex/annotated.tex49
-rw-r--r--doc/latex/classcAudioVideoDetector.tex45
-rw-r--r--doc/latex/classcConnectionManager.tex124
-rw-r--r--doc/latex/classcConnectionManager__coll__graph.eps470
-rw-r--r--doc/latex/classcConnectionManager__coll__graph.md51
-rw-r--r--doc/latex/classcConnectionManager__coll__graph.pdfbin0 -> 33189 bytes
-rw-r--r--doc/latex/classcConnectionManager__inherit__graph.eps358
-rw-r--r--doc/latex/classcConnectionManager__inherit__graph.md51
-rw-r--r--doc/latex/classcConnectionManager__inherit__graph.pdfbin0 -> 32469 bytes
-rw-r--r--doc/latex/classcContentDirectory.tex124
-rw-r--r--doc/latex/classcContentDirectory__coll__graph.eps1213
-rw-r--r--doc/latex/classcContentDirectory__coll__graph.md51
-rw-r--r--doc/latex/classcContentDirectory__coll__graph.pdfbin0 -> 37215 bytes
-rw-r--r--doc/latex/classcContentDirectory__inherit__graph.eps340
-rw-r--r--doc/latex/classcContentDirectory__inherit__graph.md51
-rw-r--r--doc/latex/classcContentDirectory__inherit__graph.pdfbin0 -> 32397 bytes
-rw-r--r--doc/latex/classcDlna.tex202
-rw-r--r--doc/latex/classcDlna__coll__graph.eps312
-rw-r--r--doc/latex/classcDlna__coll__graph.md51
-rw-r--r--doc/latex/classcDlna__coll__graph.pdfbin0 -> 32004 bytes
-rw-r--r--doc/latex/classcFileHandle.eps197
-rw-r--r--doc/latex/classcFileHandle.pdfbin0 -> 2824 bytes
-rw-r--r--doc/latex/classcFileHandle.tex168
-rw-r--r--doc/latex/classcFileHandle__inherit__graph.eps462
-rw-r--r--doc/latex/classcFileHandle__inherit__graph.md51
-rw-r--r--doc/latex/classcFileHandle__inherit__graph.pdfbin0 -> 33310 bytes
-rw-r--r--doc/latex/classcFilterCriteria.tex43
-rw-r--r--doc/latex/classcLiveReceiver.eps197
-rw-r--r--doc/latex/classcLiveReceiver.pdfbin0 -> 2824 bytes
-rw-r--r--doc/latex/classcLiveReceiver.tex229
-rw-r--r--doc/latex/classcLiveReceiver__coll__graph.eps355
-rw-r--r--doc/latex/classcLiveReceiver__coll__graph.md51
-rw-r--r--doc/latex/classcLiveReceiver__coll__graph.pdfbin0 -> 32430 bytes
-rw-r--r--doc/latex/classcLiveReceiver__inherit__graph.eps355
-rw-r--r--doc/latex/classcLiveReceiver__inherit__graph.md51
-rw-r--r--doc/latex/classcLiveReceiver__inherit__graph.pdfbin0 -> 32430 bytes
-rw-r--r--doc/latex/classcMediaDatabase.tex205
-rw-r--r--doc/latex/classcMediaDatabase__coll__graph.eps1029
-rw-r--r--doc/latex/classcMediaDatabase__coll__graph.md51
-rw-r--r--doc/latex/classcMediaDatabase__coll__graph.pdfbin0 -> 35796 bytes
-rw-r--r--doc/latex/classcMediatorInterface.tex145
-rw-r--r--doc/latex/classcMediatorInterface__inherit__graph.eps710
-rw-r--r--doc/latex/classcMediatorInterface__inherit__graph.md51
-rw-r--r--doc/latex/classcMediatorInterface__inherit__graph.pdfbin0 -> 33580 bytes
-rw-r--r--doc/latex/classcMenuSetupUPnP.tex88
-rw-r--r--doc/latex/classcMenuSetupUPnP__coll__graph.eps1954
-rw-r--r--doc/latex/classcMenuSetupUPnP__coll__graph.md51
-rw-r--r--doc/latex/classcMenuSetupUPnP__coll__graph.pdfbin0 -> 40545 bytes
-rw-r--r--doc/latex/classcPathParser.tex47
-rw-r--r--doc/latex/classcPluginUpnp.tex212
-rw-r--r--doc/latex/classcPluginUpnp__coll__graph.eps1942
-rw-r--r--doc/latex/classcPluginUpnp__coll__graph.md51
-rw-r--r--doc/latex/classcPluginUpnp__coll__graph.pdfbin0 -> 40377 bytes
-rw-r--r--doc/latex/classcRecordingPlayer.tex175
-rw-r--r--doc/latex/classcRecordingPlayer__coll__graph.eps358
-rw-r--r--doc/latex/classcRecordingPlayer__coll__graph.md51
-rw-r--r--doc/latex/classcRecordingPlayer__coll__graph.pdfbin0 -> 32387 bytes
-rw-r--r--doc/latex/classcRecordingPlayer__inherit__graph.eps358
-rw-r--r--doc/latex/classcRecordingPlayer__inherit__graph.md51
-rw-r--r--doc/latex/classcRecordingPlayer__inherit__graph.pdfbin0 -> 32387 bytes
-rw-r--r--doc/latex/classcRegisteredProfile.tex31
-rw-r--r--doc/latex/classcRegisteredProfile__coll__graph.eps333
-rw-r--r--doc/latex/classcRegisteredProfile__coll__graph.md51
-rw-r--r--doc/latex/classcRegisteredProfile__coll__graph.pdfbin0 -> 32163 bytes
-rw-r--r--doc/latex/classcRow.tex92
-rw-r--r--doc/latex/classcRows.tex64
-rw-r--r--doc/latex/classcRows__coll__graph.eps342
-rw-r--r--doc/latex/classcRows__coll__graph.md51
-rw-r--r--doc/latex/classcRows__coll__graph.pdfbin0 -> 31427 bytes
-rw-r--r--doc/latex/classcSQLiteDatabase.tex224
-rw-r--r--doc/latex/classcSQLiteDatabase__coll__graph.eps558
-rw-r--r--doc/latex/classcSQLiteDatabase__coll__graph.md51
-rw-r--r--doc/latex/classcSQLiteDatabase__coll__graph.pdfbin0 -> 33163 bytes
-rw-r--r--doc/latex/classcSortCriteria.tex52
-rw-r--r--doc/latex/classcSortCriteria__coll__graph.eps339
-rw-r--r--doc/latex/classcSortCriteria__coll__graph.md51
-rw-r--r--doc/latex/classcSortCriteria__coll__graph.pdfbin0 -> 31796 bytes
-rw-r--r--doc/latex/classcUPnPClassContainer.tex603
-rw-r--r--doc/latex/classcUPnPClassContainer__coll__graph.eps793
-rw-r--r--doc/latex/classcUPnPClassContainer__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPClassContainer__coll__graph.pdfbin0 -> 34699 bytes
-rw-r--r--doc/latex/classcUPnPClassContainer__inherit__graph.eps532
-rw-r--r--doc/latex/classcUPnPClassContainer__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPClassContainer__inherit__graph.pdfbin0 -> 33227 bytes
-rw-r--r--doc/latex/classcUPnPClassItem.tex223
-rw-r--r--doc/latex/classcUPnPClassItem__coll__graph.eps670
-rw-r--r--doc/latex/classcUPnPClassItem__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPClassItem__coll__graph.pdfbin0 -> 33817 bytes
-rw-r--r--doc/latex/classcUPnPClassItem__inherit__graph.eps805
-rw-r--r--doc/latex/classcUPnPClassItem__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPClassItem__inherit__graph.pdfbin0 -> 34865 bytes
-rw-r--r--doc/latex/classcUPnPClassMovie.tex234
-rw-r--r--doc/latex/classcUPnPClassMovie__coll__graph.eps914
-rw-r--r--doc/latex/classcUPnPClassMovie__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPClassMovie__coll__graph.pdfbin0 -> 35221 bytes
-rw-r--r--doc/latex/classcUPnPClassMovie__inherit__graph.eps701
-rw-r--r--doc/latex/classcUPnPClassMovie__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPClassMovie__inherit__graph.pdfbin0 -> 34250 bytes
-rw-r--r--doc/latex/classcUPnPClassObject.tex703
-rw-r--r--doc/latex/classcUPnPClassObject__coll__graph.eps550
-rw-r--r--doc/latex/classcUPnPClassObject__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPClassObject__coll__graph.pdfbin0 -> 33364 bytes
-rw-r--r--doc/latex/classcUPnPClassObject__inherit__graph.eps963
-rw-r--r--doc/latex/classcUPnPClassObject__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPClassObject__inherit__graph.pdfbin0 -> 35496 bytes
-rw-r--r--doc/latex/classcUPnPClassVideoBroadcast.tex308
-rw-r--r--doc/latex/classcUPnPClassVideoBroadcast__coll__graph.eps932
-rw-r--r--doc/latex/classcUPnPClassVideoBroadcast__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdfbin0 -> 35399 bytes
-rw-r--r--doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps719
-rw-r--r--doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdfbin0 -> 34400 bytes
-rw-r--r--doc/latex/classcUPnPClassVideoItem.tex572
-rw-r--r--doc/latex/classcUPnPClassVideoItem__coll__graph.eps828
-rw-r--r--doc/latex/classcUPnPClassVideoItem__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPClassVideoItem__coll__graph.pdfbin0 -> 34841 bytes
-rw-r--r--doc/latex/classcUPnPClassVideoItem__inherit__graph.eps805
-rw-r--r--doc/latex/classcUPnPClassVideoItem__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPClassVideoItem__inherit__graph.pdfbin0 -> 34843 bytes
-rw-r--r--doc/latex/classcUPnPConfig.tex120
-rw-r--r--doc/latex/classcUPnPConfig__coll__graph.eps303
-rw-r--r--doc/latex/classcUPnPConfig__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPConfig__coll__graph.pdfbin0 -> 31728 bytes
-rw-r--r--doc/latex/classcUPnPContainerMediator.tex153
-rw-r--r--doc/latex/classcUPnPContainerMediator__coll__graph.eps1323
-rw-r--r--doc/latex/classcUPnPContainerMediator__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPContainerMediator__coll__graph.pdfbin0 -> 37485 bytes
-rw-r--r--doc/latex/classcUPnPContainerMediator__inherit__graph.eps414
-rw-r--r--doc/latex/classcUPnPContainerMediator__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPContainerMediator__inherit__graph.pdfbin0 -> 32290 bytes
-rw-r--r--doc/latex/classcUPnPItemMediator.tex161
-rw-r--r--doc/latex/classcUPnPItemMediator__coll__graph.eps1323
-rw-r--r--doc/latex/classcUPnPItemMediator__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPItemMediator__coll__graph.pdfbin0 -> 37488 bytes
-rw-r--r--doc/latex/classcUPnPItemMediator__inherit__graph.eps636
-rw-r--r--doc/latex/classcUPnPItemMediator__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPItemMediator__inherit__graph.pdfbin0 -> 33180 bytes
-rw-r--r--doc/latex/classcUPnPMovieMediator.tex153
-rw-r--r--doc/latex/classcUPnPMovieMediator__coll__graph.eps1471
-rw-r--r--doc/latex/classcUPnPMovieMediator__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPMovieMediator__coll__graph.pdfbin0 -> 38031 bytes
-rw-r--r--doc/latex/classcUPnPMovieMediator__inherit__graph.eps562
-rw-r--r--doc/latex/classcUPnPMovieMediator__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPMovieMediator__inherit__graph.pdfbin0 -> 32756 bytes
-rw-r--r--doc/latex/classcUPnPObjectFactory.tex199
-rw-r--r--doc/latex/classcUPnPObjectFactory__coll__graph.eps710
-rw-r--r--doc/latex/classcUPnPObjectFactory__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPObjectFactory__coll__graph.pdfbin0 -> 34247 bytes
-rw-r--r--doc/latex/classcUPnPObjectMediator.tex262
-rw-r--r--doc/latex/classcUPnPObjectMediator__coll__graph.eps1249
-rw-r--r--doc/latex/classcUPnPObjectMediator__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPObjectMediator__coll__graph.pdfbin0 -> 37137 bytes
-rw-r--r--doc/latex/classcUPnPObjectMediator__inherit__graph.eps710
-rw-r--r--doc/latex/classcUPnPObjectMediator__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPObjectMediator__inherit__graph.pdfbin0 -> 33584 bytes
-rw-r--r--doc/latex/classcUPnPObjects.tex39
-rw-r--r--doc/latex/classcUPnPResource.tex288
-rw-r--r--doc/latex/classcUPnPResourceMediator.tex100
-rw-r--r--doc/latex/classcUPnPResourceMediator__coll__graph.eps652
-rw-r--r--doc/latex/classcUPnPResourceMediator__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPResourceMediator__coll__graph.pdfbin0 -> 33795 bytes
-rw-r--r--doc/latex/classcUPnPResource__coll__graph.eps462
-rw-r--r--doc/latex/classcUPnPResource__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPResource__coll__graph.pdfbin0 -> 33162 bytes
-rw-r--r--doc/latex/classcUPnPResources.tex173
-rw-r--r--doc/latex/classcUPnPResources__coll__graph.eps838
-rw-r--r--doc/latex/classcUPnPResources__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPResources__coll__graph.pdfbin0 -> 34585 bytes
-rw-r--r--doc/latex/classcUPnPServer.tex318
-rw-r--r--doc/latex/classcUPnPServer__coll__graph.eps1824
-rw-r--r--doc/latex/classcUPnPServer__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPServer__coll__graph.pdfbin0 -> 39896 bytes
-rw-r--r--doc/latex/classcUPnPVideoBroadcastMediator.tex153
-rw-r--r--doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.eps1471
-rw-r--r--doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdfbin0 -> 38043 bytes
-rw-r--r--doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps562
-rw-r--r--doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdfbin0 -> 32861 bytes
-rw-r--r--doc/latex/classcUPnPVideoItemMediator.tex161
-rw-r--r--doc/latex/classcUPnPVideoItemMediator__coll__graph.eps1397
-rw-r--r--doc/latex/classcUPnPVideoItemMediator__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPVideoItemMediator__coll__graph.pdfbin0 -> 37806 bytes
-rw-r--r--doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps636
-rw-r--r--doc/latex/classcUPnPVideoItemMediator__inherit__graph.md51
-rw-r--r--doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdfbin0 -> 33164 bytes
-rw-r--r--doc/latex/classcUPnPWebServer.tex229
-rw-r--r--doc/latex/classcUPnPWebServer__coll__graph.eps309
-rw-r--r--doc/latex/classcUPnPWebServer__coll__graph.md51
-rw-r--r--doc/latex/classcUPnPWebServer__coll__graph.pdfbin0 -> 32032 bytes
-rw-r--r--doc/latex/classcUpnpService.tex180
-rw-r--r--doc/latex/classcUpnpService__inherit__graph.eps444
-rw-r--r--doc/latex/classcUpnpService__inherit__graph.md51
-rw-r--r--doc/latex/classcUpnpService__inherit__graph.pdfbin0 -> 33025 bytes
-rw-r--r--doc/latex/classcVirtualConnection.tex25
-rw-r--r--doc/latex/doxygen.sty86
-rw-r--r--doc/latex/hierarchy.tex67
-rw-r--r--doc/latex/refman.tex101
-rw-r--r--doc/latex/structDLNAIconProfile.tex39
-rw-r--r--doc/latex/structDLNAProfile.tex29
-rw-r--r--doc/latex/structcClass.tex67
-rw-r--r--doc/latex/structcSortCrit.tex29
-rw-r--r--doc/latex/structcUPnPObjectID.tex274
-rw-r--r--doc/latex/structcUPnPResultSet.tex34
-rw-r--r--doc/upnpdlna.dox1510
-rwxr-xr-xhttp/icons/upnpIconLrg.jpegbin0 -> 6620 bytes
-rwxr-xr-xhttp/icons/upnpIconLrg.pngbin0 -> 17309 bytes
-rwxr-xr-xhttp/icons/upnpIconSm.jpegbin0 -> 2416 bytes
-rwxr-xr-xhttp/icons/upnpIconSm.pngbin0 -> 4769 bytes
-rw-r--r--http/xml/cds_scpd.xml145
-rw-r--r--http/xml/cms_scpd.xml133
-rw-r--r--inc/avdetector.h124
-rw-r--r--inc/config.h74
-rw-r--r--inc/database.h1024
-rw-r--r--inc/filehandle.h108
-rw-r--r--inc/livereceiver.h105
-rw-r--r--inc/menusetup.h103
-rw-r--r--inc/metadata.h189
-rw-r--r--inc/object.h1576
-rw-r--r--inc/profiles.h32
-rw-r--r--inc/profiles/aac.h36
-rw-r--r--inc/profiles/ac3.h24
-rw-r--r--inc/profiles/amr.h17
-rw-r--r--inc/profiles/atrac3plus.h16
-rw-r--r--inc/profiles/container.h47
-rw-r--r--inc/profiles/jpeg.h24
-rw-r--r--inc/profiles/lpcm.h16
-rw-r--r--inc/profiles/mpa.h25
-rw-r--r--inc/profiles/mpeg1.h16
-rw-r--r--inc/profiles/mpeg2.h68
-rw-r--r--inc/profiles/mpeg4_p10.h153
-rw-r--r--inc/profiles/mpeg4_p2.h80
-rw-r--r--inc/profiles/png.h22
-rw-r--r--inc/profiles/profile_data.h213
-rw-r--r--inc/profiles/wma.h18
-rw-r--r--inc/profiles/wmv9.h24
-rw-r--r--inc/recplayer.h53
-rw-r--r--inc/resources.h318
-rw-r--r--inc/search.h156
-rw-r--r--inc/server.h221
-rw-r--r--inc/upnp/connectionmanager.h99
-rw-r--r--inc/upnp/contentdirectory.h56
-rw-r--r--inc/upnp/dlna.h97
-rw-r--r--inc/upnp/service.h119
-rw-r--r--inc/util.h148
-rw-r--r--inc/webserver.h160
-rw-r--r--po/de-DE.po271
-rw-r--r--po/de-DE.po~273
-rw-r--r--server/webserver.cpp363
-rw-r--r--upnp/connectionmanager.cpp393
-rw-r--r--upnp/contentdirectory.cpp306
-rw-r--r--upnp/service.cpp118
687 files changed, 81692 insertions, 0 deletions
diff --git a/dlna/avdetector.cpp b/dlna/avdetector.cpp
new file mode 100644
index 0000000..461b375
--- /dev/null
+++ b/dlna/avdetector.cpp
@@ -0,0 +1,378 @@
+/*
+ * File: avdetector.cpp
+ * Author: savop
+ *
+ * Created on 26. Oktober 2009, 13:01
+ */
+
+#include "avdetector.h"
+#include "profiles/container.h"
+#include "object.h"
+#include <sys/stat.h>
+
+cAudioVideoDetector::cAudioVideoDetector(const char* Filename) : mResourceType(UPNP_RESOURCE_FILE) {
+ this->mResource.Filename = Filename;
+ this->init();
+}
+
+cAudioVideoDetector::cAudioVideoDetector(const cChannel* Channel) : mResourceType(UPNP_RESOURCE_CHANNEL) {
+ this->mResource.Channel = Channel;
+ this->init();
+}
+
+cAudioVideoDetector::cAudioVideoDetector(const cRecording* Recording) : mResourceType(UPNP_RESOURCE_RECORDING) {
+ this->mResource.Recording = Recording;
+ this->init();
+}
+
+cAudioVideoDetector::~cAudioVideoDetector(){
+ this->uninit();
+}
+
+void cAudioVideoDetector::init(){
+ this->mBitrate = 0;
+ this->mBitsPerSample = 0;
+ this->mColorDepth = 0;
+ this->mDLNAProfile = NULL;
+ this->mDuration = 0;
+ this->mHeight = 0;
+ this->mNrAudioChannels = 0;
+ this->mSampleFrequency = 0;
+ this->mSize = 0;
+ this->mWidth = 0;
+}
+
+void cAudioVideoDetector::uninit(){
+ this->mBitrate = 0;
+ this->mBitsPerSample = 0;
+ this->mColorDepth = 0;
+ this->mDLNAProfile = NULL;
+ this->mDuration = 0;
+ this->mHeight = 0;
+ this->mNrAudioChannels = 0;
+ this->mSampleFrequency = 0;
+ this->mSize = 0;
+ this->mWidth = 0;
+}
+
+int cAudioVideoDetector::detectProperties(){
+ int ret = 0;
+ switch(this->mResourceType){
+ case UPNP_RESOURCE_CHANNEL:
+ ret = this->detectChannelProperties();
+ break;
+ case UPNP_RESOURCE_RECORDING:
+ ret = this->detectRecordingProperties();
+ break;
+ case UPNP_RESOURCE_FILE:
+ ret = this->detectFileProperties();
+ break;
+ default:
+ WARNING("This resource type is not yet implemented.");
+ ret = -1;
+ break;
+ }
+
+ return ret;
+}
+
+int cAudioVideoDetector::detectChannelProperties(){
+ MESSAGE(VERBOSE_METADATA, "Detecting channel properties");
+
+ this->mBitrate = 0;
+ this->mBitsPerSample = 0;
+ this->mColorDepth = 0;
+ this->mDuration = 0;
+ this->mHeight = 0;
+ this->mNrAudioChannels = 0;
+ this->mSampleFrequency = 0;
+ this->mSize = (off64_t)-1;
+ this->mWidth = 0;
+
+ switch(this->mResource.Channel->Vtype()){
+ case 0x02:
+ // MPEG2 Video
+ this->mDLNAProfile = &DLNA_PROFILE_MPEG_TS_SD_EU_ISO;
+ break;
+ case 0x1B:
+ this->mDLNAProfile = &DLNA_PROFILE_AVC_TS_HD_EU_ISO;
+ break;
+ default:
+ ERROR("Unknown video type %d for channel %s!", this->mResource.Channel->Vtype(), this->mResource.Channel->Name());
+ this->mDLNAProfile = NULL;
+ return -1;
+ }
+
+ return 0;
+}
+
+int cAudioVideoDetector::detectRecordingProperties(){
+
+ if(this->mResource.Recording->IsPesRecording()){
+ ERROR("Sorry, PES Recordings are not supported");
+ return -1;
+ }
+
+ int ret = 0;
+ AVFormatContext *FormatCtx = NULL;
+
+ cIndexFile* Index = new cIndexFile(this->mResource.Recording->FileName(), false, this->mResource.Recording->IsPesRecording());
+ cFileName* RecFile = new cFileName(this->mResource.Recording->FileName(), false, false, this->mResource.Recording->IsPesRecording());
+ if(Index && Index->Ok()){
+ this->mDuration = (off64_t) (Index->Last() * AVDETECTOR_TIME_BASE / SecondsToFrames(1, this->mResource.Recording->FramesPerSecond()));
+ MESSAGE(VERBOSE_METADATA,"Record length: %llds", this->mDuration);
+
+ uint16_t FileNumber = 0;
+ off_t FileOffset = 0;
+
+ if(Index->Get(Index->Last()-1, &FileNumber, &FileOffset))
+ for(int i = 0; i < FileNumber; i++){
+ struct stat Stats;
+ RecFile->SetOffset(i+1);
+ stat(RecFile->Name(),&Stats);
+ this->mSize += (off64_t) Stats.st_size;
+ }
+
+ av_register_all();
+
+ if(!(ret = av_open_input_file(&FormatCtx, RecFile->Name(), NULL, 0, NULL))){
+ if((ret = av_find_stream_info(FormatCtx))<0){
+ ERROR("AVDetector: Cannot find the stream information");
+ }
+ else {
+ if((ret = this->analyseVideo(FormatCtx))<0){
+ ERROR("AVDetector: Error while analysing video");
+ }
+ if((ret = this->analyseAudio(FormatCtx))<0){
+ ERROR("AVDetector: Error while analysing audio");
+ }
+ if((ret = this->detectDLNAProfile(FormatCtx)<0)){
+ ERROR("AVDetector: Error while detecting DLNA Profile");
+ }
+ }
+ }
+ }
+ else {
+ ret = -1;
+ }
+
+ if(ret != 0){
+ ERROR("Error occured while detecting properties");
+ }
+
+ delete RecFile;
+ delete Index;
+ av_free(FormatCtx);
+
+ return ret;
+}
+
+int cAudioVideoDetector::detectFileProperties(){
+ av_register_all();
+
+ int ret = 0;
+
+ AVFormatContext *FormatCtx = NULL;
+
+ if(av_open_input_file(&FormatCtx, this->mResource.Filename, NULL, 0, NULL)){
+ ERROR("AVDetector: Error while opening file %s", this->mResource.Filename);
+ return -1;
+ }
+ else {
+ if(av_find_stream_info(FormatCtx)<0){
+ ERROR("AVDetector: Cannot find the stream information");
+ return -1;
+ }
+ else {
+ this->mSize = FormatCtx->file_size;
+ this->mDuration = FormatCtx->duration;
+
+ MESSAGE(VERBOSE_METADATA, "Format properties: %lld and %lld Bytes", this->mDuration, this->mSize);
+
+ if((ret = this->analyseVideo(FormatCtx))<0){
+ ERROR("AVDetector: Error while analysing video");
+ return ret;
+ }
+ if((ret = this->analyseAudio(FormatCtx))<0){
+ ERROR("AVDetector: Error while analysing audio");
+ return ret;
+ }
+ if((ret = this->detectDLNAProfile(FormatCtx)<0)){
+ ERROR("AVDetector: Error while detecting DLNA Profile");
+ return ret;
+ }
+
+ return 0;
+ }
+ }
+}
+
+int cAudioVideoDetector::analyseVideo(AVFormatContext* FormatCtx)
+{
+ AVCodecContext* VideoCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_VIDEO);
+
+ if(!VideoCodec){
+ ERROR("AVDetector: codec not found");
+ return -1;
+ }
+
+ AVCodec* Codec = avcodec_find_decoder(VideoCodec->codec_id);
+
+ this->mWidth = VideoCodec->width;
+ this->mHeight = VideoCodec->height;
+ this->mBitrate = VideoCodec->bit_rate;
+ this->mSampleFrequency = VideoCodec->sample_rate;
+ this->mBitsPerSample = VideoCodec->bits_per_raw_sample;
+
+ // TODO: what's the color depth of the stream
+
+ const char* codecName = (Codec)?Codec->name:"unknown";
+
+ MESSAGE(VERBOSE_METADATA, "AVDetector: %s-stream %dx%d at %d bit/s", codecName, this->mWidth, this->mHeight, this->mBitrate);
+
+ return 0;
+}
+
+int cAudioVideoDetector::analyseAudio(AVFormatContext* FormatCtx){
+ AVCodecContext* AudioCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_AUDIO);
+
+ if(!AudioCodec){
+ ERROR("AVDetector: codec not found");
+ return -1;
+ }
+
+ AVCodec* Codec = avcodec_find_decoder(AudioCodec->codec_id);
+
+ this->mNrAudioChannels = AudioCodec->channels;
+
+ const char* codecName = (Codec)?Codec->name:"unknown";
+
+ MESSAGE(VERBOSE_METADATA, "AVDetector: %s-stream at %d bit/s", codecName, AudioCodec->bit_rate);
+
+ return 0;
+}
+
+int cAudioVideoDetector::detectDLNAProfile(AVFormatContext* FormatCtx){
+ DLNAProfile* Profile = MPEG2Profiler.probeDLNAProfile(FormatCtx);
+ if(Profile!=NULL){
+ this->mDLNAProfile = Profile;
+ return 0;
+ }
+ return -1;
+}
+
+AVCodecContext* cCodecToolKit::getFirstCodecContext(AVFormatContext* FormatCtx, CodecType Type){
+ return cCodecToolKit::getFirstStream(FormatCtx, Type)->codec;
+}
+
+AVStream* cCodecToolKit::getFirstStream(AVFormatContext* FormatCtx, CodecType Type){
+ int Stream = -1; unsigned int i;
+ for(i = 0; i < FormatCtx->nb_streams; i++){
+ if(FormatCtx->streams[i]->codec->codec_type == Type){
+ Stream = i;
+ break;
+ }
+ }
+ if(Stream == -1){
+ ERROR("AVDetector: No matching stream found");
+ return NULL;
+ }
+
+ return FormatCtx->streams[Stream];
+}
+
+bool cCodecToolKit::matchesAcceptedBitrates(AcceptedBitrates Bitrates, AVCodecContext* Codec){
+ if(Codec){
+ if(Bitrates.VBR){
+ if(Bitrates.bitrates[0] <= Codec->bit_rate && Codec->bit_rate <= Bitrates.bitrates[1] ){
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ for(int i=0; Bitrates.bitrates[i]; i++){
+ if(Codec->bit_rate == Bitrates.bitrates[i]){
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ return false;
+}
+
+bool cCodecToolKit::matchesAcceptedSystemBitrate(AcceptedBitrates Bitrate, AVFormatContext* Format){
+ if(Format){
+ if(Bitrate.VBR){
+ if(Bitrate.bitrates[0] <= Format->bit_rate && Format->bit_rate <= Bitrate.bitrates[1] ){
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ for(int i=0; Bitrate.bitrates[i]; i++){
+ if(Format->bit_rate == Bitrate.bitrates[i]){
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ return false;
+}
+
+bool cCodecToolKit::matchesAcceptedAudioChannels(AcceptedAudioChannels Channels, AVCodecContext* Codec){
+ if(Codec){
+ if(Codec->channels <= Channels.max_channels){
+ if(Codec->channel_layout){
+ for(int i=0; Channels.layouts[i]; i++){
+ if(Channels.supportsLFE && Codec->channel_layout == (Channels.layouts[i]|CH_LOW_FREQUENCY)){
+ return true;
+ }
+ else if(Codec->channel_layout == Channels.layouts[i]){
+ return true;
+ }
+ }
+ }
+ else {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
+bool cCodecToolKit::matchesAcceptedSamplingRates(AcceptedSamplingRates SamplingRates, AVCodecContext* Codec){
+ if(Codec){
+ for(int i=0; SamplingRates.rates[i]; i++){
+ if(Codec->sample_rate == SamplingRates.rates[i]){
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
+bool cCodecToolKit::matchesAcceptedResolutions(AcceptedResolution *Resolutions, int Count, AVStream* Stream){
+ if(Stream && Resolutions && Stream->codec){
+ for(int i=0; i < Count; i++){
+ if( Stream->codec->width == Resolutions[i].width &&
+ Stream->codec->height == Resolutions[i].height &&
+ Stream->r_frame_rate.num == Resolutions[i].fps &&
+ Stream->r_frame_rate.den == Resolutions[i].multiplier
+ ){
+ return true;
+ }
+ }
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/dlna/dlna.cpp b/dlna/dlna.cpp
new file mode 100644
index 0000000..24da1be
--- /dev/null
+++ b/dlna/dlna.cpp
@@ -0,0 +1,197 @@
+/*
+ * File: dlna.cpp
+ * Author: savop
+ *
+ * Created on 18. April 2009, 23:27
+ */
+
+#include <stdio.h>
+#include <vdr/tools.h>
+#include "upnp/dlna.h"
+
+cDlna* cDlna::mInstance = NULL;
+
+cDlna* cDlna::getInstance(void){
+ if(cDlna::mInstance == NULL)
+ cDlna::mInstance = new cDlna;
+
+ if(cDlna::mInstance != NULL)
+ return cDlna::mInstance;
+ else return NULL;
+}
+
+cDlna::cDlna() {
+ this->mRegisteredProfiles.clear();
+ this->init();
+}
+
+cDlna::~cDlna() {
+ this->mRegisteredProfiles.clear();
+}
+
+
+void cDlna::init(void){
+ this->registerProfiles();
+}
+
+void cDlna::registerProfile(DLNAProfile* Profile){
+ this->mRegisteredProfiles.push_back(Profile);
+}
+
+void cDlna::registerProfiles(){
+ this->registerProfile(&DLNA_PROFILE_MPEG_TS_SD_EU);
+ this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU);
+ this->registerProfile(&DLNA_PROFILE_MPEG_TS_SD_EU_ISO);
+ this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU_ISO);
+}
+
+const char* cDlna::getSupportedProtocols(){
+ cString Protocols;
+ list<DLNAProfile*>::iterator it;
+ for(it=this->mRegisteredProfiles.begin(); it!=this->mRegisteredProfiles.end(); it++){
+ Protocols = cString::sprintf("%s%s%s",(*Protocols)?*Protocols:"",(*Protocols)?",":"",this->getProtocolInfo(*it, DLNA_SUPPORTED_FLAGS));
+ }
+ return Protocols;
+}
+
+const char* cDlna::getProtocolInfo(DLNAProfile *Profile, int Op, const char* Ps, int Ci, unsigned int Flags){
+ cString DLNA4thField = NULL;
+ DLNA4thField = cString::sprintf("DLNA.ORG_PN=%s", Profile->ID);
+ if(Op != -1)
+ DLNA4thField = cString::sprintf("%s;DLNA.ORG_OP=%d",*DLNA4thField,Op);
+ if(Ps != NULL)
+ DLNA4thField = cString::sprintf("%s;DLNA.ORG_PS=%s",*DLNA4thField,Ps);
+ if(Ci != -1)
+ DLNA4thField = cString::sprintf("%s;DLNA.ORG_CI=%d",*DLNA4thField,Ci);
+ if(Flags != 0)
+ DLNA4thField = cString::sprintf("%s;DLNA.ORG_FLAGS=%.8x%.24x",*DLNA4thField,Flags,0);
+
+ char* Protocol = strdup(cString::sprintf("http-get:*:%s:%s", Profile->mime, *DLNA4thField));
+ return Protocol;
+}
+
+const char* cDlna::getDeviceDescription(const char* URLBase){
+ cString description = cString::sprintf(
+ "<?xml version = \"1.0\" encoding = \"utf-8\"?> \
+ <root xmlns=\"%s\" xmlns:%s=\"%s\"> \
+ <specVersion> \
+ <major>1</major> \
+ <minor>0</minor> \
+ </specVersion> \
+ <URLBase>%s</URLBase> \
+ <device> \
+ <deviceType>%s</deviceType> \
+ <friendlyName>%s</friendlyName> \
+ <manufacturer>%s</manufacturer> \
+ <manufacturerURL>%s</manufacturerURL> \
+ <modelDescription>%s</modelDescription> \
+ <modelName>%s</modelName> \
+ <modelNumber>%s</modelNumber> \
+ <modelURL>%s</modelURL> \
+ <serialNumber>%s</serialNumber> \
+ <UDN>%s</UDN> \
+ <iconList> \
+ <icon> \
+ <mimetype>%s</mimetype> \
+ <width>%d</width> \
+ <height>%d</height> \
+ <depth>%d</depth> \
+ <url>%s</url> \
+ </icon> \
+ <icon> \
+ <mimetype>%s</mimetype> \
+ <width>%d</width> \
+ <height>%d</height> \
+ <depth>%d</depth> \
+ <url>%s</url> \
+ </icon> \
+ <icon> \
+ <mimetype>%s</mimetype> \
+ <width>%d</width> \
+ <height>%d</height> \
+ <depth>%d</depth> \
+ <url>%s</url> \
+ </icon> \
+ <icon> \
+ <mimetype>%s</mimetype> \
+ <width>%d</width> \
+ <height>%d</height> \
+ <depth>%d</depth> \
+ <url>%s</url> \
+ </icon> \
+ </iconList> \
+ <presentationURL>%s</presentationURL> \
+ <%s:X_DLNADOC>%s</dlna:X_DLNADOC> \
+ <serviceList> \
+ <service> \
+ <serviceType>%s</serviceType> \
+ <serviceId>%s</serviceId> \
+ <SCPDURL>%s</SCPDURL> \
+ <controlURL>%s</controlURL> \
+ <eventSubURL>%s</eventSubURL> \
+ </service> \
+ <service> \
+ <serviceType>%s</serviceType> \
+ <serviceId>%s</serviceId> \
+ <SCPDURL>%s</SCPDURL> \
+ <controlURL>%s</controlURL> \
+ <eventSubURL>%s</eventSubURL> \
+ </service> \
+ </serviceList> \
+ </device> \
+ </root>",
+ UPNP_XMLNS_UPNP_DEV, // UPnP Device Namespace (2)
+ UPNP_XMLNS_PREFIX_DLNA, // DLNA Namespace prefix (2)
+ UPNP_XMLNS_DLNA_DEV, // DLNA Device Namespace (2)
+ URLBase, // URLBase (IP:PORT) (7)
+ UPNP_DEVICE_TYPE, // UPnP Device Type (MediaServer:1) (9)
+ UPNP_DEVICE_FRIENDLY_NAME, // UPnP Device Friendly Name (10)
+ UPNP_DEVICE_MANUFACTURER, // UPnP Device Manufacturer (11)
+ UPNP_DEVICE_MANUFACTURER_URL, // UPnP Device Manufacturer URL (12)
+ UPNP_DEVICE_MODEL_DESCRIPTION, // UPnP Device Model Description (13)
+ UPNP_DEVICE_MODEL_NAME, // UPnP Device Model Name (14)
+ UPNP_DEVICE_MODEL_NUMBER, // UPnP Device Model Number (15)
+ UPNP_DEVICE_MODEL_URL, // UPnP Device Model URL (16)
+ UPNP_DEVICE_SERIAL_NUMBER, // UPnP Device Serialnumber (17)
+ UPNP_DEVICE_UDN, // UPnP Device UDN (18)
+ DLNA_ICON_JPEG_LRG_24.mime, // UPnP Device Large Icon JPEG Mimetype (21)
+ DLNA_ICON_JPEG_LRG_24.width, // UPnP Device Large Icon Width (22)
+ DLNA_ICON_JPEG_LRG_24.height, // UPnP Device Large Icon Height (23)
+ DLNA_ICON_JPEG_LRG_24.bitDepth, // UPnP Device Large Icon Bit Depth (24)
+ UPNP_DEVICE_ICON_JPEG_LRG, // UPnP Device Large Icon Path (25)
+ DLNA_ICON_JPEG_SM_24.mime, // UPnP Device Small Icon JPEG Mimetype (28)
+ DLNA_ICON_JPEG_SM_24.width, // UPnP Device Small Icon Width (29)
+ DLNA_ICON_JPEG_SM_24.height, // UPnP Device Small Icon Height (30)
+ DLNA_ICON_JPEG_SM_24.bitDepth, // UPnP Device Small Icon Bit Depth (31)
+ UPNP_DEVICE_ICON_JPEG_SM, // UPnP Device Small Icon Path (32)
+ DLNA_ICON_PNG_SM_24A.mime, // UPnP Device Small Icon PNG Mimetype (35)
+ DLNA_ICON_PNG_SM_24A.width, // UPnP Device Small Icon Width (36)
+ DLNA_ICON_PNG_SM_24A.height, // UPnP Device Small Icon Height (37)
+ DLNA_ICON_PNG_SM_24A.bitDepth, // UPnP Device Small Icon Bit Depth (38)
+ UPNP_DEVICE_ICON_PNG_SM, // UPnP Device Small Icon Path (39)
+ DLNA_ICON_PNG_LRG_24A.mime, // UPnP Device Large Icon PNG Mimetype (42)
+ DLNA_ICON_PNG_LRG_24A.width, // UPnP Device Large Icon Width (43)
+ DLNA_ICON_PNG_LRG_24A.height, // UPnP Device Large Icon Height (44)
+ DLNA_ICON_PNG_LRG_24A.bitDepth, // UPnP Device Large Icon Bit Depth (45)
+ UPNP_DEVICE_ICON_PNG_LRG, // UPnP Device Large Icon Path (46)
+ UPNP_WEB_PRESENTATION_URL, // UPnP Presentation URL (49)
+ UPNP_XMLNS_PREFIX_DLNA, // DLNA Namespace prefix (50)
+ DLNA_DEVICE_DMS_1_5, // DLNA Device Type/Version (50)
+ UPNP_CMS_SERVICE_TYPE, // UPnP CMS Service Type
+ UPNP_CMS_SERVICE_ID, // UPnP CMS Service ID
+ UPNP_CMS_SCPD_URL, // UPnP CMS Service Description
+ UPNP_CMS_CONTROL_URL, // UPnP CMS Control URL
+ UPNP_CMS_EVENT_URL, // UPnP CMS Event URL
+ UPNP_CDS_SERVICE_TYPE, // UPnP CDS Service Type
+ UPNP_CDS_SERVICE_ID, // UPnP CDS Service ID
+ UPNP_CDS_SCPD_URL, // UPnP CDS Service Description
+ UPNP_CDS_CONTROL_URL, // UPnP CDS Control URL
+ UPNP_CDS_EVENT_URL // UPnP CDS Event URL
+// UPNP_AVT_SERVICE_TYPE, // UPnP AVT Service Type
+// UPNP_AVT_SERVICE_ID, // UPnP AVT Service ID
+// UPNP_AVT_SCPD_URL, // UPnP AVT Service Description
+// UPNP_AVT_CONTROL_URL, // UPnP AVT Control URL
+// UPNP_AVT_EVENT_URL // UPnP AVT Event URL
+ );
+ return strdup0(*description);
+} \ No newline at end of file
diff --git a/dlna/profiles/aac.cpp b/dlna/profiles/aac.cpp
new file mode 100644
index 0000000..e2b77e2
--- /dev/null
+++ b/dlna/profiles/aac.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_aac.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:31
+ */
+
+#include "profiles/aac.h"
diff --git a/dlna/profiles/ac3.cpp b/dlna/profiles/ac3.cpp
new file mode 100644
index 0000000..0b7841e
--- /dev/null
+++ b/dlna/profiles/ac3.cpp
@@ -0,0 +1,85 @@
+/*
+ * File: profiles_ac3.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:04
+ */
+
+#include "profiles/ac3.h"
+#include "util.h"
+#include "avdetector.h"
+
+DLNAProfile DLNA_PROFILE_AC3 = { "AC3" , "audio/vnd.dolby.dd-raw" };
+
+/**
+ * Accepted audio bitrates
+ *
+ * This are all accepted audio bitrates of this profile
+ * The standard says 64Kbps - 640Kbps. However, 32Kbps is used as
+ * lower limit to accept low bitrate streams in ATSC and DVB broadcast streams.
+ */
+AcceptedBitrates DLNA_BITRATES_AC3 = { true, {Kbps(32), Kbps(448)}};
+AcceptedBitrates DLNA_BITRATES_XAC3 = { true, {Kbps(64), Kbps(640)}};
+
+/**
+ * Accepted audio channel layouts
+ *
+ * This are all accepted audio channel layouts including LFE.
+ * Though the LFE is optional and not explicitly mentioned in the documents to be supported
+ * by this profile, it is supported by this plugin as it makes no sense to do not.
+ * However, this may result in difficulties on some players if they follow the standard correctly
+ *
+ */
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_AC3 = { 5, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20, CHANNEL_LAYOUT_21,
+ CHANNEL_LAYOUT_22, CHANNEL_LAYOUT_30, CHANNEL_LAYOUT_31,
+ CHANNEL_LAYOUT_32, CHANNEL_LAYOUT_10_1, CHANNEL_LAYOUT_20_1,
+ CHANNEL_LAYOUT_21_1, CHANNEL_LAYOUT_22_1, CHANNEL_LAYOUT_30_1,
+ CHANNEL_LAYOUT_31_1, CHANNEL_LAYOUT_5_1
+ }, true };
+
+/**
+ * Accepted audio sample rates
+ *
+ * This are all accepted audio sample rates
+ * In ATSC systems only 48kHz are supported, the other two sample rates were
+ * removed from standard. However, I do not specialice here if there is no
+ * real reason for.
+ */
+AcceptedSamplingRates DLNA_SAMPLINGRATES_AC3 = {{ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_XAC3 = {{ KHz(48) }};
+
+AudioPortionProfile cAC3Profiler::probeAudioProfile(AVFormatContext* FormatCtx){
+ AVCodecContext* AudioCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_AUDIO);
+
+ if(AudioCodec->codec_id == CODEC_ID_AC3){
+ // VBR
+ if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_AC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_AC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_AC3, AudioCodec)){
+ return DLNA_APP_AC3;
+ }
+ else if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_XAC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_AC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_XAC3, AudioCodec)){
+ return DLNA_APP_XAC3;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+}
+
+DLNAProfile* cAC3Profiler::probeDLNAProfile(AVFormatContext* FormatCtx){
+ AudioPortionProfile Profile = AC3Profiler.probeAudioProfile(FormatCtx);
+ if(Profile==DLNA_APP_AC3 || Profile==DLNA_APP_XAC3){
+ return &DLNA_PROFILE_AC3;
+ }
+ else {
+ return NULL;
+ }
+}
+
+cAC3Profiler AC3Profiler; \ No newline at end of file
diff --git a/dlna/profiles/amr.cpp b/dlna/profiles/amr.cpp
new file mode 100644
index 0000000..8c7696f
--- /dev/null
+++ b/dlna/profiles/amr.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_amr.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:05
+ */
+
+#include "profiles/amr.h"
diff --git a/dlna/profiles/atrac3plus.cpp b/dlna/profiles/atrac3plus.cpp
new file mode 100644
index 0000000..95f28fd
--- /dev/null
+++ b/dlna/profiles/atrac3plus.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_atrac3plus.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:06
+ */
+
+#include "profiles/atrac3plus.h" \ No newline at end of file
diff --git a/dlna/profiles/container.cpp b/dlna/profiles/container.cpp
new file mode 100644
index 0000000..a4418ef
--- /dev/null
+++ b/dlna/profiles/container.cpp
@@ -0,0 +1,117 @@
+/*
+ * File: container.cpp
+ * Author: savop
+ *
+ * Created on 8. Januar 2010, 11:45
+ */
+
+#include "profiles/container.h"
+#include "../../common.h"
+#include <vdr/remux.h>
+
+#define DLNA_MPEG_TS_SIZE_ISO TS_SIZE
+#define DLNA_MPEG_TS_SIZE 192
+
+enum VideoFormats {
+ FORMAT_MPEG1,
+ FORMAT_MPEG2,
+ FORMAT_MP4,
+#ifdef WITH_WINDOWS_MEDIA
+ FORMAT_WMF,
+#endif
+};
+
+static const struct VideoFormatMapping {
+ const char* name;
+ VideoFormats format;
+} VideoFormatMap[] = {
+ { "mpeg", FORMAT_MPEG2 },
+ { "mpegts", FORMAT_MPEG2 },
+#ifdef WITH_WINDOWS_MEDIA
+ { "asf", FORMAT_WMF }
+#endif
+};
+
+VideoContainerProfile cContainerDetector::detect(AVFormatContext* Ctx){
+ if(Ctx && Ctx->iformat){
+ for(int i=0; VideoFormatMap[i].name; i++){
+ if(!strcasecmp(VideoFormatMap[i].name,Ctx->iformat->name))
+ switch(VideoFormatMap[i].format){
+ case FORMAT_MPEG1:
+ return cContainerDetector::detectMPEG1Container(Ctx);
+ case FORMAT_MPEG2:
+ return cContainerDetector::detectMPEG2Container(Ctx);
+ case FORMAT_MP4:
+ return cContainerDetector::detectMP4Container(Ctx);
+#ifdef WITH_WINDOWS_MEDIA
+ case FORMAT_WMF:
+ return cContainerDetector::detectWMFContainer(Ctx);
+#endif
+ default:
+ break;
+ }
+ }
+ ERROR("AVDetector: Unsupported input format \"%s\"", Ctx->iformat->name);
+ }
+ else {
+ ERROR("AVDetector: Input format not found");
+ }
+ return DLNA_VCP_UNKNOWN;
+}
+
+VideoContainerProfile cContainerDetector::detectMPEG2Container(AVFormatContext* Ctx){
+
+ uint8_t buf[5*1024];
+ int len;
+ int64_t pos;
+ int PaketSize = 0;
+ VideoContainerProfile VCP = DLNA_VCP_UNKNOWN;
+
+ /* read the first 1024 bytes to get packet size */
+ pos = url_ftell(Ctx->pb);
+ len = get_buffer(Ctx->pb, buf, sizeof(buf));
+ if (len != sizeof(buf)) PaketSize = 0;
+
+ for(int i = 0; i<DLNA_MPEG_TS_SIZE; i++){
+ if(buf[i]==0x47 && buf[i+DLNA_MPEG_TS_SIZE_ISO]==0x47){
+ MESSAGE(VERBOSE_METADATA, "AVDetector: MPEG TS ISO Video container found");
+ PaketSize = DLNA_MPEG_TS_SIZE_ISO;
+ VCP = DLNA_VCP_MPEG2_TS_ISO;
+ break;
+ }
+ else if(buf[i+4]==0x47 && buf[i+DLNA_MPEG_TS_SIZE]==0x47){
+ PaketSize = DLNA_MPEG_TS_SIZE;
+ if(buf[i]==0x00 && buf[i+1]==0x00 && buf[i+1]==0x00 && buf[i+1]==0x00){
+ MESSAGE(VERBOSE_METADATA, "AVDetector: MPEG TS DLNA with zero value time stamp found");
+ VCP = DLNA_VCP_MPEG2_TS_T;
+ break;
+ }
+ else {
+ MESSAGE(VERBOSE_METADATA, "AVDetector: MPEG TS DLNA with non-zero value time stamp found");
+ VCP = DLNA_VCP_MPEG2_TS;
+ break;
+ }
+ }
+ else {
+ VCP = DLNA_VCP_UNKNOWN;
+ }
+ }
+
+ // TODO: MPEG-PS-Header
+
+ return VCP;
+}
+
+VideoContainerProfile cContainerDetector::detectMPEG1Container(AVFormatContext* ){
+ return DLNA_VCP_UNKNOWN;
+}
+
+VideoContainerProfile cContainerDetector::detectMP4Container(AVFormatContext* ){
+ return DLNA_VCP_UNKNOWN;
+}
+
+#ifdef WITH_WINDOWS_MEDIA
+VideoContainerProfile cContainerDetector::detectWMFContainer(AVFormatContext* ){
+ return DLNA_VCP_UNKNOWN;
+}
+#endif \ No newline at end of file
diff --git a/dlna/profiles/jpeg.cpp b/dlna/profiles/jpeg.cpp
new file mode 100644
index 0000000..61e1149
--- /dev/null
+++ b/dlna/profiles/jpeg.cpp
@@ -0,0 +1,11 @@
+/*
+ * File: profiles_jpeg.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 12:59
+ */
+
+#include "profiles/jpeg.h"
+
+DLNAIconProfile DLNA_ICON_JPEG_SM_24 = { "image/jpeg", 48, 48, 24 };
+DLNAIconProfile DLNA_ICON_JPEG_LRG_24 = { "image/jpeg", 120, 120, 24 };
diff --git a/dlna/profiles/lpcm.cpp b/dlna/profiles/lpcm.cpp
new file mode 100644
index 0000000..d80b259
--- /dev/null
+++ b/dlna/profiles/lpcm.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_lpcm.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:07
+ */
+
+#include "profiles/lpcm.h" \ No newline at end of file
diff --git a/dlna/profiles/mpa.cpp b/dlna/profiles/mpa.cpp
new file mode 100644
index 0000000..09ba77b
--- /dev/null
+++ b/dlna/profiles/mpa.cpp
@@ -0,0 +1,121 @@
+/*
+ * File: profiles_mp3.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:08
+ */
+
+#include "profiles/mpa.h"
+#include "profiles/profile_data.h"
+#include "avdetector.h"
+
+DLNAProfile DLNA_PROFILE_MP3 = { "MP3" , "audio/mpeg" };
+DLNAProfile DLNA_PROFILE_MP3X = { "MP3X" , "audio/mpeg" };
+
+AcceptedBitrates DLNA_BITRATES_MPEG1_L1_DVB = { true, { Kbps(32), Kbps(448) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L2_DVB = { true, { Kbps(32), Kbps(384) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3_VBR = { true, { Kbps(32), Kbps(320) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3_CBR = { false, { Kbps(32), Kbps(40),
+ Kbps(48), Kbps(56),
+ Kbps(64), Kbps(80),
+ Kbps(96), Kbps(112),
+ Kbps(128), Kbps(160),
+ Kbps(192), Kbps(224),
+ Kbps(256), Kbps(320)}};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3X_VBR = { true, { Kbps(8), Kbps(320) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3X_CBR = { false, { Kbps(8), Kbps(16), Kbps(24),
+ Kbps(32), Kbps(40),
+ Kbps(48), Kbps(56),
+ Kbps(64), Kbps(80),
+ Kbps(96), Kbps(112),
+ Kbps(128), Kbps(160),
+ Kbps(192), Kbps(224),
+ Kbps(256), Kbps(320)}};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L2 = { true, { Kbps(32), Kbps(384) }};
+
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L1_DVB = {{ KHz(16), KHz(22.05), KHz(24),
+ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L2 = {{ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L2_DVB = {{ KHz(16), KHz(22.05), KHz(24),
+ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L3 = {{ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L3X = {{ KHz(16), KHz(22.05), KHz(24),
+ KHz(32), KHz(44.1), KHz(48) }};
+
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L1_DVB = { 6, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20,
+ CHANNEL_LAYOUT_21, CHANNEL_LAYOUT_22,
+ CHANNEL_LAYOUT_30, CHANNEL_LAYOUT_31,
+ CHANNEL_LAYOUT_32, }, false };
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L2_DVB = { 6, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20,
+ CHANNEL_LAYOUT_21, CHANNEL_LAYOUT_22,
+ CHANNEL_LAYOUT_30, CHANNEL_LAYOUT_31,
+ CHANNEL_LAYOUT_32, }, false };
+
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L2 = { 2, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20 }, false };
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L3 = { 2, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20 }, false };
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L3X = { 2, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20 }, false };
+
+AudioPortionProfile cMPEGAudioProfiler::probeAudioProfile(AVFormatContext* FormatCtx){
+ AVCodecContext* AudioCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_AUDIO);
+
+ if(AudioCodec->codec_id == CODEC_ID_MP1){
+ if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L1_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L1_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L1_DVB, AudioCodec)){
+ return DLNA_APP_MPEG1_L1;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else if(AudioCodec->codec_id == CODEC_ID_MP2){
+ if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L2, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L2, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L2, AudioCodec)){
+ return DLNA_APP_MPEG1_L2;
+ }
+ else if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L2_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L2_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L2_DVB, AudioCodec)){
+ return DLNA_APP_MPEG1_L2;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else if(AudioCodec->codec_id == CODEC_ID_MP3){
+ if((cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3_VBR, AudioCodec) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3_CBR, AudioCodec)) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L3, AudioCodec)){
+ return DLNA_APP_MPEG1_L3;
+ }
+ else if((cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3X_VBR, AudioCodec) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3X_CBR, AudioCodec)) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L3X, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L3X, AudioCodec)){
+ return DLNA_APP_MPEG1_L3X;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+}
+
+DLNAProfile* cMPEGAudioProfiler::probeDLNAProfile(AVFormatContext* FormatCtx){
+ AudioPortionProfile Profile = MPEGAudioProfiler.probeAudioProfile(FormatCtx);
+ if(Profile == DLNA_APP_MPEG1_L3){
+ return &DLNA_PROFILE_MP3;
+ }
+ else if(Profile == DLNA_APP_MPEG1_L3X){
+ return &DLNA_PROFILE_MP3X;
+ }
+ else {
+ return NULL;
+ }
+}
+
+cMPEGAudioProfiler MPEGAudioProfiler; \ No newline at end of file
diff --git a/dlna/profiles/mpeg1.cpp b/dlna/profiles/mpeg1.cpp
new file mode 100644
index 0000000..9f2d67b
--- /dev/null
+++ b/dlna/profiles/mpeg1.cpp
@@ -0,0 +1,15 @@
+/*
+ * File: profiles_mpeg1.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:34
+ */
+
+#include "profiles/mpeg1.h"
+
+DLNAProfile DLNA_PROFILE_MPEG1 = { "MPEG1", "video/mpeg" };
+
+DLNAVideoMapping MPEG1_VIDEO_MAP[] =
+{
+ { &DLNA_PROFILE_MPEG1, DLNA_VCP_MPEG1, DLNA_VPP_MPEG1, DLNA_APP_MPEG1_L2 }
+}; \ No newline at end of file
diff --git a/dlna/profiles/mpeg2.cpp b/dlna/profiles/mpeg2.cpp
new file mode 100644
index 0000000..2816095
--- /dev/null
+++ b/dlna/profiles/mpeg2.cpp
@@ -0,0 +1,216 @@
+/*
+ * File: profiles_mpeg2.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:35
+ */
+
+#include "profiles/mpeg2.h"
+#include "profiles/container.h"
+#include "util.h"
+#include "profiles/ac3.h"
+#include "avdetector.h"
+
+AcceptedBitrates DLNA_VIDEOBITRATES_MPEG2_TS_NA_SYSTEM = { true, {1, Mbps(19.3927)}};
+AcceptedBitrates DLNA_VIDEOBITRATES_MPEG2_TS_EU = { true, {1, Mbps(15)}};
+AcceptedBitrates DLNA_VIDEOBITRATES_MPEG2_PS = { true, {1, Mbps(9.80)}};
+
+AcceptedResolution DLNA_RESOLUTIONS_MPEG2_PAL[] = { { 720, 576, 25, 1 },
+ { 704, 576, 25, 1 }, ///< compatibility mode for PAL
+ { 544, 576, 25, 1 },
+ { 480, 576, 25, 1 },
+ { 352, 576, 25, 1 },
+ { 352, 288, 25, 1 } };
+AcceptedResolution DLNA_RESOLUTIONS_MPEG2_NTSC_SD[] = { { 720, 480, 30, 1001},
+ { 704, 480, 30, 1001},
+ { 704, 480, 30, 1},
+ { 704, 480, 24, 1001},
+ { 704, 480, 24, 1},
+ { 640, 480, 30, 1001},
+ { 640, 480, 30, 1},
+ { 640, 480, 24, 1001},
+ { 640, 480, 24, 1},
+ { 544, 480, 30, 1001},
+ { 480, 480, 30, 1001},
+ { 352, 480, 30, 1001} };
+AcceptedResolution DLNA_RESOLUTIONS_MPEG2_NTSC_HD[] = { { 1920, 1080, 30, 1001},
+ { 1920, 1080, 30, 1},
+ { 1920, 1080, 24, 1001},
+ { 1920, 1080, 24, 1},
+ { 1280, 720, 30, 1001},
+ { 1280, 720, 30, 1},
+ { 1280, 720, 24, 1001},
+ { 1280, 720, 24, 1},
+ { 1440, 1080, 30, 1001},
+ { 1440, 1080, 30, 1},
+ { 1440, 1080, 24, 1001},
+ { 1440, 1080, 24, 1},
+ { 1280, 1080, 30, 1001},
+ { 1280, 1080, 30, 1},
+ { 1280, 1080, 24, 1001},
+ { 1280, 1080, 24, 1} };
+
+DLNAProfile DLNA_PROFILE_MPEG_PS_NTSC = { "MPEG_PS_NTSC", "video/mpeg" };
+DLNAProfile DLNA_PROFILE_MPEG_PS_NTSC_XAC3 = { "MPEG_PS_NTSC_XAC3", "video/mpeg" };
+DLNAProfile DLNA_PROFILE_MPEG_PS_PAL = { "MPEG_PS_PAL", "video/mpeg" };
+DLNAProfile DLNA_PROFILE_MPEG_PS_PAL_XAC3 = { "MPEG_PS_PAL_XAC3", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA = { "MPEG_TS_SD_NA", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_T = { "MPEG_TS_SD_NA_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_ISO = { "MPEG_TS_SD_NA_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA = { "MPEG_TS_HD_NA", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_T = { "MPEG_TS_HD_NA_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_ISO = { "MPEG_TS_HD_NA_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3 = { "MPEG_TS_SD_NA_XAC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_T = { "MPEG_TS_SD_NA_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_ISO = { "MPEG_TS_SD_NA_XAC3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3 = { "MPEG_TS_HD_NA_XAC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_T = { "MPEG_TS_HD_NA_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_ISO = { "MPEG_TS_HD_NA_XAC3_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU = { "MPEG_TS_SD_EU", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_T = { "MPEG_TS_SD_EU_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_ISO = { "MPEG_TS_SD_EU_ISO", "video/mpeg"};
+
+// The Korean profiles are almost identical to the north american profiles.
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO = { "MPEG_TS_SD_KO", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_T = { "MPEG_TS_SD_KO_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_ISO = { "MPEG_TS_SD_KO_ISO", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO = { "MPEG_TS_HD_KO", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_T = { "MPEG_TS_HD_KO_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_ISO = { "MPEG_TS_HD_KO_ISO", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3 = { "MPEG_TS_SD_KO_XAC3", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3_T = { "MPEG_TS_SD_KO_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3_ISO = { "MPEG_TS_SD_KO_XAC3_ISO", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3 = { "MPEG_TS_HD_KO_XAC3", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3_T = { "MPEG_TS_HD_KO_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3_ISO = { "MPEG_TS_HD_KO_XAC3_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC = { "MPEG_TS_MP_LL_AAC", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC_T = { "MPEG_TS_MP_LL_AAC_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC_ISO = { "MPEG_TS_MP_LL_AAC_ISO", "video/mpeg"};
+
+// The Elementary Stream profiles are currently not supported as they are only supported within RTP streaming
+//DLNAProfile DLNA_PROFILE_MPEG_ES_PAL = { "MPEG_ES_PAL", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_ES_NTSC = { "MPEG_ES_NTSC", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_ES_PAL_XAC3 = { "MPEG_ES_PAL_XAC3", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_ES_NTSC_XAC3 = { "MPEG_ES_NTSC_XAC3", "video/mpeg"};
+
+DLNAVideoMapping MPEG2_VIDEO_MAP[] = {
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_LPCM},
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_PS_NTSC_XAC3, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_LPCM},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_PS_PAL_XAC3, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_XAC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_XAC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L1},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L1},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L1},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_MP_LL_AAC, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_MP_LL, DLNA_APP_AAC},
+ { &DLNA_PROFILE_MPEG_TS_MP_LL_AAC_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_MP_LL, DLNA_APP_AAC},
+ { &DLNA_PROFILE_MPEG_TS_MP_LL_AAC_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_MP_LL, DLNA_APP_AAC},
+
+};
+
+DLNAProfile* cMPEG2Profiler::probeDLNAProfile(AVFormatContext* FormatCtx){
+ VideoContainerProfile VCP = MPEG2Profiler.probeContainerProfile(FormatCtx);
+ VideoPortionProfile VPP = MPEG2Profiler.probeVideoProfile(FormatCtx);
+ AudioPortionProfile APP = MPEG2Profiler.probeAudioProfile(FormatCtx);
+
+ MESSAGE(VERBOSE_METADATA, "VCP: %d, VPP: %d, APP: %d", VCP, VPP, APP);
+
+ for(int i=0; i < (int) (sizeof(MPEG2_VIDEO_MAP)/sizeof(DLNAVideoMapping)); i++){
+ if( MPEG2_VIDEO_MAP[i].VideoContainer == VCP &&
+ MPEG2_VIDEO_MAP[i].VideoProfile == VPP &&
+ MPEG2_VIDEO_MAP[i].AudioProfile == APP){
+ return MPEG2_VIDEO_MAP[i].Profile;
+ }
+ }
+
+ return NULL;
+}
+
+VideoPortionProfile cMPEG2Profiler::probeVideoProfile(AVFormatContext* FormatCtx){
+ AVCodecContext* VideoCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_VIDEO);
+ AVStream* VideoStream = cCodecToolKit::getFirstStream(FormatCtx, CODEC_TYPE_VIDEO);
+
+ MESSAGE(VERBOSE_METADATA, "Codec-ID: %d", VideoCodec->codec_id);
+ MESSAGE(VERBOSE_METADATA, "Codec-Name: %s", VideoCodec->codec_name);
+ MESSAGE(VERBOSE_METADATA, "Codec Bitrate: %d", VideoCodec->bit_rate);
+ MESSAGE(VERBOSE_METADATA, "Codec width: %d", VideoCodec->coded_width);
+ MESSAGE(VERBOSE_METADATA, "Codec height: %d", VideoCodec->coded_height);
+ MESSAGE(VERBOSE_METADATA, "Codec Profile: %d", VideoCodec->profile);
+ MESSAGE(VERBOSE_METADATA, "Codec Level: %d", VideoCodec->level);
+ MESSAGE(VERBOSE_METADATA, "Codec Chroma: %d", VideoCodec->pix_fmt);
+ MESSAGE(VERBOSE_METADATA, "Stream aspect ratio %d:%d", VideoStream->sample_aspect_ratio.num, VideoStream->sample_aspect_ratio.den);
+ MESSAGE(VERBOSE_METADATA, "Stream fps %2.3f", av_q2d(VideoStream->r_frame_rate));
+
+ if(VideoCodec->codec_id == CODEC_ID_MPEG2VIDEO){
+ if(cCodecToolKit::matchesAcceptedResolutions(DLNA_RESOLUTIONS_MPEG2_PAL,
+ (int) (sizeof(DLNA_RESOLUTIONS_MPEG2_PAL)/sizeof(AcceptedResolution)) , VideoStream) &&
+ (cCodecToolKit::matchesAcceptedBitrates(DLNA_VIDEOBITRATES_MPEG2_TS_EU, VideoCodec) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_VIDEOBITRATES_MPEG2_PS, VideoCodec))){
+ return DLNA_VPP_MPEG2_PAL_SD;
+ }
+ else if(cCodecToolKit::matchesAcceptedResolutions(DLNA_RESOLUTIONS_MPEG2_NTSC_SD,
+ (int) (sizeof(DLNA_RESOLUTIONS_MPEG2_NTSC_SD)/sizeof(AcceptedResolution)), VideoStream) &&
+ (cCodecToolKit::matchesAcceptedSystemBitrate(DLNA_VIDEOBITRATES_MPEG2_TS_NA_SYSTEM, FormatCtx) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_VIDEOBITRATES_MPEG2_PS, VideoCodec))) {
+ return DLNA_VPP_MPEG2_NTSC_SD;
+ }
+ else if(cCodecToolKit::matchesAcceptedResolutions(DLNA_RESOLUTIONS_MPEG2_NTSC_HD,
+ (int) (sizeof(DLNA_RESOLUTIONS_MPEG2_NTSC_HD)/sizeof(AcceptedResolution)), VideoStream) &&
+ cCodecToolKit::matchesAcceptedSystemBitrate(DLNA_VIDEOBITRATES_MPEG2_TS_NA_SYSTEM, FormatCtx)) {
+ return DLNA_VPP_MPEG2_NTSC_HD;
+ }
+ }
+
+ return DLNA_VPP_UNKNOWN;
+}
+
+AudioPortionProfile cMPEG2Profiler::probeAudioProfile(AVFormatContext* FormatCtx){
+ AudioPortionProfile Profile;
+ if((Profile = AC3Profiler.probeAudioProfile(FormatCtx)) != DLNA_APP_UNKNOWN){
+ MESSAGE(VERBOSE_METADATA, "AC3: %d", Profile);
+ return Profile;
+ }
+ // First codec is not AC3... trying other codecs
+ else if((Profile = MPEGAudioProfiler.probeAudioProfile(FormatCtx)) != DLNA_APP_UNKNOWN){
+ MESSAGE(VERBOSE_METADATA, "MPA: %d", Profile);
+ return Profile;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+}
+
+VideoContainerProfile cMPEG2Profiler::probeContainerProfile(AVFormatContext* FormatCtx){
+ return cContainerDetector::detect(FormatCtx);
+}
+
+cMPEG2Profiler MPEG2Profiler; \ No newline at end of file
diff --git a/dlna/profiles/mpeg4_p10.cpp b/dlna/profiles/mpeg4_p10.cpp
new file mode 100644
index 0000000..80e91b4
--- /dev/null
+++ b/dlna/profiles/mpeg4_p10.cpp
@@ -0,0 +1,148 @@
+/*
+ * File: profiles_mpeg4_p10.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:38
+ */
+
+#include "profiles/mpeg4_p10.h"
+
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5 = {"AVC_TS_MP_SD_AAC_MULT5", ""}; ///< AVC main profile AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5_T = {"AVC_TS_MP_SD_AAC_MULT5_T", ""}; ///< AVC main profile AAC 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5_ISO = {"AVC_TS_MP_SD_AAC_MULT5_ISO", ""}; ///< AVC main profile AAC 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2 = {"AVC_TS_MP_SD_HEAAC_L2", ""}; ///< AVC main profile HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2_T = {"AVC_TS_MP_SD_HEAAC_L2_T", ""}; ///< AVC main profile HEAAC L2 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2_ISO = {"AVC_TS_MP_SD_HEAAC_L2_ISO", ""}; ///< AVC main profile HEAAC L2 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3 = {"AVC_TS_MP_SD_MPEG1_L3", ""}; ///< AVC main profile MP3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3_T = {"AVC_TS_MP_SD_MPEG1_L3_T", ""}; ///< AVC main profile MP3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3_ISO = {"AVC_TS_MP_SD_MPEG1_L3_ISO", ""}; ///< AVC main profile MP3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3 = {"AVC_TS_MP_SD_AC3", ""}; ///< AVC main profile AC3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3_T = {"AVC_TS_MP_SD_AC3_T", ""}; ///< AVC main profile AC3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3_ISO = {"AVC_TS_MP_SD_AC3_ISO", ""}; ///< AVC main profile AC3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP = {"AVC_TS_MP_SD_AAC_LTP", ""}; ///< AVC main profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_T = {"AVC_TS_MP_SD_AAC_LTP_T", ""}; ///< AVC main profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_ISO = {"AVC_TS_MP_SD_AAC_LTP_ISO", ""}; ///< AVC main profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5 = {"AVC_TS_MP_SD_AAC_LTP_MULT5", ""}; ///< AVC main profile AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5_T = {"AVC_TS_MP_SD_AAC_LTP_MULT5_T", ""}; ///< AVC main profile AAC LTP 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5_ISO = {"AVC_TS_MP_SD_AAC_LTP_MULT5_ISO", ""}; ///< AVC main profile AAC LTP 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7 = {"AVC_TS_MP_SD_AAC_LTP_MULT7", ""}; ///< AVC main profile AAC LTP 7.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7_T = {"AVC_TS_MP_SD_AAC_LTP_MULT7_T", ""}; ///< AVC main profile AAC LTP 7.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7_ISO = {"AVC_TS_MP_SD_AAC_LTP_MULT7_ISO", ""}; ///< AVC main profile AAC LTP 7.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC = {"AVC_TS_MP_SD_BSAC", ""}; ///< AVC main profile BSAC
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC_T = {"AVC_TS_MP_SD_BSAC_T", ""}; ///< AVC main profile BSAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC_ISO = {"AVC_TS_MP_SD_BSAC_ISO", ""}; ///< AVC main profile BSAC without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_MULT5 = {"AVC_MP4_MP_SD_AAC_MULT5", ""}; ///< AVC main profile MP4 AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_HEAAC_L2 = {"AVC_MP4_MP_SD_HEAAC_L2", ""}; ///< AVC main profile MP4 HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_MPEG1_L3 = {"AVC_MP4_MP_SD_MPEG1_L3", ""}; ///< AVC main profile MP4 MP3
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AC3 = {"AVC_MP4_MP_SD_AC3", ""}; ///< AVC main profile MP4 AC3
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP = {"AVC_MP4_MP_SD_AAC_LTP", ""}; ///< AVC main profile MP4 AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP_MULT5 = {"AVC_MP4_MP_SD_AAC_LTP_MULT5", ""}; ///< AVC main profile MP4 AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP_MULT7 = {"AVC_MP4_MP_SD_AAC_LTP_MULT7", ""}; ///< AVC main profile MP4 AAC LTP 7.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_ATRAC3plus = {"AVC_MP4_MP_SD_ATRAC3plus", ""}; ///< AVC main profile MP4 ATRAC3+
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_BSAC = {"AVC_MP4_MP_SD_BSAC", ""}; ///< AVC main profile MP4 BSAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3L_SD_AAC = {"AVC_MP4_BP_L3L_SD_AAC", ""}; ///< AVC baseline profile MP4 AAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3L_SD_HEAAC = {"AVC_MP4_BP_L3L_SD_HEAAC", ""}; ///< AVC baseline profile MP4 HEAAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3_SD_AAC = {"AVC_MP4_BP_L3_SD_AAC", ""}; ///< AVC baseline profile standard MP4 AAC
+
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5 = {"AVC_TS_BL_CIF30_AAC_MULT5", ""}; ///< AVC CIF30 baseline profile AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5_T = {"AVC_TS_BL_CIF30_AAC_MULT5_T", ""}; ///< AVC CIF30 baseline profile AAC 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5_ISO = {"AVC_TS_BL_CIF30_AAC_MULT5_ISO", ""}; ///< AVC CIF30 baseline profile AAC 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2 = {"AVC_TS_BL_CIF30_HEAAC_L2", ""}; ///< AVC CIF30 baseline profile HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2_T = {"AVC_TS_BL_CIF30_HEAAC_L2_T", ""}; ///< AVC CIF30 baseline profile HEAAC L2 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2_ISO = {"AVC_TS_BL_CIF30_HEAAC_L2_ISO", ""}; ///< AVC CIF30 baseline profile HEAAC L2 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3 = {"AVC_TS_BL_CIF30_MPEG1_L3", ""}; ///< AVC CIF30 baseline profile MP3
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3_T = {"AVC_TS_BL_CIF30_MPEG1_L3_T", ""}; ///< AVC CIF30 baseline profile MP3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3_ISO = {"AVC_TS_BL_CIF30_MPEG1_L3_ISO", ""}; ///< AVC CIF30 baseline profile MP3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3 = {"AVC_TS_BL_CIF30_AC3", ""}; ///< AVC CIF30 baseline profile AC3
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3_T = {"AVC_TS_BL_CIF30_AC3_T", ""}; ///< AVC CIF30 baseline profile AC3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3_ISO = {"AVC_TS_BL_CIF30_AC3_ISO", ""}; ///< AVC CIF30 baseline profile AC3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP = {"AVC_TS_BL_CIF30_AAC_LTP", ""}; ///< AVC CIF30 baseline profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_T = {"AVC_TS_BL_CIF30_AAC_LTP_T", ""}; ///< AVC CIF30 baseline profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_ISO = {"AVC_TS_BL_CIF30_AAC_LTP_ISO", ""}; ///< AVC CIF30 baseline profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5 = {"AVC_TS_BL_CIF30_AAC_LTP_MULT5", ""}; ///< AVC CIF30 baseline profile AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5_T = {"AVC_TS_BL_CIF30_AAC_LTP_MULT5_T", ""}; ///< AVC CIF30 baseline profile AAC LTP 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5_ISO = {"AVC_TS_BL_CIF30_AAC_LTP_MULT5_ISO", ""}; ///< AVC CIF30 baseline profile AAC LTP 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940 = {"AVC_TS_BL_CIF30_AAC_940", ""}; ///< AVC CIF30 baseline profile AAC 940
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940_T = {"AVC_TS_BL_CIF30_AAC_940_T", ""}; ///< AVC CIF30 baseline profile AAC 940 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940_ISO = {"AVC_TS_BL_CIF30_AAC_940_ISO", ""}; ///< AVC CIF30 baseline profile AAC 940 without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_MULT5 = {"AVC_MP4_BL_CIF30_AAC_MULT5", ""}; ///< AVC CIF30 baseline profile MP4 AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_HEAAC_L2 = {"AVC_MP4_BL_CIF30_HEAAC_L2", ""}; ///< AVC CIF30 baseline profile MP4 HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_MPEG1_L3 = {"AVC_MP4_BL_CIF30_MPEG1_L3", ""}; ///< AVC CIF30 baseline profile MP4 MP3
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AC3 = {"AVC_MP4_BL_CIF30_AC3", ""}; ///< AVC CIF30 baseline profile MP4 AC3
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_LTP = {"AVC_MP4_BL_CIF30_AAC_LTP", ""}; ///< AVC CIF30 baseline profile MP4 AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_LTP_MULT5 = {"AVC_MP4_BL_CIF30_AAC_LTP_MULT5", ""}; ///< AVC CIF30 baseline profile MP4 AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_BSAC = {"AVC_MP4_BL_CIF30_BSAC", ""}; ///< AVC CIF30 baseline profile BSAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_BSAC_MULT5 = {"AVC_MP4_BL_CIF30_BSAC_MULT5", ""}; ///< AVC CIF30 baseline profile BSAC 5.1
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L2_CIF30_AAC = {"AVC_MP4_BL_L2_CIF30_AAC", ""}; ///< AVC CIF30 baseline profile L2 AAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_HEAAC = {"AVC_MP4_BL_CIF15_HEAAC", ""}; ///< AVC CIF15 baseline profile HEAAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AMR = {"AVC_MP4_BL_CIF15_AMR", ""}; ///< AVC CIF15 baseline profile AMR
+
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5 = {"AVC_TS_MP_HD_AAC_MULT5", ""}; ///< AVC main profile AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5_T = {"AVC_TS_MP_HD_AAC_MULT5_T", ""}; ///< AVC main profile AAC 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5_ISO = {"AVC_TS_MP_HD_AAC_MULT5_ISO", ""}; ///< AVC main profile AAC 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2 = {"AVC_TS_MP_HD_HEAAC_L2", ""}; ///< AVC main profile HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2_T = {"AVC_TS_MP_HD_HEAAC_L2_T", ""}; ///< AVC main profile HEAAC L2 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2_ISO = {"AVC_TS_MP_HD_HEAAC_L2_ISO", ""}; ///< AVC main profile HEAAC L2 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3 = {"AVC_TS_MP_HD_MPEG1_L3", ""}; ///< AVC main profile MP3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3_T = {"AVC_TS_MP_HD_MPEG1_L3_T", ""}; ///< AVC main profile MP3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3_ISO = {"AVC_TS_MP_HD_MPEG1_L3_ISO", ""}; ///< AVC main profile MP3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3 = {"AVC_TS_MP_HD_AC3", ""}; ///< AVC main profile AC3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3_T = {"AVC_TS_MP_HD_AC3_T", ""}; ///< AVC main profile AC3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3_ISO = {"AVC_TS_MP_HD_AC3_ISO", ""}; ///< AVC main profile AC3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC = {"AVC_TS_MP_HD_AAC", ""}; ///< AVC main profile AAC
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_T = {"AVC_TS_MP_HD_AAC_T", ""}; ///< AVC main profile AAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_ISO = {"AVC_TS_MP_HD_AAC_ISO", ""}; ///< AVC main profile AAC without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP = {"AVC_TS_MP_HD_AAC_LTP", ""}; ///< AVC main profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_T = {"AVC_TS_MP_HD_AAC_LTP_T", ""}; ///< AVC main profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_ISO = {"AVC_TS_MP_HD_AAC_LTP_ISO", ""}; ///< AVC main profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5 = {"AVC_TS_MP_HD_AAC_LTP_MULT5", ""}; ///< AVC main profile AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5_T = {"AVC_TS_MP_HD_AAC_LTP_MULT5_T", ""}; ///< AVC main profile AAC LTP 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5_ISO = {"AVC_TS_MP_HD_AAC_LTP_MULT5_ISO", ""}; ///< AVC main prpfile AAC LTP 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7 = {"AVC_TS_MP_HD_AAC_LTP_MULT7", ""}; ///< AVC main profile AAC LTP 7.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7_T = {"AVC_TS_MP_HD_AAC_LTP_MULT7_T", ""}; ///< AVC main profile AAC LTP 7.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7_ISO = {"AVC_TS_MP_HD_AAC_LTP_MULT7_ISO", ""}; ///< AVC main prpfile AAC LTP 7.1 without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC = {"AVC_TS_BL_CIF15_AAC", ""}; ///< AVC baseline profile AAC
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_T = {"AVC_TS_BL_CIF15_AAC_T", ""}; ///< AVC baseline profile AAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_ISO = {"AVC_TS_BL_CIF15_AAC_ISO", ""}; ///< AVC baseline profile AAC without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540 = {"AVC_TS_BL_CIF15_AAC_540", ""}; ///< AVC baseline profile AAC 540
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540_T = {"AVC_TS_BL_CIF15_AAC_540_T", ""}; ///< AVC baseline profile AAC 540 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540_ISO = {"AVC_TS_BL_CIF15_AAC_540_ISO", ""}; ///< AVC baseline profile AAC 540 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP = {"AVC_TS_BL_CIF15_AAC_LTP", ""}; ///< AVC baseline profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP_T = {"AVC_TS_BL_CIF15_AAC_LTP_T", ""}; ///< AVC baseline profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP_IS0 = {"AVC_TS_BL_CIF15_AAC_LTP_IS0", ""}; ///< AVC baseline profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC = {"AVC_TS_BL_CIF15_BSAC", ""}; ///< AVC baseline profile BSAC
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC_T = {"AVC_TS_BL_CIF15_BSAC_T", ""}; ///< AVC baseline profile BSAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC_ISO = {"AVC_TS_BL_CIF15_BSAC_ISO", ""}; ///< AVC baseline profile BSAC without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC = {"AVC_MP4_BL_CIF15_AAC", ""}; ///< AVC baseline profile AAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_520 = {"AVC_MP4_BL_CIF15_AAC_520", ""}; ///< AVC baseline profile AAC 520
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_LTP = {"AVC_MP4_BL_CIF15_AAC_LTP", ""}; ///< AVC baseline profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_LTP_520 = {"AVC_MP4_BL_CIF15_AAC_LTP_520", ""}; ///< AVC baseline profile AAC LTP 520
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_BSAC = {"AVC_MP4_BL_CIF15_BSAC", ""}; ///< AVC baseline profile BSAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L12_CIF15_HEAAC = {"AVC_MP4_BL_L12_CIF15_HEAAC", ""}; ///< AVC baseline profile HEAAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L1B_QCIF15_HEAAC = {"AVC_MP4_BL_L1B_QCIF15_HEAAC", ""}; ///< AVC baseline profile QCIF15
+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_CIF30_AMR_WBplus = {"AVC_3GPP_BL_CIF30_AMR_WBplus", ""}; ///< AVC 3GPP baseline profile CIF30 AMR WB+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_CIF15_AMR_WBplus = {"AVC_3GPP_BL_CIF15_AMR_WBplus", ""}; ///< AVC 3GPP baseline profile CIF15 AMR WB+
+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AAC = {"AVC_3GPP_BL_QCIF15_AAC", ""}; ///< AVC 3GPP baseline profile QCIF15 AAC
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AAC_LTP = {"AVC_3GPP_BL_QCIF15_AAC_LTP", ""}; ///< AVC 3GPP baseline profile QCIF15 AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_HEAAC = {"AVC_3GPP_BL_QCIF15_HEAAC", ""}; ///< AVC 3GPP baseline profile QCIF15 HEAAC
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AMR_WBplus = {"AVC_3GPP_BL_QCIF15_AMR_WBplus", ""}; ///< AVC 3GPP baseline profile QCIF15 AMR WB+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AMR = {"AVC_3GPP_BL_QCIF15_AMR", ""}; ///< AVC 3GPP baseline profile QCIF15 AMR
+
+DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU = {"AVC_TS_HD_EU", "video/vnd.dlna.mpeg-tts"}; ///< DLNA Profile for HD DVB Television broadcasts
+DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_T = {"AVC_TS_HD_EU_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_ISO = {"AVC_TS_HD_EU_ISO", "video/mpeg"}; ///< DLNA Profile for HD DVB Television broadcasts without timestamp
+
+DLNAVideoMapping MPEG4_P10_VIDEO_MAP[] = {
+}; \ No newline at end of file
diff --git a/dlna/profiles/mpeg4_p2.cpp b/dlna/profiles/mpeg4_p2.cpp
new file mode 100644
index 0000000..5ed58ab
--- /dev/null
+++ b/dlna/profiles/mpeg4_p2.cpp
@@ -0,0 +1,129 @@
+/*
+ * File: profiles_mpeg4_p2.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:36
+ */
+
+#include "profiles/mpeg4_p2.h"
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC = { "MPEG4_P2_MP4_SP_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_HEAAC = { "MPEG4_P2_MP4_SP_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_ATRAC3plus = { "MPEG4_P2_MP4_SP_ATRAC3plus", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC_LTP = { "MPEG4_P2_MP4_SP_AAC_LTP", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AAC = { "MPEG4_P2_MP4_SP_L2_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AMR = { "MPEG4_P2_MP4_SP_L2_AMR", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_AAC = { "MPEG4_P2_MP4_SP_VGA_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_HEAAC = { "MPEG4_P2_MP4_SP_VGA_HEAAC", "video/mp4"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_AAC = { "MPEG4_P2_MP4_ASP_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC = { "MPEG4_P2_MP4_ASP_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC_MULT5 = { "MPEG4_P2_MP4_ASP_HEAAC_MULT5", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_ATRAC3plus = { "MPEG4_P2_MP4_ASP_ATRAC3plus", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_AAC = { "MPEG4_P2_MP4_ASP_L5_SO_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC = { "MPEG4_P2_MP4_ASP_L5_SO_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC_MULT5 = { "MPEG4_P2_MP4_ASP_L5_SO_HEAAC_MULT5", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_G726 = { "MPEG4_P2_MP4_ASP_L5_SO_G726", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_AAC = { "MPEG4_P2_MP4_ASP_L4_SO_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC = { "MPEG4_P2_MP4_ASP_L4_SO_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC_MULT5 = { "MPEG4_P2_MP4_ASP_L4_SO_HEAAC_MULT5", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_G726 = { "MPEG4_P2_MP4_ASP_L4_SO_G726", "video/mp4"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC = { "MPEG4_P2_TS_SP_AAC", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_T = { "MPEG4_P2_TS_SP_AAC_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_ISO = { "MPEG4_P2_TS_SP_AAC_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3 = { "MPEG4_P2_TS_SP_MPEG1_L3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_T = { "MPEG4_P2_TS_SP_MPEG1_L3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_ISO = { "MPEG4_P2_TS_SP_MPEG1_L3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3 = { "MPEG4_P2_TS_SP_AC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_T = { "MPEG4_P2_TS_SP_AC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_ISO = { "MPEG4_P2_TS_SP_AC3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2 = { "MPEG4_P2_TS_SP_MPEG2_L2", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_T = { "MPEG4_P2_TS_SP_MPEG2_L2_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_IS0 = { "MPEG4_P2_TS_SP_MPEG2_L2_IS0", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3 = { "MPEG4_P2_TS_CO_AC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_T = { "MPEG4_P2_TS_CO_AC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_ISO = { "MPEG4_P2_TS_CO_AC3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2 = { "MPEG4_P2_TS_CO_MPEG2_L2", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_T = { "MPEG4_P2_TS_CO_MPEG2_L2_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_ISO = { "MPEG4_P2_TS_CO_MPEG2_L2_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC = { "MPEG4_P2_TS_ASP_AAC", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_T = { "MPEG4_P2_TS_ASP_AAC_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_ISO = { "MPEG4_P2_TS_ASP_AAC_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3 = { "MPEG4_P2_TS_ASP_MPEG1_L3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_T = { "MPEG4_P2_TS_ASP_MPEG1_L3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_ISO = { "MPEG4_P2_TS_ASP_MPEG1_L3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3 = { "MPEG4_P2_TS_ASP_AC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_T = { "MPEG4_P2_TS_ASP_AC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_ISO = { "MPEG4_P2_TS_ASP_AC3_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_SP_G726 = { "MPEG4_P2_ASF_SP_G726", "video/x-ms-asf"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_ASP_L5_SO_G726 = { "MPEG4_P2_ASF_ASP_L5_SO_G726", "video/x-ms-asf"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_ASP_L4_SO_G726 = { "MPEG4_P2_ASF_ASP_L4_SO_G726", "video/x-ms-asf"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC = { "MPEG4_H263_MP4_P0_L10_AAC", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC_LTP = { "MPEG4_H263_MP4_P0_L10_AAC_LTP", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_H263_3GPP_P0_L10_AMR_WBplus = { "MPEG4_H263_3GPP_P0_L10_AMR_WBplus", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_H263_3GPP_P3_L10_AMR = { "MPEG4_H263_3GPP_P3_L10_AMR", "video/3gpp"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AAC = { "MPEG4_P2_3GPP_SP_L0B_AAC", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AMR = { "MPEG4_P2_3GPP_SP_L0B_AMR", "video/3gpp"};
+
+DLNAVideoMapping MPEG4_P2_VIDEO_MAP[] = {
+ { &DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AAC, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_SP_L0B, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AMR, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_SP_L0B, DLNA_APP_AMR },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L2, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AMR, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L2, DLNA_APP_AMR },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_ATRAC3plus, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_ATRAC3plus },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC_LTP, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC_LTP },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AAC, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_IS0, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_ASF_SP_G726, DLNA_VCP_ASF, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_G726 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3_VGA, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3_VGA, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC_MULT5, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_HEAAC_MULT5 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_ATRAC3plus, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_ATRAC3plus },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC_MULT5, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_HEAAC_MULT5 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_G726, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_G726 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC_MULT5, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_HEAAC_MULT5 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_G726, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_G726 },
+ { &DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_H263_P0_L10, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC_LTP, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_H263_P0_L10, DLNA_APP_AAC_LTP },
+ { &DLNA_PROFILE_MPEG4_H263_3GPP_P3_L10_AMR, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_H263_P3_L10, DLNA_APP_AMR },
+ { &DLNA_PROFILE_MPEG4_H263_3GPP_P0_L10_AMR_WBplus, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_H263_P0_L10, DLNA_APP_AMR_WBplus },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_AC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_MPEG2_L2 }
+}; \ No newline at end of file
diff --git a/dlna/profiles/png.cpp b/dlna/profiles/png.cpp
new file mode 100644
index 0000000..46ccc24
--- /dev/null
+++ b/dlna/profiles/png.cpp
@@ -0,0 +1,11 @@
+/*
+ * File: profiles_png.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:01
+ */
+
+#include "profiles/png.h"
+
+DLNAIconProfile DLNA_ICON_PNG_SM_24A = { "image/png", 48, 48, 24 };
+DLNAIconProfile DLNA_ICON_PNG_LRG_24A = { "image/png", 120, 120, 24 };
diff --git a/dlna/profiles/wma.cpp b/dlna/profiles/wma.cpp
new file mode 100644
index 0000000..3956d4c
--- /dev/null
+++ b/dlna/profiles/wma.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_wma.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:32
+ */
+
+#include "profiles/wma.h" \ No newline at end of file
diff --git a/dlna/profiles/wmv9.cpp b/dlna/profiles/wmv9.cpp
new file mode 100644
index 0000000..02e8de4
--- /dev/null
+++ b/dlna/profiles/wmv9.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_wmv9.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 14:53
+ */
+
+#include "profiles/wmv9.h" \ No newline at end of file
diff --git a/doc/Source Code Documentation.zip b/doc/Source Code Documentation.zip
new file mode 100644
index 0000000..db663fa
--- /dev/null
+++ b/doc/Source Code Documentation.zip
Binary files differ
diff --git a/doc/doxygen.err b/doc/doxygen.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/doxygen.err
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
new file mode 100644
index 0000000..64735a2
--- /dev/null
+++ b/doc/html/annotated.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structcClass.html">cClass</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcConnectionManager.html">cConnectionManager</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcContentDirectory.html">cContentDirectory</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcDlna.html">cDlna</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcFilterCriteria.html">cFilterCriteria</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcPathParser.html">cPathParser</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcRow.html">cRow</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcRows.html">cRows</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structcSortCrit.html">cSortCrit</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcSortCriteria.html">cSortCriteria</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcVirtualConnection.html">cVirtualConnection</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structDLNAProfile.html">DLNAProfile</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/avdetector_8h-source.html b/doc/html/avdetector_8h-source.html
new file mode 100644
index 0000000..bb72dae
--- /dev/null
+++ b/doc/html/avdetector_8h-source.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: misc/avdetector.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>misc/avdetector.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: avdetector.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 26. Oktober 2009, 13:02</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _AVDETECTOR_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _AVDETECTOR_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "../database/object.h"</span>
+<a name="l00012"></a>00012
+<a name="l00020"></a><a class="code" href="classcAudioVideoDetector.html">00020</a> <span class="keyword">class </span><a class="code" href="classcAudioVideoDetector.html">cAudioVideoDetector</a> {
+<a name="l00021"></a>00021 <span class="keyword">public</span>:
+<a name="l00022"></a>00022 <a class="code" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>(){};
+<a name="l00023"></a>00023 <span class="keyword">virtual</span> ~<a class="code" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>(){};
+<a name="l00036"></a>00036 <span class="keywordtype">int</span> <a class="code" href="classcAudioVideoDetector.html#0a376b4d1421f0d799189d4e03c4cbcc">detectVideoProperties</a>(<a class="code" href="classcUPnPResource.html">cUPnPResource</a>* Resource, <span class="keyword">const</span> <span class="keywordtype">char</span>* Filename);
+<a name="l00037"></a>00037 <span class="keyword">private</span>:
+<a name="l00038"></a>00038 };
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="preprocessor">#endif </span><span class="comment">/* _AVDETECTOR_H */</span>
+<a name="l00041"></a>00041
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcAudioVideoDetector-members.html b/doc/html/classcAudioVideoDetector-members.html
new file mode 100644
index 0000000..4765c64
--- /dev/null
+++ b/doc/html/classcAudioVideoDetector-members.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cAudioVideoDetector Member List</h1>This is the complete list of members for <a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cAudioVideoDetector</b>() (defined in <a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>)</td><td><a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcAudioVideoDetector.html#0a376b4d1421f0d799189d4e03c4cbcc">detectVideoProperties</a>(cUPnPResource *Resource, const char *Filename)</td><td><a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cAudioVideoDetector</b>() (defined in <a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>)</td><td><a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcAudioVideoDetector.html b/doc/html/classcAudioVideoDetector.html
new file mode 100644
index 0000000..9c77232
--- /dev/null
+++ b/doc/html/classcAudioVideoDetector.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cAudioVideoDetector Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cAudioVideoDetector Class Reference</h1><!-- doxytag: class="cAudioVideoDetector" --><code>#include &lt;<a class="el" href="avdetector_8h-source.html">avdetector.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="classcAudioVideoDetector-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcAudioVideoDetector.html#0a376b4d1421f0d799189d4e03c4cbcc">detectVideoProperties</a> (<a class="el" href="classcUPnPResource.html">cUPnPResource</a> *Resource, const char *Filename)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The audio/video detector<p>
+This is the audio video detector, which analizes the audio and video stream of a file to gather more information about the resource. This is also required for determination of a suitable DLNA profile. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="0a376b4d1421f0d799189d4e03c4cbcc"></a><!-- doxytag: member="cAudioVideoDetector::detectVideoProperties" ref="0a376b4d1421f0d799189d4e03c4cbcc" args="(cUPnPResource *Resource, const char *Filename)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cAudioVideoDetector::detectVideoProperties </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td>
+ <td class="paramname"> <em>Resource</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Filename</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Detect video properties<p>
+This detects video properties of a video stream and stores them in the Resource object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Resource</em>&nbsp;</td><td>the resource, where to save the data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>the file, which shall be read </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if the detection was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>misc/<a class="el" href="avdetector_8h-source.html">avdetector.h</a><li>misc/avdetector.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcConnectionManager-members.html b/doc/html/classcConnectionManager-members.html
new file mode 100644
index 0000000..2fed227
--- /dev/null
+++ b/doc/html/classcConnectionManager-members.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cConnectionManager Member List</h1>This is the complete list of members for <a class="el" href="classcConnectionManager.html">cConnectionManager</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcConnectionManager.html#2d6d4af3110c40c399a3e4e203283ff1">cConnectionManager</a>(UpnpDevice_Handle DeviceHandle)</td><td><a class="el" href="classcConnectionManager.html">cConnectionManager</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcConnectionManager.html#12fa6b0a9e20c3af663e3ca2b3c97dfb">execute</a>(Upnp_Action_Request *Request)</td><td><a class="el" href="classcConnectionManager.html">cConnectionManager</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea">mDeviceHandle</a></td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#846cd44a1c014395278c3af339122656">parseIntegerValue</a>(IN IXML_Document *Document, IN const char *Item, OUT int *Value)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#925b7a9628230ce69b803afb8fee212f">parseStringValue</a>(IN IXML_Document *Document, IN const char *Item, OUT char **Value)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcConnectionManager.html#02014a637c6cb04cbfe10b3cb4ce6d1d">setError</a>(Upnp_Action_Request *Request, int Error)</td><td><a class="el" href="classcConnectionManager.html">cConnectionManager</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcConnectionManager.html#7990eba09a100e5e4ee5b01b87bcc16e">subscribe</a>(Upnp_Subscription_Request *Request)</td><td><a class="el" href="classcConnectionManager.html">cConnectionManager</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cConnectionManager</b>() (defined in <a class="el" href="classcConnectionManager.html">cConnectionManager</a>)</td><td><a class="el" href="classcConnectionManager.html">cConnectionManager</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUpnpService</b>() (defined in <a class="el" href="classcUpnpService.html">cUpnpService</a>)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcConnectionManager.html b/doc/html/classcConnectionManager.html
new file mode 100644
index 0000000..1d6f727
--- /dev/null
+++ b/doc/html/classcConnectionManager.html
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cConnectionManager Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cConnectionManager Class Reference</h1><!-- doxytag: class="cConnectionManager" --><!-- doxytag: inherits="cUpnpService" --><code>#include &lt;<a class="el" href="connectionmanager_8h-source.html">connectionmanager.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cConnectionManager:</div>
+<div class="dynsection">
+<p><center><img src="classcConnectionManager__inherit__graph.png" border="0" usemap="#cConnectionManager__inherit__map" alt="Inheritance graph"></center>
+<map name="cConnectionManager__inherit__map">
+<area shape="rect" href="classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="25,5,169,181"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cConnectionManager:</div>
+<div class="dynsection">
+<p><center><img src="classcConnectionManager__coll__graph.png" border="0" usemap="#cConnectionManager__coll__map" alt="Collaboration graph"></center>
+<map name="cConnectionManager__coll__map">
+<area shape="rect" href="classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="5,45,149,221"><area shape="rect" href="classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="173,5,373,261"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcConnectionManager-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcConnectionManager.html#2d6d4af3110c40c399a3e4e203283ff1">cConnectionManager</a> (UpnpDevice_Handle DeviceHandle)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcConnectionManager.html#7990eba09a100e5e4ee5b01b87bcc16e">subscribe</a> (Upnp_Subscription_Request *Request)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcConnectionManager.html#12fa6b0a9e20c3af663e3ca2b3c97dfb">execute</a> (Upnp_Action_Request *Request)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcConnectionManager.html#02014a637c6cb04cbfe10b3cb4ce6d1d">setError</a> (Upnp_Action_Request *Request, int Error)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The connection manager service<p>
+This is the connection manager service which handles all incoming connection, creates and destroys connections to clients. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="2d6d4af3110c40c399a3e4e203283ff1"></a><!-- doxytag: member="cConnectionManager::cConnectionManager" ref="2d6d4af3110c40c399a3e4e203283ff1" args="(UpnpDevice_Handle DeviceHandle)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cConnectionManager::cConnectionManager </td>
+ <td>(</td>
+ <td class="paramtype">UpnpDevice_Handle&nbsp;</td>
+ <td class="paramname"> <em>DeviceHandle</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of a Connection manager<p>
+This creates an instance of a <em>Connection Manager Service</em> and provides interfaces for executing actions and subscribing on events. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>DeviceHandle</em>&nbsp;</td><td>the UPnP device handle of this root device </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="12fa6b0a9e20c3af663e3ca2b3c97dfb"></a><!-- doxytag: member="cConnectionManager::execute" ref="12fa6b0a9e20c3af663e3ca2b3c97dfb" args="(Upnp_Action_Request *Request)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cConnectionManager::execute </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Action_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Executes an action<p>
+This executes an action initialized by a control point. The result is stored in the first parameter.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An integer representing one of the following:<ul>
+<li><b><code>UPNP_E_SUCCESS</code>,</b> if subscription was okay</li><li>or any other non null value in case of an error</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Input and output parameters of an action </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcUpnpService.html#bbffca233e6aa193eda223cb7bfc2917">cUpnpService</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="02014a637c6cb04cbfe10b3cb4ce6d1d"></a><!-- doxytag: member="cConnectionManager::setError" ref="02014a637c6cb04cbfe10b3cb4ce6d1d" args="(Upnp_Action_Request *Request, int Error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cConnectionManager::setError </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Action_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets an error on an action request<p>
+This function puts a error message into the action request structure according to its error code<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>the action request, to set the error for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Error</em>&nbsp;</td><td>the error code of which the message should be obtained </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUpnpService.html#f0976057350505eca781aafcaf6b1d14">cUpnpService</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7990eba09a100e5e4ee5b01b87bcc16e"></a><!-- doxytag: member="cConnectionManager::subscribe" ref="7990eba09a100e5e4ee5b01b87bcc16e" args="(Upnp_Subscription_Request *Request)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cConnectionManager::subscribe </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Subscription_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Subscribes to an event<p>
+This is a callback function to register a new subscriber for an event.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An integer representing one of the following:<ul>
+<li><b><code>UPNP_E_SUCCESS</code>,</b> if subscription was okay</li><li>or any other non null value in case of an error</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Information about the subscription </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcUpnpService.html#e6d3522d580e5975f5a38d5bea88e29d">cUpnpService</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>upnpcomponents/<a class="el" href="connectionmanager_8h-source.html">connectionmanager.h</a><li>upnpcomponents/connectionmanager.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcConnectionManager__coll__graph.map b/doc/html/classcConnectionManager__coll__graph.map
new file mode 100644
index 0000000..f6ab96b
--- /dev/null
+++ b/doc/html/classcConnectionManager__coll__graph.map
@@ -0,0 +1,2 @@
+<area shape="rect" href="$classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="5,45,149,221">
+<area shape="rect" href="$classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="173,5,373,261">
diff --git a/doc/html/classcConnectionManager__coll__graph.md5 b/doc/html/classcConnectionManager__coll__graph.md5
new file mode 100644
index 0000000..4428901
--- /dev/null
+++ b/doc/html/classcConnectionManager__coll__graph.md5
@@ -0,0 +1 @@
+c596fccb5f0b4ca489f1eb1f12e1af74 \ No newline at end of file
diff --git a/doc/html/classcConnectionManager__coll__graph.png b/doc/html/classcConnectionManager__coll__graph.png
new file mode 100644
index 0000000..b91a65c
--- /dev/null
+++ b/doc/html/classcConnectionManager__coll__graph.png
Binary files differ
diff --git a/doc/html/classcConnectionManager__inherit__graph.map b/doc/html/classcConnectionManager__inherit__graph.map
new file mode 100644
index 0000000..bb14ae8
--- /dev/null
+++ b/doc/html/classcConnectionManager__inherit__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="25,5,169,181">
diff --git a/doc/html/classcConnectionManager__inherit__graph.md5 b/doc/html/classcConnectionManager__inherit__graph.md5
new file mode 100644
index 0000000..d2430c7
--- /dev/null
+++ b/doc/html/classcConnectionManager__inherit__graph.md5
@@ -0,0 +1 @@
+2717bb52774dac26511ba8006e57dc5b \ No newline at end of file
diff --git a/doc/html/classcConnectionManager__inherit__graph.png b/doc/html/classcConnectionManager__inherit__graph.png
new file mode 100644
index 0000000..7967eb5
--- /dev/null
+++ b/doc/html/classcConnectionManager__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcContentDirectory-members.html b/doc/html/classcContentDirectory-members.html
new file mode 100644
index 0000000..5c1b27e
--- /dev/null
+++ b/doc/html/classcContentDirectory-members.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cContentDirectory Member List</h1>This is the complete list of members for <a class="el" href="classcContentDirectory.html">cContentDirectory</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcContentDirectory.html#aca0fe0cffa30b1040719720ff4b82a2">cContentDirectory</a>(UpnpDevice_Handle DeviceHandle, cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcContentDirectory.html">cContentDirectory</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcContentDirectory.html#a0225df761512819b9c46f45b2a0f0d0">execute</a>(Upnp_Action_Request *Request)</td><td><a class="el" href="classcContentDirectory.html">cContentDirectory</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea">mDeviceHandle</a></td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#846cd44a1c014395278c3af339122656">parseIntegerValue</a>(IN IXML_Document *Document, IN const char *Item, OUT int *Value)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#925b7a9628230ce69b803afb8fee212f">parseStringValue</a>(IN IXML_Document *Document, IN const char *Item, OUT char **Value)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcContentDirectory.html#a3b0df304987a0f2b17733c651d5b5c6">setError</a>(Upnp_Action_Request *Request, int Error)</td><td><a class="el" href="classcContentDirectory.html">cContentDirectory</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcContentDirectory.html#17acd376a722e6e7de9ec0d4cabb707b">subscribe</a>(Upnp_Subscription_Request *Request)</td><td><a class="el" href="classcContentDirectory.html">cContentDirectory</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cContentDirectory</b>() (defined in <a class="el" href="classcContentDirectory.html">cContentDirectory</a>)</td><td><a class="el" href="classcContentDirectory.html">cContentDirectory</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUpnpService</b>() (defined in <a class="el" href="classcUpnpService.html">cUpnpService</a>)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcContentDirectory.html b/doc/html/classcContentDirectory.html
new file mode 100644
index 0000000..a016111
--- /dev/null
+++ b/doc/html/classcContentDirectory.html
@@ -0,0 +1,205 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cContentDirectory Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cContentDirectory Class Reference</h1><!-- doxytag: class="cContentDirectory" --><!-- doxytag: inherits="cUpnpService" --><code>#include &lt;<a class="el" href="contentdirectory_8h-source.html">contentdirectory.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cContentDirectory:</div>
+<div class="dynsection">
+<p><center><img src="classcContentDirectory__inherit__graph.png" border="0" usemap="#cContentDirectory__inherit__map" alt="Inheritance graph"></center>
+<map name="cContentDirectory__inherit__map">
+<area shape="rect" href="classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="15,5,159,181"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cContentDirectory:</div>
+<div class="dynsection">
+<p><center><img src="classcContentDirectory__coll__graph.png" border="0" usemap="#cContentDirectory__coll__map" alt="Collaboration graph"></center>
+<map name="cContentDirectory__coll__map">
+<area shape="rect" href="classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="5,1493,149,1669"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="173,1365,349,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="181,973,341,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="67,437,221,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="208,261,304,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="109,5,224,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="451,917,613,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcContentDirectory-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcContentDirectory.html#aca0fe0cffa30b1040719720ff4b82a2">cContentDirectory</a> (UpnpDevice_Handle DeviceHandle, <a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *MediaDatabase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcContentDirectory.html#17acd376a722e6e7de9ec0d4cabb707b">subscribe</a> (Upnp_Subscription_Request *Request)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcContentDirectory.html#a0225df761512819b9c46f45b2a0f0d0">execute</a> (Upnp_Action_Request *Request)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcContentDirectory.html#a3b0df304987a0f2b17733c651d5b5c6">setError</a> (Upnp_Action_Request *Request, int Error)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The content directory service<p>
+This is the content directory service which handles all incoming requests for contents managed by the media server. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="aca0fe0cffa30b1040719720ff4b82a2"></a><!-- doxytag: member="cContentDirectory::cContentDirectory" ref="aca0fe0cffa30b1040719720ff4b82a2" args="(UpnpDevice_Handle DeviceHandle, cMediaDatabase *MediaDatabase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cContentDirectory::cContentDirectory </td>
+ <td>(</td>
+ <td class="paramtype">UpnpDevice_Handle&nbsp;</td>
+ <td class="paramname"> <em>DeviceHandle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td>
+ <td class="paramname"> <em>MediaDatabase</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of a Content Directory<p>
+This creates an instance of a <em>Content Directory Service</em> and provides interfaces for executing actions and subscribing on events. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>DeviceHandle</em>&nbsp;</td><td>The UPnP device handle of the root device </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MediaDatabase</em>&nbsp;</td><td>the media database where requests are processed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="a0225df761512819b9c46f45b2a0f0d0"></a><!-- doxytag: member="cContentDirectory::execute" ref="a0225df761512819b9c46f45b2a0f0d0" args="(Upnp_Action_Request *Request)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cContentDirectory::execute </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Action_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Executes an action<p>
+This executes an action initialized by a control point. The result is stored in the first parameter.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An integer representing one of the following:<ul>
+<li><b><code>UPNP_E_SUCCESS</code>,</b> if subscription was okay</li><li>or any other non null value in case of an error</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Input and output parameters of an action </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcUpnpService.html#bbffca233e6aa193eda223cb7bfc2917">cUpnpService</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="a3b0df304987a0f2b17733c651d5b5c6"></a><!-- doxytag: member="cContentDirectory::setError" ref="a3b0df304987a0f2b17733c651d5b5c6" args="(Upnp_Action_Request *Request, int Error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cContentDirectory::setError </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Action_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets an error on an action request<p>
+This function puts a error message into the action request structure according to its error code<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>the action request, to set the error for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Error</em>&nbsp;</td><td>the error code of which the message should be obtained </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUpnpService.html#f0976057350505eca781aafcaf6b1d14">cUpnpService</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="17acd376a722e6e7de9ec0d4cabb707b"></a><!-- doxytag: member="cContentDirectory::subscribe" ref="17acd376a722e6e7de9ec0d4cabb707b" args="(Upnp_Subscription_Request *Request)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cContentDirectory::subscribe </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Subscription_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Subscribes to an event<p>
+This is a callback function to register a new subscriber for an event.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An integer representing one of the following:<ul>
+<li><b><code>UPNP_E_SUCCESS</code>,</b> if subscription was okay</li><li>or any other non null value in case of an error</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Information about the subscription </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcUpnpService.html#e6d3522d580e5975f5a38d5bea88e29d">cUpnpService</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>upnpcomponents/<a class="el" href="contentdirectory_8h-source.html">contentdirectory.h</a><li>upnpcomponents/contentdirectory.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcContentDirectory__coll__graph.map b/doc/html/classcContentDirectory__coll__graph.map
new file mode 100644
index 0000000..7147f44
--- /dev/null
+++ b/doc/html/classcContentDirectory__coll__graph.map
@@ -0,0 +1,7 @@
+<area shape="rect" href="$classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="5,1493,149,1669">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="173,1365,349,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="181,973,341,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="67,437,221,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="208,261,304,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="109,5,224,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="451,917,613,1301">
diff --git a/doc/html/classcContentDirectory__coll__graph.md5 b/doc/html/classcContentDirectory__coll__graph.md5
new file mode 100644
index 0000000..12d3f6f
--- /dev/null
+++ b/doc/html/classcContentDirectory__coll__graph.md5
@@ -0,0 +1 @@
+29de1fb464313de771478004ae156c36 \ No newline at end of file
diff --git a/doc/html/classcContentDirectory__coll__graph.png b/doc/html/classcContentDirectory__coll__graph.png
new file mode 100644
index 0000000..d576367
--- /dev/null
+++ b/doc/html/classcContentDirectory__coll__graph.png
Binary files differ
diff --git a/doc/html/classcContentDirectory__inherit__graph.map b/doc/html/classcContentDirectory__inherit__graph.map
new file mode 100644
index 0000000..55ce55e
--- /dev/null
+++ b/doc/html/classcContentDirectory__inherit__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="15,5,159,181">
diff --git a/doc/html/classcContentDirectory__inherit__graph.md5 b/doc/html/classcContentDirectory__inherit__graph.md5
new file mode 100644
index 0000000..5198edf
--- /dev/null
+++ b/doc/html/classcContentDirectory__inherit__graph.md5
@@ -0,0 +1 @@
+5c5dac649197895a6ff0b0f9842237ad \ No newline at end of file
diff --git a/doc/html/classcContentDirectory__inherit__graph.png b/doc/html/classcContentDirectory__inherit__graph.png
new file mode 100644
index 0000000..0a73810
--- /dev/null
+++ b/doc/html/classcContentDirectory__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcDlna-members.html b/doc/html/classcDlna-members.html
new file mode 100644
index 0000000..a013fb6
--- /dev/null
+++ b/doc/html/classcDlna-members.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cDlna Member List</h1>This is the complete list of members for <a class="el" href="classcDlna.html">cDlna</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPServer</b> (defined in <a class="el" href="classcDlna.html">cDlna</a>)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#a7ae0cc7b651bc6ccd82ef5da527d09a">getDeviceDescription</a>(const char *URLBase)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#1e30449831b903d508dae6640039fc25">getInstance</a>(void)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#4eacc299d19fa20beba98d88d4230388">getProfileOfChannel</a>(cChannel *Channel)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#4b5c30f707060b66c3980af70b7d8d08">getProfileOfFile</a>(cString File)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#69dc71fe30130cafa399bb851ef5def8">getProfileOfRecording</a>(cRecording *Recording)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#992777f6c75dadd61bed6a75e03f1dfd">getProtocolInfo</a>(DLNAProfile *Prof)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#68a9565f022c7037c51ad337274d8c3a">getSupportedProtocols</a>()</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#e26b723ec63a60f397ce41bd95641dfa">registerMainProfiles</a>()</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcDlna.html#0250d3903e7dcbdc8ebadfacd4e6fb50">registerProfile</a>(DLNAProfile *Profile, int Op=-1, const char *Ps=NULL, int Ci=-1, unsigned int Flags=0)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cDlna</b>() (defined in <a class="el" href="classcDlna.html">cDlna</a>)</td><td><a class="el" href="classcDlna.html">cDlna</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcDlna.html b/doc/html/classcDlna.html
new file mode 100644
index 0000000..904a2a2
--- /dev/null
+++ b/doc/html/classcDlna.html
@@ -0,0 +1,335 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cDlna Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cDlna Class Reference</h1><!-- doxytag: class="cDlna" --><code>#include &lt;<a class="el" href="dlna_8h-source.html">dlna.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cDlna:</div>
+<div class="dynsection">
+<p><center><img src="classcDlna__coll__graph.png" border="0" usemap="#cDlna__coll__map" alt="Collaboration graph"></center>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcDlna-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#a7ae0cc7b651bc6ccd82ef5da527d09a">getDeviceDescription</a> (const char *URLBase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#0250d3903e7dcbdc8ebadfacd4e6fb50">registerProfile</a> (<a class="el" href="structDLNAProfile.html">DLNAProfile</a> *Profile, int Op=-1, const char *Ps=NULL, int Ci=-1, unsigned int Flags=0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#e26b723ec63a60f397ce41bd95641dfa">registerMainProfiles</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#68a9565f022c7037c51ad337274d8c3a">getSupportedProtocols</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#992777f6c75dadd61bed6a75e03f1dfd">getProtocolInfo</a> (<a class="el" href="structDLNAProfile.html">DLNAProfile</a> *Prof)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#4eacc299d19fa20beba98d88d4230388">getProfileOfChannel</a> (cChannel *Channel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#69dc71fe30130cafa399bb851ef5def8">getProfileOfRecording</a> (cRecording *Recording)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#4b5c30f707060b66c3980af70b7d8d08">getProfileOfFile</a> (cString File)</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcDlna.html">cDlna</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#1e30449831b903d508dae6640039fc25">getInstance</a> (void)</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="02ebb94fd2cdff4bfb2da3267446d62b"></a><!-- doxytag: member="cDlna::cUPnPServer" ref="02ebb94fd2cdff4bfb2da3267446d62b" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcDlna.html#02ebb94fd2cdff4bfb2da3267446d62b">cUPnPServer</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Enable DLNA compliant media transfer<p>
+This class enables media transmission with DLNA conformity. Its compliant with version 1.5 of the DLNA guidelines. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="a7ae0cc7b651bc6ccd82ef5da527d09a"></a><!-- doxytag: member="cDlna::getDeviceDescription" ref="a7ae0cc7b651bc6ccd82ef5da527d09a" args="(const char *URLBase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cDlna::getDeviceDescription </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>URLBase</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Device description document<p>
+This will return the device description document with service type definitions as well as some DLNA specific information<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The description document </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>URLBase</em>&nbsp;</td><td>the URLBase to be set in the document </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1e30449831b903d508dae6640039fc25"></a><!-- doxytag: member="cDlna::getInstance" ref="1e30449831b903d508dae6640039fc25" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcDlna.html">cDlna</a> * cDlna::getInstance </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the instance of DLNA object<p>
+This will create a DLNA object instance. It will return the same instance on subsequent calls.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DLNA object instance </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4eacc299d19fa20beba98d88d4230388"></a><!-- doxytag: member="cDlna::getProfileOfChannel" ref="4eacc299d19fa20beba98d88d4230388" args="(cChannel *Channel)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> * cDlna::getProfileOfChannel </td>
+ <td>(</td>
+ <td class="paramtype">cChannel *&nbsp;</td>
+ <td class="paramname"> <em>Channel</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Profile of a channel<p>
+Returns the DLNA profile of a VDR channel. It checks the video type to determine which profile will match.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the matching DLNA profile </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>the channel of which the profile should created from </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4b5c30f707060b66c3980af70b7d8d08"></a><!-- doxytag: member="cDlna::getProfileOfFile" ref="4b5c30f707060b66c3980af70b7d8d08" args="(cString File)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> * cDlna::getProfileOfFile </td>
+ <td>(</td>
+ <td class="paramtype">cString&nbsp;</td>
+ <td class="paramname"> <em>File</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Profile of a file<p>
+Returns the DLNA profile of a file. It checks the content of the file with <em>ffmpeg</em> to determine which profile will match.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the matching DLNA profile </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>File</em>&nbsp;</td><td>the file of which the profile should be created from </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="69dc71fe30130cafa399bb851ef5def8"></a><!-- doxytag: member="cDlna::getProfileOfRecording" ref="69dc71fe30130cafa399bb851ef5def8" args="(cRecording *Recording)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> * cDlna::getProfileOfRecording </td>
+ <td>(</td>
+ <td class="paramtype">cRecording *&nbsp;</td>
+ <td class="paramname"> <em>Recording</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Profile of a recording<p>
+Returns the DLNA profile of a VDR recording. It checks the video file to determine which profile will match.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the matching DLNA profile </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Recording</em>&nbsp;</td><td>the recording of which the profile should be created from </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="992777f6c75dadd61bed6a75e03f1dfd"></a><!-- doxytag: member="cDlna::getProtocolInfo" ref="992777f6c75dadd61bed6a75e03f1dfd" args="(DLNAProfile *Prof)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cDlna::getProtocolInfo </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> *&nbsp;</td>
+ <td class="paramname"> <em>Prof</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Protocol info of a specific DLNA profile<p>
+Returns the protocol info string of a specific DLNA profile with its options and flags.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the protocol info string of the profile </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Prof</em>&nbsp;</td><td>the Profile of which the protocol info shall be returned </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="68a9565f022c7037c51ad337274d8c3a"></a><!-- doxytag: member="cDlna::getSupportedProtocols" ref="68a9565f022c7037c51ad337274d8c3a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cDlna::getSupportedProtocols </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+CSV list of supported protocols<p>
+Returns a comma separated list with all supported protocols. This means, it returns the list of protocols of the registered profiles.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>CSV list of registered protocols </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e26b723ec63a60f397ce41bd95641dfa"></a><!-- doxytag: member="cDlna::registerMainProfiles" ref="e26b723ec63a60f397ce41bd95641dfa" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cDlna::registerMainProfiles </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Registeres all known DLNA profiles<p>
+Registeres all well known DLNA profiles with its known options
+</div>
+</div><p>
+<a class="anchor" name="0250d3903e7dcbdc8ebadfacd4e6fb50"></a><!-- doxytag: member="cDlna::registerProfile" ref="0250d3903e7dcbdc8ebadfacd4e6fb50" args="(DLNAProfile *Profile, int Op=&#45;1, const char *Ps=NULL, int Ci=&#45;1, unsigned int Flags=0)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cDlna::registerProfile </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structDLNAProfile.html">DLNAProfile</a> *&nbsp;</td>
+ <td class="paramname"> <em>Profile</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Op</em> = <code>-1</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Ps</em> = <code>NULL</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Ci</em> = <code>-1</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>Flags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Registeres a DLNA profile<p>
+Registeres a DLNA profile with specific optional options<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="common_8h-source.html">common.h</a> </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Profile</em>&nbsp;</td><td>the DLNA profile </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Op</em>&nbsp;</td><td>operation mode </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Ps</em>&nbsp;</td><td>play speed (CSV list) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Ci</em>&nbsp;</td><td>conversion indication flag </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Flags</em>&nbsp;</td><td>DLNA flags </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>upnpcomponents/<a class="el" href="dlna_8h-source.html">dlna.h</a><li>upnpcomponents/dlna.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcDlna__coll__graph.map b/doc/html/classcDlna__coll__graph.map
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/html/classcDlna__coll__graph.map
diff --git a/doc/html/classcDlna__coll__graph.md5 b/doc/html/classcDlna__coll__graph.md5
new file mode 100644
index 0000000..49dd05a
--- /dev/null
+++ b/doc/html/classcDlna__coll__graph.md5
@@ -0,0 +1 @@
+00203167dafd3fc1977a5c34551b3940 \ No newline at end of file
diff --git a/doc/html/classcDlna__coll__graph.png b/doc/html/classcDlna__coll__graph.png
new file mode 100644
index 0000000..f4cb92f
--- /dev/null
+++ b/doc/html/classcDlna__coll__graph.png
Binary files differ
diff --git a/doc/html/classcFileHandle-members.html b/doc/html/classcFileHandle-members.html
new file mode 100644
index 0000000..e762927
--- /dev/null
+++ b/doc/html/classcFileHandle-members.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cFileHandle Member List</h1>This is the complete list of members for <a class="el" href="classcFileHandle.html">cFileHandle</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">close</a>()=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">open</a>(UpnpOpenFileMode mode)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">read</a>(char *buf, size_t buflen)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">seek</a>(off_t offset, int whence)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">write</a>(char *buf, size_t buflen)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cFileHandle</b>() (defined in <a class="el" href="classcFileHandle.html">cFileHandle</a>)</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcFileHandle.html b/doc/html/classcFileHandle.html
new file mode 100644
index 0000000..6572779
--- /dev/null
+++ b/doc/html/classcFileHandle.html
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cFileHandle Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cFileHandle Class Reference</h1><!-- doxytag: class="cFileHandle" --><code>#include &lt;<a class="el" href="filehandle_8h-source.html">filehandle.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cFileHandle:</div>
+<div class="dynsection">
+<p><center><img src="classcFileHandle__inherit__graph.png" border="0" usemap="#cFileHandle__inherit__map" alt="Inheritance graph"></center>
+<map name="cFileHandle__inherit__map">
+<area shape="rect" href="classcLiveReceiver.html" title="{cLiveReceiver\n|&#45; mDevice\l&#45; mChannel\l&#45; mLiveBuffer\l&#45; mOutputBuffer\l&#45; mFrameDetector\l&#45; mPatPmtGenerator\l|+ ~cLiveReceiver()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ newInstance()\l# Receive()\l# Activate()\l# Action()\l&#45; cLiveReceiver()\l}" alt="" coords="5,221,147,541"><area shape="rect" href="classcRecordingPlayer.html" title="{cRecordingPlayer\n|&#45; mRecording\l&#45; mOffsets\l&#45; mOffset\l&#45; mTotalLenght\l&#45; mIndex\l&#45; mFile\l|+ ~cRecordingPlayer()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ newInstance()\l&#45; Scan()\l&#45; cRecordingPlayer()\l&#45; GetFile()\l&#45; NextFile()\l&#45; SeekInFile()\l}" alt="" coords="171,213,323,549"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcFileHandle-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">open</a> (UpnpOpenFileMode mode)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">read</a> (char *buf, size_t buflen)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">write</a> (char *buf, size_t buflen)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">seek</a> (off_t offset, int whence)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">close</a> ()=0</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Interface for File Handles<p>
+This class is a pure virtual class to act as an interface for file handles used by the webserver. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="d7eaed7d254a64c85a48c3968238b93d"></a><!-- doxytag: member="cFileHandle::close" ref="d7eaed7d254a64c85a48c3968238b93d" args="()=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void cFileHandle::close </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Closes the open file<p>
+This will close open file handles and frees the memory obtained by it.
+<p>Implemented in <a class="el" href="classcLiveReceiver.html#5b8beb2bc6809aacbdb087e31e836a27">cLiveReceiver</a>, and <a class="el" href="classcRecordingPlayer.html#5e81aeecd16f89e432690a9b05d8dd6a">cRecordingPlayer</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="cdf4f4d07382de675b498d85544ea1b6"></a><!-- doxytag: member="cFileHandle::open" ref="cdf4f4d07382de675b498d85544ea1b6" args="(UpnpOpenFileMode mode)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void cFileHandle::open </td>
+ <td>(</td>
+ <td class="paramtype">UpnpOpenFileMode&nbsp;</td>
+ <td class="paramname"> <em>mode</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Opens the file<p>
+Opens the file at the given mode. These can be:<ul>
+<li><b>UPNP_READ</b>, to read from the file</li><li><b>UPNP_WRITE</b>, to write to the file</li></ul>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The file mode, i.e. one of the following<ul>
+<li><b>UPNP_READ</b> </li><li><b>UPNP_WRITE</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The file mode, i.e. one of the following<ul>
+<li><b>UPNP_READ</b> </li><li><b>UPNP_WRITE</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcLiveReceiver.html#b8e751f641be1da4a925106e3dd062e9">cLiveReceiver</a>, and <a class="el" href="classcRecordingPlayer.html#e7ad4362d821f38db5143c0aeff15d97">cRecordingPlayer</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="458f25a4c7f62d528cffc84e66d38e7d"></a><!-- doxytag: member="cFileHandle::read" ref="458f25a4c7f62d528cffc84e66d38e7d" args="(char *buf, size_t buflen)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cFileHandle::read </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reads from the file<p>
+Reads from the file a certain amount of bytes and stores them in a buffer<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcLiveReceiver.html#4a19e1fd4e1d043fb091bfb01a9cbf08">cLiveReceiver</a>, and <a class="el" href="classcRecordingPlayer.html#e0fda8b0be8e47133698f1763e649b3d">cRecordingPlayer</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d2dde523301abe5e79e6109a93ba705b"></a><!-- doxytag: member="cFileHandle::seek" ref="d2dde523301abe5e79e6109a93ba705b" args="(off_t offset, int whence)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cFileHandle::seek </td>
+ <td>(</td>
+ <td class="paramtype">off_t&nbsp;</td>
+ <td class="paramname"> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>whence</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seeks in the file<p>
+Seeks in the file where the offset is the relativ position depending on the second parameter. This means, in case of<p>
+<ul>
+<li><b>SEEK_SET</b>, the offset is relative to the beginning of the file</li><li><b>SEEK_CUR</b>, it is relative to the current position or</li><li><b>SEEK_END</b>, relative to the end of the file.</li></ul>
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>The byte offset in the file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>whence</em>&nbsp;</td><td>one of the following<ul>
+<li><b>SEEK_SET</b>,</li><li><b>SEEK_CUR</b>,</li><li><b>SEEK_END</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>The byte offset in the file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>whence</em>&nbsp;</td><td>one of the following<ul>
+<li><b>SEEK_SET</b>,</li><li><b>SEEK_CUR</b>,</li><li><b>SEEK_END</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcLiveReceiver.html#efb4156ef247773873dee42053e94edf">cLiveReceiver</a>, and <a class="el" href="classcRecordingPlayer.html#43f7ba867374d6be9e78c68c872bf608">cRecordingPlayer</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e1495303f52f6f2d7ac37a030f78a937"></a><!-- doxytag: member="cFileHandle::write" ref="e1495303f52f6f2d7ac37a030f78a937" args="(char *buf, size_t buflen)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cFileHandle::write </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Writes to the file<p>
+Writes to the file a certain amount of bytes which are stored in a buffer<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcLiveReceiver.html#eb56988441b589b6e34ea01825dfb183">cLiveReceiver</a>, and <a class="el" href="classcRecordingPlayer.html#7dd0cb78ae8032eb677f01d71187d6e0">cRecordingPlayer</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li>receiver/<a class="el" href="filehandle_8h-source.html">filehandle.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcFileHandle.png b/doc/html/classcFileHandle.png
new file mode 100644
index 0000000..d370300
--- /dev/null
+++ b/doc/html/classcFileHandle.png
Binary files differ
diff --git a/doc/html/classcFileHandle__inherit__graph.map b/doc/html/classcFileHandle__inherit__graph.map
new file mode 100644
index 0000000..ba76f2e
--- /dev/null
+++ b/doc/html/classcFileHandle__inherit__graph.map
@@ -0,0 +1,2 @@
+<area shape="rect" href="$classcLiveReceiver.html" title="{cLiveReceiver\n|&#45; mDevice\l&#45; mChannel\l&#45; mLiveBuffer\l&#45; mOutputBuffer\l&#45; mFrameDetector\l&#45; mPatPmtGenerator\l|+ ~cLiveReceiver()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ newInstance()\l# Receive()\l# Activate()\l# Action()\l&#45; cLiveReceiver()\l}" alt="" coords="5,221,147,541">
+<area shape="rect" href="$classcRecordingPlayer.html" title="{cRecordingPlayer\n|&#45; mRecording\l&#45; mOffsets\l&#45; mOffset\l&#45; mTotalLenght\l&#45; mIndex\l&#45; mFile\l|+ ~cRecordingPlayer()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ newInstance()\l&#45; Scan()\l&#45; cRecordingPlayer()\l&#45; GetFile()\l&#45; NextFile()\l&#45; SeekInFile()\l}" alt="" coords="171,213,323,549">
diff --git a/doc/html/classcFileHandle__inherit__graph.md5 b/doc/html/classcFileHandle__inherit__graph.md5
new file mode 100644
index 0000000..dfabc5b
--- /dev/null
+++ b/doc/html/classcFileHandle__inherit__graph.md5
@@ -0,0 +1 @@
+18dfef99a286e8a72c46747e9b0a3d59 \ No newline at end of file
diff --git a/doc/html/classcFileHandle__inherit__graph.png b/doc/html/classcFileHandle__inherit__graph.png
new file mode 100644
index 0000000..b0df07e
--- /dev/null
+++ b/doc/html/classcFileHandle__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcFilterCriteria-members.html b/doc/html/classcFilterCriteria-members.html
new file mode 100644
index 0000000..0936aef
--- /dev/null
+++ b/doc/html/classcFilterCriteria-members.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cFilterCriteria Member List</h1>This is the complete list of members for <a class="el" href="classcFilterCriteria.html">cFilterCriteria</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcFilterCriteria.html#e327772fdf9f8db127c7ce1a737f1c7c">parse</a>(const char *Filter)</td><td><a class="el" href="classcFilterCriteria.html">cFilterCriteria</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cFilterCriteria</b>() (defined in <a class="el" href="classcFilterCriteria.html">cFilterCriteria</a>)</td><td><a class="el" href="classcFilterCriteria.html">cFilterCriteria</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcFilterCriteria.html b/doc/html/classcFilterCriteria.html
new file mode 100644
index 0000000..fa8d393
--- /dev/null
+++ b/doc/html/classcFilterCriteria.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cFilterCriteria Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cFilterCriteria Class Reference</h1><!-- doxytag: class="cFilterCriteria" --><code>#include &lt;<a class="el" href="search_8h-source.html">search.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="classcFilterCriteria-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static cStringList *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFilterCriteria.html#e327772fdf9f8db127c7ce1a737f1c7c">parse</a> (const char *Filter)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Parses the filter criteria<p>
+This parses the filter criteria which comes from a <em>Browse</em> or <em>Search</em> request. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="e327772fdf9f8db127c7ce1a737f1c7c"></a><!-- doxytag: member="cFilterCriteria::parse" ref="e327772fdf9f8db127c7ce1a737f1c7c" args="(const char *Filter)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cStringList * cFilterCriteria::parse </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Filter</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parses the filter criteria<p>
+This parses the filter criteria. It may be a empty string list, a <b><code>NULL</code> pointer</b> or a list with properties which shall be shown in the <em>DIDL-Lite</em> fragment.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the stringlist containing the filter </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Filter</em>&nbsp;</td><td>the filter string </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>misc/<a class="el" href="search_8h-source.html">search.h</a><li>misc/search.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcLiveReceiver-members.html b/doc/html/classcLiveReceiver-members.html
new file mode 100644
index 0000000..8cd1f67
--- /dev/null
+++ b/doc/html/classcLiveReceiver-members.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cLiveReceiver Member List</h1>This is the complete list of members for <a class="el" href="classcLiveReceiver.html">cLiveReceiver</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#5c1f30f48fdc612c19ff4b9b4c176b07">Action</a>(void)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#631c7392c3226b07ba654875580fb26c">Activate</a>(bool On)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#5b8beb2bc6809aacbdb087e31e836a27">close</a>()</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#1e28c50bb73404597b2363422e038c12">newInstance</a>(cChannel *Channel, int Priority)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#b8e751f641be1da4a925106e3dd062e9">open</a>(UpnpOpenFileMode mode)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#4a19e1fd4e1d043fb091bfb01a9cbf08">read</a>(char *buf, size_t buflen)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#c8bc191994b0acd3fa2d23b26f996f8a">Receive</a>(uchar *Data, int Length)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#efb4156ef247773873dee42053e94edf">seek</a>(off_t offset, int whence)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcLiveReceiver.html#eb56988441b589b6e34ea01825dfb183">write</a>(char *buf, size_t buflen)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cFileHandle</b>() (defined in <a class="el" href="classcFileHandle.html">cFileHandle</a>)</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cLiveReceiver</b>(void) (defined in <a class="el" href="classcLiveReceiver.html">cLiveReceiver</a>)</td><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcLiveReceiver.html b/doc/html/classcLiveReceiver.html
new file mode 100644
index 0000000..d312473
--- /dev/null
+++ b/doc/html/classcLiveReceiver.html
@@ -0,0 +1,388 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cLiveReceiver Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cLiveReceiver Class Reference</h1><!-- doxytag: class="cLiveReceiver" --><!-- doxytag: inherits="cFileHandle" --><code>#include &lt;<a class="el" href="livereceiver_8h-source.html">livereceiver.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cLiveReceiver:</div>
+<div class="dynsection">
+<p><center><img src="classcLiveReceiver__inherit__graph.png" border="0" usemap="#cLiveReceiver__inherit__map" alt="Inheritance graph"></center>
+<map name="cLiveReceiver__inherit__map">
+<area shape="rect" href="classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="17,5,135,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cLiveReceiver:</div>
+<div class="dynsection">
+<p><center><img src="classcLiveReceiver__coll__graph.png" border="0" usemap="#cLiveReceiver__coll__map" alt="Collaboration graph"></center>
+<map name="cLiveReceiver__coll__map">
+<area shape="rect" href="classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="17,5,135,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcLiveReceiver-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#b8e751f641be1da4a925106e3dd062e9">open</a> (UpnpOpenFileMode mode)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#4a19e1fd4e1d043fb091bfb01a9cbf08">read</a> (char *buf, size_t buflen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#eb56988441b589b6e34ea01825dfb183">write</a> (char *buf, size_t buflen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#efb4156ef247773873dee42053e94edf">seek</a> (off_t offset, int whence)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#5b8beb2bc6809aacbdb087e31e836a27">close</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcLiveReceiver.html">cLiveReceiver</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#1e28c50bb73404597b2363422e038c12">newInstance</a> (cChannel *Channel, int Priority)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#c8bc191994b0acd3fa2d23b26f996f8a">Receive</a> (uchar *Data, int Length)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#631c7392c3226b07ba654875580fb26c">Activate</a> (bool On)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcLiveReceiver.html#5c1f30f48fdc612c19ff4b9b4c176b07">Action</a> (void)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A receiver for live TV<p>
+This is a receiver object which is attached to a VDR tv card device. It is receiving transport stream packages and generates a single MPEG2 transport stream which can be distributed through the network. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="5c1f30f48fdc612c19ff4b9b4c176b07"></a><!-- doxytag: member="cLiveReceiver::Action" ref="5c1f30f48fdc612c19ff4b9b4c176b07" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cLiveReceiver::Action </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The receiver thread action<p>
+This actually is the receiver thread, which runs consequitivelly and buffers any received video data from the interal incoming buffer to the internal outgoing buffer.<p>
+While doing so, it tries to syncronize with the stream and creates new MPEG2-TS PATs and PMTs for a single MPEG2-TS stream
+</div>
+</div><p>
+<a class="anchor" name="631c7392c3226b07ba654875580fb26c"></a><!-- doxytag: member="cLiveReceiver::Activate" ref="631c7392c3226b07ba654875580fb26c" args="(bool On)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cLiveReceiver::Activate </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>On</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Activates the receiver<p>
+This activates the receiver which initializes internal data structures to be prepared for receiving data from the VDR<p>
+If the parameter is <b><code>true</code>,</b> the receiver will be activated. If it is <b><code>false</code>,</b> the receiver will be deactivated and stops its threads. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>On</em>&nbsp;</td><td>Activates the receiver thread </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5b8beb2bc6809aacbdb087e31e836a27"></a><!-- doxytag: member="cLiveReceiver::close" ref="5b8beb2bc6809aacbdb087e31e836a27" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cLiveReceiver::close </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Closes the open file<p>
+This will close open file handles and frees the memory obtained by it.
+<p>Implements <a class="el" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="1e28c50bb73404597b2363422e038c12"></a><!-- doxytag: member="cLiveReceiver::newInstance" ref="1e28c50bb73404597b2363422e038c12" args="(cChannel *Channel, int Priority)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a> * cLiveReceiver::newInstance </td>
+ <td>(</td>
+ <td class="paramtype">cChannel *&nbsp;</td>
+ <td class="paramname"> <em>Channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Priority</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates a new receiver instance<p>
+This will create a new instance of a live receiver for the specified channel at the specified priority level.<p>
+A negativ priority means that the receiver may being detached from a device.<p>
+The receiver must be free'd with delete after it is not used anylonger.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns a new liveReceiver instance </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>the channel which shall be tuned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Priority</em>&nbsp;</td><td>the priority level </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b8e751f641be1da4a925106e3dd062e9"></a><!-- doxytag: member="cLiveReceiver::open" ref="b8e751f641be1da4a925106e3dd062e9" args="(UpnpOpenFileMode mode)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cLiveReceiver::open </td>
+ <td>(</td>
+ <td class="paramtype">UpnpOpenFileMode&nbsp;</td>
+ <td class="paramname"> <em>mode</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Opens the file<p>
+Opens the file at the given mode. These can be:<ul>
+<li><b>UPNP_READ</b>, to read from the file</li><li><b>UPNP_WRITE</b>, to write to the file</li></ul>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The file mode, i.e. one of the following<ul>
+<li><b>UPNP_READ</b> </li><li><b>UPNP_WRITE</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="4a19e1fd4e1d043fb091bfb01a9cbf08"></a><!-- doxytag: member="cLiveReceiver::read" ref="4a19e1fd4e1d043fb091bfb01a9cbf08" args="(char *buf, size_t buflen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cLiveReceiver::read </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reads from the file<p>
+Reads from the file a certain amount of bytes and stores them in a buffer<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c8bc191994b0acd3fa2d23b26f996f8a"></a><!-- doxytag: member="cLiveReceiver::Receive" ref="c8bc191994b0acd3fa2d23b26f996f8a" args="(uchar *Data, int Length)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cLiveReceiver::Receive </td>
+ <td>(</td>
+ <td class="paramtype">uchar *&nbsp;</td>
+ <td class="paramname"> <em>Data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Length</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Receives data from VDR<p>
+This is the interface for receiving packet data from the VDR. It buffers the incoming transport stream packets in a linear ringbuffer and returns immediatelly <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>The data received from VDR </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Length</em>&nbsp;</td><td>The length of the data packet, usually 188 bytes </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="efb4156ef247773873dee42053e94edf"></a><!-- doxytag: member="cLiveReceiver::seek" ref="efb4156ef247773873dee42053e94edf" args="(off_t offset, int whence)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cLiveReceiver::seek </td>
+ <td>(</td>
+ <td class="paramtype">off_t&nbsp;</td>
+ <td class="paramname"> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>whence</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seeks in the file<p>
+Seeks in the file where the offset is the relativ position depending on the second parameter. This means, in case of<p>
+<ul>
+<li><b>SEEK_SET</b>, the offset is relative to the beginning of the file</li><li><b>SEEK_CUR</b>, it is relative to the current position or</li><li><b>SEEK_END</b>, relative to the end of the file.</li></ul>
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>The byte offset in the file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>whence</em>&nbsp;</td><td>one of the following<ul>
+<li><b>SEEK_SET</b>,</li><li><b>SEEK_CUR</b>,</li><li><b>SEEK_END</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="eb56988441b589b6e34ea01825dfb183"></a><!-- doxytag: member="cLiveReceiver::write" ref="eb56988441b589b6e34ea01825dfb183" args="(char *buf, size_t buflen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cLiveReceiver::write </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Writes to the file<p>
+Writes to the file a certain amount of bytes which are stored in a buffer<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>receiver/<a class="el" href="livereceiver_8h-source.html">livereceiver.h</a><li>receiver/livereceiver.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcLiveReceiver.png b/doc/html/classcLiveReceiver.png
new file mode 100644
index 0000000..efedd53
--- /dev/null
+++ b/doc/html/classcLiveReceiver.png
Binary files differ
diff --git a/doc/html/classcLiveReceiver__coll__graph.map b/doc/html/classcLiveReceiver__coll__graph.map
new file mode 100644
index 0000000..0c07258
--- /dev/null
+++ b/doc/html/classcLiveReceiver__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="17,5,135,165">
diff --git a/doc/html/classcLiveReceiver__coll__graph.md5 b/doc/html/classcLiveReceiver__coll__graph.md5
new file mode 100644
index 0000000..2a339c4
--- /dev/null
+++ b/doc/html/classcLiveReceiver__coll__graph.md5
@@ -0,0 +1 @@
+9aba9a994278caeebd8a47222983192b \ No newline at end of file
diff --git a/doc/html/classcLiveReceiver__coll__graph.png b/doc/html/classcLiveReceiver__coll__graph.png
new file mode 100644
index 0000000..4c2ac2a
--- /dev/null
+++ b/doc/html/classcLiveReceiver__coll__graph.png
Binary files differ
diff --git a/doc/html/classcLiveReceiver__inherit__graph.map b/doc/html/classcLiveReceiver__inherit__graph.map
new file mode 100644
index 0000000..0c07258
--- /dev/null
+++ b/doc/html/classcLiveReceiver__inherit__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="17,5,135,165">
diff --git a/doc/html/classcLiveReceiver__inherit__graph.md5 b/doc/html/classcLiveReceiver__inherit__graph.md5
new file mode 100644
index 0000000..2a339c4
--- /dev/null
+++ b/doc/html/classcLiveReceiver__inherit__graph.md5
@@ -0,0 +1 @@
+9aba9a994278caeebd8a47222983192b \ No newline at end of file
diff --git a/doc/html/classcLiveReceiver__inherit__graph.png b/doc/html/classcLiveReceiver__inherit__graph.png
new file mode 100644
index 0000000..4c2ac2a
--- /dev/null
+++ b/doc/html/classcLiveReceiver__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcMediaDatabase-members.html b/doc/html/classcMediaDatabase-members.html
new file mode 100644
index 0000000..482718b
--- /dev/null
+++ b/doc/html/classcMediaDatabase-members.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cMediaDatabase Member List</h1>This is the complete list of members for <a class="el" href="classcMediaDatabase.html">cMediaDatabase</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">addFastFind</a>(cUPnPClassObject *Object, const char *FastFind)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#25ff666113dbe72598e4ef4e23af5d8f">browse</a>(OUT cUPnPResultSet **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter=&quot;*&quot;, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria=&quot;&quot;)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#ace0720fbddbdd7f2e4ca5ad16d5acd2">cMediaDatabase</a>()</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjectMediator</b> (defined in <a class="el" href="classcMediaDatabase.html">cMediaDatabase</a>)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPServer</b> (defined in <a class="el" href="classcMediaDatabase.html">cMediaDatabase</a>)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#dadd330e273e0f354d51b76cee436198">getContainerUpdateIDs</a>()</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#b0fac893d82c29276d68b94569cfef1d">getObjectByFastFind</a>(const char *FastFind)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#b8da7da9612c64de0ddf88db3c316d5a">getObjectByID</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#96232caa30b80d4e3ca667c317101fd0">getSystemUpdateID</a>()</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediaDatabase.html#36bdc240d3fa11d685440d365d9ab8c9">search</a>(OUT cUPnPResultSet **Results, IN const char *ID, IN const char *Search, IN const char *Filter=&quot;*&quot;, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria=&quot;&quot;)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediaDatabase</b>() (defined in <a class="el" href="classcMediaDatabase.html">cMediaDatabase</a>)</td><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcMediaDatabase.html b/doc/html/classcMediaDatabase.html
new file mode 100644
index 0000000..bb2e160
--- /dev/null
+++ b/doc/html/classcMediaDatabase.html
@@ -0,0 +1,390 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cMediaDatabase Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cMediaDatabase Class Reference</h1><!-- doxytag: class="cMediaDatabase" --><code>#include &lt;<a class="el" href="metadata_8h-source.html">metadata.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cMediaDatabase:</div>
+<div class="dynsection">
+<p><center><img src="classcMediaDatabase__coll__graph.png" border="0" usemap="#cMediaDatabase__coll__map" alt="Collaboration graph"></center>
+<map name="cMediaDatabase__coll__map">
+<area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="120,973,280,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="5,437,160,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="147,261,243,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="48,5,163,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="389,917,552,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcMediaDatabase-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#96232caa30b80d4e3ca667c317101fd0">getSystemUpdateID</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#dadd330e273e0f354d51b76cee436198">getContainerUpdateIDs</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#ace0720fbddbdd7f2e4ca5ad16d5acd2">cMediaDatabase</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">addFastFind</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, const char *FastFind)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#b0fac893d82c29276d68b94569cfef1d">getObjectByFastFind</a> (const char *FastFind)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#b8da7da9612c64de0ddf88db3c316d5a">getObjectByID</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#25ff666113dbe72598e4ef4e23af5d8f">browse</a> (OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter=&quot;*&quot;, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria=&quot;&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#36bdc240d3fa11d685440d365d9ab8c9">search</a> (OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> **Results, IN const char *ID, IN const char *Search, IN const char *Filter=&quot;*&quot;, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria=&quot;&quot;)</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="02ebb94fd2cdff4bfb2da3267446d62b"></a><!-- doxytag: member="cMediaDatabase::cUPnPServer" ref="02ebb94fd2cdff4bfb2da3267446d62b" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#02ebb94fd2cdff4bfb2da3267446d62b">cUPnPServer</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cMediaDatabase::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The media database<p>
+This class is the global object manager. It holds every object in a local cache. Only this class is allowed to create new objects.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> </dd></dl>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="ace0720fbddbdd7f2e4ca5ad16d5acd2"></a><!-- doxytag: member="cMediaDatabase::cMediaDatabase" ref="ace0720fbddbdd7f2e4ca5ad16d5acd2" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cMediaDatabase::cMediaDatabase </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor<p>
+This creates an instance of the media database.
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="1aec38e63143c7eb26012f1c74fe373d"></a><!-- doxytag: member="cMediaDatabase::addFastFind" ref="1aec38e63143c7eb26012f1c74fe373d" args="(cUPnPClassObject *Object, const char *FastFind)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cMediaDatabase::addFastFind </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>FastFind</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a Fastfind<p>
+This creates a <em>Fastfind</em> entry. It is a string which can be used to relocate a objectID. Usually this is a file name or another ID with which the related object can be found.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>-1</code>,</b> if the creation was successful</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object, which should be registered </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>FastFind</em>&nbsp;</td><td>the string with which the object shall be relocated </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="25ff666113dbe72598e4ef4e23af5d8f"></a><!-- doxytag: member="cMediaDatabase::browse" ref="25ff666113dbe72598e4ef4e23af5d8f" args="(OUT cUPnPResultSet **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter=&quot;*&quot;, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria=&quot;&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cMediaDatabase::browse </td>
+ <td>(</td>
+ <td class="paramtype">OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> **&nbsp;</td>
+ <td class="paramname"> <em>Results</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>ID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN bool&nbsp;</td>
+ <td class="paramname"> <em>BrowseMetadata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>Filter</em> = <code>&quot;*&quot;</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN unsigned int&nbsp;</td>
+ <td class="paramname"> <em>Offset</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN unsigned int&nbsp;</td>
+ <td class="paramname"> <em>Count</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>SortCriteria</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Performs a browse on the database<p>
+This performs a browse request on the database and returns a structure containing the matching count and DIDL-Lite fragement which is sent to the control point.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns an integer representing one of the following:<ul>
+<li><b><code>UPNP_CDS_E_INVALID_SORT_CRITERIA</code>,</b> when the sort criteria is malformed</li><li><b><code>UPNP_CDS_E_CANT_PROCESS_REQUEST</code>,</b> when there is an internal error while processing the request</li><li><b><code>UPNP_CDS_E_NO_SUCH_OBJECT</code>,</b> when the requested ObjectID does not exist</li><li><b><code>UPNP_SOAP_E_ACTION_FAILED</code>,</b> when the action failed due any reasons</li><li><b><code>UPNP_E_SUCCESS</code>,</b> if the request was successful </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Results</em>&nbsp;</td><td>the result of the request </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the objectID of the request </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>BrowseMetadata</em>&nbsp;</td><td><b>true</b> to browse metadata, <b>false</b> otherwise </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Filter</em>&nbsp;</td><td>the filter applied to the returned metadata </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>the starting offset </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Count</em>&nbsp;</td><td>maximum count returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>SortCriteria</em>&nbsp;</td><td>sorts the results before returning them </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="dadd330e273e0f354d51b76cee436198"></a><!-- doxytag: member="cMediaDatabase::getContainerUpdateIDs" ref="dadd330e273e0f354d51b76cee436198" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cMediaDatabase::getContainerUpdateIDs </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns a CSV list with ContainerUpdateIDs<p>
+This list contains an unordered list of ordered pairs of ContainerID and its ContainerUpdateID. It contains only recent changes which are not yet beeing evented. This means that evented updates will be removed from list.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>CSV list of ContainerUpdateIDs </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b0fac893d82c29276d68b94569cfef1d"></a><!-- doxytag: member="cMediaDatabase::getObjectByFastFind" ref="b0fac893d82c29276d68b94569cfef1d" args="(const char *FastFind)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cMediaDatabase::getObjectByFastFind </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>FastFind</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Finds a object by Fastfind<p>
+This returns the object via the <em>Fastfind</em> string. The object must be previosly registered via <code><a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">cMediaDatabase::addFastFind()</a></code>.<p>
+It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">cMediaDatabase::addFastFind</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The object associated with FastFind </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>FastFind</em>&nbsp;</td><td>the string with which the object shall be relocated </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b8da7da9612c64de0ddf88db3c316d5a"></a><!-- doxytag: member="cMediaDatabase::getObjectByID" ref="b8da7da9612c64de0ddf88db3c316d5a" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cMediaDatabase::getObjectByID </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Finds a object by its ObjectID<p>
+This returns the object via its <em>ObjectID</em>.<p>
+It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The object associated with FastFind </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>The ObjectID of the requested object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="96232caa30b80d4e3ca667c317101fd0"></a><!-- doxytag: member="cMediaDatabase::getSystemUpdateID" ref="96232caa30b80d4e3ca667c317101fd0" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cMediaDatabase::getSystemUpdateID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the SystemUpdateID<p>
+This returns the <em>SystemUpdateID</em>. This changes whenever anything changed within the content directory. This value will be sent through the UPnP network every 2 seconds.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the SystemUpdateID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="36bdc240d3fa11d685440d365d9ab8c9"></a><!-- doxytag: member="cMediaDatabase::search" ref="36bdc240d3fa11d685440d365d9ab8c9" args="(OUT cUPnPResultSet **Results, IN const char *ID, IN const char *Search, IN const char *Filter=&quot;*&quot;, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria=&quot;&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cMediaDatabase::search </td>
+ <td>(</td>
+ <td class="paramtype">OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> **&nbsp;</td>
+ <td class="paramname"> <em>Results</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>ID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>Search</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>Filter</em> = <code>&quot;*&quot;</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN unsigned int&nbsp;</td>
+ <td class="paramname"> <em>Offset</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN unsigned int&nbsp;</td>
+ <td class="paramname"> <em>Count</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>SortCriteria</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Performs a search on the database<p>
+This performs a search request on the database and returns a structure containing the matching count and DIDL-Lite fragement which is sent to the control point.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The submitted ID must be a ContainerID. Searches are performed only in this container.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns an integer representing one of the following:<ul>
+<li><b><code>UPNP_CDS_E_INVALID_SORT_CRITERIA</code>,</b> when the sort criteria is malformed</li><li><b><code>UPNP_CDS_E_CANT_PROCESS_REQUEST</code>,</b> when there is an internal error while processing the request</li><li><b><code>UPNP_CDS_E_NO_SUCH_OBJECT</code>,</b> when the requested ObjectID does not exist</li><li><b><code>UPNP_SOAP_E_ACTION_FAILED</code>,</b> when the action failed due any reasons</li><li><b><code>UPNP_E_SUCCESS</code>,</b> if the request was successful </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Results</em>&nbsp;</td><td>the result of the request </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the ContainerID </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Search</em>&nbsp;</td><td>the search string </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Filter</em>&nbsp;</td><td>the filter applied to the returned metadata </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>the starting offset </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Count</em>&nbsp;</td><td>maximum count returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>SortCriteria</em>&nbsp;</td><td>sorts the results before returning them </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="metadata_8h-source.html">metadata.h</a><li>database/metadata.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcMediaDatabase__coll__graph.map b/doc/html/classcMediaDatabase__coll__graph.map
new file mode 100644
index 0000000..476ee8c
--- /dev/null
+++ b/doc/html/classcMediaDatabase__coll__graph.map
@@ -0,0 +1,5 @@
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="120,973,280,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="5,437,160,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="147,261,243,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="48,5,163,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="389,917,552,1301">
diff --git a/doc/html/classcMediaDatabase__coll__graph.md5 b/doc/html/classcMediaDatabase__coll__graph.md5
new file mode 100644
index 0000000..069efa7
--- /dev/null
+++ b/doc/html/classcMediaDatabase__coll__graph.md5
@@ -0,0 +1 @@
+800d195c448fa938abc20a29091c18f5 \ No newline at end of file
diff --git a/doc/html/classcMediaDatabase__coll__graph.png b/doc/html/classcMediaDatabase__coll__graph.png
new file mode 100644
index 0000000..69e8f1c
--- /dev/null
+++ b/doc/html/classcMediaDatabase__coll__graph.png
Binary files differ
diff --git a/doc/html/classcMediatorInterface-members.html b/doc/html/classcMediatorInterface-members.html
new file mode 100644
index 0000000..147b70b
--- /dev/null
+++ b/doc/html/classcMediatorInterface-members.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cMediatorInterface Member List</h1>This is the complete list of members for <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcMediatorInterface.html#cd087c690154d43ac5ef92c5a42f2349">clearObject</a>(cUPnPClassObject *Object)=0</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediatorInterface.html#68a8350f7ea5ccd2496580035228b1fc">createObject</a>(const char *Title, bool Restricted)=0</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediatorInterface.html#ffbddb7fe72554b9cde9d02648cf8f0e">deleteObject</a>(cUPnPClassObject *Object)=0</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediatorInterface.html#716ad95bf6ac5a10e9409ced7a63a9d8">getObject</a>(cUPnPObjectID ID)=0</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMediatorInterface.html#a2f40e697f499c64cfd007aa70e3da7e">saveObject</a>(cUPnPClassObject *Object)=0</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediatorInterface</b>() (defined in <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>)</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcMediatorInterface.html b/doc/html/classcMediatorInterface.html
new file mode 100644
index 0000000..7e202b9
--- /dev/null
+++ b/doc/html/classcMediatorInterface.html
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cMediatorInterface Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cMediatorInterface Class Reference</h1><!-- doxytag: class="cMediatorInterface" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cMediatorInterface:</div>
+<div class="dynsection">
+<p><center><img src="classcMediatorInterface__inherit__graph.png" border="0" usemap="#cMediatorInterface__inherit__map" alt="Inheritance graph"></center>
+<map name="cMediatorInterface__inherit__map">
+<area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="115,213,293,453"><area shape="rect" href="classcUPnPContainerMediator.html" title="{cUPnPContainerMediator\n||+ cUPnPContainerMediator()\l+ ~cUPnPContainerMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,501,200,661"><area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="224,501,389,661"><area shape="rect" href="classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="207,709,407,869"><area shape="rect" href="classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="105,917,281,1077"><area shape="rect" href="classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="305,917,537,1077"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcMediatorInterface-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediatorInterface.html#68a8350f7ea5ccd2496580035228b1fc">createObject</a> (const char *Title, bool Restricted)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediatorInterface.html#716ad95bf6ac5a10e9409ced7a63a9d8">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediatorInterface.html#a2f40e697f499c64cfd007aa70e3da7e">saveObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediatorInterface.html#ffbddb7fe72554b9cde9d02648cf8f0e">deleteObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediatorInterface.html#cd087c690154d43ac5ef92c5a42f2349">clearObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)=0</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Mediator interface<p>
+This is an interface for mediators used to communicate with the database. A mediator is applied to get, create, save or delete an UPnP object. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="cd087c690154d43ac5ef92c5a42f2349"></a><!-- doxytag: member="cMediatorInterface::clearObject" ref="cd087c690154d43ac5ef92c5a42f2349" args="(cUPnPClassObject *Object)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cMediatorInterface::clearObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clears the object<p>
+This clears the object, i.e. all its children will be removed and deleted from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be cleared </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">cUPnPObjectMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="68a8350f7ea5ccd2496580035228b1fc"></a><!-- doxytag: member="cMediatorInterface::createObject" ref="68a8350f7ea5ccd2496580035228b1fc" args="(const char *Title, bool Restricted)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>* cMediatorInterface::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">cUPnPObjectMediator</a>, <a class="el" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">cUPnPItemMediator</a>, <a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">cUPnPVideoBroadcastMediator</a>, <a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">cUPnPMovieMediator</a>, and <a class="el" href="classcUPnPContainerMediator.html#751177c725da94b1b91f6cda4645844d">cUPnPContainerMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ffbddb7fe72554b9cde9d02648cf8f0e"></a><!-- doxytag: member="cMediatorInterface::deleteObject" ref="ffbddb7fe72554b9cde9d02648cf8f0e" args="(cUPnPClassObject *Object)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cMediatorInterface::deleteObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deletes the object<p>
+This deletes the object in the database by removing all its children and then deleting the contents from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be deleted </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">cUPnPObjectMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="716ad95bf6ac5a10e9409ced7a63a9d8"></a><!-- doxytag: member="cMediatorInterface::getObject" ref="716ad95bf6ac5a10e9409ced7a63a9d8" args="(cUPnPObjectID ID)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>* cMediatorInterface::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">cUPnPObjectMediator</a>, <a class="el" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">cUPnPItemMediator</a>, <a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">cUPnPVideoBroadcastMediator</a>, <a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">cUPnPMovieMediator</a>, and <a class="el" href="classcUPnPContainerMediator.html#78b71f96fb4289dc78f897d6282078d6">cUPnPContainerMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="a2f40e697f499c64cfd007aa70e3da7e"></a><!-- doxytag: member="cMediatorInterface::saveObject" ref="a2f40e697f499c64cfd007aa70e3da7e" args="(cUPnPClassObject *Object)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cMediatorInterface::saveObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Saves the object<p>
+This saves the object in the database by updating the values in the database with those in the object.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">cUPnPObjectMediator</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcMediatorInterface__inherit__graph.map b/doc/html/classcMediatorInterface__inherit__graph.map
new file mode 100644
index 0000000..aef4716
--- /dev/null
+++ b/doc/html/classcMediatorInterface__inherit__graph.map
@@ -0,0 +1,6 @@
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="115,213,293,453">
+<area shape="rect" href="$classcUPnPContainerMediator.html" title="{cUPnPContainerMediator\n||+ cUPnPContainerMediator()\l+ ~cUPnPContainerMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,501,200,661">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="224,501,389,661">
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="207,709,407,869">
+<area shape="rect" href="$classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="105,917,281,1077">
+<area shape="rect" href="$classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="305,917,537,1077">
diff --git a/doc/html/classcMediatorInterface__inherit__graph.md5 b/doc/html/classcMediatorInterface__inherit__graph.md5
new file mode 100644
index 0000000..6d1db00
--- /dev/null
+++ b/doc/html/classcMediatorInterface__inherit__graph.md5
@@ -0,0 +1 @@
+97634db0ec0ff36b35cb48308b65ba75 \ No newline at end of file
diff --git a/doc/html/classcMediatorInterface__inherit__graph.png b/doc/html/classcMediatorInterface__inherit__graph.png
new file mode 100644
index 0000000..3fbe85c
--- /dev/null
+++ b/doc/html/classcMediatorInterface__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcMenuSetupUPnP-members.html b/doc/html/classcMenuSetupUPnP-members.html
new file mode 100644
index 0000000..cd0baf5
--- /dev/null
+++ b/doc/html/classcMenuSetupUPnP-members.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cMenuSetupUPnP Member List</h1>This is the complete list of members for <a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cMenuSetupUPnP</b>() (defined in <a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a>)</td><td><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMenuSetupUPnP.html#6f3e5ab68db53ce74ec81af07671d00e">Load</a>(void)</td><td><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMenuSetupUPnP.html#5a6d78afea79d330e710d09b808d5240">ProcessKey</a>(eKeys Key)</td><td><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMenuSetupUPnP.html#e90738a7757dcc01e64e8ccad2f8a0e6">Store</a>(void)</td><td><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcMenuSetupUPnP.html#ed45944671b8974f7639aefee11e8f50">Update</a>(void)</td><td><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a></td><td><code> [protected]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcMenuSetupUPnP.html b/doc/html/classcMenuSetupUPnP.html
new file mode 100644
index 0000000..50ef4e2
--- /dev/null
+++ b/doc/html/classcMenuSetupUPnP.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cMenuSetupUPnP Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cMenuSetupUPnP Class Reference</h1><!-- doxytag: class="cMenuSetupUPnP" --><code>#include &lt;<a class="el" href="menusetup_8h-source.html">menusetup.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cMenuSetupUPnP:</div>
+<div class="dynsection">
+<p><center><img src="classcMenuSetupUPnP__coll__graph.png" border="0" usemap="#cMenuSetupUPnP__coll__map" alt="Collaboration graph"></center>
+<map name="cMenuSetupUPnP__coll__map">
+<area shape="rect" href="classcUPnPServer.html" title="{cUPnPServer\n|&#45; mIsRunning\l&#45; mIsEnabled\l&#45; mServerAddr\l&#45; mInterface\l&#45; mIsAutoDetectionEnabled\l&#45; mDeviceDescription\l&#45; mWebServer\l&#45; mMediaDatabase\l&#45; mDeviceHandle\l&#45; mConnectionManager\l&#45; mContentDirectory\l|+ cUPnPServer()\l+ ~cUPnPServer()\l+ enable()\l+ start()\l+ restart()\l+ stop()\l+ autoDetectSettings()\l+ getServerAddress()\l+ getInterface()\l+ setServerPort()\l+ setInterface()\l+ setAddress()\l+ setAutoDetection()\l+ isEnabled()\l+ isRunning()\l+ isAutoDetectionEnabled()\l&#45; init()\l&#45; uninit()\l&#45; upnpActionCallback()\l}" alt="" coords="331,2245,509,2773"><area shape="rect" href="classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="275,1909,437,2133"><area shape="rect" href="classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="229,1493,373,1669"><area shape="rect" href="classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="67,1861,251,2181"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="397,1365,573,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="405,973,565,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="291,437,445,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="432,261,528,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="333,5,448,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="675,917,837,1301"><area shape="rect" href="classcUPnPWebServer.html" title="{cUPnPWebServer\n|&#45; mRootdir\l&#45; mInstance\l&#45; mVirtualDirCallbacks\l|+ init()\l+ uninit()\l+ ~cUPnPWebServer()\l+ getInstance()\l+ getInfo()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l&#45; cUPnPWebServer()\l}" alt="" coords="611,1885,765,2157"><area shape="rect" href="classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="5,1453,205,1709"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcMenuSetupUPnP-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual eOSState&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMenuSetupUPnP.html#5a6d78afea79d330e710d09b808d5240">ProcessKey</a> (eKeys Key)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMenuSetupUPnP.html#e90738a7757dcc01e64e8ccad2f8a0e6">Store</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMenuSetupUPnP.html#ed45944671b8974f7639aefee11e8f50">Update</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcMenuSetupUPnP.html#6f3e5ab68db53ce74ec81af07671d00e">Load</a> (void)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The VDR setup page<p>
+This class shows and manages the settings within the VDR setup OSD <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="6f3e5ab68db53ce74ec81af07671d00e"></a><!-- doxytag: member="cMenuSetupUPnP::Load" ref="6f3e5ab68db53ce74ec81af07671d00e" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cMenuSetupUPnP::Load </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads the setup information<p>
+This loads the setup information from the configuration file
+</div>
+</div><p>
+<a class="anchor" name="5a6d78afea79d330e710d09b808d5240"></a><!-- doxytag: member="cMenuSetupUPnP::ProcessKey" ref="5a6d78afea79d330e710d09b808d5240" args="(eKeys Key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">eOSState cMenuSetupUPnP::ProcessKey </td>
+ <td>(</td>
+ <td class="paramtype">eKeys&nbsp;</td>
+ <td class="paramname"> <em>Key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Processes a keystroke<p>
+This processes a keystroke which is done by the user and updates the menu accordingly<p>
+It returns the current state of the VDR after pressing a key<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The current state of the VDR </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Key</em>&nbsp;</td><td>Key, pressed by the user </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e90738a7757dcc01e64e8ccad2f8a0e6"></a><!-- doxytag: member="cMenuSetupUPnP::Store" ref="e90738a7757dcc01e64e8ccad2f8a0e6" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cMenuSetupUPnP::Store </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Stores the setup information<p>
+This stores the setup information in the configuration file
+</div>
+</div><p>
+<a class="anchor" name="ed45944671b8974f7639aefee11e8f50"></a><!-- doxytag: member="cMenuSetupUPnP::Update" ref="ed45944671b8974f7639aefee11e8f50" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cMenuSetupUPnP::Update </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Update the menu<p>
+This updates the menu osd and refreshes the screen.
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>misc/<a class="el" href="menusetup_8h-source.html">menusetup.h</a><li>misc/menusetup.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcMenuSetupUPnP__coll__graph.map b/doc/html/classcMenuSetupUPnP__coll__graph.map
new file mode 100644
index 0000000..481048a
--- /dev/null
+++ b/doc/html/classcMenuSetupUPnP__coll__graph.map
@@ -0,0 +1,12 @@
+<area shape="rect" href="$classcUPnPServer.html" title="{cUPnPServer\n|&#45; mIsRunning\l&#45; mIsEnabled\l&#45; mServerAddr\l&#45; mInterface\l&#45; mIsAutoDetectionEnabled\l&#45; mDeviceDescription\l&#45; mWebServer\l&#45; mMediaDatabase\l&#45; mDeviceHandle\l&#45; mConnectionManager\l&#45; mContentDirectory\l|+ cUPnPServer()\l+ ~cUPnPServer()\l+ enable()\l+ start()\l+ restart()\l+ stop()\l+ autoDetectSettings()\l+ getServerAddress()\l+ getInterface()\l+ setServerPort()\l+ setInterface()\l+ setAddress()\l+ setAutoDetection()\l+ isEnabled()\l+ isRunning()\l+ isAutoDetectionEnabled()\l&#45; init()\l&#45; uninit()\l&#45; upnpActionCallback()\l}" alt="" coords="331,2245,509,2773">
+<area shape="rect" href="$classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="275,1909,437,2133">
+<area shape="rect" href="$classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="229,1493,373,1669">
+<area shape="rect" href="$classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="67,1861,251,2181">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="397,1365,573,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="405,973,565,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="291,437,445,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="432,261,528,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="333,5,448,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="675,917,837,1301">
+<area shape="rect" href="$classcUPnPWebServer.html" title="{cUPnPWebServer\n|&#45; mRootdir\l&#45; mInstance\l&#45; mVirtualDirCallbacks\l|+ init()\l+ uninit()\l+ ~cUPnPWebServer()\l+ getInstance()\l+ getInfo()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l&#45; cUPnPWebServer()\l}" alt="" coords="611,1885,765,2157">
+<area shape="rect" href="$classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="5,1453,205,1709">
diff --git a/doc/html/classcMenuSetupUPnP__coll__graph.md5 b/doc/html/classcMenuSetupUPnP__coll__graph.md5
new file mode 100644
index 0000000..788ba5e
--- /dev/null
+++ b/doc/html/classcMenuSetupUPnP__coll__graph.md5
@@ -0,0 +1 @@
+86da1f37bce9a0072b3f72537a687925 \ No newline at end of file
diff --git a/doc/html/classcMenuSetupUPnP__coll__graph.png b/doc/html/classcMenuSetupUPnP__coll__graph.png
new file mode 100644
index 0000000..0916cbe
--- /dev/null
+++ b/doc/html/classcMenuSetupUPnP__coll__graph.png
Binary files differ
diff --git a/doc/html/classcPathParser-members.html b/doc/html/classcPathParser-members.html
new file mode 100644
index 0000000..b962603
--- /dev/null
+++ b/doc/html/classcPathParser-members.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cPathParser Member List</h1>This is the complete list of members for <a class="el" href="classcPathParser.html">cPathParser</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcPathParser.html#83229f6ecd4254d7ed145573eae7967a">parse</a>(const char *Path, int *Section, int *Method, propertyMap *Properties)</td><td><a class="el" href="classcPathParser.html">cPathParser</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cPathParser</b>() (defined in <a class="el" href="classcPathParser.html">cPathParser</a>)</td><td><a class="el" href="classcPathParser.html">cPathParser</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcPathParser.html b/doc/html/classcPathParser.html
new file mode 100644
index 0000000..73acf1d
--- /dev/null
+++ b/doc/html/classcPathParser.html
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cPathParser Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cPathParser Class Reference</h1><!-- doxytag: class="cPathParser" --><code>#include &lt;<a class="el" href="search_8h-source.html">search.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="classcPathParser-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPathParser.html#83229f6ecd4254d7ed145573eae7967a">parse</a> (const char *Path, int *Section, int *Method, propertyMap *Properties)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Web path parser<p>
+Parses paths which came from the webserver. It splits the path into a section, a certain method and its properties.<p>
+This can be used to easily determine which file was requested by a client <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="83229f6ecd4254d7ed145573eae7967a"></a><!-- doxytag: member="cPathParser::parse" ref="83229f6ecd4254d7ed145573eae7967a" args="(const char *Path, int *Section, int *Method, propertyMap *Properties)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cPathParser::parse </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>Section</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>Method</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">propertyMap *&nbsp;</td>
+ <td class="paramname"> <em>Properties</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parses the path<p>
+This will parse the path and stores the result in the pointers given.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the parsing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Path</em>&nbsp;</td><td>the path which is parsed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Section</em>&nbsp;</td><td>the number of the registered section </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Method</em>&nbsp;</td><td>the number of the registered method </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Properties</em>&nbsp;</td><td>the properties found in the path </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>misc/<a class="el" href="search_8h-source.html">search.h</a><li>misc/search.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcPluginUpnp-members.html b/doc/html/classcPluginUpnp-members.html
new file mode 100644
index 0000000..4f07613
--- /dev/null
+++ b/doc/html/classcPluginUpnp-members.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cPluginUpnp Member List</h1>This is the complete list of members for <a class="el" href="classcPluginUpnp.html">cPluginUpnp</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#6b220cadefe502e7dfa4d70acea35083">Active</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#e2e63843aab64e06ce9b533f4893f7e0">CommandLineHelp</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cPluginUpnp</b>(void) (defined in <a class="el" href="classcPluginUpnp.html">cPluginUpnp</a>)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#6fc36c7fdf1f0deed776897725bcda9b">Description</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#ac2101984519b848cc04370b5527c145">getConfigDirectory</a>()</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#3f3daf1d0cd8d176cf1a349b9de10df7">Initialize</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#acbc8a8b3f67d08ed20ff1c8beaa4fe2">ProcessArgs</a>(int argc, char *argv[])</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#9b1891ed7e2d3aa56dae03b778d616ee">SetupMenu</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#3f8b911f1e452789110e69b11587ebce">SetupParse</a>(const char *Name, const char *Value)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#4738d8a5d72e56ec8b7b2f4f0b3549fe">Start</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#f59cbb0bb2a3872e33461fb46b4f79b4">Stop</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcPluginUpnp.html#584844bf459ec3eb7f6037f9cbb52fd5">Version</a>(void)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cPluginUpnp</b>() (defined in <a class="el" href="classcPluginUpnp.html">cPluginUpnp</a>)</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcPluginUpnp.html b/doc/html/classcPluginUpnp.html
new file mode 100644
index 0000000..9c73a1e
--- /dev/null
+++ b/doc/html/classcPluginUpnp.html
@@ -0,0 +1,361 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cPluginUpnp Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cPluginUpnp Class Reference</h1><!-- doxytag: class="cPluginUpnp" --><code>#include &lt;<a class="el" href="upnp_8h-source.html">upnp.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cPluginUpnp:</div>
+<div class="dynsection">
+<p><center><img src="classcPluginUpnp__coll__graph.png" border="0" usemap="#cPluginUpnp__coll__map" alt="Collaboration graph"></center>
+<map name="cPluginUpnp__coll__map">
+<area shape="rect" href="classcUPnPServer.html" title="{cUPnPServer\n|&#45; mIsRunning\l&#45; mIsEnabled\l&#45; mServerAddr\l&#45; mInterface\l&#45; mIsAutoDetectionEnabled\l&#45; mDeviceDescription\l&#45; mWebServer\l&#45; mMediaDatabase\l&#45; mDeviceHandle\l&#45; mConnectionManager\l&#45; mContentDirectory\l|+ cUPnPServer()\l+ ~cUPnPServer()\l+ enable()\l+ start()\l+ restart()\l+ stop()\l+ autoDetectSettings()\l+ getServerAddress()\l+ getInterface()\l+ setServerPort()\l+ setInterface()\l+ setAddress()\l+ setAutoDetection()\l+ isEnabled()\l+ isRunning()\l+ isAutoDetectionEnabled()\l&#45; init()\l&#45; uninit()\l&#45; upnpActionCallback()\l}" alt="" coords="331,2245,509,2773"><area shape="rect" href="classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="275,1909,437,2133"><area shape="rect" href="classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="229,1493,373,1669"><area shape="rect" href="classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="67,1861,251,2181"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="397,1365,573,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="405,973,565,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="291,437,445,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="432,261,528,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="333,5,448,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="675,917,837,1301"><area shape="rect" href="classcUPnPWebServer.html" title="{cUPnPWebServer\n|&#45; mRootdir\l&#45; mInstance\l&#45; mVirtualDirCallbacks\l|+ init()\l+ uninit()\l+ ~cUPnPWebServer()\l+ getInstance()\l+ getInfo()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l&#45; cUPnPWebServer()\l}" alt="" coords="611,1885,765,2157"><area shape="rect" href="classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="5,1453,205,1709"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcPluginUpnp-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#584844bf459ec3eb7f6037f9cbb52fd5">Version</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#6fc36c7fdf1f0deed776897725bcda9b">Description</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#e2e63843aab64e06ce9b533f4893f7e0">CommandLineHelp</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#acbc8a8b3f67d08ed20ff1c8beaa4fe2">ProcessArgs</a> (int argc, char *argv[])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#3f3daf1d0cd8d176cf1a349b9de10df7">Initialize</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#4738d8a5d72e56ec8b7b2f4f0b3549fe">Start</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#f59cbb0bb2a3872e33461fb46b4f79b4">Stop</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#6b220cadefe502e7dfa4d70acea35083">Active</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cMenuSetupPage *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#9b1891ed7e2d3aa56dae03b778d616ee">SetupMenu</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#3f8b911f1e452789110e69b11587ebce">SetupParse</a> (const char *Name, const char *Value)</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcPluginUpnp.html#ac2101984519b848cc04370b5527c145">getConfigDirectory</a> ()</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP/DLNA plugin<p>
+This is a UPnP/DLNA media server plugin. It supports live-TV and recordings of the VDR as well as custom video files. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="6b220cadefe502e7dfa4d70acea35083"></a><!-- doxytag: member="cPluginUpnp::Active" ref="6b220cadefe502e7dfa4d70acea35083" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cString cPluginUpnp::Active </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Message if still active<p>
+This returns a message if the plugin is still active when a user attempts to shut down the VDR.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message shown on the screen. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e2e63843aab64e06ce9b533f4893f7e0"></a><!-- doxytag: member="cPluginUpnp::CommandLineHelp" ref="e2e63843aab64e06ce9b533f4893f7e0" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cPluginUpnp::CommandLineHelp </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the command line help<p>
+This returns the command line help output, which comes, when the user types <code>--help</code> into the command line.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the command line help </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6fc36c7fdf1f0deed776897725bcda9b"></a><!-- doxytag: member="cPluginUpnp::Description" ref="6fc36c7fdf1f0deed776897725bcda9b" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cPluginUpnp::Description </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the description<p>
+This returns a brief description of the plugin and what it does.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the description of the plugin </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ac2101984519b848cc04370b5527c145"></a><!-- doxytag: member="cPluginUpnp::getConfigDirectory" ref="ac2101984519b848cc04370b5527c145" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cPluginUpnp::getConfigDirectory </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the configuration directory<p>
+This returns the directory, where configuration files are stored.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the directory of the configuration files. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3f3daf1d0cd8d176cf1a349b9de10df7"></a><!-- doxytag: member="cPluginUpnp::Initialize" ref="3f3daf1d0cd8d176cf1a349b9de10df7" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cPluginUpnp::Initialize </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initializes the plugin<p>
+This initializes any background activities of the plugin.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if initializing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="acbc8a8b3f67d08ed20ff1c8beaa4fe2"></a><!-- doxytag: member="cPluginUpnp::ProcessArgs" ref="acbc8a8b3f67d08ed20ff1c8beaa4fe2" args="(int argc, char *argv[])" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cPluginUpnp::ProcessArgs </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>argc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Processes the commandline arguments<p>
+This processes the commandline arguments which the user specified at the start of the plugin.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if processing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>argc</em>&nbsp;</td><td>the number of arguments in the list </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>argv</em>&nbsp;</td><td>the arguments as a char array </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9b1891ed7e2d3aa56dae03b778d616ee"></a><!-- doxytag: member="cPluginUpnp::SetupMenu" ref="9b1891ed7e2d3aa56dae03b778d616ee" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cMenuSetupPage * cPluginUpnp::SetupMenu </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Setup menu<p>
+This creates a new instance of the setup menu, which is shown to the user when he enters the VDR plugin setup menu<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the menu of the plugin </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3f8b911f1e452789110e69b11587ebce"></a><!-- doxytag: member="cPluginUpnp::SetupParse" ref="3f8b911f1e452789110e69b11587ebce" args="(const char *Name, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cPluginUpnp::SetupParse </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse setup variable<p>
+This parses the setup variable with the according value. The value is a string representation and must be converted into the according data type.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if parsing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>the name of the variable </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the according value of the variable </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4738d8a5d72e56ec8b7b2f4f0b3549fe"></a><!-- doxytag: member="cPluginUpnp::Start" ref="4738d8a5d72e56ec8b7b2f4f0b3549fe" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cPluginUpnp::Start </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Starts the plugin<p>
+This starts the plugin. It starts additional threads, which are required by the plugin.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if starting was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f59cbb0bb2a3872e33461fb46b4f79b4"></a><!-- doxytag: member="cPluginUpnp::Stop" ref="f59cbb0bb2a3872e33461fb46b4f79b4" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cPluginUpnp::Stop </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Stops the plugin<p>
+This stops the plugin and all its components
+</div>
+</div><p>
+<a class="anchor" name="584844bf459ec3eb7f6037f9cbb52fd5"></a><!-- doxytag: member="cPluginUpnp::Version" ref="584844bf459ec3eb7f6037f9cbb52fd5" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cPluginUpnp::Version </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the version of the plugin<p>
+Returns the version string of the plugin<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a string representation of the plugin version </dd></dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="upnp_8h-source.html">upnp.h</a><li>upnp.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcPluginUpnp__coll__graph.map b/doc/html/classcPluginUpnp__coll__graph.map
new file mode 100644
index 0000000..481048a
--- /dev/null
+++ b/doc/html/classcPluginUpnp__coll__graph.map
@@ -0,0 +1,12 @@
+<area shape="rect" href="$classcUPnPServer.html" title="{cUPnPServer\n|&#45; mIsRunning\l&#45; mIsEnabled\l&#45; mServerAddr\l&#45; mInterface\l&#45; mIsAutoDetectionEnabled\l&#45; mDeviceDescription\l&#45; mWebServer\l&#45; mMediaDatabase\l&#45; mDeviceHandle\l&#45; mConnectionManager\l&#45; mContentDirectory\l|+ cUPnPServer()\l+ ~cUPnPServer()\l+ enable()\l+ start()\l+ restart()\l+ stop()\l+ autoDetectSettings()\l+ getServerAddress()\l+ getInterface()\l+ setServerPort()\l+ setInterface()\l+ setAddress()\l+ setAutoDetection()\l+ isEnabled()\l+ isRunning()\l+ isAutoDetectionEnabled()\l&#45; init()\l&#45; uninit()\l&#45; upnpActionCallback()\l}" alt="" coords="331,2245,509,2773">
+<area shape="rect" href="$classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="275,1909,437,2133">
+<area shape="rect" href="$classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="229,1493,373,1669">
+<area shape="rect" href="$classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="67,1861,251,2181">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="397,1365,573,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="405,973,565,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="291,437,445,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="432,261,528,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="333,5,448,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="675,917,837,1301">
+<area shape="rect" href="$classcUPnPWebServer.html" title="{cUPnPWebServer\n|&#45; mRootdir\l&#45; mInstance\l&#45; mVirtualDirCallbacks\l|+ init()\l+ uninit()\l+ ~cUPnPWebServer()\l+ getInstance()\l+ getInfo()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l&#45; cUPnPWebServer()\l}" alt="" coords="611,1885,765,2157">
+<area shape="rect" href="$classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="5,1453,205,1709">
diff --git a/doc/html/classcPluginUpnp__coll__graph.md5 b/doc/html/classcPluginUpnp__coll__graph.md5
new file mode 100644
index 0000000..59ea805
--- /dev/null
+++ b/doc/html/classcPluginUpnp__coll__graph.md5
@@ -0,0 +1 @@
+168966d1b7d5b31ddf40a977ca9d5022 \ No newline at end of file
diff --git a/doc/html/classcPluginUpnp__coll__graph.png b/doc/html/classcPluginUpnp__coll__graph.png
new file mode 100644
index 0000000..38a4ccb
--- /dev/null
+++ b/doc/html/classcPluginUpnp__coll__graph.png
Binary files differ
diff --git a/doc/html/classcRecordingPlayer-members.html b/doc/html/classcRecordingPlayer-members.html
new file mode 100644
index 0000000..275b8f5
--- /dev/null
+++ b/doc/html/classcRecordingPlayer-members.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRecordingPlayer Member List</h1>This is the complete list of members for <a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcRecordingPlayer.html#5e81aeecd16f89e432690a9b05d8dd6a">close</a>()</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRecordingPlayer.html#59abdfe4e4339943afbd713d2fb35e40">newInstance</a>(cRecording *Recording)</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRecordingPlayer.html#e7ad4362d821f38db5143c0aeff15d97">open</a>(UpnpOpenFileMode mode)</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRecordingPlayer.html#e0fda8b0be8e47133698f1763e649b3d">read</a>(char *buf, size_t buflen)</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRecordingPlayer.html#43f7ba867374d6be9e78c68c872bf608">seek</a>(off_t offset, int origin)</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRecordingPlayer.html#7dd0cb78ae8032eb677f01d71187d6e0">write</a>(char *buf, size_t buflen)</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cFileHandle</b>() (defined in <a class="el" href="classcFileHandle.html">cFileHandle</a>)</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [inline, private, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cRecordingPlayer</b>() (defined in <a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a>)</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRecordingPlayer.html b/doc/html/classcRecordingPlayer.html
new file mode 100644
index 0000000..7ad8f48
--- /dev/null
+++ b/doc/html/classcRecordingPlayer.html
@@ -0,0 +1,284 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cRecordingPlayer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRecordingPlayer Class Reference</h1><!-- doxytag: class="cRecordingPlayer" --><!-- doxytag: inherits="cFileHandle" --><code>#include &lt;<a class="el" href="recplayer_8h-source.html">recplayer.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cRecordingPlayer:</div>
+<div class="dynsection">
+<p><center><img src="classcRecordingPlayer__inherit__graph.png" border="0" usemap="#cRecordingPlayer__inherit__map" alt="Inheritance graph"></center>
+<map name="cRecordingPlayer__inherit__map">
+<area shape="rect" href="classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="23,5,140,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cRecordingPlayer:</div>
+<div class="dynsection">
+<p><center><img src="classcRecordingPlayer__coll__graph.png" border="0" usemap="#cRecordingPlayer__coll__map" alt="Collaboration graph"></center>
+<map name="cRecordingPlayer__coll__map">
+<area shape="rect" href="classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="23,5,140,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcRecordingPlayer-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRecordingPlayer.html#e7ad4362d821f38db5143c0aeff15d97">open</a> (UpnpOpenFileMode mode)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRecordingPlayer.html#e0fda8b0be8e47133698f1763e649b3d">read</a> (char *buf, size_t buflen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRecordingPlayer.html#7dd0cb78ae8032eb677f01d71187d6e0">write</a> (char *buf, size_t buflen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRecordingPlayer.html#43f7ba867374d6be9e78c68c872bf608">seek</a> (off_t offset, int origin)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRecordingPlayer.html#5e81aeecd16f89e432690a9b05d8dd6a">close</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRecordingPlayer.html#59abdfe4e4339943afbd713d2fb35e40">newInstance</a> (cRecording *Recording)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The recording player<p>
+This class provides the ability to play VDR records. The difference between usual files and VDR recording files is, that recordings are possibly splitted into multiple files. The class will scan those files and tries to dynamically navigate in them like it would do, if it is a single file. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="5e81aeecd16f89e432690a9b05d8dd6a"></a><!-- doxytag: member="cRecordingPlayer::close" ref="5e81aeecd16f89e432690a9b05d8dd6a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cRecordingPlayer::close </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Closes the open file<p>
+This will close open file handles and frees the memory obtained by it.
+<p>Implements <a class="el" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="59abdfe4e4339943afbd713d2fb35e40"></a><!-- doxytag: member="cRecordingPlayer::newInstance" ref="59abdfe4e4339943afbd713d2fb35e40" args="(cRecording *Recording)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a> * cRecordingPlayer::newInstance </td>
+ <td>(</td>
+ <td class="paramtype">cRecording *&nbsp;</td>
+ <td class="paramname"> <em>Recording</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a new instance of a recording player<p>
+This returns a new instance of a recording player which plays the specified VDR recording.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Recording</em>&nbsp;</td><td>the recording to play </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new instance of the recording player </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e7ad4362d821f38db5143c0aeff15d97"></a><!-- doxytag: member="cRecordingPlayer::open" ref="e7ad4362d821f38db5143c0aeff15d97" args="(UpnpOpenFileMode mode)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cRecordingPlayer::open </td>
+ <td>(</td>
+ <td class="paramtype">UpnpOpenFileMode&nbsp;</td>
+ <td class="paramname"> <em>mode</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Opens the file<p>
+Opens the file at the given mode. These can be:<ul>
+<li><b>UPNP_READ</b>, to read from the file</li><li><b>UPNP_WRITE</b>, to write to the file</li></ul>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The file mode, i.e. one of the following<ul>
+<li><b>UPNP_READ</b> </li><li><b>UPNP_WRITE</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e0fda8b0be8e47133698f1763e649b3d"></a><!-- doxytag: member="cRecordingPlayer::read" ref="e0fda8b0be8e47133698f1763e649b3d" args="(char *buf, size_t buflen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cRecordingPlayer::read </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reads from the file<p>
+Reads from the file a certain amount of bytes and stores them in a buffer<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="43f7ba867374d6be9e78c68c872bf608"></a><!-- doxytag: member="cRecordingPlayer::seek" ref="43f7ba867374d6be9e78c68c872bf608" args="(off_t offset, int origin)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cRecordingPlayer::seek </td>
+ <td>(</td>
+ <td class="paramtype">off_t&nbsp;</td>
+ <td class="paramname"> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>whence</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seeks in the file<p>
+Seeks in the file where the offset is the relativ position depending on the second parameter. This means, in case of<p>
+<ul>
+<li><b>SEEK_SET</b>, the offset is relative to the beginning of the file</li><li><b>SEEK_CUR</b>, it is relative to the current position or</li><li><b>SEEK_END</b>, relative to the end of the file.</li></ul>
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>The byte offset in the file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>whence</em>&nbsp;</td><td>one of the following<ul>
+<li><b>SEEK_SET</b>,</li><li><b>SEEK_CUR</b>,</li><li><b>SEEK_END</b> </li></ul>
+</td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7dd0cb78ae8032eb677f01d71187d6e0"></a><!-- doxytag: member="cRecordingPlayer::write" ref="7dd0cb78ae8032eb677f01d71187d6e0" args="(char *buf, size_t buflen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cRecordingPlayer::write </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Writes to the file<p>
+Writes to the file a certain amount of bytes which are stored in a buffer<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b>&lt;0</b>, in case of an error</li><li><b>0</b>, when reading was successful</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The char buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>The size of the buffer </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">cFileHandle</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>receiver/<a class="el" href="recplayer_8h-source.html">recplayer.h</a><li>receiver/recplayer.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRecordingPlayer__coll__graph.map b/doc/html/classcRecordingPlayer__coll__graph.map
new file mode 100644
index 0000000..f121a83
--- /dev/null
+++ b/doc/html/classcRecordingPlayer__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="23,5,140,165">
diff --git a/doc/html/classcRecordingPlayer__coll__graph.md5 b/doc/html/classcRecordingPlayer__coll__graph.md5
new file mode 100644
index 0000000..842bff3
--- /dev/null
+++ b/doc/html/classcRecordingPlayer__coll__graph.md5
@@ -0,0 +1 @@
+af4d8d362deafcbb24ed3149898030ab \ No newline at end of file
diff --git a/doc/html/classcRecordingPlayer__coll__graph.png b/doc/html/classcRecordingPlayer__coll__graph.png
new file mode 100644
index 0000000..e1a336b
--- /dev/null
+++ b/doc/html/classcRecordingPlayer__coll__graph.png
Binary files differ
diff --git a/doc/html/classcRecordingPlayer__inherit__graph.map b/doc/html/classcRecordingPlayer__inherit__graph.map
new file mode 100644
index 0000000..f121a83
--- /dev/null
+++ b/doc/html/classcRecordingPlayer__inherit__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcFileHandle.html" title="{cFileHandle\n||+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l+ ~cFileHandle()\l}" alt="" coords="23,5,140,165">
diff --git a/doc/html/classcRecordingPlayer__inherit__graph.md5 b/doc/html/classcRecordingPlayer__inherit__graph.md5
new file mode 100644
index 0000000..842bff3
--- /dev/null
+++ b/doc/html/classcRecordingPlayer__inherit__graph.md5
@@ -0,0 +1 @@
+af4d8d362deafcbb24ed3149898030ab \ No newline at end of file
diff --git a/doc/html/classcRecordingPlayer__inherit__graph.png b/doc/html/classcRecordingPlayer__inherit__graph.png
new file mode 100644
index 0000000..e1a336b
--- /dev/null
+++ b/doc/html/classcRecordingPlayer__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcRegisteredProfile-members.html b/doc/html/classcRegisteredProfile-members.html
new file mode 100644
index 0000000..6255690
--- /dev/null
+++ b/doc/html/classcRegisteredProfile-members.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRegisteredProfile Member List</h1>This is the complete list of members for <a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cDlna</b> (defined in <a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a>)</td><td><a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cRegisteredProfile</b>() (defined in <a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a>)</td><td><a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cRegisteredProfile</b>() (defined in <a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a>)</td><td><a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRegisteredProfile.html b/doc/html/classcRegisteredProfile.html
new file mode 100644
index 0000000..cdb4a42
--- /dev/null
+++ b/doc/html/classcRegisteredProfile.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cRegisteredProfile Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRegisteredProfile Class Reference</h1><!-- doxytag: class="cRegisteredProfile" --><code>#include &lt;<a class="el" href="dlna_8h-source.html">dlna.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cRegisteredProfile:</div>
+<div class="dynsection">
+<p><center><img src="classcRegisteredProfile__coll__graph.png" border="0" usemap="#cRegisteredProfile__coll__map" alt="Collaboration graph"></center>
+<map name="cRegisteredProfile__coll__map">
+<area shape="rect" href="structDLNAProfile.html" title="{DLNAProfile\n|+ ID\l+ mime\l|}" alt="" coords="37,5,128,101"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcRegisteredProfile-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b201121ee660bd628a4844e8e50690db"></a><!-- doxytag: member="cRegisteredProfile::cDlna" ref="b201121ee660bd628a4844e8e50690db" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRegisteredProfile.html#b201121ee660bd628a4844e8e50690db">cDlna</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Registered DLNA profile<p>
+This class contains information about a certain registered profile like play speeds or flags <hr>The documentation for this class was generated from the following file:<ul>
+<li>upnpcomponents/<a class="el" href="dlna_8h-source.html">dlna.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRegisteredProfile__coll__graph.map b/doc/html/classcRegisteredProfile__coll__graph.map
new file mode 100644
index 0000000..247321b
--- /dev/null
+++ b/doc/html/classcRegisteredProfile__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structDLNAProfile.html" title="{DLNAProfile\n|+ ID\l+ mime\l|}" alt="" coords="37,5,128,101">
diff --git a/doc/html/classcRegisteredProfile__coll__graph.md5 b/doc/html/classcRegisteredProfile__coll__graph.md5
new file mode 100644
index 0000000..ad33e1e
--- /dev/null
+++ b/doc/html/classcRegisteredProfile__coll__graph.md5
@@ -0,0 +1 @@
+f19e75fe7c1b35c84918b713e3d41f04 \ No newline at end of file
diff --git a/doc/html/classcRegisteredProfile__coll__graph.png b/doc/html/classcRegisteredProfile__coll__graph.png
new file mode 100644
index 0000000..5fdf940
--- /dev/null
+++ b/doc/html/classcRegisteredProfile__coll__graph.png
Binary files differ
diff --git a/doc/html/classcRow-members.html b/doc/html/classcRow-members.html
new file mode 100644
index 0000000..d2fe7af
--- /dev/null
+++ b/doc/html/classcRow-members.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRow Member List</h1>This is the complete list of members for <a class="el" href="classcRow.html">cRow</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcRow.html#88b64cc4fcf8f0974f2cf11e875fbaf4">Count</a>()</td><td><a class="el" href="classcRow.html">cRow</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cSQLiteDatabase</b> (defined in <a class="el" href="classcRow.html">cRow</a>)</td><td><a class="el" href="classcRow.html">cRow</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRow.html#4b1e1e5ffe36d35c61476bc2e4ef4eb1">fetchColumn</a>(cString *Column, cString *Value)</td><td><a class="el" href="classcRow.html">cRow</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRow.html#a2dcc3d44451c793483493502ef72eb1">fetchColumn</a>(char **Column, char **Value)</td><td><a class="el" href="classcRow.html">cRow</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cRow</b>() (defined in <a class="el" href="classcRow.html">cRow</a>)</td><td><a class="el" href="classcRow.html">cRow</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRow.html b/doc/html/classcRow.html
new file mode 100644
index 0000000..d694c8f
--- /dev/null
+++ b/doc/html/classcRow.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cRow Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRow Class Reference</h1><!-- doxytag: class="cRow" --><code>#include &lt;<a class="el" href="database_8h-source.html">database.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="classcRow-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRow.html#88b64cc4fcf8f0974f2cf11e875fbaf4">Count</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRow.html#4b1e1e5ffe36d35c61476bc2e4ef4eb1">fetchColumn</a> (cString *Column, cString *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRow.html#a2dcc3d44451c793483493502ef72eb1">fetchColumn</a> (char **Column, char **Value)</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="224b94ad297724d01a0ad06388446137"></a><!-- doxytag: member="cRow::cSQLiteDatabase" ref="224b94ad297724d01a0ad06388446137" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRow.html#224b94ad297724d01a0ad06388446137">cSQLiteDatabase</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Result row of a SQL SELECT request<p>
+This is a single row of a {<code>SQL</code> SELECT} request.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcRows.html">cRows</a> </dd></dl>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="88b64cc4fcf8f0974f2cf11e875fbaf4"></a><!-- doxytag: member="cRow::Count" ref="88b64cc4fcf8f0974f2cf11e875fbaf4" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cRow::Count </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Number of columns in this row<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the number of rows </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a2dcc3d44451c793483493502ef72eb1"></a><!-- doxytag: member="cRow::fetchColumn" ref="a2dcc3d44451c793483493502ef72eb1" args="(char **Column, char **Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cRow::fetchColumn </td>
+ <td>(</td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Column</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Fetches a Column<p>
+This will fetch a column of this row and stores the name of the column in the first parameter and the value in the second parameter.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if more columns to come</li><li><b><code>false</code>,</b> if the column is its last in this row. </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Column</em>&nbsp;</td><td>The name of the current column </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>The value of the current column </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4b1e1e5ffe36d35c61476bc2e4ef4eb1"></a><!-- doxytag: member="cRow::fetchColumn" ref="4b1e1e5ffe36d35c61476bc2e4ef4eb1" args="(cString *Column, cString *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cRow::fetchColumn </td>
+ <td>(</td>
+ <td class="paramtype">cString *&nbsp;</td>
+ <td class="paramname"> <em>Column</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cString *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Fetches a Column<p>
+This will fetch a column of this row and stores the name of the column in the first parameter and the value in the second parameter.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if more columns to come</li><li><b><code>false</code>,</b> if the column is its last in this row. </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Column</em>&nbsp;</td><td>The name of the current column </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>The value of the current value </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="database_8h-source.html">database.h</a><li>database/database.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRows-members.html b/doc/html/classcRows-members.html
new file mode 100644
index 0000000..683c1f9
--- /dev/null
+++ b/doc/html/classcRows-members.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRows Member List</h1>This is the complete list of members for <a class="el" href="classcRows.html">cRows</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cSQLiteDatabase</b> (defined in <a class="el" href="classcRows.html">cRows</a>)</td><td><a class="el" href="classcRows.html">cRows</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcRows.html#03a454862807c81280fd7b87b35ba19e">fetchRow</a>(cRow **Row)</td><td><a class="el" href="classcRows.html">cRows</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cRows</b>() (defined in <a class="el" href="classcRows.html">cRows</a>)</td><td><a class="el" href="classcRows.html">cRows</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRows.html b/doc/html/classcRows.html
new file mode 100644
index 0000000..8889e36
--- /dev/null
+++ b/doc/html/classcRows.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cRows Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cRows Class Reference</h1><!-- doxytag: class="cRows" --><code>#include &lt;<a class="el" href="database_8h-source.html">database.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cRows:</div>
+<div class="dynsection">
+<p><center><img src="classcRows__coll__graph.png" border="0" usemap="#cRows__coll__map" alt="Collaboration graph"></center>
+<map name="cRows__coll__map">
+<area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="5,5,120,197"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcRows-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRows.html#03a454862807c81280fd7b87b35ba19e">fetchRow</a> (<a class="el" href="classcRow.html">cRow</a> **Row)</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="224b94ad297724d01a0ad06388446137"></a><!-- doxytag: member="cRows::cSQLiteDatabase" ref="224b94ad297724d01a0ad06388446137" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcRows.html#224b94ad297724d01a0ad06388446137">cSQLiteDatabase</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Result rows of a SQL SELECT request<p>
+Contains the rows of a SQL SELECT request<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcRow.html">cRow</a> </dd></dl>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="03a454862807c81280fd7b87b35ba19e"></a><!-- doxytag: member="cRows::fetchRow" ref="03a454862807c81280fd7b87b35ba19e" args="(cRow **Row)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cRows::fetchRow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcRow.html">cRow</a> **&nbsp;</td>
+ <td class="paramname"> <em>Row</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Fetches a row from the result<p>
+This fetches the next row in the resultset by storing the contents of that row in the first parameter.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if more rows to come</li><li><b><code>false</code>,</b> if the row is its last in this resultset. </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Row</em>&nbsp;</td><td>The Pointer of the row </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="database_8h-source.html">database.h</a><li>database/database.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcRows__coll__graph.map b/doc/html/classcRows__coll__graph.map
new file mode 100644
index 0000000..a9b91c3
--- /dev/null
+++ b/doc/html/classcRows__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="5,5,120,197">
diff --git a/doc/html/classcRows__coll__graph.md5 b/doc/html/classcRows__coll__graph.md5
new file mode 100644
index 0000000..18bc382
--- /dev/null
+++ b/doc/html/classcRows__coll__graph.md5
@@ -0,0 +1 @@
+1cf1a38390704c0a5427826fafbd18c1 \ No newline at end of file
diff --git a/doc/html/classcRows__coll__graph.png b/doc/html/classcRows__coll__graph.png
new file mode 100644
index 0000000..67bc328
--- /dev/null
+++ b/doc/html/classcRows__coll__graph.png
Binary files differ
diff --git a/doc/html/classcSQLiteDatabase-members.html b/doc/html/classcSQLiteDatabase-members.html
new file mode 100644
index 0000000..a7a7c7a
--- /dev/null
+++ b/doc/html/classcSQLiteDatabase-members.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cSQLiteDatabase Member List</h1>This is the complete list of members for <a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#f11b7090ae824f7f3fc094dc7112323a">commitTransaction</a>()</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cStatement</b> (defined in <a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>)</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#33ac864ee86fe3f08f66f1c14fcfc331">execStatement</a>(const char *Statement,...)</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#a39756509bd68fd8e335cc9cc40c6f26">getInstance</a>()</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#408e5de345a74f2540ee1cea3c97cd51">getLastInsertRowID</a>() const </td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#2119fbbf7a02c9c627038ddc14c9eb48">getResultCount</a>() const </td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#4cd24d9d63173c54b63aadc7ada86e7e">getResultRows</a>() const </td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#e20eff598832e1da41a8e915ee807548">rollbackTransaction</a>()</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#b1749baadeb733ea3efdbbd9ffe83253">setAutoCommit</a>(bool Commit=true)</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">sprintf</a>(const char *Format,...)</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcSQLiteDatabase.html#5c481c06d73cff4f1192409bfc23a15a">startTransaction</a>()</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cSQLiteDatabase</b>() (defined in <a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>)</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcSQLiteDatabase.html b/doc/html/classcSQLiteDatabase.html
new file mode 100644
index 0000000..9cc47b7
--- /dev/null
+++ b/doc/html/classcSQLiteDatabase.html
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cSQLiteDatabase Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cSQLiteDatabase Class Reference</h1><!-- doxytag: class="cSQLiteDatabase" --><code>#include &lt;<a class="el" href="database_8h-source.html">database.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cSQLiteDatabase:</div>
+<div class="dynsection">
+<p><center><img src="classcSQLiteDatabase__coll__graph.png" border="0" usemap="#cSQLiteDatabase__coll__map" alt="Collaboration graph"></center>
+<map name="cSQLiteDatabase__coll__map">
+<area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="124,261,220,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="25,5,140,197"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcSQLiteDatabase-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#2119fbbf7a02c9c627038ddc14c9eb48">getResultCount</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#408e5de345a74f2540ee1cea3c97cd51">getLastInsertRowID</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcRows.html">cRows</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#4cd24d9d63173c54b63aadc7ada86e7e">getResultRows</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#33ac864ee86fe3f08f66f1c14fcfc331">execStatement</a> (const char *Statement,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#5c481c06d73cff4f1192409bfc23a15a">startTransaction</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#f11b7090ae824f7f3fc094dc7112323a">commitTransaction</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#e20eff598832e1da41a8e915ee807548">rollbackTransaction</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#b1749baadeb733ea3efdbbd9ffe83253">setAutoCommit</a> (bool Commit=true)</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">sprintf</a> (const char *Format,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSQLiteDatabase.html#a39756509bd68fd8e335cc9cc40c6f26">getInstance</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e652fe93205a32a144bf764782bea797"></a><!-- doxytag: member="cSQLiteDatabase::cStatement" ref="e652fe93205a32a144bf764782bea797" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><b>cStatement</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+SQLite Database<p>
+This is a wrapper class for a SQLite3 database connection It supports simple execution functions.<p>
+On requests with returns any results a instance of <code>cRows*</code> will be created. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="f11b7090ae824f7f3fc094dc7112323a"></a><!-- doxytag: member="cSQLiteDatabase::commitTransaction" ref="f11b7090ae824f7f3fc094dc7112323a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cSQLiteDatabase::commitTransaction </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Commits a transaction<p>
+This function commits the transaction and writes all changes to the database<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcSQLiteDatabase.html#5c481c06d73cff4f1192409bfc23a15a">cSQLiteDatabase::startTransaction</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="33ac864ee86fe3f08f66f1c14fcfc331"></a><!-- doxytag: member="cSQLiteDatabase::execStatement" ref="33ac864ee86fe3f08f66f1c14fcfc331" args="(const char *Statement,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cSQLiteDatabase::execStatement </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Statement</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Executes a SQL statement<p>
+This will execute the statement in the first parameter. If it is followed by any optional parameters it will be formated using the same function as in <code><a class="el" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">cSQLiteDatabase::sprintf()</a></code>.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">cSQLiteDatabase::sprintf()</a>.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns an integer representing<ul>
+<li><b><code>-1</code>,</b> in case of an error</li><li><b><code>0</code>,</b> when the statement was executed successfuly </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Statement</em>&nbsp;</td><td>Statement to be executed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a39756509bd68fd8e335cc9cc40c6f26"></a><!-- doxytag: member="cSQLiteDatabase::getInstance" ref="a39756509bd68fd8e335cc9cc40c6f26" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a> * cSQLiteDatabase::getInstance </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the instance of the database<p>
+Returns the instance of the SQLite database. This will create a single instance of none is existing on the very first call. A subsequent call will return the same instance.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the database instance </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="408e5de345a74f2540ee1cea3c97cd51"></a><!-- doxytag: member="cSQLiteDatabase::getLastInsertRowID" ref="408e5de345a74f2540ee1cea3c97cd51" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">long cSQLiteDatabase::getLastInsertRowID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The last <code>INSERT</code> RowID<p>
+Returns the primary key of the last inserted row. This will only work if there are no successive calls to the database.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the last insert RowID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2119fbbf7a02c9c627038ddc14c9eb48"></a><!-- doxytag: member="cSQLiteDatabase::getResultCount" ref="2119fbbf7a02c9c627038ddc14c9eb48" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cSQLiteDatabase::getResultCount </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Row count of the last result<p>
+Returns the row count of the last {<code>SQL</code> SELECT} request.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcRows.html">cRows</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the result row count </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4cd24d9d63173c54b63aadc7ada86e7e"></a><!-- doxytag: member="cSQLiteDatabase::getResultRows" ref="4cd24d9d63173c54b63aadc7ada86e7e" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcRows.html">cRows</a>* cSQLiteDatabase::getResultRows </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Result set of the last request<p>
+Returns the result rows of the SQL SELECT request. This might be NULL, if the last statement was not a SELECT.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcRows.html">cRows</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the result rows of the last <code>SELECT</code> statement. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e20eff598832e1da41a8e915ee807548"></a><!-- doxytag: member="cSQLiteDatabase::rollbackTransaction" ref="e20eff598832e1da41a8e915ee807548" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cSQLiteDatabase::rollbackTransaction </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Performs a rollback on a transaction<p>
+This function performs a rollback. No changes will be made to the database<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcSQLiteDatabase.html#e20eff598832e1da41a8e915ee807548">cSQLiteDatabase::rollbackTransaction</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b1749baadeb733ea3efdbbd9ffe83253"></a><!-- doxytag: member="cSQLiteDatabase::setAutoCommit" ref="b1749baadeb733ea3efdbbd9ffe83253" args="(bool Commit=true)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cSQLiteDatabase::setAutoCommit </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Commit</em> = <code>true</code> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the commit behavior<p>
+This function sets the auto commit behavior on new transactions with <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcSQLiteDatabase.html#5c481c06d73cff4f1192409bfc23a15a">cSQLiteDatabase::startTransaction</a>.</dd></dl>
+<ul>
+<li><b><code>true</code>,</b> commits the last transaction before starting a new one</li><li><b><code>false</code>,</b> performs a rollback on the old transaction </li></ul>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Commit</em>&nbsp;</td><td>Switches the behavior of auto commit </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="cdc42326657aea81fd26da6500642381"></a><!-- doxytag: member="cSQLiteDatabase::sprintf" ref="cdc42326657aea81fd26da6500642381" args="(const char *Format,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * cSQLiteDatabase::sprintf </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Prints a SQLite escaped text<p>
+Returns a formated text with special characters to escape SQLite special characters like "'". Additionally to the well known characters of <em>printf</em> the following are allowed:<p>
+<ul>
+<li><b><code>q</code>,</b> like s, escapes single quotes in strings</li><li><b><code>Q</code>,</b> like q, surrounds the escaped string with additional single quotes</li><li><b><code>z</code>,</b> frees the string after reading and coping it</li></ul>
+<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">sprintf()</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the formated string </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Format</em>&nbsp;</td><td>The format string </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5c481c06d73cff4f1192409bfc23a15a"></a><!-- doxytag: member="cSQLiteDatabase::startTransaction" ref="5c481c06d73cff4f1192409bfc23a15a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cSQLiteDatabase::startTransaction </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Starts a transaction<p>
+This starts a new transaction and commits or rolls back a previous.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcSQLiteDatabase.html#b1749baadeb733ea3efdbbd9ffe83253">cSQLiteDatabase::setAutoCommit</a> <p>
+<a class="el" href="classcSQLiteDatabase.html#f11b7090ae824f7f3fc094dc7112323a">cSQLiteDatabase::commitTransaction</a> </dd></dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="database_8h-source.html">database.h</a><li>database/database.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcSQLiteDatabase__coll__graph.map b/doc/html/classcSQLiteDatabase__coll__graph.map
new file mode 100644
index 0000000..1b53573
--- /dev/null
+++ b/doc/html/classcSQLiteDatabase__coll__graph.map
@@ -0,0 +1,2 @@
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="124,261,220,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="25,5,140,197">
diff --git a/doc/html/classcSQLiteDatabase__coll__graph.md5 b/doc/html/classcSQLiteDatabase__coll__graph.md5
new file mode 100644
index 0000000..0d0e568
--- /dev/null
+++ b/doc/html/classcSQLiteDatabase__coll__graph.md5
@@ -0,0 +1 @@
+98cb5eac67d715578190a62c6ef5a8cb \ No newline at end of file
diff --git a/doc/html/classcSQLiteDatabase__coll__graph.png b/doc/html/classcSQLiteDatabase__coll__graph.png
new file mode 100644
index 0000000..868045c
--- /dev/null
+++ b/doc/html/classcSQLiteDatabase__coll__graph.png
Binary files differ
diff --git a/doc/html/classcSortCriteria-members.html b/doc/html/classcSortCriteria-members.html
new file mode 100644
index 0000000..55a9e0d
--- /dev/null
+++ b/doc/html/classcSortCriteria-members.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cSortCriteria Member List</h1>This is the complete list of members for <a class="el" href="classcSortCriteria.html">cSortCriteria</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcSortCriteria.html#818579ec634d8b6f670a55545970b9e7">parse</a>(const char *Sort)</td><td><a class="el" href="classcSortCriteria.html">cSortCriteria</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cSortCriteria</b>() (defined in <a class="el" href="classcSortCriteria.html">cSortCriteria</a>)</td><td><a class="el" href="classcSortCriteria.html">cSortCriteria</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcSortCriteria.html b/doc/html/classcSortCriteria.html
new file mode 100644
index 0000000..256d5b7
--- /dev/null
+++ b/doc/html/classcSortCriteria.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cSortCriteria Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cSortCriteria Class Reference</h1><!-- doxytag: class="cSortCriteria" --><code>#include &lt;<a class="el" href="search_8h-source.html">search.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cSortCriteria:</div>
+<div class="dynsection">
+<p><center><img src="classcSortCriteria__coll__graph.png" border="0" usemap="#cSortCriteria__coll__map" alt="Collaboration graph"></center>
+<map name="cSortCriteria__coll__map">
+<area shape="rect" href="structcSortCrit.html" title="{cSortCrit\n|+ Property\l+ SortDescending\l|}" alt="" coords="5,5,131,101"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcSortCriteria-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static cList&lt; <a class="el" href="structcSortCrit.html">cSortCrit</a> &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcSortCriteria.html#818579ec634d8b6f670a55545970b9e7">parse</a> (const char *Sort)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Creates a list with sort criteria<p>
+This parser creates a list of sort criteria. It parses the sort criteria string from a <em>Browse</em> or <em>Search</em> request and stores the information in a <code><a class="el" href="structcSortCrit.html">cSortCrit</a></code> structure. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="818579ec634d8b6f670a55545970b9e7"></a><!-- doxytag: member="cSortCriteria::parse" ref="818579ec634d8b6f670a55545970b9e7" args="(const char *Sort)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cList&lt; <a class="el" href="structcSortCrit.html">cSortCrit</a> &gt; * cSortCriteria::parse </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Sort</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parses the sort criteria<p>
+This parses the sort criteria and returns a list with valid criterias<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li>a list with valid sort criterias</li><li><b><code>null</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Sort</em>&nbsp;</td><td>the string container the sort criteria </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>misc/<a class="el" href="search_8h-source.html">search.h</a><li>misc/search.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcSortCriteria__coll__graph.map b/doc/html/classcSortCriteria__coll__graph.map
new file mode 100644
index 0000000..e587ffb
--- /dev/null
+++ b/doc/html/classcSortCriteria__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structcSortCrit.html" title="{cSortCrit\n|+ Property\l+ SortDescending\l|}" alt="" coords="5,5,131,101">
diff --git a/doc/html/classcSortCriteria__coll__graph.md5 b/doc/html/classcSortCriteria__coll__graph.md5
new file mode 100644
index 0000000..bf42df9
--- /dev/null
+++ b/doc/html/classcSortCriteria__coll__graph.md5
@@ -0,0 +1 @@
+3ffee57b055649112afb6e7559899f3e \ No newline at end of file
diff --git a/doc/html/classcSortCriteria__coll__graph.png b/doc/html/classcSortCriteria__coll__graph.png
new file mode 100644
index 0000000..064d4ea
--- /dev/null
+++ b/doc/html/classcSortCriteria__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassContainer-members.html b/doc/html/classcUPnPClassContainer-members.html
new file mode 100644
index 0000000..32fc629
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer-members.html
@@ -0,0 +1,110 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassContainer Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#55613e5fa7019137aa818036e91a0811">addCreateClass</a>(cClass CreateClass)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#589392682fb7c8e698d09b2eeca83887">addObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#d177af2487ff337fe79ef11fe1e07dd1">addSearchClass</a>(cClass SearchClass)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cMediaDatabase</b> (defined in <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a>(const cListObject &amp;ListObject) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#fec5b0bae4ed2d194bfc9973f14a3926">createDIDLFragment</a>(IXML_Document *Document, cStringList *Filter)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#e485882089f12f383ddbea26e186d851">cUPnPClassContainer</a>()</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPContainerMediator</b> (defined in <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjectMediator</b> (defined in <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#23c2949d1cb925423a6b113cf0021a5f">delCreateClass</a>(cClass CreateClass)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#3cfb0c2035e678cde990631b804d4ab2">delSearchClass</a>(cClass SearchClass)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#b23a80cebe626e0b2b6c3b1a83b039c6">getChildCount</a>() const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#32eb7f1d0b3821f0d9573fe59befdf10">getContainer</a>()</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#b4977eba812c34a4201935f31be0f5c9">getContainerType</a>() const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#d9a875daad1093311723262f5f6c1f7c">getCreateClasses</a>() const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#b2d43f5d5b6ad40d444b7e353979451d">getObject</a>(cUPnPObjectID ID) const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#ba09b831bbb533d1dbcb6cff4f4b9c23">getObjectList</a>() const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#f70297d2275e083f05024524d21118d7">getProperty</a>(const char *Property, char **Value) const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#d952c993314a9352d13f644bb95fbdc2">getPropertyList</a>()</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a>(unsigned int ResourceID) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#735327b72c023d3048db0d4fd2a608cc">getSearchClasses</a>() const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#475ad1a2003cc9b169685f825a9d790d">getUpdateID</a>() const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#c6d1de26df91d64379a9a2db1f5a7301">isSearchable</a>() const </td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#a8ae4e790074d3a34bc7ec173a02595a">isUpdated</a>()</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7">mChildren</a></td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#df514e47f80f94f957ec451e566107a5">mChildrenID</a></td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">mClass</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#0e4678ea867811f9c5e70e018992c8c8">mContainerType</a></td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#aa82cb4dae2c818609e60468e2ea6de4">mCreateClasses</a></td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">mCreator</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">mDIDLFragment</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">mID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">mLastModified</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">mParent</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">mResources</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">mResourcesID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">mRestricted</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#640da8763c5ce432b46125faa3be01da">mSearchable</a></td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#5b66ce95c06498c6166b856d015139b5">mSearchClasses</a></td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">mSortCriteria</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">mSortDescending</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">mTitle</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#8cdeed9b80cae365174680dd4196664f">mUpdateID</a></td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">mWriteStatus</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#2e3110bd01c17df34cd60302d9330e72">removeObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a>(const char *Class)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#495f4218ec9566ede534a96daf387462">setContainerType</a>(const char *Type)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#633b1e47657d9039d0919ce9b139f9b2">setCreateClasses</a>(std::vector&lt; cClass &gt; CreateClasses)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a>(const char *Creator)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a>(void)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a>(cUPnPClassContainer *Parent)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#488761ebb4f074ded0d5374f862a1b54">setProperty</a>(const char *Property, const char *Value)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a>(cList&lt; cUPnPResource &gt; *Resources)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a>(bool Restricted)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#d32e937984f39806a15a22d13a644703">setSearchable</a>(bool Searchable)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#aa34f20a75725837af2168a192687a51">setSearchClasses</a>(std::vector&lt; cClass &gt; SearchClasses)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a>(const char *Property, bool Descending=false)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a>(const char *Title)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#9d3b9dd6388dd2021889a56a4fccfed3">setUpdateID</a>(unsigned int UID)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a>(int Status)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassContainer.html#6f89b0043d19349efbc52caf7b7dbb3a">update</a>()</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassContainer</b>() (defined in <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>)</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassContainer.html b/doc/html/classcUPnPClassContainer.html
new file mode 100644
index 0000000..fcf6438
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer.html
@@ -0,0 +1,897 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPClassContainer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassContainer Class Reference</h1><!-- doxytag: class="cUPnPClassContainer" --><!-- doxytag: inherits="cUPnPClassObject" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPClassContainer:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassContainer__inherit__graph.png" border="0" usemap="#cUPnPClassContainer__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPClassContainer__inherit__map">
+<area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="15,5,175,821"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPClassContainer:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassContainer__coll__graph.png" border="0" usemap="#cUPnPClassContainer__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPClassContainer__coll__map">
+<area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="7,469,167,1285"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389"><area shape="rect" href="classcUPnPObjects.html" title="{cUPnPObjects\n||+ cUPnPObjects()\l+ ~cUPnPObjects()\l+ SortBy()\l}" alt="" coords="264,821,400,933"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPClassContainer-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cStringList *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#d952c993314a9352d13f644bb95fbdc2">getPropertyList</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual IXML_Node *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#fec5b0bae4ed2d194bfc9973f14a3926">createDIDLFragment</a> (IXML_Document *Document, cStringList *Filter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#488761ebb4f074ded0d5374f862a1b54">setProperty</a> (const char *Property, const char *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#f70297d2275e083f05024524d21118d7">getProperty</a> (const char *Property, char **Value) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#32eb7f1d0b3821f0d9573fe59befdf10">getContainer</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#589392682fb7c8e698d09b2eeca83887">addObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#2e3110bd01c17df34cd60302d9330e72">removeObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#b2d43f5d5b6ad40d444b7e353979451d">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#ba09b831bbb533d1dbcb6cff4f4b9c23">getObjectList</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#d177af2487ff337fe79ef11fe1e07dd1">addSearchClass</a> (<a class="el" href="structcClass.html">cClass</a> SearchClass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#3cfb0c2035e678cde990631b804d4ab2">delSearchClass</a> (<a class="el" href="structcClass.html">cClass</a> SearchClass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#55613e5fa7019137aa818036e91a0811">addCreateClass</a> (<a class="el" href="structcClass.html">cClass</a> CreateClass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#23c2949d1cb925423a6b113cf0021a5f">delCreateClass</a> (<a class="el" href="structcClass.html">cClass</a> CreateClass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#495f4218ec9566ede534a96daf387462">setContainerType</a> (const char *Type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#aa34f20a75725837af2168a192687a51">setSearchClasses</a> (std::vector&lt; <a class="el" href="structcClass.html">cClass</a> &gt; SearchClasses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#633b1e47657d9039d0919ce9b139f9b2">setCreateClasses</a> (std::vector&lt; <a class="el" href="structcClass.html">cClass</a> &gt; CreateClasses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#d32e937984f39806a15a22d13a644703">setSearchable</a> (bool Searchable)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#b4977eba812c34a4201935f31be0f5c9">getContainerType</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::vector&lt; <a class="el" href="structcClass.html">cClass</a> &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#735327b72c023d3048db0d4fd2a608cc">getSearchClasses</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::vector&lt; <a class="el" href="structcClass.html">cClass</a> &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#d9a875daad1093311723262f5f6c1f7c">getCreateClasses</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#c6d1de26df91d64379a9a2db1f5a7301">isSearchable</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#b23a80cebe626e0b2b6c3b1a83b039c6">getChildCount</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#475ad1a2003cc9b169685f825a9d790d">getUpdateID</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#a8ae4e790074d3a34bc7ec173a02595a">isUpdated</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#6f89b0043d19349efbc52caf7b7dbb3a">update</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#9d3b9dd6388dd2021889a56a4fccfed3">setUpdateID</a> (unsigned int UID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#e485882089f12f383ddbea26e186d851">cUPnPClassContainer</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0e4678ea867811f9c5e70e018992c8c8"></a><!-- doxytag: member="cUPnPClassContainer::mContainerType" ref="0e4678ea867811f9c5e70e018992c8c8" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#0e4678ea867811f9c5e70e018992c8c8">mContainerType</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">DLNA container type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5b66ce95c06498c6166b856d015139b5"></a><!-- doxytag: member="cUPnPClassContainer::mSearchClasses" ref="5b66ce95c06498c6166b856d015139b5" args="" -->
+tClassVector&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#5b66ce95c06498c6166b856d015139b5">mSearchClasses</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Classes which are searchable. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aa82cb4dae2c818609e60468e2ea6de4"></a><!-- doxytag: member="cUPnPClassContainer::mCreateClasses" ref="aa82cb4dae2c818609e60468e2ea6de4" args="" -->
+tClassVector&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#aa82cb4dae2c818609e60468e2ea6de4">mCreateClasses</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Classes which are creatable. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="640da8763c5ce432b46125faa3be01da"></a><!-- doxytag: member="cUPnPClassContainer::mSearchable" ref="640da8763c5ce432b46125faa3be01da" args="" -->
+bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#640da8763c5ce432b46125faa3be01da">mSearchable</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the Container searchable? <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8cdeed9b80cae365174680dd4196664f"></a><!-- doxytag: member="cUPnPClassContainer::mUpdateID" ref="8cdeed9b80cae365174680dd4196664f" args="" -->
+unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#8cdeed9b80cae365174680dd4196664f">mUpdateID</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The containerUpdateID. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ec00054069266b3da9212e09b107a7d7"></a><!-- doxytag: member="cUPnPClassContainer::mChildren" ref="ec00054069266b3da9212e09b107a7d7" args="" -->
+<a class="el" href="classcUPnPObjects.html">cUPnPObjects</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7">mChildren</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List of children. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="df514e47f80f94f957ec451e566107a5"></a><!-- doxytag: member="cUPnPClassContainer::mChildrenID" ref="df514e47f80f94f957ec451e566107a5" args="" -->
+cHash&lt; <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#df514e47f80f94f957ec451e566107a5">mChildrenID</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List of children as hash map. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d0d0aedce8b1c661ea360b9a6d616f6"></a><!-- doxytag: member="cUPnPClassContainer::cMediaDatabase" ref="3d0d0aedce8b1c661ea360b9a6d616f6" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#3d0d0aedce8b1c661ea360b9a6d616f6">cMediaDatabase</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cUPnPClassContainer::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="16cc2f01a45dc16bd9ad186b3be2cfc8"></a><!-- doxytag: member="cUPnPClassContainer::cUPnPContainerMediator" ref="16cc2f01a45dc16bd9ad186b3be2cfc8" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassContainer.html#16cc2f01a45dc16bd9ad186b3be2cfc8">cUPnPContainerMediator</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP class Container<p>
+This is a UPnP class Container representation with all its properties. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="e485882089f12f383ddbea26e186d851"></a><!-- doxytag: member="cUPnPClassContainer::cUPnPClassContainer" ref="e485882089f12f383ddbea26e186d851" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPClassContainer::cUPnPClassContainer </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of a container<p>
+This creates a new instance of a container
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="55613e5fa7019137aa818036e91a0811"></a><!-- doxytag: member="cUPnPClassContainer::addCreateClass" ref="55613e5fa7019137aa818036e91a0811" args="(cClass CreateClass)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::addCreateClass </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcClass.html">cClass</a>&nbsp;</td>
+ <td class="paramname"> <em>CreateClass</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a create class<p>
+This adds a create class to the create classes vector<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if adding was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>CreateClass</em>&nbsp;</td><td>the new class to be added </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="589392682fb7c8e698d09b2eeca83887"></a><!-- doxytag: member="cUPnPClassContainer::addObject" ref="589392682fb7c8e698d09b2eeca83887" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPClassContainer::addObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a child<p>
+This adds the specified child to this container. The parent container of the child will be set to this container.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the child to be added </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d177af2487ff337fe79ef11fe1e07dd1"></a><!-- doxytag: member="cUPnPClassContainer::addSearchClass" ref="d177af2487ff337fe79ef11fe1e07dd1" args="(cClass SearchClass)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::addSearchClass </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcClass.html">cClass</a>&nbsp;</td>
+ <td class="paramname"> <em>SearchClass</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a search class<p>
+This adds a search class to the search classes vector<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if adding was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>SearchClass</em>&nbsp;</td><td>the new class to be added </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="fec5b0bae4ed2d194bfc9973f14a3926"></a><!-- doxytag: member="cUPnPClassContainer::createDIDLFragment" ref="fec5b0bae4ed2d194bfc9973f14a3926" args="(IXML_Document *Document, cStringList *Filter)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">IXML_Node * cUPnPClassContainer::createDIDLFragment </td>
+ <td>(</td>
+ <td class="paramtype">IXML_Document *&nbsp;</td>
+ <td class="paramname"> <em>Document</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cStringList *&nbsp;</td>
+ <td class="paramname"> <em>Filter</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create the DIDL fragment<p>
+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified <em>IXML</em> document. The details of the output can be controlled via the filter stringlist<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DIDL fragment of the object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Document</em>&nbsp;</td><td>the IXML document where to write the contents </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Filter</em>&nbsp;</td><td>the string list with the filter criteria </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcUPnPClassObject.html#9090f5982129bc5aa15c6e19db627445">cUPnPClassObject</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="23c2949d1cb925423a6b113cf0021a5f"></a><!-- doxytag: member="cUPnPClassContainer::delCreateClass" ref="23c2949d1cb925423a6b113cf0021a5f" args="(cClass CreateClass)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::delCreateClass </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcClass.html">cClass</a>&nbsp;</td>
+ <td class="paramname"> <em>CreateClass</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove a create class<p>
+This removes a create class from the create classes vector<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if deleting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>CreateClass</em>&nbsp;</td><td>the class to be deleted </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3cfb0c2035e678cde990631b804d4ab2"></a><!-- doxytag: member="cUPnPClassContainer::delSearchClass" ref="3cfb0c2035e678cde990631b804d4ab2" args="(cClass SearchClass)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::delSearchClass </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcClass.html">cClass</a>&nbsp;</td>
+ <td class="paramname"> <em>SearchClass</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove a search class<p>
+This removes a search class from the search classes vector<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if deleting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>SearchClass</em>&nbsp;</td><td>the class to be deleted </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b23a80cebe626e0b2b6c3b1a83b039c6"></a><!-- doxytag: member="cUPnPClassContainer::getChildCount" ref="b23a80cebe626e0b2b6c3b1a83b039c6" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPClassContainer::getChildCount </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the number of children<p>
+This returns the total number of children of this container<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the number of childen </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="32eb7f1d0b3821f0d9573fe59befdf10"></a><!-- doxytag: member="cUPnPClassContainer::getContainer" ref="32eb7f1d0b3821f0d9573fe59befdf10" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* cUPnPClassContainer::getContainer </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Converts to container<p>
+This will convert the object into a container if it is one. If not, it returns <b><code>NULL</code>.</b> <p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>NULL</code>,</b> if it is not a container</li><li>a container representation of this object </li></ul>
+</dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">cUPnPClassObject</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="b4977eba812c34a4201935f31be0f5c9"></a><!-- doxytag: member="cUPnPClassContainer::getContainerType" ref="b4977eba812c34a4201935f31be0f5c9" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassContainer::getContainerType </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the DLNA container type<p>
+This returns the DLNA container type. Currently there are only these possible values beside <b><code>NULL:</code> </b> <b><code>TUNER_1_0</code> </b> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the DLNA container type </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d9a875daad1093311723262f5f6c1f7c"></a><!-- doxytag: member="cUPnPClassContainer::getCreateClasses" ref="d9a875daad1093311723262f5f6c1f7c" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::vector&lt;<a class="el" href="structcClass.html">cClass</a>&gt;* cUPnPClassContainer::getCreateClasses </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the create classes<p>
+This returns a vector containing all possible create classes. This are classes, which can be created in this container. For instance a TV container can only create items of the class VideoBroadcast. The vector is empty when creation of new items by the user is not allowed.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a vector with create classes </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b2d43f5d5b6ad40d444b7e353979451d"></a><!-- doxytag: member="cUPnPClassContainer::getObject" ref="b2d43f5d5b6ad40d444b7e353979451d" args="(cUPnPObjectID ID) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cUPnPClassContainer::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a child by ID<p>
+Returns the child, which is specified by the <code>ObjectID</code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the child with the specified ID </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the <code>ObjectID</code> of the child </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ba09b831bbb533d1dbcb6cff4f4b9c23"></a><!-- doxytag: member="cUPnPClassContainer::getObjectList" ref="ba09b831bbb533d1dbcb6cff4f4b9c23" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a>* cUPnPClassContainer::getObjectList </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the list of children<p>
+This returns a list of the children of the container.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the list of children </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f70297d2275e083f05024524d21118d7"></a><!-- doxytag: member="cUPnPClassContainer::getProperty" ref="f70297d2275e083f05024524d21118d7" args="(const char *Property, char **Value) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassContainer::getProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gets a property<p>
+Returns the value of a specified property. The value is converted into a string.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassObject.html#539cf36abc96b95bc8437601fed8a0f6">cUPnPClassObject</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d952c993314a9352d13f644bb95fbdc2"></a><!-- doxytag: member="cUPnPClassContainer::getPropertyList" ref="d952c993314a9352d13f644bb95fbdc2" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cStringList * cUPnPClassContainer::getPropertyList </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the properties of the object<p>
+This returns a property list with all the properties which can be obtained or set with <code>getProperty</code> or <code>setProperty</code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a stringlist with the properties </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassObject.html#4a4d2cd2e59d364050bb64a3d9dced6e">cUPnPClassObject</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="735327b72c023d3048db0d4fd2a608cc"></a><!-- doxytag: member="cUPnPClassContainer::getSearchClasses" ref="735327b72c023d3048db0d4fd2a608cc" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::vector&lt;<a class="el" href="structcClass.html">cClass</a>&gt;* cUPnPClassContainer::getSearchClasses </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the search classes<p>
+This returns a vector container all possible search classes. This are classes, which can be used for searching in this container.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a vector with all search classes </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="475ad1a2003cc9b169685f825a9d790d"></a><!-- doxytag: member="cUPnPClassContainer::getUpdateID" ref="475ad1a2003cc9b169685f825a9d790d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPClassContainer::getUpdateID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the containerUpdateID<p>
+This returns the containerUpdateID<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the containerUpdateID of this container </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c6d1de26df91d64379a9a2db1f5a7301"></a><!-- doxytag: member="cUPnPClassContainer::isSearchable" ref="c6d1de26df91d64379a9a2db1f5a7301" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassContainer::isSearchable </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Is this container searchable<p>
+This returns <b><code>true</code>,</b> if the container can be search via <em>Search</em> or <b><code>false</code>,</b> otherwise.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the container is searchable</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a8ae4e790074d3a34bc7ec173a02595a"></a><!-- doxytag: member="cUPnPClassContainer::isUpdated" ref="a8ae4e790074d3a34bc7ec173a02595a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassContainer::isUpdated </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Has the container been updated?<p>
+This returns <b><code>true</code>,</b> if the container was recently updated or <b><code>false</code>,</b> otherwise<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the container was updated</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2e3110bd01c17df34cd60302d9330e72"></a><!-- doxytag: member="cUPnPClassContainer::removeObject" ref="2e3110bd01c17df34cd60302d9330e72" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPClassContainer::removeObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove a child<p>
+This removes the specified child from the list of children. The child will also loose its parent container, so that there is no link between left.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the child to be removed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="495f4218ec9566ede534a96daf387462"></a><!-- doxytag: member="cUPnPClassContainer::setContainerType" ref="495f4218ec9566ede534a96daf387462" args="(const char *Type)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::setContainerType </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Type</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the DLNA container type<p>
+This sets the DLNA container type. It must be a valid container type value.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Type</em>&nbsp;</td><td>the DLNA container type </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="633b1e47657d9039d0919ce9b139f9b2"></a><!-- doxytag: member="cUPnPClassContainer::setCreateClasses" ref="633b1e47657d9039d0919ce9b139f9b2" args="(std::vector&lt; cClass &gt; CreateClasses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::setCreateClasses </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; <a class="el" href="structcClass.html">cClass</a> &gt;&nbsp;</td>
+ <td class="paramname"> <em>CreateClasses</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the create classes<p>
+This sets the create classes, which allows the user to create new objects in this container, if <em>restricted</em> is <b><code>false</code>.</b> <p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>CreateClasses</em>&nbsp;</td><td>a vector containing the create classes </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="488761ebb4f074ded0d5374f862a1b54"></a><!-- doxytag: member="cUPnPClassContainer::setProperty" ref="488761ebb4f074ded0d5374f862a1b54" args="(const char *Property, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassContainer::setProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets a property<p>
+Sets the value of a specified property. The value is converted from string into the propper data type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassObject.html#6f2a803a0d0e148133edce23ed6c0e7c">cUPnPClassObject</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d32e937984f39806a15a22d13a644703"></a><!-- doxytag: member="cUPnPClassContainer::setSearchable" ref="d32e937984f39806a15a22d13a644703" args="(bool Searchable)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::setSearchable </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Searchable</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the searchable flag<p>
+This sets the searchable flag, which allows or disallows search on this container.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Searchable</em>&nbsp;</td><td><b><code>true</code>,</b> to enable or <b><code>false</code>,</b> to disable searching </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="aa34f20a75725837af2168a192687a51"></a><!-- doxytag: member="cUPnPClassContainer::setSearchClasses" ref="aa34f20a75725837af2168a192687a51" args="(std::vector&lt; cClass &gt; SearchClasses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::setSearchClasses </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; <a class="el" href="structcClass.html">cClass</a> &gt;&nbsp;</td>
+ <td class="paramname"> <em>SearchClasses</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the search classes<p>
+This sets the search classes, which allows the user to search only for these classes in the current container and its children. If the vector is empty the search can return any match. If the additional flag <b><code>derived</code> is</b> set, then also any derived classes are matched.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>SearchClasses</em>&nbsp;</td><td>a vector container the allowed search classes </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9d3b9dd6388dd2021889a56a4fccfed3"></a><!-- doxytag: member="cUPnPClassContainer::setUpdateID" ref="9d3b9dd6388dd2021889a56a4fccfed3" args="(unsigned int UID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassContainer::setUpdateID </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>UID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the containerUpdateID<p>
+This method should only be used when the containerUpdateID is loaded from the database.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>UID</em>&nbsp;</td><td>the containerUpdateID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6f89b0043d19349efbc52caf7b7dbb3a"></a><!-- doxytag: member="cUPnPClassContainer::update" ref="6f89b0043d19349efbc52caf7b7dbb3a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPClassContainer::update </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Update the container<p>
+This performs an update, which acutally increases the containerUpdateID.
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassContainer__coll__graph.map b/doc/html/classcUPnPClassContainer__coll__graph.map
new file mode 100644
index 0000000..9a5a8e2
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer__coll__graph.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="7,469,167,1285">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389">
+<area shape="rect" href="$classcUPnPObjects.html" title="{cUPnPObjects\n||+ cUPnPObjects()\l+ ~cUPnPObjects()\l+ SortBy()\l}" alt="" coords="264,821,400,933">
diff --git a/doc/html/classcUPnPClassContainer__coll__graph.md5 b/doc/html/classcUPnPClassContainer__coll__graph.md5
new file mode 100644
index 0000000..b0507d9
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer__coll__graph.md5
@@ -0,0 +1 @@
+76412caaf0c9aae0a342e69caf405715 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassContainer__coll__graph.png b/doc/html/classcUPnPClassContainer__coll__graph.png
new file mode 100644
index 0000000..a59bc9f
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassContainer__inherit__graph.map b/doc/html/classcUPnPClassContainer__inherit__graph.map
new file mode 100644
index 0000000..203346d
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer__inherit__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="15,5,175,821">
diff --git a/doc/html/classcUPnPClassContainer__inherit__graph.md5 b/doc/html/classcUPnPClassContainer__inherit__graph.md5
new file mode 100644
index 0000000..dec8024
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer__inherit__graph.md5
@@ -0,0 +1 @@
+947c17fc6b8d8a26f93461980dd032aa \ No newline at end of file
diff --git a/doc/html/classcUPnPClassContainer__inherit__graph.png b/doc/html/classcUPnPClassContainer__inherit__graph.png
new file mode 100644
index 0000000..4ffc73a
--- /dev/null
+++ b/doc/html/classcUPnPClassContainer__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassItem-members.html b/doc/html/classcUPnPClassItem-members.html
new file mode 100644
index 0000000..c04a81e
--- /dev/null
+++ b/doc/html/classcUPnPClassItem-members.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassItem Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cMediaDatabase</b> (defined in <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a>(const cListObject &amp;ListObject) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">createDIDLFragment</a>(IXML_Document *Document, cStringList *Filter)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a>()</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPItemMediator</b> (defined in <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjectMediator</b> (defined in <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#31f7010baa65cc25b95a864f05eb4e62">getProperty</a>(const char *Property, char **Value) const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#add0c9d378036e270e6f99d8d1409e3b">getPropertyList</a>()</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">getReference</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">getReferenceID</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a>(unsigned int ResourceID) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">mClass</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">mCreator</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">mDIDLFragment</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">mID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">mLastModified</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">mParent</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">mReference</a></td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">mResources</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">mResourcesID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">mRestricted</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">mSortCriteria</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">mSortDescending</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">mTitle</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">mWriteStatus</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a>(const char *Class)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a>(const char *Creator)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a>(void)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a>(cUPnPClassContainer *Parent)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#ab17057659c17792a5b67f4297ade642">setProperty</a>(const char *Property, const char *Value)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">setReference</a>(cUPnPClassItem *Reference)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a>(cList&lt; cUPnPResource &gt; *Resources)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a>(bool Restricted)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a>(const char *Property, bool Descending=false)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a>(const char *Title)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a>(int Status)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassItem</b>() (defined in <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassItem.html b/doc/html/classcUPnPClassItem.html
new file mode 100644
index 0000000..627195b
--- /dev/null
+++ b/doc/html/classcUPnPClassItem.html
@@ -0,0 +1,337 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPClassItem Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassItem Class Reference</h1><!-- doxytag: class="cUPnPClassItem" --><!-- doxytag: inherits="cUPnPClassObject" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPClassItem:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassItem__inherit__graph.png" border="0" usemap="#cUPnPClassItem__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPClassItem__inherit__map">
+<area shape="rect" href="classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="99,1125,280,1733"><area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="109,5,269,821"><area shape="rect" href="classcUPnPClassMovie.html" title="{cUPnPClassMovie\n|# mDVDRegionCode\l# mStorageMedium\l|+ ~cUPnPClassMovie()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setDVDRegionCode()\l+ setStorageMedium()\l+ getDVDRegionCode()\l+ getStorageMedium()\l# cUPnPClassMovie()\l}" alt="" coords="5,1829,163,2053"><area shape="rect" href="classcUPnPClassVideoBroadcast.html" title="{cUPnPClassVideoBroadcast\n|# mIcon\l# mRegion\l# mChannelNr\l# mChannelName\l|+ ~cUPnPClassVideoBroadcast()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setIcon()\l+ setRegion()\l+ setChannelNr()\l+ setChannelName()\l+ getIcon()\l+ getRegion()\l+ getChannelNr()\l+ getChannelName()\l# cUPnPClassVideoBroadcast()\l}" alt="" coords="187,1781,403,2101"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPClassItem:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassItem__coll__graph.png" border="0" usemap="#cUPnPClassItem__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPClassItem__coll__map">
+<area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="7,469,167,1285"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPClassItem-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cStringList *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#add0c9d378036e270e6f99d8d1409e3b">getPropertyList</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual IXML_Node *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">createDIDLFragment</a> (IXML_Document *Document, cStringList *Filter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#ab17057659c17792a5b67f4297ade642">setProperty</a> (const char *Property, const char *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#31f7010baa65cc25b95a864f05eb4e62">getProperty</a> (const char *Property, char **Value) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">setReference</a> (<a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *Reference)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">getReference</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">getReferenceID</a> () const </td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="86a22ee98384003e3c09c43f15b3a58a"></a><!-- doxytag: member="cUPnPClassItem::mReference" ref="86a22ee98384003e3c09c43f15b3a58a" args="" -->
+<a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">mReference</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The reference item. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d0d0aedce8b1c661ea360b9a6d616f6"></a><!-- doxytag: member="cUPnPClassItem::cMediaDatabase" ref="3d0d0aedce8b1c661ea360b9a6d616f6" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#3d0d0aedce8b1c661ea360b9a6d616f6">cMediaDatabase</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cUPnPClassItem::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9b56ac88275693464968ee30d903286a"></a><!-- doxytag: member="cUPnPClassItem::cUPnPItemMediator" ref="9b56ac88275693464968ee30d903286a" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassItem.html#9b56ac88275693464968ee30d903286a">cUPnPItemMediator</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP class Item<p>
+This is a UPnP class Item representation with all its properties. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="c7d477be76ca83891c990441b539935d"></a><!-- doxytag: member="cUPnPClassItem::cUPnPClassItem" ref="c7d477be76ca83891c990441b539935d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPClassItem::cUPnPClassItem </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of an item<p>
+This creates a new instance of an item
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="5385975d79cd8e8b78429ecfe11b30a7"></a><!-- doxytag: member="cUPnPClassItem::createDIDLFragment" ref="5385975d79cd8e8b78429ecfe11b30a7" args="(IXML_Document *Document, cStringList *Filter)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">IXML_Node * cUPnPClassItem::createDIDLFragment </td>
+ <td>(</td>
+ <td class="paramtype">IXML_Document *&nbsp;</td>
+ <td class="paramname"> <em>Document</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cStringList *&nbsp;</td>
+ <td class="paramname"> <em>Filter</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create the DIDL fragment<p>
+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified <em>IXML</em> document. The details of the output can be controlled via the filter stringlist<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DIDL fragment of the object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Document</em>&nbsp;</td><td>the IXML document where to write the contents </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Filter</em>&nbsp;</td><td>the string list with the filter criteria </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcUPnPClassObject.html#9090f5982129bc5aa15c6e19db627445">cUPnPClassObject</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="31f7010baa65cc25b95a864f05eb4e62"></a><!-- doxytag: member="cUPnPClassItem::getProperty" ref="31f7010baa65cc25b95a864f05eb4e62" args="(const char *Property, char **Value) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassItem::getProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gets a property<p>
+Returns the value of a specified property. The value is converted into a string.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassObject.html#539cf36abc96b95bc8437601fed8a0f6">cUPnPClassObject</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">cUPnPClassVideoItem</a>, <a class="el" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="add0c9d378036e270e6f99d8d1409e3b"></a><!-- doxytag: member="cUPnPClassItem::getPropertyList" ref="add0c9d378036e270e6f99d8d1409e3b" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cStringList * cUPnPClassItem::getPropertyList </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the properties of the object<p>
+This returns a property list with all the properties which can be obtained or set with <code>getProperty</code> or <code>setProperty</code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a stringlist with the properties </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassObject.html#4a4d2cd2e59d364050bb64a3d9dced6e">cUPnPClassObject</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">cUPnPClassVideoItem</a>, <a class="el" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="153dcb71951d47891d1e066f97e6cd29"></a><!-- doxytag: member="cUPnPClassItem::getReference" ref="153dcb71951d47891d1e066f97e6cd29" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>* cUPnPClassItem::getReference </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the referenced item<p>
+This returns the referenced item of this item<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the referenced item </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c269fe6cfe8846722b90810a21e42bfc"></a><!-- doxytag: member="cUPnPClassItem::getReferenceID" ref="c269fe6cfe8846722b90810a21e42bfc" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> cUPnPClassItem::getReferenceID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the reference ID<p>
+This returns the object ID of the referenced item or <b>-1</b>, if no reference exists.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the reference ID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ab17057659c17792a5b67f4297ade642"></a><!-- doxytag: member="cUPnPClassItem::setProperty" ref="ab17057659c17792a5b67f4297ade642" args="(const char *Property, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassItem::setProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets a property<p>
+Sets the value of a specified property. The value is converted from string into the propper data type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassObject.html#6f2a803a0d0e148133edce23ed6c0e7c">cUPnPClassObject</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">cUPnPClassVideoItem</a>, <a class="el" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="79153d8d7b4ac30af0af0146d69c8e83"></a><!-- doxytag: member="cUPnPClassItem::setReference" ref="79153d8d7b4ac30af0af0146d69c8e83" args="(cUPnPClassItem *Reference)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassItem::setReference </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *&nbsp;</td>
+ <td class="paramname"> <em>Reference</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a reference item<p>
+This sets a reference item. Its comparable with symlinks in *nix systems <dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Reference</em>&nbsp;</td><td>the reference item </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassItem__coll__graph.map b/doc/html/classcUPnPClassItem__coll__graph.map
new file mode 100644
index 0000000..6296160
--- /dev/null
+++ b/doc/html/classcUPnPClassItem__coll__graph.map
@@ -0,0 +1,2 @@
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="7,469,167,1285">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389">
diff --git a/doc/html/classcUPnPClassItem__coll__graph.md5 b/doc/html/classcUPnPClassItem__coll__graph.md5
new file mode 100644
index 0000000..4953420
--- /dev/null
+++ b/doc/html/classcUPnPClassItem__coll__graph.md5
@@ -0,0 +1 @@
+e5c64516c88a739deb74dafe8c8ecfa7 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassItem__coll__graph.png b/doc/html/classcUPnPClassItem__coll__graph.png
new file mode 100644
index 0000000..807445f
--- /dev/null
+++ b/doc/html/classcUPnPClassItem__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassItem__inherit__graph.map b/doc/html/classcUPnPClassItem__inherit__graph.map
new file mode 100644
index 0000000..9c1d5d2
--- /dev/null
+++ b/doc/html/classcUPnPClassItem__inherit__graph.map
@@ -0,0 +1,4 @@
+<area shape="rect" href="$classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="99,1125,280,1733">
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="109,5,269,821">
+<area shape="rect" href="$classcUPnPClassMovie.html" title="{cUPnPClassMovie\n|# mDVDRegionCode\l# mStorageMedium\l|+ ~cUPnPClassMovie()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setDVDRegionCode()\l+ setStorageMedium()\l+ getDVDRegionCode()\l+ getStorageMedium()\l# cUPnPClassMovie()\l}" alt="" coords="5,1829,163,2053">
+<area shape="rect" href="$classcUPnPClassVideoBroadcast.html" title="{cUPnPClassVideoBroadcast\n|# mIcon\l# mRegion\l# mChannelNr\l# mChannelName\l|+ ~cUPnPClassVideoBroadcast()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setIcon()\l+ setRegion()\l+ setChannelNr()\l+ setChannelName()\l+ getIcon()\l+ getRegion()\l+ getChannelNr()\l+ getChannelName()\l# cUPnPClassVideoBroadcast()\l}" alt="" coords="187,1781,403,2101">
diff --git a/doc/html/classcUPnPClassItem__inherit__graph.md5 b/doc/html/classcUPnPClassItem__inherit__graph.md5
new file mode 100644
index 0000000..ee589aa
--- /dev/null
+++ b/doc/html/classcUPnPClassItem__inherit__graph.md5
@@ -0,0 +1 @@
+559a4c89484927ec5f3504a69e6cb8fd \ No newline at end of file
diff --git a/doc/html/classcUPnPClassItem__inherit__graph.png b/doc/html/classcUPnPClassItem__inherit__graph.png
new file mode 100644
index 0000000..0996b14
--- /dev/null
+++ b/doc/html/classcUPnPClassItem__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassMovie-members.html b/doc/html/classcUPnPClassMovie-members.html
new file mode 100644
index 0000000..09091b2
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie-members.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassMovie Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cMediaDatabase</b> (defined in <a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>)</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a>(const cListObject &amp;ListObject) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">createDIDLFragment</a>(IXML_Document *Document, cStringList *Filter)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a>()</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#7343932df4e5bfd9821e16026cb7c66d">cUPnPClassMovie</a>()</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#38ce1c18cc9d474791255fdcb43824d2">cUPnPClassVideoItem</a>()</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPMovieMediator</b> (defined in <a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>)</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjectMediator</b> (defined in <a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>)</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">getActors</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">getDescription</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">getDirectors</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#80a41ba769974e80635b80aa3c41f66d">getDVDRegionCode</a>() const </td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">getGenre</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">getLanguage</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">getLongDescription</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">getProducers</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">getProperty</a>(const char *Property, char **Value) const </td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">getPropertyList</a>()</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">getPublishers</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">getRating</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">getReference</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">getReferenceID</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">getRelations</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a>(unsigned int ResourceID) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#9fc36c7e0a1a465ec720b219a1710cc6">getStorageMedium</a>() const </td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8">mActors</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">mClass</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">mCreator</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e">mDescription</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">mDIDLFragment</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad">mDirectors</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#90cc86f3eb248bbea4b3bf845862455f">mDVDRegionCode</a></td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3">mGenre</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">mID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471">mLanguage</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">mLastModified</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59">mLongDescription</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">mParent</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0">mProducers</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e">mPublishers</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9">mRating</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">mReference</a></td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97">mRelations</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">mResources</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">mResourcesID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">mRestricted</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">mSortCriteria</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">mSortDescending</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#a9bcda545b8ce19e3b613757b3759127">mStorageMedium</a></td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">mTitle</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">mWriteStatus</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#33b104046098dbf66d894143181678c4">setActors</a>(const char *Actors)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a>(const char *Class)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a>(const char *Creator)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#f5a642732c66b6920f5b4646a4c34a92">setDescription</a>(const char *Description)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#a5fc1a420bfd307bbd026c0681162e0a">setDirectors</a>(const char *Directors)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#3df7d1a4d798fddde1b379a2302a128c">setDVDRegionCode</a>(int RegionCode)</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#1be14ea33f9bbf53e636fea3658cc6f8">setGenre</a>(const char *Genre)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#89c24d198ce7bdc31aac727e65b02a84">setLanguage</a>(const char *Language)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#05c5b8394cbfcaeffe5f99c885496e3d">setLongDescription</a>(const char *LongDescription)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a>(void)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a>(cUPnPClassContainer *Parent)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#3812b8056c9d2c7d13a7734e4219b27b">setProducers</a>(const char *Producers)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">setProperty</a>(const char *Property, const char *Value)</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#db14c0944a89f179832a4f4914caa4ca">setPublishers</a>(const char *Publishers)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#6d4143016fc91fcbb0db4e9f8a8a0047">setRating</a>(const char *Rating)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">setReference</a>(cUPnPClassItem *Reference)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#844385c5fb4f55c95a2994c7aaf120ef">setRelations</a>(const char *Relations)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a>(cList&lt; cUPnPResource &gt; *Resources)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a>(bool Restricted)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a>(const char *Property, bool Descending=false)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassMovie.html#136a1daa4c14c2d7397624eb288c463e">setStorageMedium</a>(const char *StorageMedium)</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a>(const char *Title)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a>(int Status)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassItem</b>() (defined in <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassMovie</b>() (defined in <a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>)</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassVideoItem</b>() (defined in <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassMovie.html b/doc/html/classcUPnPClassMovie.html
new file mode 100644
index 0000000..2116ad3
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie.html
@@ -0,0 +1,331 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPClassMovie Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassMovie Class Reference</h1><!-- doxytag: class="cUPnPClassMovie" --><!-- doxytag: inherits="cUPnPClassVideoItem" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPClassMovie:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassMovie__inherit__graph.png" border="0" usemap="#cUPnPClassMovie__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPClassMovie__inherit__map">
+<area shape="rect" href="classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="5,1125,187,1733"><area shape="rect" href="classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="16,869,176,1077"><area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="16,5,176,821"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPClassMovie:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassMovie__coll__graph.png" border="0" usemap="#cUPnPClassMovie__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPClassMovie__coll__map">
+<area shape="rect" href="classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="5,1595,187,2203"><area shape="rect" href="classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="16,1336,176,1544"><area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="16,469,176,1285"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="15,5,177,389"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPClassMovie-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cStringList *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">getPropertyList</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">setProperty</a> (const char *Property, const char *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">getProperty</a> (const char *Property, char **Value) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#3df7d1a4d798fddde1b379a2302a128c">setDVDRegionCode</a> (int RegionCode)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#136a1daa4c14c2d7397624eb288c463e">setStorageMedium</a> (const char *StorageMedium)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#80a41ba769974e80635b80aa3c41f66d">getDVDRegionCode</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#9fc36c7e0a1a465ec720b219a1710cc6">getStorageMedium</a> () const </td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#7343932df4e5bfd9821e16026cb7c66d">cUPnPClassMovie</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="90cc86f3eb248bbea4b3bf845862455f"></a><!-- doxytag: member="cUPnPClassMovie::mDVDRegionCode" ref="90cc86f3eb248bbea4b3bf845862455f" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#90cc86f3eb248bbea4b3bf845862455f">mDVDRegionCode</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Region code of the movie (0 - 8). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9bcda545b8ce19e3b613757b3759127"></a><!-- doxytag: member="cUPnPClassMovie::mStorageMedium" ref="a9bcda545b8ce19e3b613757b3759127" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#a9bcda545b8ce19e3b613757b3759127">mStorageMedium</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The storage medium where the movie is stored. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d0d0aedce8b1c661ea360b9a6d616f6"></a><!-- doxytag: member="cUPnPClassMovie::cMediaDatabase" ref="3d0d0aedce8b1c661ea360b9a6d616f6" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#3d0d0aedce8b1c661ea360b9a6d616f6">cMediaDatabase</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cUPnPClassMovie::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d1fb2eb621f67f9aa7abf2e67e1a5305"></a><!-- doxytag: member="cUPnPClassMovie::cUPnPMovieMediator" ref="d1fb2eb621f67f9aa7abf2e67e1a5305" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassMovie.html#d1fb2eb621f67f9aa7abf2e67e1a5305">cUPnPMovieMediator</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP class Movie<p>
+This is a UPnP class Movie representation with all its properties. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="7343932df4e5bfd9821e16026cb7c66d"></a><!-- doxytag: member="cUPnPClassMovie::cUPnPClassMovie" ref="7343932df4e5bfd9821e16026cb7c66d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPClassMovie::cUPnPClassMovie </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of a movie<p>
+This creates a new instance of a movie
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="80a41ba769974e80635b80aa3c41f66d"></a><!-- doxytag: member="cUPnPClassMovie::getDVDRegionCode" ref="80a41ba769974e80635b80aa3c41f66d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassMovie::getDVDRegionCode </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the DVD region code<p>
+This returns the DVD region code. For more information, see <a href="http://en.wikipedia.org/wiki/DVD_region_code">http://en.wikipedia.org/wiki/DVD_region_code</a><p>
+The integer representation for <em>ALL</em> is 9.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a href="http://en.wikipedia.org/wiki/DVD_region_code">http://en.wikipedia.org/wiki/DVD_region_code</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DVD region code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b4c1d5a973856469b93d2033b65d7ba2"></a><!-- doxytag: member="cUPnPClassMovie::getProperty" ref="b4c1d5a973856469b93d2033b65d7ba2" args="(const char *Property, char **Value) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassMovie::getProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gets a property<p>
+Returns the value of a specified property. The value is converted into a string.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">cUPnPClassVideoItem</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="b62e6dac175090b82c47f955e29c146c"></a><!-- doxytag: member="cUPnPClassMovie::getPropertyList" ref="b62e6dac175090b82c47f955e29c146c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cStringList * cUPnPClassMovie::getPropertyList </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the properties of the object<p>
+This returns a property list with all the properties which can be obtained or set with <code>getProperty</code> or <code>setProperty</code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a stringlist with the properties </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">cUPnPClassVideoItem</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="9fc36c7e0a1a465ec720b219a1710cc6"></a><!-- doxytag: member="cUPnPClassMovie::getStorageMedium" ref="9fc36c7e0a1a465ec720b219a1710cc6" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassMovie::getStorageMedium </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the storage medium<p>
+This returns the storage medium, where the movie resides.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the storage medium </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3df7d1a4d798fddde1b379a2302a128c"></a><!-- doxytag: member="cUPnPClassMovie::setDVDRegionCode" ref="3df7d1a4d798fddde1b379a2302a128c" args="(int RegionCode)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassMovie::setDVDRegionCode </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>RegionCode</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the DVD region code<p>
+For more information on this, see <a href="http://en.wikipedia.org/wiki/DVD_region_code">http://en.wikipedia.org/wiki/DVD_region_code</a><p>
+The integer representation for <em>ALL</em> is 9.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a href="http://en.wikipedia.org/wiki/DVD_region_code">http://en.wikipedia.org/wiki/DVD_region_code</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>RegionCode</em>&nbsp;</td><td>the region code of this movie </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d7f990edda85f2caabe822d2ceeb2b0d"></a><!-- doxytag: member="cUPnPClassMovie::setProperty" ref="d7f990edda85f2caabe822d2ceeb2b0d" args="(const char *Property, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassMovie::setProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets a property<p>
+Sets the value of a specified property. The value is converted from string into the propper data type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">cUPnPClassVideoItem</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="136a1daa4c14c2d7397624eb288c463e"></a><!-- doxytag: member="cUPnPClassMovie::setStorageMedium" ref="136a1daa4c14c2d7397624eb288c463e" args="(const char *StorageMedium)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassMovie::setStorageMedium </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>StorageMedium</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the storage medium<p>
+This will set the storage medium, where the movie resides. Valid media are defined in <a class="el" href="common_8h-source.html">common.h</a><p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="common_8h-source.html">common.h</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>StorageMedium</em>&nbsp;</td><td>the medium where the movie is located </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassMovie__coll__graph.map b/doc/html/classcUPnPClassMovie__coll__graph.map
new file mode 100644
index 0000000..6a4167c
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie__coll__graph.map
@@ -0,0 +1,4 @@
+<area shape="rect" href="$classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="5,1595,187,2203">
+<area shape="rect" href="$classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="16,1336,176,1544">
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="16,469,176,1285">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="15,5,177,389">
diff --git a/doc/html/classcUPnPClassMovie__coll__graph.md5 b/doc/html/classcUPnPClassMovie__coll__graph.md5
new file mode 100644
index 0000000..ea6c4cd
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie__coll__graph.md5
@@ -0,0 +1 @@
+273770f12108bb08fe7dd391c0968d14 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassMovie__coll__graph.png b/doc/html/classcUPnPClassMovie__coll__graph.png
new file mode 100644
index 0000000..a0d9f10
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassMovie__inherit__graph.map b/doc/html/classcUPnPClassMovie__inherit__graph.map
new file mode 100644
index 0000000..3b8e374
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie__inherit__graph.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="5,1125,187,1733">
+<area shape="rect" href="$classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="16,869,176,1077">
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="16,5,176,821">
diff --git a/doc/html/classcUPnPClassMovie__inherit__graph.md5 b/doc/html/classcUPnPClassMovie__inherit__graph.md5
new file mode 100644
index 0000000..00c542c
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie__inherit__graph.md5
@@ -0,0 +1 @@
+18a860ea33e96feef30bb73f113249f0 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassMovie__inherit__graph.png b/doc/html/classcUPnPClassMovie__inherit__graph.png
new file mode 100644
index 0000000..3c598e0
--- /dev/null
+++ b/doc/html/classcUPnPClassMovie__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassObject-members.html b/doc/html/classcUPnPClassObject-members.html
new file mode 100644
index 0000000..1a13191
--- /dev/null
+++ b/doc/html/classcUPnPClassObject-members.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassObject Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cMediaDatabase</b> (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a>(const cListObject &amp;ListObject) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#9090f5982129bc5aa15c6e19db627445">createDIDLFragment</a>(IXML_Document *Document, cStringList *Filter)=0</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPClassContainer</b> (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjectMediator</b> (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#539cf36abc96b95bc8437601fed8a0f6">getProperty</a>(const char *Property, char **Value) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4a4d2cd2e59d364050bb64a3d9dced6e">getPropertyList</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a>(unsigned int ResourceID) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">mClass</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">mCreator</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">mDIDLFragment</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">mID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">mLastModified</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">mParent</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">mResources</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">mResourcesID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">mRestricted</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">mSortCriteria</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">mSortDescending</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">mTitle</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">mWriteStatus</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a>(const char *Class)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a>(const char *Creator)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a>(void)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a>(cUPnPClassContainer *Parent)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#6f2a803a0d0e148133edce23ed6c0e7c">setProperty</a>(const char *Property, const char *Value)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a>(cList&lt; cUPnPResource &gt; *Resources)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a>(bool Restricted)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a>(const char *Property, bool Descending=false)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a>(const char *Title)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a>(int Status)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassObject.html b/doc/html/classcUPnPClassObject.html
new file mode 100644
index 0000000..ef53cd9
--- /dev/null
+++ b/doc/html/classcUPnPClassObject.html
@@ -0,0 +1,1039 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPClassObject Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassObject Class Reference</h1><!-- doxytag: class="cUPnPClassObject" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPClassObject:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassObject__inherit__graph.png" border="0" usemap="#cUPnPClassObject__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPClassObject__inherit__map">
+<area shape="rect" href="classcUPnPClassContainer.html" title="{cUPnPClassContainer\n|# mContainerType\l# mSearchClasses\l# mCreateClasses\l# mSearchable\l# mUpdateID\l# mChildren\l# mChildrenID\l|+ ~cUPnPClassContainer()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ getContainer()\l+ addObject()\l+ removeObject()\l+ getObject()\l+ getObjectList()\l+ addSearchClass()\l+ delSearchClass()\l+ addCreateClass()\l+ delCreateClass()\l+ setContainerType()\l+ setSearchClasses()\l+ setCreateClasses()\l+ setSearchable()\l+ getContainerType()\l+ getSearchClasses()\l+ getCreateClasses()\l+ isSearchable()\l+ getChildCount()\l+ getUpdateID()\l+ isUpdated()\l# update()\l# setUpdateID()\l# cUPnPClassContainer()\l}" alt="" coords="5,869,184,1477"><area shape="rect" href="classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="208,1069,368,1277"><area shape="rect" href="classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="197,1525,379,2133"><area shape="rect" href="classcUPnPClassMovie.html" title="{cUPnPClassMovie\n|# mDVDRegionCode\l# mStorageMedium\l|+ ~cUPnPClassMovie()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setDVDRegionCode()\l+ setStorageMedium()\l+ getDVDRegionCode()\l+ getStorageMedium()\l# cUPnPClassMovie()\l}" alt="" coords="104,2229,261,2453"><area shape="rect" href="classcUPnPClassVideoBroadcast.html" title="{cUPnPClassVideoBroadcast\n|# mIcon\l# mRegion\l# mChannelNr\l# mChannelName\l|+ ~cUPnPClassVideoBroadcast()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setIcon()\l+ setRegion()\l+ setChannelNr()\l+ setChannelName()\l+ getIcon()\l+ getRegion()\l+ getChannelNr()\l+ getChannelName()\l# cUPnPClassVideoBroadcast()\l}" alt="" coords="285,2181,501,2501"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPClassObject:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassObject__coll__graph.png" border="0" usemap="#cUPnPClassObject__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPClassObject__coll__map">
+<area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPClassObject-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a> (const cListObject &amp;ListObject) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cStringList *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#4a4d2cd2e59d364050bb64a3d9dced6e">getPropertyList</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#539cf36abc96b95bc8437601fed8a0f6">getProperty</a> (const char *Property, char **Value) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#6f2a803a0d0e148133edce23ed6c0e7c">setProperty</a> (const char *Property, const char *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual IXML_Node *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#9090f5982129bc5aa15c6e19db627445">createDIDLFragment</a> (IXML_Document *Document, cStringList *Filter)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a> (const char *Property, bool Descending=false)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a> (const char *Title)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a> (const char *Creator)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a> (bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a> (int Status)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a> (cList&lt; <a class="el" href="classcUPnPResource.html">cUPnPResource</a> &gt; *Resources)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a> (<a class="el" href="classcUPnPResource.html">cUPnPResource</a> *Resource)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a> (<a class="el" href="classcUPnPResource.html">cUPnPResource</a> *Resource)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a> (unsigned int ResourceID) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">cList&lt; <a class="el" href="classcUPnPResource.html">cUPnPResource</a> &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a> () const </td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a> (<a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> *Parent)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a> (const char *Class)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a> (void)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3196f065470aac0fd027ff81225f18e1"></a><!-- doxytag: member="cUPnPClassObject::mLastModified" ref="3196f065470aac0fd027ff81225f18e1" args="" -->
+time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">mLastModified</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last modification of this property. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="96ccf6ef7924ae0d440a87cc88221e08"></a><!-- doxytag: member="cUPnPClassObject::mID" ref="96ccf6ef7924ae0d440a87cc88221e08" args="" -->
+<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">mID</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The object ID. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bccecf0a80934f907c3ede2dfe5fc27d"></a><!-- doxytag: member="cUPnPClassObject::mParent" ref="bccecf0a80934f907c3ede2dfe5fc27d" args="" -->
+<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">mParent</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parent object. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="60875cd885a2ac83b5c8eba2f4b98c20"></a><!-- doxytag: member="cUPnPClassObject::mClass" ref="60875cd885a2ac83b5c8eba2f4b98c20" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">mClass</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class (Who am I?). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b31f0c0cb2d9761c90713a1744634ec6"></a><!-- doxytag: member="cUPnPClassObject::mTitle" ref="b31f0c0cb2d9761c90713a1744634ec6" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">mTitle</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Object title. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5e80e4679babeaaee989b0591046137"></a><!-- doxytag: member="cUPnPClassObject::mCreator" ref="a5e80e4679babeaaee989b0591046137" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">mCreator</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creator of this object. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d3709ce6e3c60a3cea616e437408d9b5"></a><!-- doxytag: member="cUPnPClassObject::mRestricted" ref="d3709ce6e3c60a3cea616e437408d9b5" args="" -->
+bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">mRestricted</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ability of changing metadata? <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63ae3b00533846717e40fdf4729d50c9"></a><!-- doxytag: member="cUPnPClassObject::mWriteStatus" ref="63ae3b00533846717e40fdf4729d50c9" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">mWriteStatus</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ability of writing resources? <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3da123add3d4de3c6d9a6fe76c666253"></a><!-- doxytag: member="cUPnPClassObject::mResources" ref="3da123add3d4de3c6d9a6fe76c666253" args="" -->
+cList&lt; <a class="el" href="classcUPnPResource.html">cUPnPResource</a> &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">mResources</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The resources of this object. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36028ece195b24fa9ff01c2713a8a291"></a><!-- doxytag: member="cUPnPClassObject::mResourcesID" ref="36028ece195b24fa9ff01c2713a8a291" args="" -->
+cHash&lt; <a class="el" href="classcUPnPResource.html">cUPnPResource</a> &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">mResourcesID</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The resources of this object as hashmap. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="21b48ab17d1d7379943aa9d4c026046a"></a><!-- doxytag: member="cUPnPClassObject::mDIDLFragment" ref="21b48ab17d1d7379943aa9d4c026046a" args="" -->
+IXML_Document *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">mDIDLFragment</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The DIDL fragment of the object. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f7156d07778825170844d35fda5959eb"></a><!-- doxytag: member="cUPnPClassObject::mSortCriteria" ref="f7156d07778825170844d35fda5959eb" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">mSortCriteria</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The sort criteria to sort with. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0bcc859a9bb114ebf93c474137bf157c"></a><!-- doxytag: member="cUPnPClassObject::mSortDescending" ref="0bcc859a9bb114ebf93c474137bf157c" args="" -->
+bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">mSortDescending</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The direction of the sort. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d0d0aedce8b1c661ea360b9a6d616f6"></a><!-- doxytag: member="cUPnPClassObject::cMediaDatabase" ref="3d0d0aedce8b1c661ea360b9a6d616f6" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#3d0d0aedce8b1c661ea360b9a6d616f6">cMediaDatabase</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cUPnPClassObject::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cb2ebde5758d6dc066be77d5a94d9f27"></a><!-- doxytag: member="cUPnPClassObject::cUPnPClassContainer" ref="cb2ebde5758d6dc066be77d5a94d9f27" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassObject.html#cb2ebde5758d6dc066be77d5a94d9f27">cUPnPClassContainer</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP class Object<p>
+This is a UPnP class Object representation with all its properties. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="3132df806f003bde133e6724125366f2"></a><!-- doxytag: member="cUPnPClassObject::addResource" ref="3132df806f003bde133e6724125366f2" args="(cUPnPResource *Resource)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::addResource </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td>
+ <td class="paramname"> <em>Resource</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add resource to list<p>
+This adds the specified resource to the resource list of the object<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Resource</em>&nbsp;</td><td>the resource to be added </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="19295252a40ad5fd1a4870a473ac90ea"></a><!-- doxytag: member="cUPnPClassObject::clearSortCriteria" ref="19295252a40ad5fd1a4870a473ac90ea" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPClassObject::clearSortCriteria </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clears the sort criteria<p>
+Clears the property of the sort criteria and sets the descending flag to false.
+</div>
+</div><p>
+<a class="anchor" name="7297d228db4033bf8968eaee502131dd"></a><!-- doxytag: member="cUPnPClassObject::Compare" ref="7297d228db4033bf8968eaee502131dd" args="(const cListObject &amp;ListObject) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::Compare </td>
+ <td>(</td>
+ <td class="paramtype">const cListObject &amp;&nbsp;</td>
+ <td class="paramname"> <em>ListObject</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compares a object<p>
+This compares a given object with this object It uses the SortCriteria to compare them.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&gt;0</code>,</b> if the object comes after this one</li><li><b><code>0</code>,</b> if the objects have the same property</li><li><b><code>&lt;0</code>,</b> if the object comes before this one </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ListObject</em>&nbsp;</td><td>the object to compare with </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9090f5982129bc5aa15c6e19db627445"></a><!-- doxytag: member="cUPnPClassObject::createDIDLFragment" ref="9090f5982129bc5aa15c6e19db627445" args="(IXML_Document *Document, cStringList *Filter)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual IXML_Node* cUPnPClassObject::createDIDLFragment </td>
+ <td>(</td>
+ <td class="paramtype">IXML_Document *&nbsp;</td>
+ <td class="paramname"> <em>Document</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cStringList *&nbsp;</td>
+ <td class="paramname"> <em>Filter</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create the DIDL fragment<p>
+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified <em>IXML</em> document. The details of the output can be controlled via the filter stringlist<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DIDL fragment of the object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Document</em>&nbsp;</td><td>the IXML document where to write the contents </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Filter</em>&nbsp;</td><td>the string list with the filter criteria </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">cUPnPClassItem</a>, and <a class="el" href="classcUPnPClassContainer.html#fec5b0bae4ed2d194bfc9973f14a3926">cUPnPClassContainer</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="39c9bb75681ce4517c4eff6a6bdffad7"></a><!-- doxytag: member="cUPnPClassObject::getClass" ref="39c9bb75681ce4517c4eff6a6bdffad7" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassObject::getClass </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the object class<p>
+This returns the object class of the object. The classes are defined by the UPnP Working Committee. However, custom classes which are derived from a standardized class are also possible.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the class of the object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ce6f39a8484ae48ea9801b11046cd2a6"></a><!-- doxytag: member="cUPnPClassObject::getContainer" ref="ce6f39a8484ae48ea9801b11046cd2a6" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* cUPnPClassObject::getContainer </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Converts to container<p>
+This will convert the object into a container if it is one. If not, it returns <b><code>NULL</code>.</b> <p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>NULL</code>,</b> if it is not a container</li><li>a container representation of this object </li></ul>
+</dd></dl>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassContainer.html#32eb7f1d0b3821f0d9573fe59befdf10">cUPnPClassContainer</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2069a6b6653c5dcbbaa582fbc9ea3075"></a><!-- doxytag: member="cUPnPClassObject::getCreator" ref="2069a6b6653c5dcbbaa582fbc9ea3075" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassObject::getCreator </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the creator<p>
+This returns the creator of the object. Usually, this is the primary content creator or the owner of the object<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the creator of the object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8ae04f4f645c764c0179be1cbf99941a"></a><!-- doxytag: member="cUPnPClassObject::getID" ref="8ae04f4f645c764c0179be1cbf99941a" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> cUPnPClassObject::getID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the object ID<p>
+This returns the object ID of the object.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object ID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4787df89382fc962598fe4008a3eefd9"></a><!-- doxytag: member="cUPnPClassObject::getParent" ref="4787df89382fc962598fe4008a3eefd9" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* cUPnPClassObject::getParent </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the parent object<p>
+This returns the parent container object, associated with this object. It is <b><code>NULL</code>,</b> if the object is the root object.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the parent object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9eb008855499fc1afcd807cb019d7abe"></a><!-- doxytag: member="cUPnPClassObject::getParentID" ref="9eb008855499fc1afcd807cb019d7abe" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> cUPnPClassObject::getParentID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the parent ID<p>
+This returns the ID of the parent container object, associated with this object. It is <b><code>-1</code>,</b> if the object is the root object.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the parent ID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="539cf36abc96b95bc8437601fed8a0f6"></a><!-- doxytag: member="cUPnPClassObject::getProperty" ref="539cf36abc96b95bc8437601fed8a0f6" args="(const char *Property, char **Value) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassObject::getProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gets a property<p>
+Returns the value of a specified property. The value is converted into a string.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassItem.html#31f7010baa65cc25b95a864f05eb4e62">cUPnPClassItem</a>, <a class="el" href="classcUPnPClassContainer.html#f70297d2275e083f05024524d21118d7">cUPnPClassContainer</a>, <a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">cUPnPClassVideoItem</a>, <a class="el" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="4a4d2cd2e59d364050bb64a3d9dced6e"></a><!-- doxytag: member="cUPnPClassObject::getPropertyList" ref="4a4d2cd2e59d364050bb64a3d9dced6e" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cStringList * cUPnPClassObject::getPropertyList </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the properties of the object<p>
+This returns a property list with all the properties which can be obtained or set with <code>getProperty</code> or <code>setProperty</code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a stringlist with the properties </dd></dl>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassItem.html#add0c9d378036e270e6f99d8d1409e3b">cUPnPClassItem</a>, <a class="el" href="classcUPnPClassContainer.html#d952c993314a9352d13f644bb95fbdc2">cUPnPClassContainer</a>, <a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">cUPnPClassVideoItem</a>, <a class="el" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7bce9528b984a9f943d9a1892bb592ad"></a><!-- doxytag: member="cUPnPClassObject::getResource" ref="7bce9528b984a9f943d9a1892bb592ad" args="(unsigned int ResourceID) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPResource.html">cUPnPResource</a>* cUPnPClassObject::getResource </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>ResourceID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a resource by its ID<p>
+Returns the resource with the specified resource ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resource by ID </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ResourceID</em>&nbsp;</td><td>the resource ID of the demanded resource </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="24136f55324f724bfe7129eb424f4597"></a><!-- doxytag: member="cUPnPClassObject::getResources" ref="24136f55324f724bfe7129eb424f4597" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cList&lt;<a class="el" href="classcUPnPResource.html">cUPnPResource</a>&gt;* cUPnPClassObject::getResources </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the resources<p>
+This returns a list with resources associated with this object.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resources of this object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="12312c25d2a926f4d4fe5c4e0eb46f6a"></a><!-- doxytag: member="cUPnPClassObject::getTitle" ref="12312c25d2a926f4d4fe5c4e0eb46f6a" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassObject::getTitle </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the title<p>
+This returns the title of the object. This may be the title of an item or the folder name in case of a container.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the title of the object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c3ac47d3b60823e7efd31f5b58b9d331"></a><!-- doxytag: member="cUPnPClassObject::getWriteStatus" ref="c3ac47d3b60823e7efd31f5b58b9d331" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::getWriteStatus </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get write status<p>
+This returns the write status of the object. It gives information, if the resource is modifiable.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the write status </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="44f963ff6d731daca5b163ddbb1cf50f"></a><!-- doxytag: member="cUPnPClassObject::isContainer" ref="44f963ff6d731daca5b163ddbb1cf50f" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassObject::isContainer </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Is this a container?<p>
+Returns if this object is a container or not<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if it is a container</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a5498dca2bf917a16f2a8d78f34b6516"></a><!-- doxytag: member="cUPnPClassObject::isRestricted" ref="a5498dca2bf917a16f2a8d78f34b6516" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassObject::isRestricted </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Is the resource restricted?<p>
+Returns <b><code>true</code>,</b> if the object is restricted or <b><code>false</code>,</b> otherwise. When the object is restricted, then modifications to the metadata of the object are disallowed.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the object is restricted</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="18c91d90256db85d1356db17b27f69c3"></a><!-- doxytag: member="cUPnPClassObject::modified" ref="18c91d90256db85d1356db17b27f69c3" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">time_t cUPnPClassObject::modified </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Last modified<p>
+Returns when the object was modified the last time.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>last modification timestamp </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5df5b5c205aaaeea44a1e5d03b7cba23"></a><!-- doxytag: member="cUPnPClassObject::removeResource" ref="5df5b5c205aaaeea44a1e5d03b7cba23" args="(cUPnPResource *Resource)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::removeResource </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td>
+ <td class="paramname"> <em>Resource</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove resource from list<p>
+This removes the specified resource from the resource list of the object<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Resource</em>&nbsp;</td><td>the resource to be removed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="980233a73fe6b3286313f992909602ae"></a><!-- doxytag: member="cUPnPClassObject::setClass" ref="980233a73fe6b3286313f992909602ae" args="(const char *Class)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setClass </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Class</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the object class<p>
+This is only allowed by mediators and the media database. Manually editing the object class may result in unpredictable behavior.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Class</em>&nbsp;</td><td>the class of this object </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b59e3528eda8c223f5336bd8a7d47527"></a><!-- doxytag: member="cUPnPClassObject::setCreator" ref="b59e3528eda8c223f5336bd8a7d47527" args="(const char *Creator)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setCreator </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Creator</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the creator<p>
+The creator of an object is primarily the creator or owner of the object<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Creator</em>&nbsp;</td><td>the creator of the object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1e00f20de14c17cfebd4f6670d5e548d"></a><!-- doxytag: member="cUPnPClassObject::setID" ref="1e00f20de14c17cfebd4f6670d5e548d" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setID </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the Object ID<p>
+This is only allowed by mediators and the media database. Manually editing the object ID may result in unpredictable behavior.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the ObjectID of this object </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f5c5ca8dd663fe6c59ee2d29dba870e5"></a><!-- doxytag: member="cUPnPClassObject::setModified" ref="f5c5ca8dd663fe6c59ee2d29dba870e5" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPClassObject::setModified </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline, protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the modification time<p>
+This sets the last modification time to the current timestamp. This is used to indicate when the object was updated the last time.
+</div>
+</div><p>
+<a class="anchor" name="d092a68523a7e3a8bd8d1b6f79888eff"></a><!-- doxytag: member="cUPnPClassObject::setParent" ref="d092a68523a7e3a8bd8d1b6f79888eff" args="(cUPnPClassContainer *Parent)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setParent </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> *&nbsp;</td>
+ <td class="paramname"> <em>Parent</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the Parent Object<p>
+This is only allowed by mediators and the media database. Manually editing the parent may result in unpredictable behavior.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Parent</em>&nbsp;</td><td>the parent of this object </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6f2a803a0d0e148133edce23ed6c0e7c"></a><!-- doxytag: member="cUPnPClassObject::setProperty" ref="6f2a803a0d0e148133edce23ed6c0e7c" args="(const char *Property, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassObject::setProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets a property<p>
+Sets the value of a specified property. The value is converted from string into the propper data type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassItem.html#ab17057659c17792a5b67f4297ade642">cUPnPClassItem</a>, <a class="el" href="classcUPnPClassContainer.html#488761ebb4f074ded0d5374f862a1b54">cUPnPClassContainer</a>, <a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">cUPnPClassVideoItem</a>, <a class="el" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="18856f1b0320713a754a87f66b62396e"></a><!-- doxytag: member="cUPnPClassObject::setResources" ref="18856f1b0320713a754a87f66b62396e" args="(cList&lt; cUPnPResource &gt; *Resources)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setResources </td>
+ <td>(</td>
+ <td class="paramtype">cList&lt; <a class="el" href="classcUPnPResource.html">cUPnPResource</a> &gt; *&nbsp;</td>
+ <td class="paramname"> <em>Resources</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the resources<p>
+This sets the list of resources of an object. The list usally contain a single resource. However, multiple resources a also very common.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Resources</em>&nbsp;</td><td>the resource list of this object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="40819ea39a75fc93e8c8a2ffde43732d"></a><!-- doxytag: member="cUPnPClassObject::setRestricted" ref="40819ea39a75fc93e8c8a2ffde43732d" args="(bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setRestricted </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the restriction<p>
+This sets the restriction flag. If the object is restricted, no modifications to its metadata by the user are allowed.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td><b><code>true</code>,</b> to disallow modification, <b><code>false</code> to</b> allow it </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6bf77953db1fd098a0ec5bc8795e6c6b"></a><!-- doxytag: member="cUPnPClassObject::setSortCriteria" ref="6bf77953db1fd098a0ec5bc8795e6c6b" args="(const char *Property, bool Descending=false)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPClassObject::setSortCriteria </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Descending</em> = <code>false</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the sort criteria<p>
+This sets a certain criteria which the object can be compared with.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property to sort after </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Descending</em>&nbsp;</td><td>sort the objects in descending order </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="717c3efc5b21fc0c92ef19f1925b24c5"></a><!-- doxytag: member="cUPnPClassObject::setTitle" ref="717c3efc5b21fc0c92ef19f1925b24c5" args="(const char *Title)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setTitle </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the title<p>
+This sets the title of the object. It is a required metadata information. It must not be <b><code>NULL</code> or</b> an empty string.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of the object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4731b6c591544342da067f5abef5b661"></a><!-- doxytag: member="cUPnPClassObject::setWriteStatus" ref="4731b6c591544342da067f5abef5b661" args="(int Status)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassObject::setWriteStatus </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Status</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the write status<p>
+This sets the write status of a resource. With this indicator, you can set the modifiabilty of resources by a control point.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Status</em>&nbsp;</td><td>the write status </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassObject__coll__graph.map b/doc/html/classcUPnPClassObject__coll__graph.map
new file mode 100644
index 0000000..a09fd35
--- /dev/null
+++ b/doc/html/classcUPnPClassObject__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389">
diff --git a/doc/html/classcUPnPClassObject__coll__graph.md5 b/doc/html/classcUPnPClassObject__coll__graph.md5
new file mode 100644
index 0000000..de7083f
--- /dev/null
+++ b/doc/html/classcUPnPClassObject__coll__graph.md5
@@ -0,0 +1 @@
+a39d7ab6ef69ff2c48df588fc7cd5d6c \ No newline at end of file
diff --git a/doc/html/classcUPnPClassObject__coll__graph.png b/doc/html/classcUPnPClassObject__coll__graph.png
new file mode 100644
index 0000000..5f1a913
--- /dev/null
+++ b/doc/html/classcUPnPClassObject__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassObject__inherit__graph.map b/doc/html/classcUPnPClassObject__inherit__graph.map
new file mode 100644
index 0000000..6887c87
--- /dev/null
+++ b/doc/html/classcUPnPClassObject__inherit__graph.map
@@ -0,0 +1,5 @@
+<area shape="rect" href="$classcUPnPClassContainer.html" title="{cUPnPClassContainer\n|# mContainerType\l# mSearchClasses\l# mCreateClasses\l# mSearchable\l# mUpdateID\l# mChildren\l# mChildrenID\l|+ ~cUPnPClassContainer()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ getContainer()\l+ addObject()\l+ removeObject()\l+ getObject()\l+ getObjectList()\l+ addSearchClass()\l+ delSearchClass()\l+ addCreateClass()\l+ delCreateClass()\l+ setContainerType()\l+ setSearchClasses()\l+ setCreateClasses()\l+ setSearchable()\l+ getContainerType()\l+ getSearchClasses()\l+ getCreateClasses()\l+ isSearchable()\l+ getChildCount()\l+ getUpdateID()\l+ isUpdated()\l# update()\l# setUpdateID()\l# cUPnPClassContainer()\l}" alt="" coords="5,869,184,1477">
+<area shape="rect" href="$classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="208,1069,368,1277">
+<area shape="rect" href="$classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="197,1525,379,2133">
+<area shape="rect" href="$classcUPnPClassMovie.html" title="{cUPnPClassMovie\n|# mDVDRegionCode\l# mStorageMedium\l|+ ~cUPnPClassMovie()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setDVDRegionCode()\l+ setStorageMedium()\l+ getDVDRegionCode()\l+ getStorageMedium()\l# cUPnPClassMovie()\l}" alt="" coords="104,2229,261,2453">
+<area shape="rect" href="$classcUPnPClassVideoBroadcast.html" title="{cUPnPClassVideoBroadcast\n|# mIcon\l# mRegion\l# mChannelNr\l# mChannelName\l|+ ~cUPnPClassVideoBroadcast()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setIcon()\l+ setRegion()\l+ setChannelNr()\l+ setChannelName()\l+ getIcon()\l+ getRegion()\l+ getChannelNr()\l+ getChannelName()\l# cUPnPClassVideoBroadcast()\l}" alt="" coords="285,2181,501,2501">
diff --git a/doc/html/classcUPnPClassObject__inherit__graph.md5 b/doc/html/classcUPnPClassObject__inherit__graph.md5
new file mode 100644
index 0000000..ab54cf6
--- /dev/null
+++ b/doc/html/classcUPnPClassObject__inherit__graph.md5
@@ -0,0 +1 @@
+4b8dd48df259f0ea0d22fafd668610b0 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassObject__inherit__graph.png b/doc/html/classcUPnPClassObject__inherit__graph.png
new file mode 100644
index 0000000..e9e27e1
--- /dev/null
+++ b/doc/html/classcUPnPClassObject__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassVideoBroadcast-members.html b/doc/html/classcUPnPClassVideoBroadcast-members.html
new file mode 100644
index 0000000..9d41cff
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast-members.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassVideoBroadcast Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cMediaDatabase</b> (defined in <a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a>(const cListObject &amp;ListObject) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">createDIDLFragment</a>(IXML_Document *Document, cStringList *Filter)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a>()</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#a8d1e73bc9cbb20da6727f3c2e823d79">cUPnPClassVideoBroadcast</a>()</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#38ce1c18cc9d474791255fdcb43824d2">cUPnPClassVideoItem</a>()</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjectMediator</b> (defined in <a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPVideoBroadcastMediator</b> (defined in <a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">getActors</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#b63ea63a4ab8ac3cb654b0bab4df620a">getChannelName</a>() const </td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#6065509557e13176878098861fcfeb9d">getChannelNr</a>() const </td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">getDescription</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">getDirectors</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">getGenre</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#f4c2a9f5d62e41d853385b7b7685d536">getIcon</a>() const </td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">getLanguage</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">getLongDescription</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">getProducers</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">getProperty</a>(const char *Property, char **Value) const </td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">getPropertyList</a>()</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">getPublishers</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">getRating</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">getReference</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">getReferenceID</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#f4582c82588879c110947fdfc50b7895">getRegion</a>() const </td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">getRelations</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a>(unsigned int ResourceID) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8">mActors</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#aae072a7d7a21b699561a62700971c26">mChannelName</a></td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#8ad5b61bf9e88e1b30a132ca72b0d905">mChannelNr</a></td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">mClass</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">mCreator</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e">mDescription</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">mDIDLFragment</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad">mDirectors</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3">mGenre</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#24aa59d4c90d705f651cddf4ed90ad73">mIcon</a></td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">mID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471">mLanguage</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">mLastModified</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59">mLongDescription</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">mParent</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0">mProducers</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e">mPublishers</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9">mRating</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">mReference</a></td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#9a9420e700fd45afd24beba8ae261909">mRegion</a></td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97">mRelations</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">mResources</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">mResourcesID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">mRestricted</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">mSortCriteria</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">mSortDescending</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">mTitle</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">mWriteStatus</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#33b104046098dbf66d894143181678c4">setActors</a>(const char *Actors)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#b3d1740f8ad67cec1c82c23078b03189">setChannelName</a>(const char *ChannelName)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#4a7804c6c86531d7e23cbc714daa6077">setChannelNr</a>(int ChannelNr)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a>(const char *Class)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a>(const char *Creator)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#f5a642732c66b6920f5b4646a4c34a92">setDescription</a>(const char *Description)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#a5fc1a420bfd307bbd026c0681162e0a">setDirectors</a>(const char *Directors)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#1be14ea33f9bbf53e636fea3658cc6f8">setGenre</a>(const char *Genre)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#13e432f8a97072f3b45b1d199b82ae02">setIcon</a>(const char *IconURI)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#89c24d198ce7bdc31aac727e65b02a84">setLanguage</a>(const char *Language)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#05c5b8394cbfcaeffe5f99c885496e3d">setLongDescription</a>(const char *LongDescription)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a>(void)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a>(cUPnPClassContainer *Parent)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#3812b8056c9d2c7d13a7734e4219b27b">setProducers</a>(const char *Producers)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">setProperty</a>(const char *Property, const char *Value)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#db14c0944a89f179832a4f4914caa4ca">setPublishers</a>(const char *Publishers)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#6d4143016fc91fcbb0db4e9f8a8a0047">setRating</a>(const char *Rating)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">setReference</a>(cUPnPClassItem *Reference)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoBroadcast.html#228fcc06291dc3989917bbfa5ce3153f">setRegion</a>(const char *Region)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#844385c5fb4f55c95a2994c7aaf120ef">setRelations</a>(const char *Relations)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a>(cList&lt; cUPnPResource &gt; *Resources)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a>(bool Restricted)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a>(const char *Property, bool Descending=false)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a>(const char *Title)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a>(int Status)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassItem</b>() (defined in <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassVideoBroadcast</b>() (defined in <a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>)</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassVideoItem</b>() (defined in <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassVideoBroadcast.html b/doc/html/classcUPnPClassVideoBroadcast.html
new file mode 100644
index 0000000..a6d0f23
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast.html
@@ -0,0 +1,446 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPClassVideoBroadcast Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassVideoBroadcast Class Reference</h1><!-- doxytag: class="cUPnPClassVideoBroadcast" --><!-- doxytag: inherits="cUPnPClassVideoItem" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPClassVideoBroadcast:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassVideoBroadcast__inherit__graph.png" border="0" usemap="#cUPnPClassVideoBroadcast__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPClassVideoBroadcast__inherit__map">
+<area shape="rect" href="classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="23,1125,204,1733"><area shape="rect" href="classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="33,869,193,1077"><area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="33,5,193,821"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPClassVideoBroadcast:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassVideoBroadcast__coll__graph.png" border="0" usemap="#cUPnPClassVideoBroadcast__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPClassVideoBroadcast__coll__map">
+<area shape="rect" href="classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="23,1595,204,2203"><area shape="rect" href="classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="33,1336,193,1544"><area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="33,469,193,1285"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="32,5,195,389"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPClassVideoBroadcast-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cStringList *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">getPropertyList</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">setProperty</a> (const char *Property, const char *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">getProperty</a> (const char *Property, char **Value) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#13e432f8a97072f3b45b1d199b82ae02">setIcon</a> (const char *IconURI)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#228fcc06291dc3989917bbfa5ce3153f">setRegion</a> (const char *Region)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#4a7804c6c86531d7e23cbc714daa6077">setChannelNr</a> (int ChannelNr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#b3d1740f8ad67cec1c82c23078b03189">setChannelName</a> (const char *ChannelName)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#f4c2a9f5d62e41d853385b7b7685d536">getIcon</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#f4582c82588879c110947fdfc50b7895">getRegion</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#6065509557e13176878098861fcfeb9d">getChannelNr</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#b63ea63a4ab8ac3cb654b0bab4df620a">getChannelName</a> () const </td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#a8d1e73bc9cbb20da6727f3c2e823d79">cUPnPClassVideoBroadcast</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="24aa59d4c90d705f651cddf4ed90ad73"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::mIcon" ref="24aa59d4c90d705f651cddf4ed90ad73" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#24aa59d4c90d705f651cddf4ed90ad73">mIcon</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The channel icon of the channel. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9a9420e700fd45afd24beba8ae261909"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::mRegion" ref="9a9420e700fd45afd24beba8ae261909" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#9a9420e700fd45afd24beba8ae261909">mRegion</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The region where the channel can be received. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ad5b61bf9e88e1b30a132ca72b0d905"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::mChannelNr" ref="8ad5b61bf9e88e1b30a132ca72b0d905" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#8ad5b61bf9e88e1b30a132ca72b0d905">mChannelNr</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The channel number. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aae072a7d7a21b699561a62700971c26"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::mChannelName" ref="aae072a7d7a21b699561a62700971c26" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#aae072a7d7a21b699561a62700971c26">mChannelName</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The channel name or provider name. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d0d0aedce8b1c661ea360b9a6d616f6"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::cMediaDatabase" ref="3d0d0aedce8b1c661ea360b9a6d616f6" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#3d0d0aedce8b1c661ea360b9a6d616f6">cMediaDatabase</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="23986410a02651ff37a4699efbb7f209"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::cUPnPVideoBroadcastMediator" ref="23986410a02651ff37a4699efbb7f209" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoBroadcast.html#23986410a02651ff37a4699efbb7f209">cUPnPVideoBroadcastMediator</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP class VideoBroadcast<p>
+This is a UPnP class VideoBroadcast representation with all its properties. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="a8d1e73bc9cbb20da6727f3c2e823d79"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast" ref="a8d1e73bc9cbb20da6727f3c2e823d79" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of a video broadcast<p>
+This creates a new instance of a video broadcast
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="b63ea63a4ab8ac3cb654b0bab4df620a"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::getChannelName" ref="b63ea63a4ab8ac3cb654b0bab4df620a" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoBroadcast::getChannelName </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the channel name<p>
+This returns the channel name or provider name respectively<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the channel name </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6065509557e13176878098861fcfeb9d"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::getChannelNr" ref="6065509557e13176878098861fcfeb9d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoBroadcast::getChannelNr </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the channel number<p>
+This returns the channel number<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the channel number </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f4c2a9f5d62e41d853385b7b7685d536"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::getIcon" ref="f4c2a9f5d62e41d853385b7b7685d536" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoBroadcast::getIcon </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the channel icon<p>
+This returns the channel icon of the channel.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the channel icon </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e1d13a13de094337cea6be214c4da0f0"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::getProperty" ref="e1d13a13de094337cea6be214c4da0f0" args="(const char *Property, char **Value) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassVideoBroadcast::getProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gets a property<p>
+Returns the value of a specified property. The value is converted into a string.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">cUPnPClassVideoItem</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="192f6a04c87fe8d56f99c71337cf0f68"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::getPropertyList" ref="192f6a04c87fe8d56f99c71337cf0f68" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cStringList * cUPnPClassVideoBroadcast::getPropertyList </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the properties of the object<p>
+This returns a property list with all the properties which can be obtained or set with <code>getProperty</code> or <code>setProperty</code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a stringlist with the properties </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">cUPnPClassVideoItem</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f4582c82588879c110947fdfc50b7895"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::getRegion" ref="f4582c82588879c110947fdfc50b7895" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoBroadcast::getRegion </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the region<p>
+This returns the region, where the channel can be received<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the channel region </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b3d1740f8ad67cec1c82c23078b03189"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::setChannelName" ref="b3d1740f8ad67cec1c82c23078b03189" args="(const char *ChannelName)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoBroadcast::setChannelName </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>ChannelName</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the channel name<p>
+This sets the channel name or the provider of the channel.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ChannelName</em>&nbsp;</td><td>the channel name </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4a7804c6c86531d7e23cbc714daa6077"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::setChannelNr" ref="4a7804c6c86531d7e23cbc714daa6077" args="(int ChannelNr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoBroadcast::setChannelNr </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ChannelNr</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set channel number<p>
+This sets the channel number, so that it can be used for directly navigation or channel up and down navigation respectively.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ChannelNr</em>&nbsp;</td><td>the channel number </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="13e432f8a97072f3b45b1d199b82ae02"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::setIcon" ref="13e432f8a97072f3b45b1d199b82ae02" args="(const char *IconURI)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoBroadcast::setIcon </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>IconURI</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the channel icon<p>
+This sets the channel icon of this channel. The resource must be a valid URI which can be obtained via the internal webserver<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IconURI</em>&nbsp;</td><td>the URI to the icon file </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ce7a341834e448479d3c8f4f0254ce43"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::setProperty" ref="ce7a341834e448479d3c8f4f0254ce43" args="(const char *Property, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassVideoBroadcast::setProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets a property<p>
+Sets the value of a specified property. The value is converted from string into the propper data type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">cUPnPClassVideoItem</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="228fcc06291dc3989917bbfa5ce3153f"></a><!-- doxytag: member="cUPnPClassVideoBroadcast::setRegion" ref="228fcc06291dc3989917bbfa5ce3153f" args="(const char *Region)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoBroadcast::setRegion </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Region</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the channel region<p>
+This sets the region of a channel, where it can be received<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Region</em>&nbsp;</td><td>the location where the channel can be received </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.map b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.map
new file mode 100644
index 0000000..ba4b3a6
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.map
@@ -0,0 +1,4 @@
+<area shape="rect" href="$classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="23,1595,204,2203">
+<area shape="rect" href="$classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="33,1336,193,1544">
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="33,469,193,1285">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="32,5,195,389">
diff --git a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5 b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5
new file mode 100644
index 0000000..8a18a37
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5
@@ -0,0 +1 @@
+4d0ff38fbfd93d438984eafa83a9686c \ No newline at end of file
diff --git a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.png b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.png
new file mode 100644
index 0000000..5547754
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map
new file mode 100644
index 0000000..1b72bbe
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcUPnPClassVideoItem.html" title="{cUPnPClassVideoItem\n|# mGenre\l# mDescription\l# mLongDescription\l# mPublishers\l# mLanguage\l# mRelations\l# mProducers\l# mRating\l# mActors\l# mDirectors\l|+ ~cUPnPClassVideoItem()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setLongDescription()\l+ setDescription()\l+ setPublishers()\l+ setGenre()\l+ setLanguage()\l+ setRelations()\l+ setDirectors()\l+ setActors()\l+ setProducers()\l+ setRating()\l+ getGenre()\l+ getLongDescription()\l+ getDescription()\l+ getPublishers()\l+ getLanguage()\l+ getRelations()\l+ getActors()\l+ getProducers()\l+ getDirectors()\l+ getRating()\l# cUPnPClassVideoItem()\l}" alt="" coords="23,1125,204,1733">
+<area shape="rect" href="$classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="33,869,193,1077">
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="33,5,193,821">
diff --git a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5 b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5
new file mode 100644
index 0000000..b292bb6
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5
@@ -0,0 +1 @@
+83c71ce7b232a40d24b99e99024532d4 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png
new file mode 100644
index 0000000..01ff64f
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassVideoItem-members.html b/doc/html/classcUPnPClassVideoItem-members.html
new file mode 100644
index 0000000..33adef9
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem-members.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassVideoItem Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cMediaDatabase</b> (defined in <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a>(const cListObject &amp;ListObject) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">createDIDLFragment</a>(IXML_Document *Document, cStringList *Filter)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a>()</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#38ce1c18cc9d474791255fdcb43824d2">cUPnPClassVideoItem</a>()</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjectMediator</b> (defined in <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPVideoItemMediator</b> (defined in <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">getActors</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">getDescription</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">getDirectors</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">getGenre</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">getLanguage</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">getLongDescription</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">getProducers</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">getProperty</a>(const char *Property, char **Value) const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">getPropertyList</a>()</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">getPublishers</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">getRating</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">getReference</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">getReferenceID</a>() const </td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">getRelations</a>() const </td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a>(unsigned int ResourceID) const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a>()</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8">mActors</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">mClass</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">mCreator</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e">mDescription</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">mDIDLFragment</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad">mDirectors</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3">mGenre</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">mID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471">mLanguage</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">mLastModified</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59">mLongDescription</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a>() const </td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">mParent</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0">mProducers</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e">mPublishers</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9">mRating</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">mReference</a></td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97">mRelations</a></td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">mResources</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">mResourcesID</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">mRestricted</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">mSortCriteria</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">mSortDescending</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">mTitle</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">mWriteStatus</a></td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#33b104046098dbf66d894143181678c4">setActors</a>(const char *Actors)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a>(const char *Class)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a>(const char *Creator)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#f5a642732c66b6920f5b4646a4c34a92">setDescription</a>(const char *Description)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#a5fc1a420bfd307bbd026c0681162e0a">setDirectors</a>(const char *Directors)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#1be14ea33f9bbf53e636fea3658cc6f8">setGenre</a>(const char *Genre)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#89c24d198ce7bdc31aac727e65b02a84">setLanguage</a>(const char *Language)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#05c5b8394cbfcaeffe5f99c885496e3d">setLongDescription</a>(const char *LongDescription)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a>(void)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a>(cUPnPClassContainer *Parent)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#3812b8056c9d2c7d13a7734e4219b27b">setProducers</a>(const char *Producers)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">setProperty</a>(const char *Property, const char *Value)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#db14c0944a89f179832a4f4914caa4ca">setPublishers</a>(const char *Publishers)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#6d4143016fc91fcbb0db4e9f8a8a0047">setRating</a>(const char *Rating)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">setReference</a>(cUPnPClassItem *Reference)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassVideoItem.html#844385c5fb4f55c95a2994c7aaf120ef">setRelations</a>(const char *Relations)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a>(cList&lt; cUPnPResource &gt; *Resources)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a>(bool Restricted)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a>(const char *Property, bool Descending=false)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a>(const char *Title)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a>(int Status)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassItem</b>() (defined in <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>)</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassObject</b>() (defined in <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>)</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPClassVideoItem</b>() (defined in <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>)</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassVideoItem.html b/doc/html/classcUPnPClassVideoItem.html
new file mode 100644
index 0000000..d28e75e
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem.html
@@ -0,0 +1,815 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPClassVideoItem Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPClassVideoItem Class Reference</h1><!-- doxytag: class="cUPnPClassVideoItem" --><!-- doxytag: inherits="cUPnPClassItem" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPClassVideoItem:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassVideoItem__inherit__graph.png" border="0" usemap="#cUPnPClassVideoItem__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPClassVideoItem__inherit__map">
+<area shape="rect" href="classcUPnPClassMovie.html" title="{cUPnPClassMovie\n|# mDVDRegionCode\l# mStorageMedium\l|+ ~cUPnPClassMovie()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setDVDRegionCode()\l+ setStorageMedium()\l+ getDVDRegionCode()\l+ getStorageMedium()\l# cUPnPClassMovie()\l}" alt="" coords="5,1829,163,2053"><area shape="rect" href="classcUPnPClassVideoBroadcast.html" title="{cUPnPClassVideoBroadcast\n|# mIcon\l# mRegion\l# mChannelNr\l# mChannelName\l|+ ~cUPnPClassVideoBroadcast()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setIcon()\l+ setRegion()\l+ setChannelNr()\l+ setChannelName()\l+ getIcon()\l+ getRegion()\l+ getChannelNr()\l+ getChannelName()\l# cUPnPClassVideoBroadcast()\l}" alt="" coords="187,1781,403,2101"><area shape="rect" href="classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="109,869,269,1077"><area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="109,5,269,821"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPClassVideoItem:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPClassVideoItem__coll__graph.png" border="0" usemap="#cUPnPClassVideoItem__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPClassVideoItem__coll__map">
+<area shape="rect" href="classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="16,1336,176,1544"><area shape="rect" href="classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="16,469,176,1285"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="15,5,177,389"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPClassVideoItem-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual cStringList *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">getPropertyList</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">setProperty</a> (const char *Property, const char *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">getProperty</a> (const char *Property, char **Value) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#05c5b8394cbfcaeffe5f99c885496e3d">setLongDescription</a> (const char *LongDescription)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#f5a642732c66b6920f5b4646a4c34a92">setDescription</a> (const char *Description)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#db14c0944a89f179832a4f4914caa4ca">setPublishers</a> (const char *Publishers)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#1be14ea33f9bbf53e636fea3658cc6f8">setGenre</a> (const char *Genre)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#89c24d198ce7bdc31aac727e65b02a84">setLanguage</a> (const char *Language)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#844385c5fb4f55c95a2994c7aaf120ef">setRelations</a> (const char *Relations)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#a5fc1a420bfd307bbd026c0681162e0a">setDirectors</a> (const char *Directors)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#33b104046098dbf66d894143181678c4">setActors</a> (const char *Actors)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#3812b8056c9d2c7d13a7734e4219b27b">setProducers</a> (const char *Producers)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#6d4143016fc91fcbb0db4e9f8a8a0047">setRating</a> (const char *Rating)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">getGenre</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">getLongDescription</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">getDescription</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">getPublishers</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">getLanguage</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">getRelations</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">getActors</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">getProducers</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">getDirectors</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">getRating</a> () const </td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#38ce1c18cc9d474791255fdcb43824d2">cUPnPClassVideoItem</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b7fa79ab14701142597088b0a73515c3"></a><!-- doxytag: member="cUPnPClassVideoItem::mGenre" ref="b7fa79ab14701142597088b0a73515c3" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3">mGenre</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Genre of the video. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bdf0f85f02d43ef32d8aab1daecddd7e"></a><!-- doxytag: member="cUPnPClassVideoItem::mDescription" ref="bdf0f85f02d43ef32d8aab1daecddd7e" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e">mDescription</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Description. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="577abd61e96e6a7a17acd48eb7854a59"></a><!-- doxytag: member="cUPnPClassVideoItem::mLongDescription" ref="577abd61e96e6a7a17acd48eb7854a59" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59">mLongDescription</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">a longer description <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f6bcbeb08f86a8e8c133e0904c07e89e"></a><!-- doxytag: member="cUPnPClassVideoItem::mPublishers" ref="f6bcbeb08f86a8e8c133e0904c07e89e" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e">mPublishers</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">CSV of Publishers. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9d1d5e4f5058e4ca6a9e011b6eb97471"></a><!-- doxytag: member="cUPnPClassVideoItem::mLanguage" ref="9d1d5e4f5058e4ca6a9e011b6eb97471" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471">mLanguage</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">RFC 1766 Language code. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dc03dd27283de69640cea28783459d97"></a><!-- doxytag: member="cUPnPClassVideoItem::mRelations" ref="dc03dd27283de69640cea28783459d97" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97">mRelations</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Relation to other contents. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fa8cca909e9bde4fdff684bfdd4d8ac0"></a><!-- doxytag: member="cUPnPClassVideoItem::mProducers" ref="fa8cca909e9bde4fdff684bfdd4d8ac0" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0">mProducers</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">CSV of Producers. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="73540adc3263ddbabc10018ba9a52cf9"></a><!-- doxytag: member="cUPnPClassVideoItem::mRating" ref="73540adc3263ddbabc10018ba9a52cf9" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9">mRating</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rating (for parential control). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2f22a58a30b8baf53a3dd76e6bc679a8"></a><!-- doxytag: member="cUPnPClassVideoItem::mActors" ref="2f22a58a30b8baf53a3dd76e6bc679a8" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8">mActors</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">CSV of Actors. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="79ace4a5927eaf082628ee8120e988ad"></a><!-- doxytag: member="cUPnPClassVideoItem::mDirectors" ref="79ace4a5927eaf082628ee8120e988ad" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad">mDirectors</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">CSV of Directors. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d0d0aedce8b1c661ea360b9a6d616f6"></a><!-- doxytag: member="cUPnPClassVideoItem::cMediaDatabase" ref="3d0d0aedce8b1c661ea360b9a6d616f6" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#3d0d0aedce8b1c661ea360b9a6d616f6">cMediaDatabase</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cUPnPClassVideoItem::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0d1a617e075a78abffc13ad3a3d341e"></a><!-- doxytag: member="cUPnPClassVideoItem::cUPnPVideoItemMediator" ref="e0d1a617e075a78abffc13ad3a3d341e" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPClassVideoItem.html#e0d1a617e075a78abffc13ad3a3d341e">cUPnPVideoItemMediator</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP class VideoItem<p>
+This is a UPnP class VideoItem representation with all its properties. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="38ce1c18cc9d474791255fdcb43824d2"></a><!-- doxytag: member="cUPnPClassVideoItem::cUPnPClassVideoItem" ref="38ce1c18cc9d474791255fdcb43824d2" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPClassVideoItem::cUPnPClassVideoItem </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of a video item<p>
+This creates a new instance of a video item
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="61bca560d8469a441894896fe950adf3"></a><!-- doxytag: member="cUPnPClassVideoItem::getActors" ref="61bca560d8469a441894896fe950adf3" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getActors </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the actors<p>
+This returns a CSV list of actors in the video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a CSV list of actors </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="364180a89479d6143cfbe146d337a7dc"></a><!-- doxytag: member="cUPnPClassVideoItem::getDescription" ref="364180a89479d6143cfbe146d337a7dc" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getDescription </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the description<p>
+This returns the description of a video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the description of a video </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5b24963eb2d6d5d8e1547ba73863e13c"></a><!-- doxytag: member="cUPnPClassVideoItem::getDirectors" ref="5b24963eb2d6d5d8e1547ba73863e13c" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getDirectors </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the directors<p>
+This returns a CSV list of directors<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a CSV list of directors </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b3ca922f5605d81bd8d3457fa19e228d"></a><!-- doxytag: member="cUPnPClassVideoItem::getGenre" ref="b3ca922f5605d81bd8d3457fa19e228d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getGenre </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the genres<p>
+This returns a CSV list of genre<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the genre of a video </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4d134ac251a6c9b67a002d6fa831bf1c"></a><!-- doxytag: member="cUPnPClassVideoItem::getLanguage" ref="4d134ac251a6c9b67a002d6fa831bf1c" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getLanguage </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the language<p>
+This returns the language of the video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the language </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="29f6f76f4ac21d6c15dbe2eb95a7d0c6"></a><!-- doxytag: member="cUPnPClassVideoItem::getLongDescription" ref="29f6f76f4ac21d6c15dbe2eb95a7d0c6" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getLongDescription </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the long description<p>
+This returns the long description of a video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the long description of a video </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="bd72ad944de96ddc8795cfe531adfef1"></a><!-- doxytag: member="cUPnPClassVideoItem::getProducers" ref="bd72ad944de96ddc8795cfe531adfef1" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getProducers </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the producers<p>
+This returns a CSV list of producers of a video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a CSV list of producers </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="94ab2ffcbe14abb63c680e6748e70ef1"></a><!-- doxytag: member="cUPnPClassVideoItem::getProperty" ref="94ab2ffcbe14abb63c680e6748e70ef1" args="(const char *Property, char **Value) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassVideoItem::getProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gets a property<p>
+Returns the value of a specified property. The value is converted into a string.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be returned </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassItem.html#31f7010baa65cc25b95a864f05eb4e62">cUPnPClassItem</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="9dc397419b45535a3e6a676667b619a4"></a><!-- doxytag: member="cUPnPClassVideoItem::getPropertyList" ref="9dc397419b45535a3e6a676667b619a4" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cStringList * cUPnPClassVideoItem::getPropertyList </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the properties of the object<p>
+This returns a property list with all the properties which can be obtained or set with <code>getProperty</code> or <code>setProperty</code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a stringlist with the properties </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassItem.html#add0c9d378036e270e6f99d8d1409e3b">cUPnPClassItem</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="797dc99dd12b77af641b266ada7cb1dc"></a><!-- doxytag: member="cUPnPClassVideoItem::getPublishers" ref="797dc99dd12b77af641b266ada7cb1dc" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getPublishers </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the publishers<p>
+This returns a CSV list of publishers of the video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a CSV list of publishers </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2d8b94809b1207a14831e095c2b598a6"></a><!-- doxytag: member="cUPnPClassVideoItem::getRating" ref="2d8b94809b1207a14831e095c2b598a6" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getRating </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the rating<p>
+This returns the rating used for parental control.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the rating of a video </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="755e9710173d62fc2c9b98076391c916"></a><!-- doxytag: member="cUPnPClassVideoItem::getRelations" ref="755e9710173d62fc2c9b98076391c916" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPClassVideoItem::getRelations </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the relations<p>
+This returns a CSV list of relation URLs.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a CSV list of relation URLs </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="33b104046098dbf66d894143181678c4"></a><!-- doxytag: member="cUPnPClassVideoItem::setActors" ref="33b104046098dbf66d894143181678c4" args="(const char *Actors)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setActors </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Actors</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the actors<p>
+This sets a CSV list of actors in a video. This usually contain the main actors. However, also other actors appearing in the video can be mentioned here.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Actors</em>&nbsp;</td><td>a CSV list of actors </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f5a642732c66b6920f5b4646a4c34a92"></a><!-- doxytag: member="cUPnPClassVideoItem::setDescription" ref="f5a642732c66b6920f5b4646a4c34a92" args="(const char *Description)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setDescription </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Description</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a description<p>
+A description may hold short information about the content or the story of a video. Unlike a long description, this contains just a very short brief like a subtitle or the episode title.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Description</em>&nbsp;</td><td>the description of a video </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a5fc1a420bfd307bbd026c0681162e0a"></a><!-- doxytag: member="cUPnPClassVideoItem::setDirectors" ref="a5fc1a420bfd307bbd026c0681162e0a" args="(const char *Directors)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setDirectors </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Directors</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the directors<p>
+This sets a CSV list of directors.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Directors</em>&nbsp;</td><td>a CSV list of directors </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1be14ea33f9bbf53e636fea3658cc6f8"></a><!-- doxytag: member="cUPnPClassVideoItem::setGenre" ref="1be14ea33f9bbf53e636fea3658cc6f8" args="(const char *Genre)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setGenre </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Genre</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a genre<p>
+This is a CSV list of genre of a video. This may be something like "Western" or "SciFi". Actually, there is no standardized rule for a genre name, which results in an ambiguous definition of certain genre, like Thriller and Horror.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Genre</em>&nbsp;</td><td>a CSV list of genre </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="89c24d198ce7bdc31aac727e65b02a84"></a><!-- doxytag: member="cUPnPClassVideoItem::setLanguage" ref="89c24d198ce7bdc31aac727e65b02a84" args="(const char *Language)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setLanguage </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Language</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the language<p>
+This sets the language of a video. It is defined by RFC 1766. A valid language definition is <em>"de-DE"</em> or <em>"en-US"</em>.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a href="http://www.ietf.org/rfc/rfc1766.txt">http://www.ietf.org/rfc/rfc1766.txt</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Language</em>&nbsp;</td><td>the language (RFC 1766) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="05c5b8394cbfcaeffe5f99c885496e3d"></a><!-- doxytag: member="cUPnPClassVideoItem::setLongDescription" ref="05c5b8394cbfcaeffe5f99c885496e3d" args="(const char *LongDescription)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setLongDescription </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>LongDescription</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a long description<p>
+A long description may hold information about the content or the story of a video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>LongDescription</em>&nbsp;</td><td>the content or story of a video </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3812b8056c9d2c7d13a7734e4219b27b"></a><!-- doxytag: member="cUPnPClassVideoItem::setProducers" ref="3812b8056c9d2c7d13a7734e4219b27b" args="(const char *Producers)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setProducers </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Producers</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the producers<p>
+This sets a CSV list of producers of a video. These are the people who are involed in the production of a video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Producers</em>&nbsp;</td><td>a CSV list of producers </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3cbda6d87f5a9ff0475a75e76ba19924"></a><!-- doxytag: member="cUPnPClassVideoItem::setProperty" ref="3cbda6d87f5a9ff0475a75e76ba19924" args="(const char *Property, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPClassVideoItem::setProperty </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets a property<p>
+Sets the value of a specified property. The value is converted from string into the propper data type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the property exists</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property which should be set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of that property </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPClassItem.html#ab17057659c17792a5b67f4297ade642">cUPnPClassItem</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">cUPnPClassMovie</a>, and <a class="el" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">cUPnPClassVideoBroadcast</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="db14c0944a89f179832a4f4914caa4ca"></a><!-- doxytag: member="cUPnPClassVideoItem::setPublishers" ref="db14c0944a89f179832a4f4914caa4ca" args="(const char *Publishers)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setPublishers </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Publishers</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the publishers<p>
+This is a CSV list of publishers, who distributes the video.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Publishers</em>&nbsp;</td><td>a CSV list of publishers </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6d4143016fc91fcbb0db4e9f8a8a0047"></a><!-- doxytag: member="cUPnPClassVideoItem::setRating" ref="6d4143016fc91fcbb0db4e9f8a8a0047" args="(const char *Rating)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setRating </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Rating</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the rating<p>
+This is a rating, which can be used for parential control issues.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a href="http://en.wikipedia.org/wiki/Motion_picture_rating_system">http://en.wikipedia.org/wiki/Motion_picture_rating_system</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Rating</em>&nbsp;</td><td>the rating of a video </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="844385c5fb4f55c95a2994c7aaf120ef"></a><!-- doxytag: member="cUPnPClassVideoItem::setRelations" ref="844385c5fb4f55c95a2994c7aaf120ef" args="(const char *Relations)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPClassVideoItem::setRelations </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Relations</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets a relation URL<p>
+This sets a CSV list of relation URLs, where to find additional information about the movie. The URLs may not contain commas and they must be properly escaped as in RFC 2396<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if setting was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Relations</em>&nbsp;</td><td>a CSV list with relations </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPClassVideoItem__coll__graph.map b/doc/html/classcUPnPClassVideoItem__coll__graph.map
new file mode 100644
index 0000000..a9509e7
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem__coll__graph.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="16,1336,176,1544">
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="16,469,176,1285">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="15,5,177,389">
diff --git a/doc/html/classcUPnPClassVideoItem__coll__graph.md5 b/doc/html/classcUPnPClassVideoItem__coll__graph.md5
new file mode 100644
index 0000000..c3899e0
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem__coll__graph.md5
@@ -0,0 +1 @@
+34f026924d51053d5f9e15b214f3a294 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassVideoItem__coll__graph.png b/doc/html/classcUPnPClassVideoItem__coll__graph.png
new file mode 100644
index 0000000..5d69afd
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPClassVideoItem__inherit__graph.map b/doc/html/classcUPnPClassVideoItem__inherit__graph.map
new file mode 100644
index 0000000..a415818
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem__inherit__graph.map
@@ -0,0 +1,4 @@
+<area shape="rect" href="$classcUPnPClassMovie.html" title="{cUPnPClassMovie\n|# mDVDRegionCode\l# mStorageMedium\l|+ ~cUPnPClassMovie()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setDVDRegionCode()\l+ setStorageMedium()\l+ getDVDRegionCode()\l+ getStorageMedium()\l# cUPnPClassMovie()\l}" alt="" coords="5,1829,163,2053">
+<area shape="rect" href="$classcUPnPClassVideoBroadcast.html" title="{cUPnPClassVideoBroadcast\n|# mIcon\l# mRegion\l# mChannelNr\l# mChannelName\l|+ ~cUPnPClassVideoBroadcast()\l+ getPropertyList()\l+ setProperty()\l+ getProperty()\l+ setIcon()\l+ setRegion()\l+ setChannelNr()\l+ setChannelName()\l+ getIcon()\l+ getRegion()\l+ getChannelNr()\l+ getChannelName()\l# cUPnPClassVideoBroadcast()\l}" alt="" coords="187,1781,403,2101">
+<area shape="rect" href="$classcUPnPClassItem.html" title="{cUPnPClassItem\n|# mReference\l|+ ~cUPnPClassItem()\l+ getPropertyList()\l+ createDIDLFragment()\l+ setProperty()\l+ getProperty()\l+ setReference()\l+ getReference()\l+ getReferenceID()\l# cUPnPClassItem()\l}" alt="" coords="109,869,269,1077">
+<area shape="rect" href="$classcUPnPClassObject.html" title="{cUPnPClassObject\n|# mLastModified\l# mID\l# mParent\l# mClass\l# mTitle\l# mCreator\l# mRestricted\l# mWriteStatus\l# mResources\l# mResourcesID\l# mDIDLFragment\l# mSortCriteria\l# mSortDescending\l&#45; mLastID\l&#45; mDeleted\l|+ modified()\l+ ~cUPnPClassObject()\l+ Compare()\l+ getPropertyList()\l+ getProperty()\l+ setProperty()\l+ getContainer()\l+ createDIDLFragment()\l+ isContainer()\l+ setSortCriteria()\l+ clearSortCriteria()\l+ setTitle()\l+ setCreator()\l+ setRestricted()\l+ setWriteStatus()\l+ setResources()\l+ addResource()\l+ removeResource()\l+ getID()\l+ getParentID()\l+ getParent()\l+ getTitle()\l+ getClass()\l+ getCreator()\l+ isRestricted()\l+ getWriteStatus()\l+ getResource()\l+ getResources()\l# cUPnPClassObject()\l# setID()\l# setParent()\l# setClass()\l# setModified()\l}" alt="" coords="109,5,269,821">
diff --git a/doc/html/classcUPnPClassVideoItem__inherit__graph.md5 b/doc/html/classcUPnPClassVideoItem__inherit__graph.md5
new file mode 100644
index 0000000..3776d41
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem__inherit__graph.md5
@@ -0,0 +1 @@
+d7af3d9550df3e91b8f7b6858958b342 \ No newline at end of file
diff --git a/doc/html/classcUPnPClassVideoItem__inherit__graph.png b/doc/html/classcUPnPClassVideoItem__inherit__graph.png
new file mode 100644
index 0000000..e806ab8
--- /dev/null
+++ b/doc/html/classcUPnPClassVideoItem__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPConfig-members.html b/doc/html/classcUPnPConfig-members.html
new file mode 100644
index 0000000..5ea5a7b
--- /dev/null
+++ b/doc/html/classcUPnPConfig-members.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPConfig Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPConfig.html">cUPnPConfig</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#3949dcc8a418edb8a0ece2dce62f515c">get</a>()</td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#0d7d7eb8d1ae9fffab39b39d1c9f10dd">mAddress</a></td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#da3ca113e9f1946fd1c09ebdcdcde0af">mAutoSetup</a></td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#6861c1183545e44a7d33e17440f4cd8c">mEnable</a></td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#dd0afbf876c2625acc52cfd8fd8b6a7c">mInterface</a></td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#93224ed337b1f74525a68c5159532cb3">mPort</a></td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#3ac0d1253dba86cb4630bc1e29a9fe10">parseSetup</a>(const char *Name, const char *Value)</td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPConfig.html#19689798911a39c47958e819c33d4b09">processArgs</a>(int argc, char *argv[])</td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPConfig</b>() (defined in <a class="el" href="classcUPnPConfig.html">cUPnPConfig</a>)</td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPConfig.html b/doc/html/classcUPnPConfig.html
new file mode 100644
index 0000000..472dc60
--- /dev/null
+++ b/doc/html/classcUPnPConfig.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPConfig Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPConfig Class Reference</h1><!-- doxytag: class="cUPnPConfig" --><code>#include &lt;<a class="el" href="config_8h-source.html">config.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cUPnPConfig:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPConfig__coll__graph.png" border="0" usemap="#cUPnPConfig__coll__map" alt="Collaboration graph"></center>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPConfig-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#3ac0d1253dba86cb4630bc1e29a9fe10">parseSetup</a> (const char *Name, const char *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#19689798911a39c47958e819c33d4b09">processArgs</a> (int argc, char *argv[])</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcUPnPConfig.html">cUPnPConfig</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#3949dcc8a418edb8a0ece2dce62f515c">get</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd0afbf876c2625acc52cfd8fd8b6a7c"></a><!-- doxytag: member="cUPnPConfig::mInterface" ref="dd0afbf876c2625acc52cfd8fd8b6a7c" args="" -->
+char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#dd0afbf876c2625acc52cfd8fd8b6a7c">mInterface</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the network interface, which the server is bound to <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0d7d7eb8d1ae9fffab39b39d1c9f10dd"></a><!-- doxytag: member="cUPnPConfig::mAddress" ref="0d7d7eb8d1ae9fffab39b39d1c9f10dd" args="" -->
+char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#0d7d7eb8d1ae9fffab39b39d1c9f10dd">mAddress</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the IP address which is used by the server <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="93224ed337b1f74525a68c5159532cb3"></a><!-- doxytag: member="cUPnPConfig::mPort" ref="93224ed337b1f74525a68c5159532cb3" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#93224ed337b1f74525a68c5159532cb3">mPort</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the port which the server is listening on <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6861c1183545e44a7d33e17440f4cd8c"></a><!-- doxytag: member="cUPnPConfig::mEnable" ref="6861c1183545e44a7d33e17440f4cd8c" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#6861c1183545e44a7d33e17440f4cd8c">mEnable</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">indicates, if the server is enabled or not <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da3ca113e9f1946fd1c09ebdcdcde0af"></a><!-- doxytag: member="cUPnPConfig::mAutoSetup" ref="da3ca113e9f1946fd1c09ebdcdcde0af" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPConfig.html#da3ca113e9f1946fd1c09ebdcdcde0af">mAutoSetup</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">indicates, if the settings are automatically detected <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The configuration settings<p>
+This holds the configurations for the server. It holds information about the network settings as well as some status flags. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="3949dcc8a418edb8a0ece2dce62f515c"></a><!-- doxytag: member="cUPnPConfig::get" ref="3949dcc8a418edb8a0ece2dce62f515c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a> * cUPnPConfig::get </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the configuration<p>
+This returns the instance of the current configuration settings.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the configuration object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3ac0d1253dba86cb4630bc1e29a9fe10"></a><!-- doxytag: member="cUPnPConfig::parseSetup" ref="3ac0d1253dba86cb4630bc1e29a9fe10" args="(const char *Name, const char *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPConfig::parseSetup </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse setup variable<p>
+This parses the setup variable with the according value. The value is a string representation and must be converted into the according data type.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if parsing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>the name of the variable </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the according value of the variable </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="19689798911a39c47958e819c33d4b09"></a><!-- doxytag: member="cUPnPConfig::processArgs" ref="19689798911a39c47958e819c33d4b09" args="(int argc, char *argv[])" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPConfig::processArgs </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>argc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Processes the commandline arguments<p>
+This processes the commandline arguments which the user specified at the start of the plugin.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if processing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>argc</em>&nbsp;</td><td>the number of arguments in the list </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>argv</em>&nbsp;</td><td>the arguments as a char array </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>misc/<a class="el" href="config_8h-source.html">config.h</a><li>misc/config.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPConfig__coll__graph.map b/doc/html/classcUPnPConfig__coll__graph.map
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/html/classcUPnPConfig__coll__graph.map
diff --git a/doc/html/classcUPnPConfig__coll__graph.md5 b/doc/html/classcUPnPConfig__coll__graph.md5
new file mode 100644
index 0000000..e6fe914
--- /dev/null
+++ b/doc/html/classcUPnPConfig__coll__graph.md5
@@ -0,0 +1 @@
+16dc9fa3b1153736d2d57e2740650c4d \ No newline at end of file
diff --git a/doc/html/classcUPnPConfig__coll__graph.png b/doc/html/classcUPnPConfig__coll__graph.png
new file mode 100644
index 0000000..3dfe4c1
--- /dev/null
+++ b/doc/html/classcUPnPConfig__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPContainerMediator-members.html b/doc/html/classcUPnPContainerMediator-members.html
new file mode 100644
index 0000000..3a60ef8
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator-members.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPContainerMediator Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPContainerMediator.html#751177c725da94b1b91f6cda4645844d">createObject</a>(const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPContainerMediator.html#e6fce4835ea40a77b401a093f65b5822">cUPnPContainerMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPContainerMediator.html#79f483b48f596047ed9549f0b036f35b">databaseToObject</a>(cUPnPClassObject *Object, cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPContainerMediator.html#78b71f96fb4289dc78f897d6282078d6">getObject</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a>(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">mDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">mMediaDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPContainerMediator.html#1caa4625fca42940ba36999a71ac49ec">objectToDatabase</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediatorInterface</b>() (defined in <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>)</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPContainerMediator</b>() (defined in <a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a>)</td><td><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPObjectMediator</b>() (defined in <a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPContainerMediator.html b/doc/html/classcUPnPContainerMediator.html
new file mode 100644
index 0000000..433db1c
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator.html
@@ -0,0 +1,240 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPContainerMediator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPContainerMediator Class Reference</h1><!-- doxytag: class="cUPnPContainerMediator" --><!-- doxytag: inherits="cUPnPObjectMediator" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPContainerMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPContainerMediator__inherit__graph.png" border="0" usemap="#cUPnPContainerMediator__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPContainerMediator__inherit__map">
+<area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="13,213,192,453"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="24,5,181,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPContainerMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPContainerMediator__coll__graph.png" border="0" usemap="#cUPnPContainerMediator__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPContainerMediator__coll__map">
+<area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPContainerMediator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPContainerMediator.html#e6fce4835ea40a77b401a093f65b5822">cUPnPContainerMediator</a> (<a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *MediaDatabase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPContainerMediator.html#751177c725da94b1b91f6cda4645844d">createObject</a> (const char *Title, bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPContainerMediator.html#78b71f96fb4289dc78f897d6282078d6">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPContainerMediator.html#1caa4625fca42940ba36999a71ac49ec">objectToDatabase</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPContainerMediator.html#79f483b48f596047ed9549f0b036f35b">databaseToObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Container Mediator<p>
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="e6fce4835ea40a77b401a093f65b5822"></a><!-- doxytag: member="cUPnPContainerMediator::cUPnPContainerMediator" ref="e6fce4835ea40a77b401a093f65b5822" args="(cMediaDatabase *MediaDatabase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPContainerMediator::cUPnPContainerMediator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td>
+ <td class="paramname"> <em>MediaDatabase</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of container mediator<p>
+This creates a new container mediator with which it is possible to create new instances of Container objects.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>MediaDatabase</em>&nbsp;</td><td>the media database </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="751177c725da94b1b91f6cda4645844d"></a><!-- doxytag: member="cUPnPContainerMediator::createObject" ref="751177c725da94b1b91f6cda4645844d" args="(const char *Title, bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> * cUPnPContainerMediator::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">cUPnPObjectMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="79f483b48f596047ed9549f0b036f35b"></a><!-- doxytag: member="cUPnPContainerMediator::databaseToObject" ref="79f483b48f596047ed9549f0b036f35b" args="(cUPnPClassObject *Object, cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPContainerMediator::databaseToObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads an object from database<p>
+This loads an object from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be loaded </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID of that object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#07a6a1d2694fb2f4573bd50374406b24">cUPnPObjectMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="78b71f96fb4289dc78f897d6282078d6"></a><!-- doxytag: member="cUPnPContainerMediator::getObject" ref="78b71f96fb4289dc78f897d6282078d6" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> * cUPnPContainerMediator::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">cUPnPObjectMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="1caa4625fca42940ba36999a71ac49ec"></a><!-- doxytag: member="cUPnPContainerMediator::objectToDatabase" ref="1caa4625fca42940ba36999a71ac49ec" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPContainerMediator::objectToDatabase </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store the object in the database<p>
+This stores the information of an object in the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#c44c010895f92adc63af2a2d34cf34c8">cUPnPObjectMediator</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPContainerMediator__coll__graph.map b/doc/html/classcUPnPContainerMediator__coll__graph.map
new file mode 100644
index 0000000..bfcb01e
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator__coll__graph.map
@@ -0,0 +1,8 @@
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301">
diff --git a/doc/html/classcUPnPContainerMediator__coll__graph.md5 b/doc/html/classcUPnPContainerMediator__coll__graph.md5
new file mode 100644
index 0000000..e54babc
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator__coll__graph.md5
@@ -0,0 +1 @@
+66f5da7843c802547d759d766879ccb4 \ No newline at end of file
diff --git a/doc/html/classcUPnPContainerMediator__coll__graph.png b/doc/html/classcUPnPContainerMediator__coll__graph.png
new file mode 100644
index 0000000..357d3d3
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPContainerMediator__inherit__graph.map b/doc/html/classcUPnPContainerMediator__inherit__graph.map
new file mode 100644
index 0000000..3ce2849
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator__inherit__graph.map
@@ -0,0 +1,2 @@
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="13,213,192,453">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="24,5,181,165">
diff --git a/doc/html/classcUPnPContainerMediator__inherit__graph.md5 b/doc/html/classcUPnPContainerMediator__inherit__graph.md5
new file mode 100644
index 0000000..477ed2e
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator__inherit__graph.md5
@@ -0,0 +1 @@
+11cb7d4c3eba53182b362177908a74af \ No newline at end of file
diff --git a/doc/html/classcUPnPContainerMediator__inherit__graph.png b/doc/html/classcUPnPContainerMediator__inherit__graph.png
new file mode 100644
index 0000000..e3009e2
--- /dev/null
+++ b/doc/html/classcUPnPContainerMediator__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPItemMediator-members.html b/doc/html/classcUPnPItemMediator-members.html
new file mode 100644
index 0000000..ab69060
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator-members.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPItemMediator Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">createObject</a>(const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#1f3645ebe0a33a81d0b3f22060dc4761">databaseToObject</a>(cUPnPClassObject *Object, cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">getObject</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a>(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">mDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">mMediaDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#6d954b1cfdc4a7d55981c6ebff9d6d04">objectToDatabase</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediatorInterface</b>() (defined in <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>)</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPItemMediator</b>() (defined in <a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPObjectMediator</b>() (defined in <a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPItemMediator.html b/doc/html/classcUPnPItemMediator.html
new file mode 100644
index 0000000..90e6200
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator.html
@@ -0,0 +1,248 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPItemMediator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPItemMediator Class Reference</h1><!-- doxytag: class="cUPnPItemMediator" --><!-- doxytag: inherits="cUPnPObjectMediator" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPItemMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPItemMediator__inherit__graph.png" border="0" usemap="#cUPnPItemMediator__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPItemMediator__inherit__map">
+<area shape="rect" href="classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="107,709,307,869"><area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,213,296,453"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="128,5,285,165"><area shape="rect" href="classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,917,181,1077"><area shape="rect" href="classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="205,917,437,1077"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPItemMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPItemMediator__coll__graph.png" border="0" usemap="#cUPnPItemMediator__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPItemMediator__coll__map">
+<area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPItemMediator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a> (<a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *MediaDatabase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">createObject</a> (const char *Title, bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPItemMediator.html#6d954b1cfdc4a7d55981c6ebff9d6d04">objectToDatabase</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPItemMediator.html#1f3645ebe0a33a81d0b3f22060dc4761">databaseToObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Item Mediator<p>
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="99ec31552ae8e4d52da6920ff959c133"></a><!-- doxytag: member="cUPnPItemMediator::cUPnPItemMediator" ref="99ec31552ae8e4d52da6920ff959c133" args="(cMediaDatabase *MediaDatabase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPItemMediator::cUPnPItemMediator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td>
+ <td class="paramname"> <em>MediaDatabase</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of item mediator<p>
+This creates a new item mediator with which it is possible to create new instances of Item objects.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>MediaDatabase</em>&nbsp;</td><td>the media database </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="e2fd4cf5e6435f1eeadd11f9a99cd2db"></a><!-- doxytag: member="cUPnPItemMediator::createObject" ref="e2fd4cf5e6435f1eeadd11f9a99cd2db" args="(const char *Title, bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> * cUPnPItemMediator::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">cUPnPObjectMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="1f3645ebe0a33a81d0b3f22060dc4761"></a><!-- doxytag: member="cUPnPItemMediator::databaseToObject" ref="1f3645ebe0a33a81d0b3f22060dc4761" args="(cUPnPClassObject *Object, cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPItemMediator::databaseToObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads an object from database<p>
+This loads an object from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be loaded </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID of that object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#07a6a1d2694fb2f4573bd50374406b24">cUPnPObjectMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="81411b2a472ade71d73a9c8ddc2a7990"></a><!-- doxytag: member="cUPnPItemMediator::getObject" ref="81411b2a472ade71d73a9c8ddc2a7990" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> * cUPnPItemMediator::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">cUPnPObjectMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6d954b1cfdc4a7d55981c6ebff9d6d04"></a><!-- doxytag: member="cUPnPItemMediator::objectToDatabase" ref="6d954b1cfdc4a7d55981c6ebff9d6d04" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPItemMediator::objectToDatabase </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store the object in the database<p>
+This stores the information of an object in the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPObjectMediator.html#c44c010895f92adc63af2a2d34cf34c8">cUPnPObjectMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPItemMediator__coll__graph.map b/doc/html/classcUPnPItemMediator__coll__graph.map
new file mode 100644
index 0000000..bfcb01e
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator__coll__graph.map
@@ -0,0 +1,8 @@
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301">
diff --git a/doc/html/classcUPnPItemMediator__coll__graph.md5 b/doc/html/classcUPnPItemMediator__coll__graph.md5
new file mode 100644
index 0000000..ad05037
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator__coll__graph.md5
@@ -0,0 +1 @@
+0be414ee07dd08aaa1a4e7765c2f4252 \ No newline at end of file
diff --git a/doc/html/classcUPnPItemMediator__coll__graph.png b/doc/html/classcUPnPItemMediator__coll__graph.png
new file mode 100644
index 0000000..68148f6
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPItemMediator__inherit__graph.map b/doc/html/classcUPnPItemMediator__inherit__graph.map
new file mode 100644
index 0000000..563a4e6
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator__inherit__graph.map
@@ -0,0 +1,5 @@
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="107,709,307,869">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,213,296,453">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="128,5,285,165">
+<area shape="rect" href="$classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,917,181,1077">
+<area shape="rect" href="$classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="205,917,437,1077">
diff --git a/doc/html/classcUPnPItemMediator__inherit__graph.md5 b/doc/html/classcUPnPItemMediator__inherit__graph.md5
new file mode 100644
index 0000000..730523b
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator__inherit__graph.md5
@@ -0,0 +1 @@
+23596ccf93e1f2f5d730c6067c3694c1 \ No newline at end of file
diff --git a/doc/html/classcUPnPItemMediator__inherit__graph.png b/doc/html/classcUPnPItemMediator__inherit__graph.png
new file mode 100644
index 0000000..ce4064d
--- /dev/null
+++ b/doc/html/classcUPnPItemMediator__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPMovieMediator-members.html b/doc/html/classcUPnPMovieMediator-members.html
new file mode 100644
index 0000000..f9d4ea4
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator-members.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPMovieMediator Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">createObject</a>(const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPMovieMediator.html#aa40d0f4054d6b90b2cbb0fe6bd8ac38">cUPnPMovieMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoItemMediator.html#1f56334e155773b6c3d86f481f4ad96b">cUPnPVideoItemMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">databaseToObject</a>(cUPnPClassObject *Object, cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">getObject</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a>(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">mDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">mMediaDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">objectToDatabase</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediatorInterface</b>() (defined in <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>)</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPItemMediator</b>() (defined in <a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPMovieMediator</b>() (defined in <a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a>)</td><td><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPObjectMediator</b>() (defined in <a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPVideoItemMediator</b>() (defined in <a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPMovieMediator.html b/doc/html/classcUPnPMovieMediator.html
new file mode 100644
index 0000000..b3eafd3
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator.html
@@ -0,0 +1,240 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPMovieMediator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPMovieMediator Class Reference</h1><!-- doxytag: class="cUPnPMovieMediator" --><!-- doxytag: inherits="cUPnPVideoItemMediator" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPMovieMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPMovieMediator__inherit__graph.png" border="0" usemap="#cUPnPMovieMediator__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPMovieMediator__inherit__map">
+<area shape="rect" href="classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,709,205,869"><area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="23,501,188,661"><area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="16,213,195,453"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="27,5,184,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPMovieMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPMovieMediator__coll__graph.png" border="0" usemap="#cUPnPMovieMediator__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPMovieMediator__coll__map">
+<area shape="rect" href="classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="100,2363,300,2523"><area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,2152,283,2312"><area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPMovieMediator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPMovieMediator.html#aa40d0f4054d6b90b2cbb0fe6bd8ac38">cUPnPMovieMediator</a> (<a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *MediaDatabase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">createObject</a> (const char *Title, bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">objectToDatabase</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">databaseToObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Movie Mediator<p>
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="aa40d0f4054d6b90b2cbb0fe6bd8ac38"></a><!-- doxytag: member="cUPnPMovieMediator::cUPnPMovieMediator" ref="aa40d0f4054d6b90b2cbb0fe6bd8ac38" args="(cMediaDatabase *MediaDatabase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPMovieMediator::cUPnPMovieMediator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td>
+ <td class="paramname"> <em>MediaDatabase</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of movie mediator<p>
+This creates a new movie mediator with which it is possible to create new instances of Movie objects.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>MediaDatabase</em>&nbsp;</td><td>the media database </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="29d40a311b7283cc4fba36860ac8c935"></a><!-- doxytag: member="cUPnPMovieMediator::createObject" ref="29d40a311b7283cc4fba36860ac8c935" args="(const char *Title, bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a> * cUPnPMovieMediator::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="542135e9c1051b57a8f6f5ecc0c1ede3"></a><!-- doxytag: member="cUPnPMovieMediator::databaseToObject" ref="542135e9c1051b57a8f6f5ecc0c1ede3" args="(cUPnPClassObject *Object, cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPMovieMediator::databaseToObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads an object from database<p>
+This loads an object from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be loaded </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID of that object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d85b240eb54efd9ab46c440b51c71e83"></a><!-- doxytag: member="cUPnPMovieMediator::getObject" ref="d85b240eb54efd9ab46c440b51c71e83" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a> * cUPnPMovieMediator::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="61ab6dcaf2417898428ddf1f635788b7"></a><!-- doxytag: member="cUPnPMovieMediator::objectToDatabase" ref="61ab6dcaf2417898428ddf1f635788b7" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPMovieMediator::objectToDatabase </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store the object in the database<p>
+This stores the information of an object in the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPMovieMediator__coll__graph.map b/doc/html/classcUPnPMovieMediator__coll__graph.map
new file mode 100644
index 0000000..dc6c054
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator__coll__graph.map
@@ -0,0 +1,10 @@
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="100,2363,300,2523">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,2152,283,2312">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301">
diff --git a/doc/html/classcUPnPMovieMediator__coll__graph.md5 b/doc/html/classcUPnPMovieMediator__coll__graph.md5
new file mode 100644
index 0000000..3eb9487
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator__coll__graph.md5
@@ -0,0 +1 @@
+b28509e037ae2d73a04b1f501693c90e \ No newline at end of file
diff --git a/doc/html/classcUPnPMovieMediator__coll__graph.png b/doc/html/classcUPnPMovieMediator__coll__graph.png
new file mode 100644
index 0000000..05ff2b4
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPMovieMediator__inherit__graph.map b/doc/html/classcUPnPMovieMediator__inherit__graph.map
new file mode 100644
index 0000000..63ebd83
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator__inherit__graph.map
@@ -0,0 +1,4 @@
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,709,205,869">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="23,501,188,661">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="16,213,195,453">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="27,5,184,165">
diff --git a/doc/html/classcUPnPMovieMediator__inherit__graph.md5 b/doc/html/classcUPnPMovieMediator__inherit__graph.md5
new file mode 100644
index 0000000..fa5b43c
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator__inherit__graph.md5
@@ -0,0 +1 @@
+cf286798b665eb8622707f73085bd4e0 \ No newline at end of file
diff --git a/doc/html/classcUPnPMovieMediator__inherit__graph.png b/doc/html/classcUPnPMovieMediator__inherit__graph.png
new file mode 100644
index 0000000..4371982
--- /dev/null
+++ b/doc/html/classcUPnPMovieMediator__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPObjectFactory-members.html b/doc/html/classcUPnPObjectFactory-members.html
new file mode 100644
index 0000000..468d79f
--- /dev/null
+++ b/doc/html/classcUPnPObjectFactory-members.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjectFactory Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#947c7256906b4dbe63d156723cdc38be">clearObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#c71bbdb30be6b0fd17f67b8850aeccdb">createObject</a>(const char *UPnPClass, const char *Title, bool Restricted=true)</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#10198e67d9da1f964aa895cd463b2f92">deleteObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#5b99e366dad18ab44ee1d2da5f1c3b4d">getInstance</a>()</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#a26f57549c26c6fc15425158e7fda4b6">getObject</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#f2b20dffcd46c08d5b2de4b6807e0689">registerMediator</a>(const char *UPnPClass, cMediatorInterface *Mediator)</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#1b521c8cfa3507bec49274b606d5d2c5">saveObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectFactory.html#ae48ef32453881a77857bf9772d79d22">unregisterMediator</a>(const char *UPnPClass, bool freeMediator=true)</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a></td><td></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPObjectFactory.html b/doc/html/classcUPnPObjectFactory.html
new file mode 100644
index 0000000..1150753
--- /dev/null
+++ b/doc/html/classcUPnPObjectFactory.html
@@ -0,0 +1,332 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPObjectFactory Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjectFactory Class Reference</h1><!-- doxytag: class="cUPnPObjectFactory" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cUPnPObjectFactory:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPObjectFactory__coll__graph.png" border="0" usemap="#cUPnPObjectFactory__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPObjectFactory__coll__map">
+<area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="8,437,163,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="127,261,223,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="28,5,143,197"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPObjectFactory-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#f2b20dffcd46c08d5b2de4b6807e0689">registerMediator</a> (const char *UPnPClass, <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a> *Mediator)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#ae48ef32453881a77857bf9772d79d22">unregisterMediator</a> (const char *UPnPClass, bool freeMediator=true)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#c71bbdb30be6b0fd17f67b8850aeccdb">createObject</a> (const char *UPnPClass, const char *Title, bool Restricted=true)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#a26f57549c26c6fc15425158e7fda4b6">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#1b521c8cfa3507bec49274b606d5d2c5">saveObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#10198e67d9da1f964aa895cd463b2f92">deleteObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#947c7256906b4dbe63d156723cdc38be">clearObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectFactory.html#5b99e366dad18ab44ee1d2da5f1c3b4d">getInstance</a> ()</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The object factory<p>
+This factory can create, delete, clear or save UPnP objects. It uses mediators to communicate with the persistance database to load or persist the objects.<p>
+If a new type of object shall be stored in the database an according mediator is needed, which knows the internal database structure. It must implement the <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a> class to work with this factory. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="947c7256906b4dbe63d156723cdc38be"></a><!-- doxytag: member="cUPnPObjectFactory::clearObject" ref="947c7256906b4dbe63d156723cdc38be" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectFactory::clearObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clears the object<p>
+This clears the object, i.e. all its children will be removed and deleted from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be cleared </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c71bbdb30be6b0fd17f67b8850aeccdb"></a><!-- doxytag: member="cUPnPObjectFactory::createObject" ref="c71bbdb30be6b0fd17f67b8850aeccdb" args="(const char *UPnPClass, const char *Title, bool Restricted=true)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cUPnPObjectFactory::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>UPnPClass</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em> = <code>true</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>UPnPClass</em>&nbsp;</td><td>the class of the new object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="10198e67d9da1f964aa895cd463b2f92"></a><!-- doxytag: member="cUPnPObjectFactory::deleteObject" ref="10198e67d9da1f964aa895cd463b2f92" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectFactory::deleteObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deletes the object<p>
+This deletes the object in the database by removing all its children and then deleting the contents from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be deleted </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5b99e366dad18ab44ee1d2da5f1c3b4d"></a><!-- doxytag: member="cUPnPObjectFactory::getInstance" ref="5b99e366dad18ab44ee1d2da5f1c3b4d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a> * cUPnPObjectFactory::getInstance </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the instance of the factory<p>
+This returns the instance of the factory. When the media database is initialized successfully, it usally has all known mediators already registered.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the instance of the factory </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a26f57549c26c6fc15425158e7fda4b6"></a><!-- doxytag: member="cUPnPObjectFactory::getObject" ref="a26f57549c26c6fc15425158e7fda4b6" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cUPnPObjectFactory::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f2b20dffcd46c08d5b2de4b6807e0689"></a><!-- doxytag: member="cUPnPObjectFactory::registerMediator" ref="f2b20dffcd46c08d5b2de4b6807e0689" args="(const char *UPnPClass, cMediatorInterface *Mediator)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPObjectFactory::registerMediator </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>UPnPClass</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a> *&nbsp;</td>
+ <td class="paramname"> <em>Mediator</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register a mediator<p>
+This registers a new mediator by the associated class. The mediator must implement the <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a> class to be used with this factory.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>UPnPClass</em>&nbsp;</td><td>the class of which the mediator is associated to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Mediator</em>&nbsp;</td><td>the mediator itself </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1b521c8cfa3507bec49274b606d5d2c5"></a><!-- doxytag: member="cUPnPObjectFactory::saveObject" ref="1b521c8cfa3507bec49274b606d5d2c5" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectFactory::saveObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Saves the object<p>
+This saves the object in the database by updating the values in the database with those in the object.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ae48ef32453881a77857bf9772d79d22"></a><!-- doxytag: member="cUPnPObjectFactory::unregisterMediator" ref="ae48ef32453881a77857bf9772d79d22" args="(const char *UPnPClass, bool freeMediator=true)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPObjectFactory::unregisterMediator </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>UPnPClass</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>freeMediator</em> = <code>true</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unregisters a mediator<p>
+This unregisters a mediator if it is not needed anylonger. If the optional parameter <code>freeMediator</code> is set, the object instance will be free'd after removing it from the list.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>UPnPClass</em>&nbsp;</td><td>the class of the associated mediator </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>freeMediator</em>&nbsp;</td><td>flag to indicate if the mediator shall be free'd after removing </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPObjectFactory__coll__graph.map b/doc/html/classcUPnPObjectFactory__coll__graph.map
new file mode 100644
index 0000000..36c490e
--- /dev/null
+++ b/doc/html/classcUPnPObjectFactory__coll__graph.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="8,437,163,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="127,261,223,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="28,5,143,197">
diff --git a/doc/html/classcUPnPObjectFactory__coll__graph.md5 b/doc/html/classcUPnPObjectFactory__coll__graph.md5
new file mode 100644
index 0000000..0741725
--- /dev/null
+++ b/doc/html/classcUPnPObjectFactory__coll__graph.md5
@@ -0,0 +1 @@
+4b1d1db4c258c702267dd46ae7547035 \ No newline at end of file
diff --git a/doc/html/classcUPnPObjectFactory__coll__graph.png b/doc/html/classcUPnPObjectFactory__coll__graph.png
new file mode 100644
index 0000000..891223a
--- /dev/null
+++ b/doc/html/classcUPnPObjectFactory__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPObjectMediator-members.html b/doc/html/classcUPnPObjectMediator-members.html
new file mode 100644
index 0000000..457d3d8
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator-members.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjectMediator Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">createObject</a>(const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#07a6a1d2694fb2f4573bd50374406b24">databaseToObject</a>(cUPnPClassObject *Object, cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">getObject</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a>(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">mDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">mMediaDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#c44c010895f92adc63af2a2d34cf34c8">objectToDatabase</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediatorInterface</b>() (defined in <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>)</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPObjectMediator</b>() (defined in <a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPObjectMediator.html b/doc/html/classcUPnPObjectMediator.html
new file mode 100644
index 0000000..9341c18
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator.html
@@ -0,0 +1,410 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPObjectMediator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjectMediator Class Reference</h1><!-- doxytag: class="cUPnPObjectMediator" --><!-- doxytag: inherits="cMediatorInterface" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPObjectMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPObjectMediator__inherit__graph.png" border="0" usemap="#cUPnPObjectMediator__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPObjectMediator__inherit__map">
+<area shape="rect" href="classcUPnPContainerMediator.html" title="{cUPnPContainerMediator\n||+ cUPnPContainerMediator()\l+ ~cUPnPContainerMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,501,200,661"><area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="224,501,389,661"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="125,5,283,165"><area shape="rect" href="classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="207,709,407,869"><area shape="rect" href="classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="105,917,281,1077"><area shape="rect" href="classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="305,917,537,1077"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPObjectMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPObjectMediator__coll__graph.png" border="0" usemap="#cUPnPObjectMediator__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPObjectMediator__coll__map">
+<area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPObjectMediator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">createObject</a> (const char *Title, bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a> (<a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *MediaDatabase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, const char *Class, const char *Title, bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#c44c010895f92adc63af2a2d34cf34c8">objectToDatabase</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#07a6a1d2694fb2f4573bd50374406b24">databaseToObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e4c8b57a4ebeee1cd55306d436a10541"></a><!-- doxytag: member="cUPnPObjectMediator::mDatabase" ref="e4c8b57a4ebeee1cd55306d436a10541" args="" -->
+<a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">mDatabase</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the SQLite 3 database wrapper <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dbdaa3de8276658a0f8d91d24a789ddf"></a><!-- doxytag: member="cUPnPObjectMediator::mMediaDatabase" ref="dbdaa3de8276658a0f8d91d24a789ddf" args="" -->
+<a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">mMediaDatabase</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the media database <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Object Mediator<p>
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="1bc635808c95f6bd774046c37b8139a1"></a><!-- doxytag: member="cUPnPObjectMediator::cUPnPObjectMediator" ref="1bc635808c95f6bd774046c37b8139a1" args="(cMediaDatabase *MediaDatabase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPObjectMediator::cUPnPObjectMediator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td>
+ <td class="paramname"> <em>MediaDatabase</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of object mediator<p>
+This constructs a new object mediator. This is actually not allowed because it is prohibited to create instances of the UPnP class Object <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>MediaDatabase</em>&nbsp;</td><td>the media database </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="9ab720e86c6d6cb397799ac5070f70aa"></a><!-- doxytag: member="cUPnPObjectMediator::clearObject" ref="9ab720e86c6d6cb397799ac5070f70aa" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectMediator::clearObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clears the object<p>
+This clears the object, i.e. all its children will be removed and deleted from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be cleared </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcMediatorInterface.html#cd087c690154d43ac5ef92c5a42f2349">cMediatorInterface</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="bfbca3f1cbadacee2b21306364750f26"></a><!-- doxytag: member="cUPnPObjectMediator::createObject" ref="bfbca3f1cbadacee2b21306364750f26" args="(const char *Title, bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cUPnPObjectMediator::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcMediatorInterface.html#68a8350f7ea5ccd2496580035228b1fc">cMediatorInterface</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">cUPnPItemMediator</a>, <a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">cUPnPVideoBroadcastMediator</a>, <a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">cUPnPMovieMediator</a>, and <a class="el" href="classcUPnPContainerMediator.html#751177c725da94b1b91f6cda4645844d">cUPnPContainerMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="07a6a1d2694fb2f4573bd50374406b24"></a><!-- doxytag: member="cUPnPObjectMediator::databaseToObject" ref="07a6a1d2694fb2f4573bd50374406b24" args="(cUPnPClassObject *Object, cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectMediator::databaseToObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads an object from database<p>
+This loads an object from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be loaded </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID of that object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classcUPnPItemMediator.html#1f3645ebe0a33a81d0b3f22060dc4761">cUPnPItemMediator</a>, <a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">cUPnPVideoBroadcastMediator</a>, <a class="el" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">cUPnPMovieMediator</a>, and <a class="el" href="classcUPnPContainerMediator.html#79f483b48f596047ed9549f0b036f35b">cUPnPContainerMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="0d2f9d72a678002456cbdeccb2c6e5fe"></a><!-- doxytag: member="cUPnPObjectMediator::deleteObject" ref="0d2f9d72a678002456cbdeccb2c6e5fe" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectMediator::deleteObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deletes the object<p>
+This deletes the object in the database by removing all its children and then deleting the contents from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be deleted </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcMediatorInterface.html#ffbddb7fe72554b9cde9d02648cf8f0e">cMediatorInterface</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="5b4fff612476fb51690919f9c59899a5"></a><!-- doxytag: member="cUPnPObjectMediator::getObject" ref="5b4fff612476fb51690919f9c59899a5" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cUPnPObjectMediator::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcMediatorInterface.html#716ad95bf6ac5a10e9409ced7a63a9d8">cMediatorInterface</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">cUPnPItemMediator</a>, <a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">cUPnPVideoBroadcastMediator</a>, <a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">cUPnPMovieMediator</a>, and <a class="el" href="classcUPnPContainerMediator.html#78b71f96fb4289dc78f897d6282078d6">cUPnPContainerMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="a5a3c6d0fd0cff8c74e6fc40d723290f"></a><!-- doxytag: member="cUPnPObjectMediator::initializeObject" ref="a5a3c6d0fd0cff8c74e6fc40d723290f" args="(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectMediator::initializeObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Class</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initializes an object<p>
+This initializes an object, which means, that it will be created in the database with the required details.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be initialized </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Class</em>&nbsp;</td><td>the class of the object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of the object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>restriction of the object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c44c010895f92adc63af2a2d34cf34c8"></a><!-- doxytag: member="cUPnPObjectMediator::objectToDatabase" ref="c44c010895f92adc63af2a2d34cf34c8" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectMediator::objectToDatabase </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store the object in the database<p>
+This stores the information of an object in the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classcUPnPItemMediator.html#6d954b1cfdc4a7d55981c6ebff9d6d04">cUPnPItemMediator</a>, <a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">cUPnPVideoItemMediator</a>, <a class="el" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">cUPnPVideoBroadcastMediator</a>, <a class="el" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">cUPnPMovieMediator</a>, and <a class="el" href="classcUPnPContainerMediator.html#1caa4625fca42940ba36999a71ac49ec">cUPnPContainerMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c200f88239b8940d9d38cbe04c3e961e"></a><!-- doxytag: member="cUPnPObjectMediator::saveObject" ref="c200f88239b8940d9d38cbe04c3e961e" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPObjectMediator::saveObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Saves the object<p>
+This saves the object in the database by updating the values in the database with those in the object.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Implements <a class="el" href="classcMediatorInterface.html#a2f40e697f499c64cfd007aa70e3da7e">cMediatorInterface</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPObjectMediator__coll__graph.map b/doc/html/classcUPnPObjectMediator__coll__graph.map
new file mode 100644
index 0000000..eac265a
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator__coll__graph.map
@@ -0,0 +1,7 @@
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301">
diff --git a/doc/html/classcUPnPObjectMediator__coll__graph.md5 b/doc/html/classcUPnPObjectMediator__coll__graph.md5
new file mode 100644
index 0000000..5d8763f
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator__coll__graph.md5
@@ -0,0 +1 @@
+82ea5e2544d0b2024eb8822c70954a87 \ No newline at end of file
diff --git a/doc/html/classcUPnPObjectMediator__coll__graph.png b/doc/html/classcUPnPObjectMediator__coll__graph.png
new file mode 100644
index 0000000..f620ae1
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPObjectMediator__inherit__graph.map b/doc/html/classcUPnPObjectMediator__inherit__graph.map
new file mode 100644
index 0000000..060c4a3
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator__inherit__graph.map
@@ -0,0 +1,6 @@
+<area shape="rect" href="$classcUPnPContainerMediator.html" title="{cUPnPContainerMediator\n||+ cUPnPContainerMediator()\l+ ~cUPnPContainerMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,501,200,661">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="224,501,389,661">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="125,5,283,165">
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="207,709,407,869">
+<area shape="rect" href="$classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="105,917,281,1077">
+<area shape="rect" href="$classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="305,917,537,1077">
diff --git a/doc/html/classcUPnPObjectMediator__inherit__graph.md5 b/doc/html/classcUPnPObjectMediator__inherit__graph.md5
new file mode 100644
index 0000000..9d2d582
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator__inherit__graph.md5
@@ -0,0 +1 @@
+f14b6c4562f6ccdc713d4e6d17576bb2 \ No newline at end of file
diff --git a/doc/html/classcUPnPObjectMediator__inherit__graph.png b/doc/html/classcUPnPObjectMediator__inherit__graph.png
new file mode 100644
index 0000000..82c3858
--- /dev/null
+++ b/doc/html/classcUPnPObjectMediator__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPObjects-members.html b/doc/html/classcUPnPObjects-members.html
new file mode 100644
index 0000000..8df2272
--- /dev/null
+++ b/doc/html/classcUPnPObjects-members.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjects Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPObjects.html">cUPnPObjects</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPObjects</b>() (defined in <a class="el" href="classcUPnPObjects.html">cUPnPObjects</a>)</td><td><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjects.html#d9368864f90f5b72742895015df1aef2">SortBy</a>(const char *Property, bool Descending=false)</td><td><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPObjects</b>() (defined in <a class="el" href="classcUPnPObjects.html">cUPnPObjects</a>)</td><td><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPObjects.html b/doc/html/classcUPnPObjects.html
new file mode 100644
index 0000000..c729ec4
--- /dev/null
+++ b/doc/html/classcUPnPObjects.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPObjects Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjects Class Reference</h1><!-- doxytag: class="cUPnPObjects" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="classcUPnPObjects-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPObjects.html#d9368864f90f5b72742895015df1aef2">SortBy</a> (const char *Property, bool Descending=false)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+List of UPnP Objects<p>
+This is a cList of UPnP Objects The list can be sorted by using a specific property <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="d9368864f90f5b72742895015df1aef2"></a><!-- doxytag: member="cUPnPObjects::SortBy" ref="d9368864f90f5b72742895015df1aef2" args="(const char *Property, bool Descending=false)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPObjects::SortBy </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Descending</em> = <code>false</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sorts the list<p>
+This sorts the list by a specific property and a certain direction <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Property</em>&nbsp;</td><td>the property used for sorting </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Descending</em>&nbsp;</td><td>the direction of the sort </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPResource-members.html b/doc/html/classcUPnPResource-members.html
new file mode 100644
index 0000000..34544ee
--- /dev/null
+++ b/doc/html/classcUPnPResource-members.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResource Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPResource.html">cUPnPResource</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cAudioVideoDetector</b> (defined in <a class="el" href="classcUPnPResource.html">cUPnPResource</a>)</td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPResourceMediator</b> (defined in <a class="el" href="classcUPnPResource.html">cUPnPResource</a>)</td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [friend]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPResources</b> (defined in <a class="el" href="classcUPnPResource.html">cUPnPResource</a>)</td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#3f2f3d5c447fee28d3dff5cf739e4c98">getBitrate</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#3efd82888fd648dd08b5d43520638d17">getBitsPerSample</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#276eddcc28bad31d6178cf109373074a">getColorDepth</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#6aeaaf476c5d6548b15bb381c032b815">getContentType</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#5da7e39c5fc76f5607c232319daa135c">getDuration</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#5cabb363c4fd0785d3f073011df835e9">getFileSize</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#47ad15c119fbcfdda1bc5f60d0a3efc9">getID</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#04ab0d214e39ddfa18339926cef9fd64">getImportURI</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#c95a8fe0bdba2c371a46e4e267dab1aa">getLastModification</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#ff18e089f421d710580292f0b91b40f8">getNrAudioChannels</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#0ff5e61a2d07873ae2ebdab7d87b3d9f">getProtocolInfo</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#27d5140dc72a8e034ce197913d6aa1d5">getResolution</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#b648a88993b0e5a4421514f45a5b266f">getResource</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#6b6855ba6d4bd06805750ede92449c8d">getResourceType</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#5ea6003b282c48f575bc54f5c9658ca9">getSampleFrequency</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResource.html#361f6991a29dddf575a2b0b63ce5a66a">getSize</a>() const </td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPResource.html b/doc/html/classcUPnPResource.html
new file mode 100644
index 0000000..1cf720a
--- /dev/null
+++ b/doc/html/classcUPnPResource.html
@@ -0,0 +1,444 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPResource Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResource Class Reference</h1><!-- doxytag: class="cUPnPResource" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cUPnPResource:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPResource__coll__graph.png" border="0" usemap="#cUPnPResource__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPResource__coll__map">
+<area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPResource-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#47ad15c119fbcfdda1bc5f60d0a3efc9">getID</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#b648a88993b0e5a4421514f45a5b266f">getResource</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#5da7e39c5fc76f5607c232319daa135c">getDuration</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#27d5140dc72a8e034ce197913d6aa1d5">getResolution</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#0ff5e61a2d07873ae2ebdab7d87b3d9f">getProtocolInfo</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#6aeaaf476c5d6548b15bb381c032b815">getContentType</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#04ab0d214e39ddfa18339926cef9fd64">getImportURI</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#6b6855ba6d4bd06805750ede92449c8d">getResourceType</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#361f6991a29dddf575a2b0b63ce5a66a">getSize</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">off64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#5cabb363c4fd0785d3f073011df835e9">getFileSize</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#c95a8fe0bdba2c371a46e4e267dab1aa">getLastModification</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#3f2f3d5c447fee28d3dff5cf739e4c98">getBitrate</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#5ea6003b282c48f575bc54f5c9658ca9">getSampleFrequency</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#3efd82888fd648dd08b5d43520638d17">getBitsPerSample</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#ff18e089f421d710580292f0b91b40f8">getNrAudioChannels</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#276eddcc28bad31d6178cf109373074a">getColorDepth</a> () const </td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="61e899959de76787a31b2caf642893f5"></a><!-- doxytag: member="cUPnPResource::cUPnPResourceMediator" ref="61e899959de76787a31b2caf642893f5" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#61e899959de76787a31b2caf642893f5">cUPnPResourceMediator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bd3fceb5edae16f35b23748913128356"></a><!-- doxytag: member="cUPnPResource::cUPnPResources" ref="bd3fceb5edae16f35b23748913128356" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#bd3fceb5edae16f35b23748913128356">cUPnPResources</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="41bb7e713331591ea53b89d0019b101a"></a><!-- doxytag: member="cUPnPResource::cAudioVideoDetector" ref="41bb7e713331591ea53b89d0019b101a" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResource.html#41bb7e713331591ea53b89d0019b101a">cAudioVideoDetector</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+UPnP Resource<p>
+This contains all details about a resource <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="3f2f3d5c447fee28d3dff5cf739e4c98"></a><!-- doxytag: member="cUPnPResource::getBitrate" ref="3f2f3d5c447fee28d3dff5cf739e4c98" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPResource::getBitrate </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the bitrate<p>
+This returns the bitrate of the resource in bits per second.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the bitrate of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3efd82888fd648dd08b5d43520638d17"></a><!-- doxytag: member="cUPnPResource::getBitsPerSample" ref="3efd82888fd648dd08b5d43520638d17" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPResource::getBitsPerSample </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the bits per sample<p>
+Returns the number of bits per sample.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the bits per sample of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="276eddcc28bad31d6178cf109373074a"></a><!-- doxytag: member="cUPnPResource::getColorDepth" ref="276eddcc28bad31d6178cf109373074a" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPResource::getColorDepth </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the color depth<p>
+Returns the color depth of the resource in pits per pixel<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the color depth of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6aeaaf476c5d6548b15bb381c032b815"></a><!-- doxytag: member="cUPnPResource::getContentType" ref="6aeaaf476c5d6548b15bb381c032b815" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPResource::getContentType </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the content type<p>
+Returns the mime type of the content of the resource<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the content type of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5da7e39c5fc76f5607c232319daa135c"></a><!-- doxytag: member="cUPnPResource::getDuration" ref="5da7e39c5fc76f5607c232319daa135c" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPResource::getDuration </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the duration<p>
+Returns a date time string with the duration of the resource<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the duration of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5cabb363c4fd0785d3f073011df835e9"></a><!-- doxytag: member="cUPnPResource::getFileSize" ref="5cabb363c4fd0785d3f073011df835e9" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">off64_t cUPnPResource::getFileSize </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the file size<p>
+Returns the file size in bytes of the resource or 0 if its unknown or a stream<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the file size </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="47ad15c119fbcfdda1bc5f60d0a3efc9"></a><!-- doxytag: member="cUPnPResource::getID" ref="47ad15c119fbcfdda1bc5f60d0a3efc9" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPResource::getID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get resource ID<p>
+Gets the resource ID<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resource ID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="04ab0d214e39ddfa18339926cef9fd64"></a><!-- doxytag: member="cUPnPResource::getImportURI" ref="04ab0d214e39ddfa18339926cef9fd64" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPResource::getImportURI </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the import URI<p>
+This returns the import URI where the resource was located before importing it<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the import URI </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c95a8fe0bdba2c371a46e4e267dab1aa"></a><!-- doxytag: member="cUPnPResource::getLastModification" ref="c95a8fe0bdba2c371a46e4e267dab1aa" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">time_t cUPnPResource::getLastModification </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the last modification<p>
+This returns the timestamp of the last modification to the file. If it is a stream, then its the current time.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the timestamp with the last modification of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ff18e089f421d710580292f0b91b40f8"></a><!-- doxytag: member="cUPnPResource::getNrAudioChannels" ref="ff18e089f421d710580292f0b91b40f8" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPResource::getNrAudioChannels </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get number of audio channels<p>
+Returns the number of audio channels of the audio stream in a video<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the number of audio channels </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0ff5e61a2d07873ae2ebdab7d87b3d9f"></a><!-- doxytag: member="cUPnPResource::getProtocolInfo" ref="0ff5e61a2d07873ae2ebdab7d87b3d9f" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPResource::getProtocolInfo </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the protocol info<p>
+This returns the protocol info field of a resource<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the protocol info string </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="27d5140dc72a8e034ce197913d6aa1d5"></a><!-- doxytag: member="cUPnPResource::getResolution" ref="27d5140dc72a8e034ce197913d6aa1d5" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPResource::getResolution </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the resolution<p>
+Returns the resolution string with the pattern width x height in pixels<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resolution of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b648a88993b0e5a4421514f45a5b266f"></a><!-- doxytag: member="cUPnPResource::getResource" ref="b648a88993b0e5a4421514f45a5b266f" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPResource::getResource </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the resources<p>
+Returns the resource. This is in most cases the file name or resource locator where to find the resource<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resource string </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="6b6855ba6d4bd06805750ede92449c8d"></a><!-- doxytag: member="cUPnPResource::getResourceType" ref="6b6855ba6d4bd06805750ede92449c8d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPResource::getResourceType </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the resource type<p>
+This returns the resource type of the resource.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resource type </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5ea6003b282c48f575bc54f5c9658ca9"></a><!-- doxytag: member="cUPnPResource::getSampleFrequency" ref="5ea6003b282c48f575bc54f5c9658ca9" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int cUPnPResource::getSampleFrequency </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the sample frequency<p>
+Returns the sample frequency in samples per second.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the sample frequency of the resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="361f6991a29dddf575a2b0b63ce5a66a"></a><!-- doxytag: member="cUPnPResource::getSize" ref="361f6991a29dddf575a2b0b63ce5a66a" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned long cUPnPResource::getSize </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the size<p>
+Returns the resource size or -1 if its unknown<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resource size or -1 if unknown </dd></dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPResourceMediator-members.html b/doc/html/classcUPnPResourceMediator-members.html
new file mode 100644
index 0000000..df867e0
--- /dev/null
+++ b/doc/html/classcUPnPResourceMediator-members.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResourceMediator Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPResources</b> (defined in <a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>)</td><td><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResourceMediator.html#9d4d8cc5eafb18b13ad7d14793d3f9de">getResource</a>(unsigned int ResourceID)</td><td><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResourceMediator.html#14367dd7e160f6c6812279b84a4fa8e2">newResource</a>(cUPnPClassObject *Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)</td><td><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResourceMediator.html#a633cef46d5cae9aecec05ea28d7c14e">saveResource</a>(cUPnPResource *Resource)</td><td><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPResourceMediator</b>() (defined in <a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>)</td><td><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPResourceMediator.html b/doc/html/classcUPnPResourceMediator.html
new file mode 100644
index 0000000..0f683d3
--- /dev/null
+++ b/doc/html/classcUPnPResourceMediator.html
@@ -0,0 +1,177 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPResourceMediator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResourceMediator Class Reference</h1><!-- doxytag: class="cUPnPResourceMediator" --><code>#include &lt;<a class="el" href="resources_8h-source.html">resources.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cUPnPResourceMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPResourceMediator__coll__graph.png" border="0" usemap="#cUPnPResourceMediator__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPResourceMediator__coll__map">
+<area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="25,437,180,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="144,261,240,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="45,5,160,197"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPResourceMediator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResourceMediator.html#9d4d8cc5eafb18b13ad7d14793d3f9de">getResource</a> (unsigned int ResourceID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResourceMediator.html#a633cef46d5cae9aecec05ea28d7c14e">saveResource</a> (<a class="el" href="classcUPnPResource.html">cUPnPResource</a> *Resource)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResourceMediator.html#14367dd7e160f6c6812279b84a4fa8e2">newResource</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bd3fceb5edae16f35b23748913128356"></a><!-- doxytag: member="cUPnPResourceMediator::cUPnPResources" ref="bd3fceb5edae16f35b23748913128356" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResourceMediator.html#bd3fceb5edae16f35b23748913128356">cUPnPResources</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The resource mediator<p>
+This is another mediator which communicates with the database. It manages the resources in the database <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="9d4d8cc5eafb18b13ad7d14793d3f9de"></a><!-- doxytag: member="cUPnPResourceMediator::getResource" ref="9d4d8cc5eafb18b13ad7d14793d3f9de" args="(unsigned int ResourceID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> * cUPnPResourceMediator::getResource </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>ResourceID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a resource by ID<p>
+This returns a resource by its resource ID<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ResourceID</em>&nbsp;</td><td>the resource ID of the demanded resource </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the requested resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="14367dd7e160f6c6812279b84a4fa8e2"></a><!-- doxytag: member="cUPnPResourceMediator::newResource" ref="14367dd7e160f6c6812279b84a4fa8e2" args="(cUPnPClassObject *Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> * cUPnPResourceMediator::newResource </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ResourceType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cString&nbsp;</td>
+ <td class="paramname"> <em>ResourceFile</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cString&nbsp;</td>
+ <td class="paramname"> <em>ContentType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cString&nbsp;</td>
+ <td class="paramname"> <em>ProtocolInfo</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create new resource<p>
+This creates a new resource and stores the skeleton in the database. The newly created resource will only contain all required information.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the Object which will hold the resource </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ResourceType</em>&nbsp;</td><td>the type of the resource </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ResourceFile</em>&nbsp;</td><td>the file or URL, where the resource can be located </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ContentType</em>&nbsp;</td><td>the mime type of the content </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ProtocolInfo</em>&nbsp;</td><td>the protocol information of the resource </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a633cef46d5cae9aecec05ea28d7c14e"></a><!-- doxytag: member="cUPnPResourceMediator::saveResource" ref="a633cef46d5cae9aecec05ea28d7c14e" args="(cUPnPResource *Resource)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPResourceMediator::saveResource </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td>
+ <td class="paramname"> <em>Resource</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Saves the resource<p>
+This updates the information in the database with those in the resource object<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Resource</em>&nbsp;</td><td>the resource which shall be saved </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if saving was successful</li><li><b><code>&lt;0</code>,</b> if an error occured </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="resources_8h-source.html">resources.h</a><li>database/resources.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPResourceMediator__coll__graph.map b/doc/html/classcUPnPResourceMediator__coll__graph.map
new file mode 100644
index 0000000..8866bbe
--- /dev/null
+++ b/doc/html/classcUPnPResourceMediator__coll__graph.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="25,437,180,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="144,261,240,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="45,5,160,197">
diff --git a/doc/html/classcUPnPResourceMediator__coll__graph.md5 b/doc/html/classcUPnPResourceMediator__coll__graph.md5
new file mode 100644
index 0000000..1bdf579
--- /dev/null
+++ b/doc/html/classcUPnPResourceMediator__coll__graph.md5
@@ -0,0 +1 @@
+fc457de78914027436062a81d4c6a18a \ No newline at end of file
diff --git a/doc/html/classcUPnPResourceMediator__coll__graph.png b/doc/html/classcUPnPResourceMediator__coll__graph.png
new file mode 100644
index 0000000..717d1c6
--- /dev/null
+++ b/doc/html/classcUPnPResourceMediator__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPResource__coll__graph.map b/doc/html/classcUPnPResource__coll__graph.map
new file mode 100644
index 0000000..a09fd35
--- /dev/null
+++ b/doc/html/classcUPnPResource__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="5,5,168,389">
diff --git a/doc/html/classcUPnPResource__coll__graph.md5 b/doc/html/classcUPnPResource__coll__graph.md5
new file mode 100644
index 0000000..c7e97b0
--- /dev/null
+++ b/doc/html/classcUPnPResource__coll__graph.md5
@@ -0,0 +1 @@
+f771dfca9a945d9e574a7c2d256df95f \ No newline at end of file
diff --git a/doc/html/classcUPnPResource__coll__graph.png b/doc/html/classcUPnPResource__coll__graph.png
new file mode 100644
index 0000000..a62d8a4
--- /dev/null
+++ b/doc/html/classcUPnPResource__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPResources-members.html b/doc/html/classcUPnPResources-members.html
new file mode 100644
index 0000000..d6589a0
--- /dev/null
+++ b/doc/html/classcUPnPResources-members.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResources Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPResources.html">cUPnPResources</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResources.html#974dd63afd52b87732800b7cf578a387">createFromChannel</a>(cUPnPClassVideoBroadcast *Object, cChannel *Channel)</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResources.html#b2bac789a9caf023940dfc02a079c249">createFromFile</a>(cUPnPClassItem *Object, cString File)</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResources.html#47b243391bc9e1867bc16d4307f2af8a">createFromRecording</a>(cUPnPClassVideoItem *Object, cRecording *Recording)</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResources.html#c3136b664928d2214e76e0e65a4ace6a">getInstance</a>()</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResources.html#cfec64e65fa14c1efb653c9c4fbbc609">getResource</a>(unsigned int ResourceID)</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResources.html#5da9137336fa284040a823f53267b837">getResourcesOfObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPResources.html#eaffc72ee9faeb046a41b965ce61507f">loadResources</a>()</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPResources</b>() (defined in <a class="el" href="classcUPnPResources.html">cUPnPResources</a>)</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPResources.html b/doc/html/classcUPnPResources.html
new file mode 100644
index 0000000..5e1be2a
--- /dev/null
+++ b/doc/html/classcUPnPResources.html
@@ -0,0 +1,289 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPResources Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResources Class Reference</h1><!-- doxytag: class="cUPnPResources" --><code>#include &lt;<a class="el" href="resources_8h-source.html">resources.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cUPnPResources:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPResources__coll__graph.png" border="0" usemap="#cUPnPResources__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPResources__coll__map">
+<area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="5,437,160,853"><area shape="rect" href="classcUPnPResourceMediator.html" title="{cUPnPResourceMediator\n|&#45; mDatabase\l|+ ~cUPnPResourceMediator()\l+ getResource()\l+ saveResource()\l+ newResource()\l&#45; cUPnPResourceMediator()\l&#45; getNextResourceID()\l}" alt="" coords="152,917,347,1077"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="124,261,220,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="25,5,140,197"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPResources-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResources.html#5da9137336fa284040a823f53267b837">getResourcesOfObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResources.html#eaffc72ee9faeb046a41b965ce61507f">loadResources</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResources.html#cfec64e65fa14c1efb653c9c4fbbc609">getResource</a> (unsigned int ResourceID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResources.html#974dd63afd52b87732800b7cf578a387">createFromChannel</a> (<a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a> *Object, cChannel *Channel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResources.html#47b243391bc9e1867bc16d4307f2af8a">createFromRecording</a> (<a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> *Object, cRecording *Recording)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResources.html#b2bac789a9caf023940dfc02a079c249">createFromFile</a> (<a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *Object, cString File)</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcUPnPResources.html">cUPnPResources</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPResources.html#c3136b664928d2214e76e0e65a4ace6a">getInstance</a> ()</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The resource manager<p>
+This manages the resources in an internal cache. It may create a new resource from a channel, a recording or a custom file. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="974dd63afd52b87732800b7cf578a387"></a><!-- doxytag: member="cUPnPResources::createFromChannel" ref="974dd63afd52b87732800b7cf578a387" args="(cUPnPClassVideoBroadcast *Object, cChannel *Channel)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPResources::createFromChannel </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cChannel *&nbsp;</td>
+ <td class="paramname"> <em>Channel</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create resource from channel<p>
+This creates a new resource from the given channel. It determines what kind of video stream it is and further details if available. It stores the resource in the database after creating it.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the videoBroadcast item which holds the resource </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>the VDR TV channel </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if loading was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b2bac789a9caf023940dfc02a079c249"></a><!-- doxytag: member="cUPnPResources::createFromFile" ref="b2bac789a9caf023940dfc02a079c249" args="(cUPnPClassItem *Object, cString File)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPResources::createFromFile </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cString&nbsp;</td>
+ <td class="paramname"> <em>File</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create resource from file<p>
+This creates a new resource from the given file. It determines all available information about the resource by analizing the content. It stores the resource in the database after creating it.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the item which holds the resource </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>File</em>&nbsp;</td><td>the file name </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if loading was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="47b243391bc9e1867bc16d4307f2af8a"></a><!-- doxytag: member="cUPnPResources::createFromRecording" ref="47b243391bc9e1867bc16d4307f2af8a" args="(cUPnPClassVideoItem *Object, cRecording *Recording)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPResources::createFromRecording </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">cRecording *&nbsp;</td>
+ <td class="paramname"> <em>Recording</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create resource from recording<p>
+This creates a new resource from the given recording. It determines what kind of video stream it is and further details if available. It stores the resource in the database after creating it.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the videoItem item which holds the resource </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Recording</em>&nbsp;</td><td>the VDR TV recording </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if loading was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c3136b664928d2214e76e0e65a4ace6a"></a><!-- doxytag: member="cUPnPResources::getInstance" ref="c3136b664928d2214e76e0e65a4ace6a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPResources.html">cUPnPResources</a> * cUPnPResources::getInstance </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the instance of the resource manager<p>
+This returns the instance of the resource manager.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the instance of the manager </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="cfec64e65fa14c1efb653c9c4fbbc609"></a><!-- doxytag: member="cUPnPResources::getResource" ref="cfec64e65fa14c1efb653c9c4fbbc609" args="(unsigned int ResourceID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPResource.html">cUPnPResource</a> * cUPnPResources::getResource </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>ResourceID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a resource by ID<p>
+This returns a resource by its resource ID<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ResourceID</em>&nbsp;</td><td>the resource ID of the demanded resource </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the requested resource </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5da9137336fa284040a823f53267b837"></a><!-- doxytag: member="cUPnPResources::getResourcesOfObject" ref="5da9137336fa284040a823f53267b837" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPResources::getResourcesOfObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Fill object with its resources<p>
+This will load all the resources from the database, which are associated to the given object<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object, which shall be filled </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if loading was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="eaffc72ee9faeb046a41b965ce61507f"></a><!-- doxytag: member="cUPnPResources::loadResources" ref="eaffc72ee9faeb046a41b965ce61507f" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPResources::loadResources </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads all resources from database<p>
+This loads all resources from the database into the internal cache.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>0</code>,</b> if loading was successful</li><li><b><code>&lt;0</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="resources_8h-source.html">resources.h</a><li>database/resources.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPResources__coll__graph.map b/doc/html/classcUPnPResources__coll__graph.map
new file mode 100644
index 0000000..a40f8cc
--- /dev/null
+++ b/doc/html/classcUPnPResources__coll__graph.map
@@ -0,0 +1,4 @@
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="5,437,160,853">
+<area shape="rect" href="$classcUPnPResourceMediator.html" title="{cUPnPResourceMediator\n|&#45; mDatabase\l|+ ~cUPnPResourceMediator()\l+ getResource()\l+ saveResource()\l+ newResource()\l&#45; cUPnPResourceMediator()\l&#45; getNextResourceID()\l}" alt="" coords="152,917,347,1077">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="124,261,220,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="25,5,140,197">
diff --git a/doc/html/classcUPnPResources__coll__graph.md5 b/doc/html/classcUPnPResources__coll__graph.md5
new file mode 100644
index 0000000..60f459d
--- /dev/null
+++ b/doc/html/classcUPnPResources__coll__graph.md5
@@ -0,0 +1 @@
+b006b7705cc573c7958bea56515eb5e9 \ No newline at end of file
diff --git a/doc/html/classcUPnPResources__coll__graph.png b/doc/html/classcUPnPResources__coll__graph.png
new file mode 100644
index 0000000..91eebd1
--- /dev/null
+++ b/doc/html/classcUPnPResources__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPServer-members.html b/doc/html/classcUPnPServer-members.html
new file mode 100644
index 0000000..ac1d791
--- /dev/null
+++ b/doc/html/classcUPnPServer-members.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPServer Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPServer.html">cUPnPServer</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#783f27c1997257539ccb8ff7ade815be">autoDetectSettings</a>(void)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cPluginUpnp</b> (defined in <a class="el" href="classcUPnPServer.html">cUPnPServer</a>)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#e0277b2231f10e66a5c6ce9acb42fcd0">cUPnPServer</a>()</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#4935ab1fbcc03279193e0f9fa675fb8b">enable</a>(bool enabled)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#e28dd555ac861850c9a2bbd22d9a7d3a">getInterface</a>(void) const </td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#f938922eff48ca1035e88677e095c0c4">getServerAddress</a>(void)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#389ffe474f61ec18b6f99dd02a9c31e4">isAutoDetectionEnabled</a>()</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#fbaaebd4496e98106c2d9be4c2512a66">isEnabled</a>(void) const </td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#af5358b41e19ba2917371c2d118d0145">isRunning</a>(void) const </td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#9dd50cfea9042d49ef58b99b44c0c5af">restart</a>(void)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#ebebc8d232cf4ad04e5f72f5ab763db6">setAddress</a>(const char *Address)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#7c91df7310a99786a0a126497299d030">setAutoDetection</a>(bool enable)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#81cf9d85c09093094febe6966a568702">setInterface</a>(const char *Interface)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#77494ce55a93601110bd4ffce8559b23">setServerPort</a>(unsigned short port)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#811d90c5aadc75bc48670757def1c21e">start</a>(void)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#c5ecc7ef5d42db1fa136ff00b24d1289">stop</a>(void)</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPServer.html#8eb136050f3f6c2edb7acbf5d690723d">~cUPnPServer</a>()</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPServer.html b/doc/html/classcUPnPServer.html
new file mode 100644
index 0000000..f39af3e
--- /dev/null
+++ b/doc/html/classcUPnPServer.html
@@ -0,0 +1,493 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPServer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPServer Class Reference</h1><!-- doxytag: class="cUPnPServer" --><code>#include &lt;<a class="el" href="server_8h-source.html">server.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cUPnPServer:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPServer__coll__graph.png" border="0" usemap="#cUPnPServer__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPServer__coll__map">
+<area shape="rect" href="classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="275,1909,437,2133"><area shape="rect" href="classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="229,1493,373,1669"><area shape="rect" href="classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="67,1861,251,2181"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="397,1365,573,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="405,973,565,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="291,437,445,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="432,261,528,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="333,5,448,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="675,917,837,1301"><area shape="rect" href="classcUPnPWebServer.html" title="{cUPnPWebServer\n|&#45; mRootdir\l&#45; mInstance\l&#45; mVirtualDirCallbacks\l|+ init()\l+ uninit()\l+ ~cUPnPWebServer()\l+ getInstance()\l+ getInfo()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l&#45; cUPnPWebServer()\l}" alt="" coords="611,1885,765,2157"><area shape="rect" href="classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="5,1453,205,1709"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPServer-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#e0277b2231f10e66a5c6ce9acb42fcd0">cUPnPServer</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#8eb136050f3f6c2edb7acbf5d690723d">~cUPnPServer</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#4935ab1fbcc03279193e0f9fa675fb8b">enable</a> (bool enabled)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#811d90c5aadc75bc48670757def1c21e">start</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#9dd50cfea9042d49ef58b99b44c0c5af">restart</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#c5ecc7ef5d42db1fa136ff00b24d1289">stop</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#783f27c1997257539ccb8ff7ade815be">autoDetectSettings</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sockaddr_in *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#f938922eff48ca1035e88677e095c0c4">getServerAddress</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#e28dd555ac861850c9a2bbd22d9a7d3a">getInterface</a> (void) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#77494ce55a93601110bd4ffce8559b23">setServerPort</a> (unsigned short port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#81cf9d85c09093094febe6966a568702">setInterface</a> (const char *Interface)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#ebebc8d232cf4ad04e5f72f5ab763db6">setAddress</a> (const char *Address)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#7c91df7310a99786a0a126497299d030">setAutoDetection</a> (bool enable)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#fbaaebd4496e98106c2d9be4c2512a66">isEnabled</a> (void) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#af5358b41e19ba2917371c2d118d0145">isRunning</a> (void) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#389ffe474f61ec18b6f99dd02a9c31e4">isAutoDetectionEnabled</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d07aa2117373999585d4e5530ef02918"></a><!-- doxytag: member="cUPnPServer::cPluginUpnp" ref="d07aa2117373999585d4e5530ef02918" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPServer.html#d07aa2117373999585d4e5530ef02918">cPluginUpnp</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The UPnP Server<p>
+This is the core of the UPnP server. This handles all the components which are needed for a UPnP media server. Incoming messages are passed through it and it determines what to do. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="e0277b2231f10e66a5c6ce9acb42fcd0"></a><!-- doxytag: member="cUPnPServer::cUPnPServer" ref="e0277b2231f10e66a5c6ce9acb42fcd0" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPServer::cUPnPServer </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor<p>
+This will create a new server and initializes the main functionalities The server has to be started manually by invoking <a class="el" href="classcUPnPServer.html#811d90c5aadc75bc48670757def1c21e">cUPnPServer::start()</a>.
+</div>
+</div><p>
+<a class="anchor" name="8eb136050f3f6c2edb7acbf5d690723d"></a><!-- doxytag: member="cUPnPServer::~cUPnPServer" ref="8eb136050f3f6c2edb7acbf5d690723d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPServer::~cUPnPServer </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destructor<p>
+This will destroy the server object. Open ports and connections will be closed.
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="783f27c1997257539ccb8ff7ade815be"></a><!-- doxytag: member="cUPnPServer::autoDetectSettings" ref="783f27c1997257539ccb8ff7ade815be" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::autoDetectSettings </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Automatically detect settings<p>
+This will automatically detect the network settings if the autodetection is turned on.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if autoDetection was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4935ab1fbcc03279193e0f9fa675fb8b"></a><!-- doxytag: member="cUPnPServer::enable" ref="4935ab1fbcc03279193e0f9fa675fb8b" args="(bool enabled)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPServer::enable </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>enabled</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Enable the server<p>
+This switch indicates if the server is startable or not<p>
+If it is set to false, any invocation of <a class="el" href="classcUPnPServer.html#811d90c5aadc75bc48670757def1c21e">start()</a> will do nothing.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>enabled</em>&nbsp;</td><td>if <b><code>true</code>,</b> the server will be enabled. If <b><code>false</code> it</b> is disabled. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e28dd555ac861850c9a2bbd22d9a7d3a"></a><!-- doxytag: member="cUPnPServer::getInterface" ref="e28dd555ac861850c9a2bbd22d9a7d3a" args="(void) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPServer::getInterface </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the interface the server listens to<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the network interface </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f938922eff48ca1035e88677e095c0c4"></a><!-- doxytag: member="cUPnPServer::getServerAddress" ref="f938922eff48ca1035e88677e095c0c4" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">sockaddr_in * cUPnPServer::getServerAddress </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the server address<p>
+Returns a server address structure including IP address and port<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The server socket address </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="389ffe474f61ec18b6f99dd02a9c31e4"></a><!-- doxytag: member="cUPnPServer::isAutoDetectionEnabled" ref="389ffe474f61ec18b6f99dd02a9c31e4" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::isAutoDetectionEnabled </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Is auto detection enabled or not<p>
+Returns true or false if auto detection is enabled or not<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if autodetection is enabled</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="fbaaebd4496e98106c2d9be4c2512a66"></a><!-- doxytag: member="cUPnPServer::isEnabled" ref="fbaaebd4496e98106c2d9be4c2512a66" args="(void) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::isEnabled </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Checks if the server is enabled<p>
+This indicates if the server is currently enabled.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the server is enabled</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="af5358b41e19ba2917371c2d118d0145"></a><!-- doxytag: member="cUPnPServer::isRunning" ref="af5358b41e19ba2917371c2d118d0145" args="(void) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::isRunning </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Checks if the server is running<p>
+If the server is enabled, this indicates if it is running.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code> if</b> the server is running</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9dd50cfea9042d49ef58b99b44c0c5af"></a><!-- doxytag: member="cUPnPServer::restart" ref="9dd50cfea9042d49ef58b99b44c0c5af" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::restart </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Restart the server<p>
+When the server is not operating properly it can be restarted. It will stop the server functionalities, clear everything and start it again.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> when the server restarted successfully</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ebebc8d232cf4ad04e5f72f5ab763db6"></a><!-- doxytag: member="cUPnPServer::setAddress" ref="ebebc8d232cf4ad04e5f72f5ab763db6" args="(const char *Address)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::setAddress </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Address</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the server address<p>
+Specifies the servers IP address. The server needs to restart when the IP is changed. However, it's not possible to detect changes through the system.<p>
+This method should only be used in cases of fixed IP addresses for example when no DHCP server is available.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>The address of the server </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the new server address is set</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7c91df7310a99786a0a126497299d030"></a><!-- doxytag: member="cUPnPServer::setAutoDetection" ref="7c91df7310a99786a0a126497299d030" args="(bool enable)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::setAutoDetection </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>enable</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Enables oder Disables auto detection mode<p>
+If this is set to true, the setup will get it's information via auto detection<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td><b><code>true</code> enables</b> and <b><code>false</code> disables</b> the auto detection </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the new server address is set</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="81cf9d85c09093094febe6966a568702"></a><!-- doxytag: member="cUPnPServer::setInterface" ref="81cf9d85c09093094febe6966a568702" args="(const char *Interface)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::setInterface </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Interface</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The Interface to listen on<p>
+Sets the listener interface, for instance 'eth1' or 'wlan0'<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Interface</em>&nbsp;</td><td>The interface of the server </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the new server address is set</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="77494ce55a93601110bd4ffce8559b23"></a><!-- doxytag: member="cUPnPServer::setServerPort" ref="77494ce55a93601110bd4ffce8559b23" args="(unsigned short port)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::setServerPort </td>
+ <td>(</td>
+ <td class="paramtype">unsigned short&nbsp;</td>
+ <td class="paramname"> <em>port</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the server port<p>
+The port must be in the scope of user definied ports (49152 - 65535). If the port is 0, it is autoassigned. You can retrieve the actual port by calling <a class="el" href="classcUPnPServer.html#f938922eff48ca1035e88677e095c0c4">getServerAddress()</a>, which will give you a structure with the port in it.<p>
+The server must be restarted if the IP or port changes.<p>
+Returns 1 when the port is valid, 0 otherwise<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>The port of the server </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if the new server port is set</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="811d90c5aadc75bc48670757def1c21e"></a><!-- doxytag: member="cUPnPServer::start" ref="811d90c5aadc75bc48670757def1c21e" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPServer::start </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start the UPnP server<p>
+This will start the UPnP server activities as a background task.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> when the server started successfully</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c5ecc7ef5d42db1fa136ff00b24d1289"></a><!-- doxytag: member="cUPnPServer::stop" ref="c5ecc7ef5d42db1fa136ff00b24d1289" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUPnPServer::stop </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Stop the server<p>
+This will stop the server. This means that open connections to any clients and open ports will be closed.
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>server/<a class="el" href="server_8h-source.html">server.h</a><li>server/server.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPServer__coll__graph.map b/doc/html/classcUPnPServer__coll__graph.map
new file mode 100644
index 0000000..1f481da
--- /dev/null
+++ b/doc/html/classcUPnPServer__coll__graph.map
@@ -0,0 +1,11 @@
+<area shape="rect" href="$classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="275,1909,437,2133">
+<area shape="rect" href="$classcUpnpService.html" title="{cUpnpService\n|# mDeviceHandle\l|+ ~cUpnpService()\l+ subscribe()\l+ execute()\l# setError()\l# parseIntegerValue()\l# parseStringValue()\l&#45; cUpnpService()\l}" alt="" coords="229,1493,373,1669">
+<area shape="rect" href="$classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="67,1861,251,2181">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="397,1365,573,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="405,973,565,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="291,437,445,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="432,261,528,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="333,5,448,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="675,917,837,1301">
+<area shape="rect" href="$classcUPnPWebServer.html" title="{cUPnPWebServer\n|&#45; mRootdir\l&#45; mInstance\l&#45; mVirtualDirCallbacks\l|+ init()\l+ uninit()\l+ ~cUPnPWebServer()\l+ getInstance()\l+ getInfo()\l+ open()\l+ read()\l+ write()\l+ seek()\l+ close()\l&#45; cUPnPWebServer()\l}" alt="" coords="611,1885,765,2157">
+<area shape="rect" href="$classcVirtualConnection.html" title="{cVirtualConnection\n|&#45; mRemoteProtocolInfo\l&#45; mRemoteConnectionManager\l&#45; mDirection\l&#45; mRemoteConnectionID\l&#45; mConnectionID\l&#45; mAVTransportID\l&#45; mRcsID\l&#45; mStatus\l|&#45; cVirtualConnection()\l&#45; getStatusString()\l&#45; getDirectionString()\l&#45; getDirection()\l&#45; getConnectionStatus()\l}" alt="" coords="5,1453,205,1709">
diff --git a/doc/html/classcUPnPServer__coll__graph.md5 b/doc/html/classcUPnPServer__coll__graph.md5
new file mode 100644
index 0000000..252c5d8
--- /dev/null
+++ b/doc/html/classcUPnPServer__coll__graph.md5
@@ -0,0 +1 @@
+25a92edd9d207f855284afda5cbf298c \ No newline at end of file
diff --git a/doc/html/classcUPnPServer__coll__graph.png b/doc/html/classcUPnPServer__coll__graph.png
new file mode 100644
index 0000000..60c24c4
--- /dev/null
+++ b/doc/html/classcUPnPServer__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPVideoBroadcastMediator-members.html b/doc/html/classcUPnPVideoBroadcastMediator-members.html
new file mode 100644
index 0000000..82d00d2
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator-members.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPVideoBroadcastMediator Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">createObject</a>(const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoBroadcastMediator.html#58179b50ee5a5952cff70aa4473845f9">cUPnPVideoBroadcastMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoItemMediator.html#1f56334e155773b6c3d86f481f4ad96b">cUPnPVideoItemMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">databaseToObject</a>(cUPnPClassObject *Object, cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">getObject</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a>(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">mDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">mMediaDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">objectToDatabase</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediatorInterface</b>() (defined in <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>)</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPItemMediator</b>() (defined in <a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPObjectMediator</b>() (defined in <a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPVideoBroadcastMediator</b>() (defined in <a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a>)</td><td><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPVideoItemMediator</b>() (defined in <a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPVideoBroadcastMediator.html b/doc/html/classcUPnPVideoBroadcastMediator.html
new file mode 100644
index 0000000..021b992
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator.html
@@ -0,0 +1,240 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPVideoBroadcastMediator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPVideoBroadcastMediator Class Reference</h1><!-- doxytag: class="cUPnPVideoBroadcastMediator" --><!-- doxytag: inherits="cUPnPVideoItemMediator" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPVideoBroadcastMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPVideoBroadcastMediator__inherit__graph.png" border="0" usemap="#cUPnPVideoBroadcastMediator__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPVideoBroadcastMediator__inherit__map">
+<area shape="rect" href="classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="21,709,221,869"><area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="39,501,204,661"><area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="32,213,211,453"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="43,5,200,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPVideoBroadcastMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPVideoBroadcastMediator__coll__graph.png" border="0" usemap="#cUPnPVideoBroadcastMediator__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPVideoBroadcastMediator__coll__map">
+<area shape="rect" href="classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="100,2363,300,2523"><area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,2152,283,2312"><area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPVideoBroadcastMediator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoBroadcastMediator.html#58179b50ee5a5952cff70aa4473845f9">cUPnPVideoBroadcastMediator</a> (<a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *MediaDatabase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">createObject</a> (const char *Title, bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">objectToDatabase</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">databaseToObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+VideoBroadcast Mediator<p>
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="58179b50ee5a5952cff70aa4473845f9"></a><!-- doxytag: member="cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator" ref="58179b50ee5a5952cff70aa4473845f9" args="(cMediaDatabase *MediaDatabase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td>
+ <td class="paramname"> <em>MediaDatabase</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of video broadcast mediator<p>
+This creates a new video broadcast mediator with which it is possible to create new instances of VideoBroadcast objects.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>MediaDatabase</em>&nbsp;</td><td>the media database </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="14fefa90807d40d91a80712729af2beb"></a><!-- doxytag: member="cUPnPVideoBroadcastMediator::createObject" ref="14fefa90807d40d91a80712729af2beb" args="(const char *Title, bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a> * cUPnPVideoBroadcastMediator::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="33237e5d850c107d37be37c1646b17d7"></a><!-- doxytag: member="cUPnPVideoBroadcastMediator::databaseToObject" ref="33237e5d850c107d37be37c1646b17d7" args="(cUPnPClassObject *Object, cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPVideoBroadcastMediator::databaseToObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads an object from database<p>
+This loads an object from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be loaded </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID of that object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c13bf0f008f49b0ab499542391998a24"></a><!-- doxytag: member="cUPnPVideoBroadcastMediator::getObject" ref="c13bf0f008f49b0ab499542391998a24" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a> * cUPnPVideoBroadcastMediator::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="822f9c93928a7dbe9491c8cccbf53f95"></a><!-- doxytag: member="cUPnPVideoBroadcastMediator::objectToDatabase" ref="822f9c93928a7dbe9491c8cccbf53f95" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPVideoBroadcastMediator::objectToDatabase </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store the object in the database<p>
+This stores the information of an object in the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">cUPnPVideoItemMediator</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map
new file mode 100644
index 0000000..dc6c054
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map
@@ -0,0 +1,10 @@
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="100,2363,300,2523">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,2152,283,2312">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301">
diff --git a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5 b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5
new file mode 100644
index 0000000..36ff50a
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5
@@ -0,0 +1 @@
+991d65c3e92ec87d22ab429197f3a0b5 \ No newline at end of file
diff --git a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png
new file mode 100644
index 0000000..c99c0ce
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map
new file mode 100644
index 0000000..485a0cd
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map
@@ -0,0 +1,4 @@
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="{cUPnPVideoItemMediator\n||+ cUPnPVideoItemMediator()\l+ ~cUPnPVideoItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="21,709,221,869">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="39,501,204,661">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="32,213,211,453">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="43,5,200,165">
diff --git a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5 b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5
new file mode 100644
index 0000000..4b1638b
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5
@@ -0,0 +1 @@
+09739d895aa0f05515bf466297c32a8d \ No newline at end of file
diff --git a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png
new file mode 100644
index 0000000..b318300
--- /dev/null
+++ b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPVideoItemMediator-members.html b/doc/html/classcUPnPVideoItemMediator-members.html
new file mode 100644
index 0000000..ec93ba6
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator-members.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPVideoItemMediator Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">createObject</a>(const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoItemMediator.html#1f56334e155773b6c3d86f481f4ad96b">cUPnPVideoItemMediator</a>(cMediaDatabase *MediaDatabase)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">databaseToObject</a>(cUPnPClassObject *Object, cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">getObject</a>(cUPnPObjectID ID)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a>(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">mDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">mMediaDatabase</a></td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">objectToDatabase</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a>(cUPnPClassObject *Object)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cMediatorInterface</b>() (defined in <a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>)</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPItemMediator</b>() (defined in <a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>)</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPObjectMediator</b>() (defined in <a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>)</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPVideoItemMediator</b>() (defined in <a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>)</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPVideoItemMediator.html b/doc/html/classcUPnPVideoItemMediator.html
new file mode 100644
index 0000000..f22c558
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator.html
@@ -0,0 +1,248 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPVideoItemMediator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPVideoItemMediator Class Reference</h1><!-- doxytag: class="cUPnPVideoItemMediator" --><!-- doxytag: inherits="cUPnPItemMediator" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUPnPVideoItemMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPVideoItemMediator__inherit__graph.png" border="0" usemap="#cUPnPVideoItemMediator__inherit__map" alt="Inheritance graph"></center>
+<map name="cUPnPVideoItemMediator__inherit__map">
+<area shape="rect" href="classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,917,181,1077"><area shape="rect" href="classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="205,917,437,1077"><area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="124,501,289,661"><area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,213,296,453"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="128,5,285,165"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<div class="dynheader">
+Collaboration diagram for cUPnPVideoItemMediator:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPVideoItemMediator__coll__graph.png" border="0" usemap="#cUPnPVideoItemMediator__coll__map" alt="Collaboration graph"></center>
+<map name="cUPnPVideoItemMediator__coll__map">
+<area shape="rect" href="classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,2152,283,2312"><area shape="rect" href="classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101"><area shape="rect" href="classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661"><area shape="rect" href="classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797"><area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853"><area shape="rect" href="classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373"><area shape="rect" href="classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPVideoItemMediator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoItemMediator.html#1f56334e155773b6c3d86f481f4ad96b">cUPnPVideoItemMediator</a> (<a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *MediaDatabase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">createObject</a> (const char *Title, bool Restricted)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">getObject</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">objectToDatabase</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">databaseToObject</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+VideoItem Mediator<p>
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="1f56334e155773b6c3d86f481f4ad96b"></a><!-- doxytag: member="cUPnPVideoItemMediator::cUPnPVideoItemMediator" ref="1f56334e155773b6c3d86f481f4ad96b" args="(cMediaDatabase *MediaDatabase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPVideoItemMediator::cUPnPVideoItemMediator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a> *&nbsp;</td>
+ <td class="paramname"> <em>MediaDatabase</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor of videoitem mediator<p>
+This creates a new videoitem mediator with which it is possible to create new instances of VideoItem objects.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>MediaDatabase</em>&nbsp;</td><td>the media database </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="27e001142c3651c36dfd3b7c450414c0"></a><!-- doxytag: member="cUPnPVideoItemMediator::createObject" ref="27e001142c3651c36dfd3b7c450414c0" args="(const char *Title, bool Restricted)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> * cUPnPVideoItemMediator::createObject </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>Title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>Restricted</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates an object<p>
+This creates a new UPnP object with the specific title and the restriction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the newly created object </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>the title of that object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Restricted</em>&nbsp;</td><td>the restriction of the object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">cUPnPItemMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="3f7ec1937b2b95e3ec5462470971d350"></a><!-- doxytag: member="cUPnPVideoItemMediator::databaseToObject" ref="3f7ec1937b2b95e3ec5462470971d350" args="(cUPnPClassObject *Object, cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPVideoItemMediator::databaseToObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Loads an object from database<p>
+This loads an object from the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be loaded </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID of that object </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPItemMediator.html#1f3645ebe0a33a81d0b3f22060dc4761">cUPnPItemMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="dd8927340a69d247965ef9250adefb21"></a><!-- doxytag: member="cUPnPVideoItemMediator::getObject" ref="dd8927340a69d247965ef9250adefb21" args="(cUPnPObjectID ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> * cUPnPVideoItemMediator::getObject </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an object<p>
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object, found in the database </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>the object ID </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">cUPnPItemMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="984e10738bca46ce38307d5f60e26bd3"></a><!-- doxytag: member="cUPnPVideoItemMediator::objectToDatabase" ref="984e10738bca46ce38307d5f60e26bd3" args="(cUPnPClassObject *Object)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPVideoItemMediator::objectToDatabase </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *&nbsp;</td>
+ <td class="paramname"> <em>Object</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store the object in the database<p>
+This stores the information of an object in the database<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>&lt;0</code>,</b> in case of an error</li><li><b><code>0</code>,</b> otherwise </li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>the object to be saved </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcUPnPItemMediator.html#6d954b1cfdc4a7d55981c6ebff9d6d04">cUPnPItemMediator</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">cUPnPVideoBroadcastMediator</a>, and <a class="el" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">cUPnPMovieMediator</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a><li>database/object.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPVideoItemMediator__coll__graph.map b/doc/html/classcUPnPVideoItemMediator__coll__graph.map
new file mode 100644
index 0000000..2cabbce
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator__coll__graph.map
@@ -0,0 +1,9 @@
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,2152,283,2312">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="111,1861,289,2101">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="5,1501,163,1661">
+<area shape="rect" href="$classcMediaDatabase.html" title="{cMediaDatabase\n|&#45; mSystemUpdateID\l&#45; mFactory\l&#45; mObjects\l&#45; mDatabase\l&#45; mLastInsertObjectID\l|+ getSystemUpdateID()\l+ getContainerUpdateIDs()\l+ cMediaDatabase()\l+ ~cMediaDatabase()\l+ addFastFind()\l+ getObjectByFastFind()\l+ getObjectByID()\l+ browse()\l+ search()\l&#45; getNextObjectID()\l&#45; cacheObject()\l&#45; prepareDatabase()\l&#45; loadChannels()\l&#45; loadRecordings()\l&#45; updateChannelEPG()\l&#45; updateRecordings()\l&#45; init()\l&#45; updateSystemID()\l&#45; Action()\l}" alt="" coords="271,1365,447,1797">
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|&#45; mDatabase\l&#45; mMediators\l&#45; mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l&#45; findMediatorByID()\l&#45; findMediatorByClass()\l&#45; cUPnPObjectFactory()\l}" alt="" coords="377,973,537,1245">
+<area shape="rect" href="$classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|&#45; mAutoCommit\l&#45; mActiveTransaction\l&#45; mLastRow\l&#45; mRows\l&#45; mDatabase\l&#45; mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l&#45; cSQLiteDatabase()\l&#45; initialize()\l&#45; initializeTables()\l&#45; initializeTriggers()\l&#45; exec()\l&#45; getResultRow()\l}" alt="" coords="209,437,364,853">
+<area shape="rect" href="$classcRows.html" title="{cRows\n|&#45; mLastRow\l|+ ~cRows()\l+ fetchRow()\l&#45; cRows()\l}" alt="" coords="351,261,447,373">
+<area shape="rect" href="$classcRow.html" title="{cRow\n|&#45; currentCol\l&#45; ColCount\l&#45; Columns\l&#45; Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l&#45; cRow()\l}" alt="" coords="252,5,367,197">
+<area shape="rect" href="$structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator&#45;&#45;()\l+ operator&#45;&#45;()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="647,917,809,1301">
diff --git a/doc/html/classcUPnPVideoItemMediator__coll__graph.md5 b/doc/html/classcUPnPVideoItemMediator__coll__graph.md5
new file mode 100644
index 0000000..d6fe833
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator__coll__graph.md5
@@ -0,0 +1 @@
+ce34fe7d1ef66a2c6c9babd7cdd910c2 \ No newline at end of file
diff --git a/doc/html/classcUPnPVideoItemMediator__coll__graph.png b/doc/html/classcUPnPVideoItemMediator__coll__graph.png
new file mode 100644
index 0000000..59e7254
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPVideoItemMediator__inherit__graph.map b/doc/html/classcUPnPVideoItemMediator__inherit__graph.map
new file mode 100644
index 0000000..5892869
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator__inherit__graph.map
@@ -0,0 +1,5 @@
+<area shape="rect" href="$classcUPnPMovieMediator.html" title="{cUPnPMovieMediator\n||+ cUPnPMovieMediator()\l+ ~cUPnPMovieMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="5,917,181,1077">
+<area shape="rect" href="$classcUPnPVideoBroadcastMediator.html" title="{cUPnPVideoBroadcastMediator\n||+ cUPnPVideoBroadcastMediator()\l+ ~cUPnPVideoBroadcastMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="205,917,437,1077">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="{cUPnPItemMediator\n||+ cUPnPItemMediator()\l+ ~cUPnPItemMediator()\l+ createObject()\l+ getObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="124,501,289,661">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="{cUPnPObjectMediator\n|# mDatabase\l# mMediaDatabase\l|+ ~cUPnPObjectMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l# cUPnPObjectMediator()\l# initializeObject()\l# objectToDatabase()\l# databaseToObject()\l}" alt="" coords="117,213,296,453">
+<area shape="rect" href="$classcMediatorInterface.html" title="{cMediatorInterface\n||+ ~cMediatorInterface()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l}" alt="" coords="128,5,285,165">
diff --git a/doc/html/classcUPnPVideoItemMediator__inherit__graph.md5 b/doc/html/classcUPnPVideoItemMediator__inherit__graph.md5
new file mode 100644
index 0000000..8170d85
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator__inherit__graph.md5
@@ -0,0 +1 @@
+8979290e79d7aff1732e0fee59f4bce1 \ No newline at end of file
diff --git a/doc/html/classcUPnPVideoItemMediator__inherit__graph.png b/doc/html/classcUPnPVideoItemMediator__inherit__graph.png
new file mode 100644
index 0000000..ce6ce3f
--- /dev/null
+++ b/doc/html/classcUPnPVideoItemMediator__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcUPnPWebServer-members.html b/doc/html/classcUPnPWebServer-members.html
new file mode 100644
index 0000000..46483c3
--- /dev/null
+++ b/doc/html/classcUPnPWebServer-members.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPWebServer Member List</h1>This is the complete list of members for <a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#79d080eaf445325b7f8759dfb0744c26">close</a>(UpnpWebFileHandle fh)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cUPnPServer</b> (defined in <a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a>)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [friend]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#0540de6d9f111756593d202f30102ffb">getInfo</a>(const char *filename, struct File_Info *info)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#59fb8d378eae0193665b51fdda5a4da0">getInstance</a>(const char *rootdir=&quot;/&quot;)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#a374ec8a84405fb2ee16dc00ba0218f5">init</a>()</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#5f9d44729464cab3e8bf74e4457dbb24">open</a>(const char *filename, UpnpOpenFileMode mode)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#7bdaa921f11a40da60c5fc99f577a017">read</a>(UpnpWebFileHandle fh, char *buf, size_t buflen)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#2d1ee3a89ea42cb9fd0669937061695f">seek</a>(UpnpWebFileHandle fh, off_t offset, int origin)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#cd20b60b929abfb205ec438127caed49">uninit</a>()</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUPnPWebServer.html#46e282288394c8ba37e9d4846944c6a4">write</a>(UpnpWebFileHandle fh, char *buf, size_t buflen)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUPnPWebServer</b>() (defined in <a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a>)</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a></td><td><code> [virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPWebServer.html b/doc/html/classcUPnPWebServer.html
new file mode 100644
index 0000000..868ea13
--- /dev/null
+++ b/doc/html/classcUPnPWebServer.html
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPWebServer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPWebServer Class Reference</h1><!-- doxytag: class="cUPnPWebServer" --><code>#include &lt;<a class="el" href="upnpwebserver_8h-source.html">upnpwebserver.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cUPnPWebServer:</div>
+<div class="dynsection">
+<p><center><img src="classcUPnPWebServer__coll__graph.png" border="0" usemap="#cUPnPWebServer__coll__map" alt="Collaboration graph"></center>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUPnPWebServer-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#a374ec8a84405fb2ee16dc00ba0218f5">init</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#cd20b60b929abfb205ec438127caed49">uninit</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#59fb8d378eae0193665b51fdda5a4da0">getInstance</a> (const char *rootdir=&quot;/&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#0540de6d9f111756593d202f30102ffb">getInfo</a> (const char *filename, struct File_Info *info)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static UpnpWebFileHandle&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#5f9d44729464cab3e8bf74e4457dbb24">open</a> (const char *filename, UpnpOpenFileMode mode)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#7bdaa921f11a40da60c5fc99f577a017">read</a> (UpnpWebFileHandle fh, char *buf, size_t buflen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#46e282288394c8ba37e9d4846944c6a4">write</a> (UpnpWebFileHandle fh, char *buf, size_t buflen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#2d1ee3a89ea42cb9fd0669937061695f">seek</a> (UpnpWebFileHandle fh, off_t offset, int origin)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#79d080eaf445325b7f8759dfb0744c26">close</a> (UpnpWebFileHandle fh)</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="02ebb94fd2cdff4bfb2da3267446d62b"></a><!-- doxytag: member="cUPnPWebServer::cUPnPServer" ref="02ebb94fd2cdff4bfb2da3267446d62b" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUPnPWebServer.html#02ebb94fd2cdff4bfb2da3267446d62b">cUPnPServer</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The internal webserver<p>
+This is the internal webserver. It distributes all the contents of the UPnP-Server. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="79d080eaf445325b7f8759dfb0744c26"></a><!-- doxytag: member="cUPnPWebServer::close" ref="79d080eaf445325b7f8759dfb0744c26" args="(UpnpWebFileHandle fh)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPWebServer::close </td>
+ <td>(</td>
+ <td class="paramtype">UpnpWebFileHandle&nbsp;</td>
+ <td class="paramname"> <em>fh</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Closes the file<p>
+closes the opened file<p>
+Returns 0 on success, non-zero value otherwise<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non-zero value otherwise </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fh</em>&nbsp;</td><td>the file handle of the opened file </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0540de6d9f111756593d202f30102ffb"></a><!-- doxytag: member="cUPnPWebServer::getInfo" ref="0540de6d9f111756593d202f30102ffb" args="(const char *filename, struct File_Info *info)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPWebServer::getInfo </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct File_Info *&nbsp;</td>
+ <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve file information<p>
+Returns file related information for an virtual directory file<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 otherwise </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>The filename of which the information is gathered </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>The File_Info structure with the data </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="59fb8d378eae0193665b51fdda5a4da0"></a><!-- doxytag: member="cUPnPWebServer::getInstance" ref="59fb8d378eae0193665b51fdda5a4da0" args="(const char *rootdir=&quot;/&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a> * cUPnPWebServer::getInstance </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>rootdir</em> = <code>&quot;/&quot;</code> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the instance of the webserver<p>
+Returns the instance of the webserver. This will create a single instance of none is existing on the very first call. A subsequent call will return the same instance.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the instance of webserver </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rootdir</em>&nbsp;</td><td>the root directory of the webserver </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a374ec8a84405fb2ee16dc00ba0218f5"></a><!-- doxytag: member="cUPnPWebServer::init" ref="a374ec8a84405fb2ee16dc00ba0218f5" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPWebServer::init </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initializes the webserver<p>
+It enables the webserver which comes with the <em>Intel SDK</em> and creates virtual directories for shares media.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if initializing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5f9d44729464cab3e8bf74e4457dbb24"></a><!-- doxytag: member="cUPnPWebServer::open" ref="5f9d44729464cab3e8bf74e4457dbb24" args="(const char *filename, UpnpOpenFileMode mode)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">UpnpWebFileHandle cUPnPWebServer::open </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">UpnpOpenFileMode&nbsp;</td>
+ <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Opens a virtual directory file<p>
+Opens a file in a virtual directory with the specified mode.<p>
+Possible modes are:<ul>
+<li><b>UPNP_READ</b>, Opens the file for reading</li><li><b>UPNP_WRITE</b>, Opens the file for writing</li></ul>
+<p>
+It returns a file handle to the opened file, NULL otherwise<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>FileHandle to the opened file, NULL otherwise </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>The file to open </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>UPNP_WRITE for writing, UPNP_READ for reading. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7bdaa921f11a40da60c5fc99f577a017"></a><!-- doxytag: member="cUPnPWebServer::read" ref="7bdaa921f11a40da60c5fc99f577a017" args="(UpnpWebFileHandle fh, char *buf, size_t buflen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPWebServer::read </td>
+ <td>(</td>
+ <td class="paramtype">UpnpWebFileHandle&nbsp;</td>
+ <td class="paramname"> <em>fh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reads from the opened file<p>
+Reads <code>buflen</code> bytes from the file and stores the content to the buffer<p>
+Returns 0 no more bytes read (EOF) &gt;0 bytes read from file<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of bytes read, 0 on EOF </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fh</em>&nbsp;</td><td>the file handle of the opened file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>the buffer to write the bytes to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>the maximum count of bytes to read </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2d1ee3a89ea42cb9fd0669937061695f"></a><!-- doxytag: member="cUPnPWebServer::seek" ref="2d1ee3a89ea42cb9fd0669937061695f" args="(UpnpWebFileHandle fh, off_t offset, int origin)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPWebServer::seek </td>
+ <td>(</td>
+ <td class="paramtype">UpnpWebFileHandle&nbsp;</td>
+ <td class="paramname"> <em>fh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">off_t&nbsp;</td>
+ <td class="paramname"> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>origin</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seek in the file<p>
+Seeks in the opened file and sets the file pointer to the specified offset<p>
+Returns 0 on success, non-zero value otherwise<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non-zero value otherwise </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fh</em>&nbsp;</td><td>the file handle of the opened file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>a negative oder positive value which moves the pointer forward or backward </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>origin</em>&nbsp;</td><td>SEEK_CUR, SEEK_END or SEEK_SET </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="cd20b60b929abfb205ec438127caed49"></a><!-- doxytag: member="cUPnPWebServer::uninit" ref="cd20b60b929abfb205ec438127caed49" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPWebServer::uninit </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Uninitializes the webserver<p>
+This stops the webserver.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul>
+<li><b><code>true</code>,</b> if initializing was successful</li><li><b><code>false</code>,</b> otherwise </li></ul>
+</dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="46e282288394c8ba37e9d4846944c6a4"></a><!-- doxytag: member="cUPnPWebServer::write" ref="46e282288394c8ba37e9d4846944c6a4" args="(UpnpWebFileHandle fh, char *buf, size_t buflen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUPnPWebServer::write </td>
+ <td>(</td>
+ <td class="paramtype">UpnpWebFileHandle&nbsp;</td>
+ <td class="paramname"> <em>fh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buflen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Writes to the opened file<p>
+Writes <code>buflen</code> bytes from the buffer and stores the content in the file<p>
+Returns &gt;0 bytes wrote to file, maybe less the buflen in case of write errors<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of bytes read, 0 on EOF </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fh</em>&nbsp;</td><td>the file handle of the opened file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>the buffer to read the bytes from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buflen</em>&nbsp;</td><td>the maximum count of bytes to write </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>upnpcomponents/<a class="el" href="upnpwebserver_8h-source.html">upnpwebserver.h</a><li>upnpcomponents/upnpwebserver.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUPnPWebServer__coll__graph.map b/doc/html/classcUPnPWebServer__coll__graph.map
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/html/classcUPnPWebServer__coll__graph.map
diff --git a/doc/html/classcUPnPWebServer__coll__graph.md5 b/doc/html/classcUPnPWebServer__coll__graph.md5
new file mode 100644
index 0000000..3f697b5
--- /dev/null
+++ b/doc/html/classcUPnPWebServer__coll__graph.md5
@@ -0,0 +1 @@
+da2c5790677b1c131add36ec9afdf776 \ No newline at end of file
diff --git a/doc/html/classcUPnPWebServer__coll__graph.png b/doc/html/classcUPnPWebServer__coll__graph.png
new file mode 100644
index 0000000..3f7b7fb
--- /dev/null
+++ b/doc/html/classcUPnPWebServer__coll__graph.png
Binary files differ
diff --git a/doc/html/classcUpnpService-members.html b/doc/html/classcUpnpService-members.html
new file mode 100644
index 0000000..574db9d
--- /dev/null
+++ b/doc/html/classcUpnpService-members.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUpnpService Member List</h1>This is the complete list of members for <a class="el" href="classcUpnpService.html">cUpnpService</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#bbffca233e6aa193eda223cb7bfc2917">execute</a>(Upnp_Action_Request *Request)=0</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea">mDeviceHandle</a></td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#846cd44a1c014395278c3af339122656">parseIntegerValue</a>(IN IXML_Document *Document, IN const char *Item, OUT int *Value)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#925b7a9628230ce69b803afb8fee212f">parseStringValue</a>(IN IXML_Document *Document, IN const char *Item, OUT char **Value)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#f0976057350505eca781aafcaf6b1d14">setError</a>(Upnp_Action_Request *Request, int Error)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcUpnpService.html#e6d3522d580e5975f5a38d5bea88e29d">subscribe</a>(Upnp_Subscription_Request *Request)=0</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cUpnpService</b>() (defined in <a class="el" href="classcUpnpService.html">cUpnpService</a>)</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUpnpService.html b/doc/html/classcUpnpService.html
new file mode 100644
index 0000000..e88a78e
--- /dev/null
+++ b/doc/html/classcUpnpService.html
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUpnpService Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUpnpService Class Reference</h1><!-- doxytag: class="cUpnpService" --><code>#include &lt;<a class="el" href="upnpservice_8h-source.html">upnpservice.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Inheritance diagram for cUpnpService:</div>
+<div class="dynsection">
+<p><center><img src="classcUpnpService__inherit__graph.png" border="0" usemap="#cUpnpService__inherit__map" alt="Inheritance graph"></center>
+<map name="cUpnpService__inherit__map">
+<area shape="rect" href="classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="5,229,189,549"><area shape="rect" href="classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="213,277,376,501"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+
+<p>
+<a href="classcUpnpService-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUpnpService.html#e6d3522d580e5975f5a38d5bea88e29d">subscribe</a> (Upnp_Subscription_Request *Request)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUpnpService.html#bbffca233e6aa193eda223cb7bfc2917">execute</a> (Upnp_Action_Request *Request)=0</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUpnpService.html#f0976057350505eca781aafcaf6b1d14">setError</a> (Upnp_Action_Request *Request, int Error)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUpnpService.html#846cd44a1c014395278c3af339122656">parseIntegerValue</a> (IN IXML_Document *Document, IN const char *Item, OUT int *Value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUpnpService.html#925b7a9628230ce69b803afb8fee212f">parseStringValue</a> (IN IXML_Document *Document, IN const char *Item, OUT char **Value)</td></tr>
+
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="359ba19926aab21f7a2e3c77ffc7f7ea"></a><!-- doxytag: member="cUpnpService::mDeviceHandle" ref="359ba19926aab21f7a2e3c77ffc7f7ea" args="" -->
+UpnpDevice_Handle&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea">mDeviceHandle</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the UPnP device handle of the root device <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+UPnP Service interface<p>
+This is a service interface implemented by a UPnP service like CDS oder CMS<p>
+It comes with some tool functions which are commonly useful for processing an event or action. <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="bbffca233e6aa193eda223cb7bfc2917"></a><!-- doxytag: member="cUpnpService::execute" ref="bbffca233e6aa193eda223cb7bfc2917" args="(Upnp_Action_Request *Request)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cUpnpService::execute </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Action_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Executes an action<p>
+This executes an action initialized by a control point. The result is stored in the first parameter.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An integer representing one of the following:<ul>
+<li><b><code>UPNP_E_SUCCESS</code>,</b> if subscription was okay</li><li>or any other non null value in case of an error</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Input and output parameters of an action </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Input and output parameters of an action </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcConnectionManager.html#12fa6b0a9e20c3af663e3ca2b3c97dfb">cConnectionManager</a>, and <a class="el" href="classcContentDirectory.html#a0225df761512819b9c46f45b2a0f0d0">cContentDirectory</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="846cd44a1c014395278c3af339122656"></a><!-- doxytag: member="cUpnpService::parseIntegerValue" ref="846cd44a1c014395278c3af339122656" args="(IN IXML_Document *Document, IN const char *Item, OUT int *Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUpnpService::parseIntegerValue </td>
+ <td>(</td>
+ <td class="paramtype">IN IXML_Document *&nbsp;</td>
+ <td class="paramname"> <em>Document</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>Item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">OUT int *&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parses an integer value<p>
+This tool function parses an integer value from a given <em>IXML</em> document. It is searching for the very first occurance of the demanded item.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns<ul>
+<li><b><code>0</code>,</b> if parsing was successful</li><li><b><code>&lt;0</code>,</b> if an error occured</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Document</em>&nbsp;</td><td>the document, which is parsed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Item</em>&nbsp;</td><td>the demanded item </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of the item </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Document</em>&nbsp;</td><td>the document, which is parsed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Item</em>&nbsp;</td><td>the demanded item </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of the item </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="925b7a9628230ce69b803afb8fee212f"></a><!-- doxytag: member="cUpnpService::parseStringValue" ref="925b7a9628230ce69b803afb8fee212f" args="(IN IXML_Document *Document, IN const char *Item, OUT char **Value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int cUpnpService::parseStringValue </td>
+ <td>(</td>
+ <td class="paramtype">IN IXML_Document *&nbsp;</td>
+ <td class="paramname"> <em>Document</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">IN const char *&nbsp;</td>
+ <td class="paramname"> <em>Item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">OUT char **&nbsp;</td>
+ <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parses a string value<p>
+This tool function parses a string value from a given <em>IXML</em> document. It is searching for the very first occurance of the demanded item.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns<ul>
+<li><b><code>0</code>,</b> if parsing was successful</li><li><b><code>&lt;0</code>,</b> if an error occured</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Document</em>&nbsp;</td><td>the document, which is parsed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Item</em>&nbsp;</td><td>the demanded item </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of the item </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Document</em>&nbsp;</td><td>the document, which is parsed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Item</em>&nbsp;</td><td>the demanded item </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>the value of the item </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f0976057350505eca781aafcaf6b1d14"></a><!-- doxytag: member="cUpnpService::setError" ref="f0976057350505eca781aafcaf6b1d14" args="(Upnp_Action_Request *Request, int Error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void cUpnpService::setError </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Action_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>Error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets an error on an action request<p>
+This function puts a error message into the action request structure according to its error code<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>the action request, to set the error for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Error</em>&nbsp;</td><td>the error code of which the message should be obtained </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>the action request, to set the error for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Error</em>&nbsp;</td><td>the error code of which the message should be obtained </td></tr>
+ </table>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classcConnectionManager.html#02014a637c6cb04cbfe10b3cb4ce6d1d">cConnectionManager</a>, and <a class="el" href="classcContentDirectory.html#a3b0df304987a0f2b17733c651d5b5c6">cContentDirectory</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e6d3522d580e5975f5a38d5bea88e29d"></a><!-- doxytag: member="cUpnpService::subscribe" ref="e6d3522d580e5975f5a38d5bea88e29d" args="(Upnp_Subscription_Request *Request)=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int cUpnpService::subscribe </td>
+ <td>(</td>
+ <td class="paramtype">Upnp_Subscription_Request *&nbsp;</td>
+ <td class="paramname"> <em>Request</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Subscribes to an event<p>
+This is a callback function to register a new subscriber for an event.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An integer representing one of the following:<ul>
+<li><b><code>UPNP_E_SUCCESS</code>,</b> if subscription was okay</li><li>or any other non null value in case of an error</li></ul>
+</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Information about the subscription </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Request</em>&nbsp;</td><td>Information about the subscription </td></tr>
+ </table>
+</dl>
+
+<p>Implemented in <a class="el" href="classcConnectionManager.html#7990eba09a100e5e4ee5b01b87bcc16e">cConnectionManager</a>, and <a class="el" href="classcContentDirectory.html#17acd376a722e6e7de9ec0d4cabb707b">cContentDirectory</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li>upnpcomponents/<a class="el" href="upnpservice_8h-source.html">upnpservice.h</a><li>upnpcomponents/upnpservice.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcUpnpService__inherit__graph.map b/doc/html/classcUpnpService__inherit__graph.map
new file mode 100644
index 0000000..17edb5d
--- /dev/null
+++ b/doc/html/classcUpnpService__inherit__graph.map
@@ -0,0 +1,2 @@
+<area shape="rect" href="$classcConnectionManager.html" title="{cConnectionManager\n|&#45; mDefaultConnection\l&#45; mVirtualConnections\l&#45; mSupportedProtocols\l|+ cConnectionManager()\l+ ~cConnectionManager()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; setError()\l&#45; getProtocolInfo()\l&#45; getCurrentConnectionIDs()\l&#45; getCurrentConnectionInfo()\l&#45; prepareForConnection()\l&#45; connectionComplete()\l&#45; createVirtualConnection()\l&#45; destroyVirtualConnection()\l&#45; getConnectionIDsCVS()\l}" alt="" coords="5,229,189,549">
+<area shape="rect" href="$classcContentDirectory.html" title="{cContentDirectory\n|&#45; mMediaDatabase\l|+ cContentDirectory()\l+ ~cContentDirectory()\l+ subscribe()\l+ execute()\l+ setError()\l&#45; Action()\l&#45; getSearchCapabilities()\l&#45; getSortCapabilities()\l&#45; getSystemUpdateID()\l&#45; browse()\l}" alt="" coords="213,277,376,501">
diff --git a/doc/html/classcUpnpService__inherit__graph.md5 b/doc/html/classcUpnpService__inherit__graph.md5
new file mode 100644
index 0000000..b6dd168
--- /dev/null
+++ b/doc/html/classcUpnpService__inherit__graph.md5
@@ -0,0 +1 @@
+a6fdb9c815f084fc93fc6310f7bf1343 \ No newline at end of file
diff --git a/doc/html/classcUpnpService__inherit__graph.png b/doc/html/classcUpnpService__inherit__graph.png
new file mode 100644
index 0000000..e79ea59
--- /dev/null
+++ b/doc/html/classcUpnpService__inherit__graph.png
Binary files differ
diff --git a/doc/html/classcVirtualConnection-members.html b/doc/html/classcVirtualConnection-members.html
new file mode 100644
index 0000000..e44de80
--- /dev/null
+++ b/doc/html/classcVirtualConnection-members.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cVirtualConnection Member List</h1>This is the complete list of members for <a class="el" href="classcVirtualConnection.html">cVirtualConnection</a>, including all inherited members.<p><table>
+ <tr bgcolor="#f0f0f0"><td><b>cConnectionManager</b> (defined in <a class="el" href="classcVirtualConnection.html">cVirtualConnection</a>)</td><td><a class="el" href="classcVirtualConnection.html">cVirtualConnection</a></td><td><code> [friend]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classcVirtualConnection.html b/doc/html/classcVirtualConnection.html
new file mode 100644
index 0000000..607fe7f
--- /dev/null
+++ b/doc/html/classcVirtualConnection.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cVirtualConnection Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cVirtualConnection Class Reference</h1><!-- doxytag: class="cVirtualConnection" --><code>#include &lt;<a class="el" href="connectionmanager_8h-source.html">connectionmanager.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="classcVirtualConnection-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a889c1ce7880be8fb32bbd69a95b1915"></a><!-- doxytag: member="cVirtualConnection::cConnectionManager" ref="a889c1ce7880be8fb32bbd69a95b1915" args="" -->
+class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcVirtualConnection.html#a889c1ce7880be8fb32bbd69a95b1915">cConnectionManager</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Virtual connection<p>
+A virtual connection managed by the connection manager service <hr>The documentation for this class was generated from the following files:<ul>
+<li>upnpcomponents/<a class="el" href="connectionmanager_8h-source.html">connectionmanager.h</a><li>upnpcomponents/connectionmanager.cpp</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/classes.html b/doc/html/classes.html
new file mode 100644
index 0000000..42e9221
--- /dev/null
+++ b/doc/html/classes.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Alphabetical List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a></div><p>
+<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPServer.html">cUPnPServer</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUpnpService.html">cUpnpService</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structcClass.html">cClass</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcPathParser.html">cPathParser</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcConnectionManager.html">cConnectionManager</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcContentDirectory.html">cContentDirectory</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcDlna.html">cDlna</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPResource.html">cUPnPResource</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcVirtualConnection.html">cVirtualConnection</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcFileHandle.html">cFileHandle</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcRow.html">cRow</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classcFilterCriteria.html">cFilterCriteria</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcRows.html">cRows</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPResources.html">cUPnPResources</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structcSortCrit.html">cSortCrit</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDLNAProfile.html">DLNAProfile</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcSortCriteria.html">cSortCriteria</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a></div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/common_8h-source.html b/doc/html/common_8h-source.html
new file mode 100644
index 0000000..400a46f
--- /dev/null
+++ b/doc/html/common_8h-source.html
@@ -0,0 +1,766 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: common.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>common.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * File: common.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 19. April 2009, 15:22</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _COMMON_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _COMMON_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "misc/util.h"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;libintl.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;vdr/tools.h&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;vdr/i18n.h&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;vdr/remux.h&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="comment">/****************************************************</span>
+<a name="l00019"></a>00019 <span class="comment"> *</span>
+<a name="l00020"></a>00020 <span class="comment"> * Table of contents</span>
+<a name="l00021"></a>00021 <span class="comment"> *</span>
+<a name="l00022"></a>00022 <span class="comment"> * This file includes all (or at least most) constant</span>
+<a name="l00023"></a>00023 <span class="comment"> * definitions for this plugin. As was growing very</span>
+<a name="l00024"></a>00024 <span class="comment"> * fast, I decided to insert this table of contents</span>
+<a name="l00025"></a>00025 <span class="comment"> * for faster navigations. However, you have to scroll</span>
+<a name="l00026"></a>00026 <span class="comment"> * on your own.</span>
+<a name="l00027"></a>00027 <span class="comment"> *</span>
+<a name="l00028"></a>00028 <span class="comment"> * 0. Global constants</span>
+<a name="l00029"></a>00029 <span class="comment"> * 1. VDR and the VDR subsystem</span>
+<a name="l00030"></a>00030 <span class="comment"> * 1.1 Versioning</span>
+<a name="l00031"></a>00031 <span class="comment"> * 1.2 Logging</span>
+<a name="l00032"></a>00032 <span class="comment"> * 1.3 Plugin constants</span>
+<a name="l00033"></a>00033 <span class="comment"> * 1.4 Plugin setup</span>
+<a name="l00034"></a>00034 <span class="comment"> * 2. UPnP</span>
+<a name="l00035"></a>00035 <span class="comment"> * 2.1 UPnP Namespaces</span>
+<a name="l00036"></a>00036 <span class="comment"> * 2.2 Directory hierarchy</span>
+<a name="l00037"></a>00037 <span class="comment"> * 2.3 internal Webserver</span>
+<a name="l00038"></a>00038 <span class="comment"> * 2.4 Device description</span>
+<a name="l00039"></a>00039 <span class="comment"> * 2.5 Connection Manager Service (CMS)</span>
+<a name="l00040"></a>00040 <span class="comment"> * 2.6 Content Directory Service (CDS)</span>
+<a name="l00041"></a>00041 <span class="comment"> * 2.7 UPnP AV Transport (AVT)</span>
+<a name="l00042"></a>00042 <span class="comment"> * 2.8 Media classes</span>
+<a name="l00043"></a>00043 <span class="comment"> * 2.9 Storage Media</span>
+<a name="l00044"></a>00044 <span class="comment"> * 2.10 Known Errors</span>
+<a name="l00045"></a>00045 <span class="comment"> * 2.11 Write Status</span>
+<a name="l00046"></a>00046 <span class="comment"> * 2.12 DIDL Properties</span>
+<a name="l00047"></a>00047 <span class="comment"> * 3. DLNA</span>
+<a name="l00048"></a>00048 <span class="comment"> * 3.1 Protocol Info Fields</span>
+<a name="l00049"></a>00049 <span class="comment"> * 3.2 Protocol Info Flags</span>
+<a name="l00050"></a>00050 <span class="comment"> * 3.3 Media Profiles</span>
+<a name="l00051"></a>00051 <span class="comment"> * 3.4 Container types</span>
+<a name="l00052"></a>00052 <span class="comment"> * 3.5 Device types</span>
+<a name="l00053"></a>00053 <span class="comment"> * 4. SQLite</span>
+<a name="l00054"></a>00054 <span class="comment"> * 4.1 Database setup</span>
+<a name="l00055"></a>00055 <span class="comment"> *</span>
+<a name="l00056"></a>00056 <span class="comment"> ****************************************************/</span>
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="comment">/****************************************************</span>
+<a name="l00059"></a>00059 <span class="comment"> *</span>
+<a name="l00060"></a>00060 <span class="comment"> * 0. Global constants</span>
+<a name="l00061"></a>00061 <span class="comment"> *</span>
+<a name="l00062"></a>00062 <span class="comment"> ****************************************************/</span>
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#define IN</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define OUT</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define INOUT</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>
+<a name="l00068"></a>00068 <span class="comment">//#define DEBUG</span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="preprocessor">#define TOSTRING(s) #s</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>
+<a name="l00072"></a>00072 <span class="preprocessor">#define FALSE 0</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span>
+<a name="l00075"></a>00075 <span class="preprocessor">#define bool_t uint8_t</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span>
+<a name="l00080"></a>00080 <span class="preprocessor">#ifndef _</span>
+<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define _(s) tr(s)</span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span>
+<a name="l00084"></a>00084 <span class="preprocessor">#define KB(i) i*1024</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define MB(i) i*KB(1024)</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span>
+<a name="l00087"></a>00087 <span class="preprocessor">#define SIZEOF_UUID_STRING 37 // 00000000-0000-0000-0000-000000000000 = 32 + 4 + 1</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>
+<a name="l00089"></a>00089 <span class="preprocessor">#define strdup0(s) (s!=NULL?strdup(s):NULL)</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span>
+<a name="l00091"></a>00091 <span class="preprocessor">#define att(s) strchr(s,'@')!=NULL?strchr(s,'@')+1:NULL</span>
+<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#define prop(s) substr(s, 0, strchr(s,'@')-s)</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span>
+<a name="l00094"></a>00094 <span class="keywordtype">void</span> message(<span class="keyword">const</span> <span class="keywordtype">char</span>* File, <span class="keywordtype">int</span> Line, <span class="keyword">const</span> <span class="keywordtype">char</span>* Format, ...) __attribute__ ((format (printf, 3, 4)));
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="comment">/****************************************************</span>
+<a name="l00097"></a>00097 <span class="comment"> *</span>
+<a name="l00098"></a>00098 <span class="comment"> * 1. VDR and the VDR subsystem</span>
+<a name="l00099"></a>00099 <span class="comment"> *</span>
+<a name="l00100"></a>00100 <span class="comment"> ****************************************************/</span>
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="preprocessor">#define VDR_RECORDFILE_PATTERN_PES "%s/%03d.vdr"</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define VDR_RECORDFILE_PATTERN_TS "%s/%05d.ts"</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define VDR_MAX_FILES_PER_RECORDING 65535</span>
+<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define VDR_FILENAME_BUFSIZE 2048</span>
+<a name="l00106"></a>00106 <span class="preprocessor"></span>
+<a name="l00107"></a>00107 <span class="comment">/****************************************************</span>
+<a name="l00108"></a>00108 <span class="comment"> *</span>
+<a name="l00109"></a>00109 <span class="comment"> * 1.1 Versioning</span>
+<a name="l00110"></a>00110 <span class="comment"> *</span>
+<a name="l00111"></a>00111 <span class="comment"> ****************************************************/</span>
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="preprocessor">#define VERSION_INT(maj, min, mic) (maj&lt;&lt;16 | min&lt;&lt;8 | mic)</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#define VERSION_DOT(maj, min, mic) maj ##.## min ##.## mic</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#define VERSION_STR(maj, min, mic) TOSTRING(maj.min.mic)</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span>
+<a name="l00117"></a>00117 <span class="comment">/* If any changes on the version number are commited, please change the version</span>
+<a name="l00118"></a>00118 <span class="comment"> * string in the main file "upnp.c" as well to avoid errors with the makefile */</span>
+<a name="l00119"></a>00119 <span class="preprocessor">#define PLUGIN_VERSION_MAJOR 0</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#define PLUGIN_VERSION_MINOR 0</span>
+<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor">#define PLUGIN_VERSION_MICRO 1</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="comment">/* The plugin version as dot-separated string */</span>
+<a name="l00123"></a>00123 <span class="preprocessor">#define PLUGIN_VERSION VERSION_STR(PLUGIN_VERSION_MAJOR, \</span>
+<a name="l00124"></a>00124 <span class="preprocessor"> PLUGIN_VERSION_MINOR, \</span>
+<a name="l00125"></a>00125 <span class="preprocessor"> PLUGIN_VERSION_MICRO)</span>
+<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="comment">/* The plugin version as integer representation */</span>
+<a name="l00127"></a>00127 <span class="preprocessor">#define PLUGIN_VERSION_INT VERSION_INT(PLUGIN_VERSION_MAJOR, \</span>
+<a name="l00128"></a>00128 <span class="preprocessor"> PLUGIN_VERSION_MINOR, \</span>
+<a name="l00129"></a>00129 <span class="preprocessor"> PLUGIN_VERSION_MICRO)</span>
+<a name="l00130"></a>00130 <span class="preprocessor"></span>
+<a name="l00131"></a>00131 <span class="comment">/****************************************************</span>
+<a name="l00132"></a>00132 <span class="comment"> *</span>
+<a name="l00133"></a>00133 <span class="comment"> * 1.2 Logging</span>
+<a name="l00134"></a>00134 <span class="comment"> *</span>
+<a name="l00135"></a>00135 <span class="comment"> ****************************************************/</span>
+<a name="l00136"></a>00136
+<a name="l00143"></a>00143 <span class="preprocessor">#define ERROR(s...) esyslog("UPnP server error:" s)</span>
+<a name="l00144"></a>00144 <span class="preprocessor"></span>
+<a name="l00150"></a>00150 <span class="preprocessor">#define WARNING(s...) isyslog("UPnP server warning: " s)</span>
+<a name="l00151"></a>00151 <span class="preprocessor"></span>
+<a name="l00157"></a>00157 <span class="preprocessor">#ifdef DEBUG</span>
+<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="preprocessor">#define MESSAGE(s...) message(__FILE__, __LINE__, "UPnP server message: " s)</span>
+<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor">#define MESSAGE(s...) dsyslog("UPnP server message: " s)</span>
+<a name="l00161"></a>00161 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00162"></a>00162 <span class="preprocessor"></span>
+<a name="l00163"></a>00163 <span class="comment">/****************************************************</span>
+<a name="l00164"></a>00164 <span class="comment"> *</span>
+<a name="l00165"></a>00165 <span class="comment"> * 1.3 Plugin constants</span>
+<a name="l00166"></a>00166 <span class="comment"> *</span>
+<a name="l00167"></a>00167 <span class="comment"> ****************************************************/</span>
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <span class="comment">/* The authors of the plugin */</span>
+<a name="l00170"></a>00170 <span class="preprocessor">#define PLUGIN_AUTHORS "Andreas Günther, Denis Loh"</span>
+<a name="l00171"></a>00171 <span class="preprocessor"></span><span class="comment">/* The web site of the plugin */</span>
+<a name="l00172"></a>00172 <span class="preprocessor">#define PLUGIN_WEB_PAGE "http://upnp.methodus.de"</span>
+<a name="l00173"></a>00173 <span class="preprocessor"></span><span class="comment">/* A small discription of the plugin, which is also used as the device description */</span>
+<a name="l00174"></a>00174 <span class="preprocessor">#define PLUGIN_DESCRIPTION "UPnP/DLNA compliant Media Server functionality for VDR"</span>
+<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="comment">/* The short plugin name. This is used as the main menu of VDR */</span>
+<a name="l00176"></a>00176 <span class="preprocessor">#define PLUGIN_SHORT_NAME "DLNA/UPnP"</span>
+<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="comment">/* A somewhat longer name, a.k.a device name */</span>
+<a name="l00178"></a>00178 <span class="preprocessor">#define PLUGIN_NAME "VDR DLNA/UPnP Media Server"</span>
+<a name="l00179"></a>00179 <span class="preprocessor"></span><span class="comment">/* Where the plugin can be downloaded */</span>
+<a name="l00180"></a>00180 <span class="preprocessor">#define PLUGIN_DOWNLOAD_PAGE PLUGIN_WEB_PAGE</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span>
+<a name="l00182"></a>00182 <span class="comment">/****************************************************</span>
+<a name="l00183"></a>00183 <span class="comment"> *</span>
+<a name="l00184"></a>00184 <span class="comment"> * 1.4 Plugin setup</span>
+<a name="l00185"></a>00185 <span class="comment"> *</span>
+<a name="l00186"></a>00186 <span class="comment"> ****************************************************/</span>
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="preprocessor">#define SETUP_SERVER_ENABLED "ServerEnabled"</span>
+<a name="l00189"></a>00189 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_INT "ServerInt"</span>
+<a name="l00190"></a>00190 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_PORT "ServerPort"</span>
+<a name="l00191"></a>00191 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_AUTO "ServerAutoDetect"</span>
+<a name="l00192"></a>00192 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_ADDRESS "ServerAddress"</span>
+<a name="l00193"></a>00193 <span class="preprocessor"></span>
+<a name="l00194"></a>00194 <span class="comment">/* The server port range where the server interacts with clients */</span>
+<a name="l00195"></a>00195 <span class="preprocessor">#define SERVER_MIN_PORT 49152</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span><span class="preprocessor">#define SERVER_MAX_PORT 65535</span>
+<a name="l00197"></a>00197 <span class="preprocessor"></span>
+<a name="l00198"></a>00198 <span class="preprocessor">#define RECEIVER_LIVEBUFFER_SIZE MB(1)</span>
+<a name="l00199"></a>00199 <span class="preprocessor"></span><span class="preprocessor">#define RECEIVER_OUTPUTBUFFER_SIZE MB(1)</span>
+<a name="l00200"></a>00200 <span class="preprocessor"></span><span class="preprocessor">#define RECEIVER_RINGBUFFER_MARGIN 10*TS_SIZE</span>
+<a name="l00201"></a>00201 <span class="preprocessor"></span>
+<a name="l00202"></a>00202 <span class="comment">/****************************************************</span>
+<a name="l00203"></a>00203 <span class="comment"> *</span>
+<a name="l00204"></a>00204 <span class="comment"> * 2. UPnP</span>
+<a name="l00205"></a>00205 <span class="comment"> *</span>
+<a name="l00206"></a>00206 <span class="comment"> ****************************************************/</span>
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="comment">/*The maximum size of the device description file</span>
+<a name="l00209"></a>00209 <span class="comment"> *must NOT exceed 20KB including HTTP headers</span>
+<a name="l00210"></a>00210 <span class="comment"> */</span>
+<a name="l00211"></a>00211 <span class="preprocessor">#define UPNP_DEVICE_DESCRIPTION_MAX_LEN KB(20)</span>
+<a name="l00212"></a>00212 <span class="preprocessor"></span><span class="comment">/* The maximum size of the SOAP requests */</span>
+<a name="l00213"></a>00213 <span class="preprocessor">#define UPNP_SOAP_MAX_LEN KB(20)</span>
+<a name="l00214"></a>00214 <span class="preprocessor"></span><span class="comment">/* The max age of announcements in seconds */</span>
+<a name="l00215"></a>00215 <span class="preprocessor">#define UPNP_ANNOUNCE_MAX_AGE 1800</span>
+<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="comment">/* Max resources per object including</span>
+<a name="l00217"></a>00217 <span class="comment"> * preview images and thumbnails</span>
+<a name="l00218"></a>00218 <span class="comment"> */</span>
+<a name="l00219"></a>00219 <span class="preprocessor">#define UPNP_MAX_RESOURCES_PER_OBJECT 16</span>
+<a name="l00220"></a>00220 <span class="preprocessor"></span>
+<a name="l00221"></a>00221 <span class="keyword">enum</span> UPNP_RESOURCE_TYPES {
+<a name="l00222"></a>00222 UPNP_RESOURCE_CHANNEL,
+<a name="l00223"></a>00223 UPNP_RESOURCE_RECORDING,
+<a name="l00224"></a>00224 UPNP_RESOURCE_FILE,
+<a name="l00225"></a>00225 UPNP_RESOURCE_URL
+<a name="l00226"></a>00226 };
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <span class="comment">/****************************************************</span>
+<a name="l00229"></a>00229 <span class="comment"> *</span>
+<a name="l00230"></a>00230 <span class="comment"> * 2.1 Namespaces</span>
+<a name="l00231"></a>00231 <span class="comment"> *</span>
+<a name="l00232"></a>00232 <span class="comment"> ****************************************************/</span>
+<a name="l00233"></a>00233
+<a name="l00234"></a>00234 <span class="preprocessor">#define UPNP_XMLNS_UPNP "urn:schemas-upnp-org:metadata-1-0/upnp/"</span>
+<a name="l00235"></a>00235 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DIDL "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite"</span>
+<a name="l00236"></a>00236 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DLNA_META "urn:schemas-dlna-org:metadata-1-0/"</span>
+<a name="l00237"></a>00237 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_UPNP_DEV "urn:schemas-upnp-org:device-1-0"</span>
+<a name="l00238"></a>00238 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DLNA_DEV "urn:schemas-dlna-org:device-1-0"</span>
+<a name="l00239"></a>00239 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DUBLINCORE "http://purl.org/dc/elements/1.1/"</span>
+<a name="l00240"></a>00240 <span class="preprocessor"></span>
+<a name="l00241"></a>00241 <span class="preprocessor">#define UPNP_XMLNS_PREFIX_UPNP "upnp"</span>
+<a name="l00242"></a>00242 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_PREFIX_DC "dc"</span>
+<a name="l00243"></a>00243 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_PREFIX_DIDL ""</span>
+<a name="l00244"></a>00244 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_PREFIX_DLNA "dlna"</span>
+<a name="l00245"></a>00245 <span class="preprocessor"></span>
+<a name="l00246"></a>00246 <span class="comment">/****************************************************</span>
+<a name="l00247"></a>00247 <span class="comment"> *</span>
+<a name="l00248"></a>00248 <span class="comment"> * 2.2 Directory hierarchy</span>
+<a name="l00249"></a>00249 <span class="comment"> *</span>
+<a name="l00250"></a>00250 <span class="comment"> ****************************************************/</span>
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 <span class="preprocessor">#define UPNP_DIR_CONTROL "/control"</span>
+<a name="l00253"></a>00253 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_EVENT "/event"</span>
+<a name="l00254"></a>00254 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_XML "/xml"</span>
+<a name="l00255"></a>00255 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_SHARES "/shares"</span>
+<a name="l00256"></a>00256 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_PRESENTATION "/web"</span>
+<a name="l00257"></a>00257 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_ICONS "/icons"</span>
+<a name="l00258"></a>00258 <span class="preprocessor"></span>
+<a name="l00259"></a>00259 <span class="comment">/****************************************************</span>
+<a name="l00260"></a>00260 <span class="comment"> *</span>
+<a name="l00261"></a>00261 <span class="comment"> * 2.3 internal webserver</span>
+<a name="l00262"></a>00262 <span class="comment"> *</span>
+<a name="l00263"></a>00263 <span class="comment"> ****************************************************/</span>
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265 <span class="preprocessor">#define UPNP_WEB_MAX_FILE_HANDLES 512</span>
+<a name="l00266"></a>00266 <span class="preprocessor"></span>
+<a name="l00267"></a>00267 <span class="preprocessor">#define UPNP_WEB_PRESENTATION_URL "/index.html"</span>
+<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_WEB_SERVER_ROOT_DIR UPNP_DIR_PRESENTATION</span>
+<a name="l00269"></a>00269 <span class="preprocessor"></span>
+<a name="l00270"></a>00270 <span class="keyword">enum</span> UPNP_WEB_METHODS {
+<a name="l00271"></a>00271 UPNP_WEB_METHOD_BROWSE,
+<a name="l00272"></a>00272 UPNP_WEB_METHOD_SHOW,
+<a name="l00273"></a>00273 UPNP_WEB_METHOD_STREAM,
+<a name="l00274"></a>00274 UPNP_WEB_METHOD_SEARCH,
+<a name="l00275"></a>00275 UPNP_WEB_METHOD_DOWNLOAD
+<a name="l00276"></a>00276 };
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <span class="comment">/****************************************************</span>
+<a name="l00279"></a>00279 <span class="comment"> *</span>
+<a name="l00280"></a>00280 <span class="comment"> * 2.4 Device description</span>
+<a name="l00281"></a>00281 <span class="comment"> *</span>
+<a name="l00282"></a>00282 <span class="comment"> ****************************************************/</span>
+<a name="l00283"></a>00283
+<a name="l00284"></a>00284 <span class="comment">/*The device type of the server*/</span>
+<a name="l00285"></a>00285 <span class="preprocessor">#define UPNP_DEVICE_TYPE "urn:schemas-upnp-org:device:MediaServer:1"</span>
+<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="comment">/*Path to device description*/</span>
+<a name="l00287"></a>00287 <span class="preprocessor">#define UPNP_DEVICE_DESCRIPTION_PATH UPNP_WEB_SERVER_ROOT_DIR "/ms_desc.xml"</span>
+<a name="l00288"></a>00288 <span class="preprocessor"></span><span class="comment">/*Values to identify device and services*/</span>
+<a name="l00289"></a>00289 <span class="preprocessor">#define UPNP_DEVICE_UDN "uuid:b120ba52-d88d-4500-9b64-888971d83fd3"</span>
+<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="comment">/* The friendly device name, human readable */</span>
+<a name="l00291"></a>00291 <span class="preprocessor">#define UPNP_DEVICE_FRIENDLY_NAME PLUGIN_NAME</span>
+<a name="l00292"></a>00292 <span class="preprocessor"></span><span class="comment">/* The guys who wrote the crap */</span>
+<a name="l00293"></a>00293 <span class="preprocessor">#define UPNP_DEVICE_MANUFACTURER PLUGIN_AUTHORS</span>
+<a name="l00294"></a>00294 <span class="preprocessor"></span><span class="comment">/* The website of the manufacturer, in this case the plugin website */</span>
+<a name="l00295"></a>00295 <span class="preprocessor">#define UPNP_DEVICE_MANUFACTURER_URL PLUGIN_WEB_PAGE</span>
+<a name="l00296"></a>00296 <span class="preprocessor"></span><span class="comment">/* There is just the one and only model of the plugin, the plugin itself */</span>
+<a name="l00297"></a>00297 <span class="preprocessor">#define UPNP_DEVICE_MODEL_DESCRIPTION PLUGIN_DESCRIPTION</span>
+<a name="l00298"></a>00298 <span class="preprocessor"></span><span class="comment">/* The plugin name... */</span>
+<a name="l00299"></a>00299 <span class="preprocessor">#define UPNP_DEVICE_MODEL_NAME PLUGIN_NAME</span>
+<a name="l00300"></a>00300 <span class="preprocessor"></span><span class="comment">/* The plugin version */</span>
+<a name="l00301"></a>00301 <span class="preprocessor">#define UPNP_DEVICE_MODEL_NUMBER PLUGIN_VERSION</span>
+<a name="l00302"></a>00302 <span class="preprocessor"></span><span class="comment">/* The website of the plugin, this might be different to the manufactures homepage</span>
+<a name="l00303"></a>00303 <span class="comment"> * and should redirect to a download mirror where the plugin can be obtained.</span>
+<a name="l00304"></a>00304 <span class="comment"> */</span>
+<a name="l00305"></a>00305 <span class="preprocessor">#define UPNP_DEVICE_MODEL_URL PLUGIN_DOWNLOAD_PAGE</span>
+<a name="l00306"></a>00306 <span class="preprocessor"></span><span class="comment">/* The serial number of the plugin. This is the integer value of the version */</span>
+<a name="l00307"></a>00307 <span class="preprocessor">#define UPNP_DEVICE_SERIAL_NUMBER "VDR_DLNAUPNP_" PLUGIN_VERSION</span>
+<a name="l00308"></a>00308 <span class="preprocessor"></span>
+<a name="l00309"></a>00309 <span class="preprocessor">#define UPNP_DEVICE_ICON_JPEG_SM UPNP_DIR_ICONS "/upnpIconSm.jpeg"</span>
+<a name="l00310"></a>00310 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DEVICE_ICON_JPEG_LRG UPNP_DIR_ICONS "/upnpIconLrg.jpeg"</span>
+<a name="l00311"></a>00311 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DEVICE_ICON_PNG_SM UPNP_DIR_ICONS "/upnpIconSm.png"</span>
+<a name="l00312"></a>00312 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DEVICE_ICON_PNG_LRG UPNP_DIR_ICONS "/upnpIconLrg.png"</span>
+<a name="l00313"></a>00313 <span class="preprocessor"></span>
+<a name="l00314"></a>00314 <span class="comment">/****************************************************</span>
+<a name="l00315"></a>00315 <span class="comment"> *</span>
+<a name="l00316"></a>00316 <span class="comment"> * 2.5 DIDL Properties</span>
+<a name="l00317"></a>00317 <span class="comment"> *</span>
+<a name="l00318"></a>00318 <span class="comment"> ****************************************************/</span>
+<a name="l00319"></a>00319
+<a name="l00320"></a>00320 <span class="preprocessor">#define UPNP_OBJECT_ITEM "item"</span>
+<a name="l00321"></a>00321 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_OBJECT_CONTAINER "container"</span>
+<a name="l00322"></a>00322 <span class="preprocessor"></span>
+<a name="l00323"></a>00323 <span class="preprocessor">#define UPNP_PROP_OBJECTID "@id"</span>
+<a name="l00324"></a>00324 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PARENTID "@parentID"</span>
+<a name="l00325"></a>00325 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_TITLE "dc:title"</span>
+<a name="l00326"></a>00326 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CREATOR "dc:creator"</span>
+<a name="l00327"></a>00327 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RESTRICTED "@restricted"</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_WRITESTATUS "upnp:writeStatus"</span>
+<a name="l00329"></a>00329 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CLASS "upnp:class"</span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CLASSNAME UPNP_PROP_CLASS "@name"</span>
+<a name="l00331"></a>00331 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SEARCHCLASS "upnp:searchClass"</span>
+<a name="l00332"></a>00332 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCLASSDERIVED UPNP_PROP_SEARCHCLASS "@includeDerived"</span>
+<a name="l00333"></a>00333 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_REFERENCEID UPNP_OBJECT_ITEM "@refID"</span>
+<a name="l00334"></a>00334 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCLASSNAME UPNP_PROP_SEARCHCLASS "@name"</span>
+<a name="l00335"></a>00335 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SEARCHABLE UPNP_OBJECT_CONTAINER "@searchable"</span>
+<a name="l00336"></a>00336 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CHILDCOUNT UPNP_OBJECT_CONTAINER "@childcount"</span>
+<a name="l00337"></a>00337 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RESOURCE "res"</span>
+<a name="l00338"></a>00338 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PROTOCOLINFO UPNP_PROP_RESOURCE "@protocolInfo"</span>
+<a name="l00339"></a>00339 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SIZE UPNP_PROP_RESOURCE "@size"</span>
+<a name="l00340"></a>00340 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DURATION UPNP_PROP_RESOURCE "@duration"</span>
+<a name="l00341"></a>00341 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_BITRATE UPNP_PROP_RESOURCE "@bitrate"</span>
+<a name="l00342"></a>00342 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SAMPLEFREQUENCE UPNP_PROP_RESOURCE "@sampleFreq"</span>
+<a name="l00343"></a>00343 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_BITSPERSAMPLE UPNP_PROP_RESOURCE "@bitsPerSample"</span>
+<a name="l00344"></a>00344 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_NOAUDIOCHANNELS UPNP_PROP_RESOURCE "@nrAudioChannels"</span>
+<a name="l00345"></a>00345 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_COLORDEPTH UPNP_PROP_RESOURCE "@colorDepth"</span>
+<a name="l00346"></a>00346 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RESOLUTION UPNP_PROP_RESOURCE "@resolution"</span>
+<a name="l00347"></a>00347 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_GENRE "upnp:genre"</span>
+<a name="l00348"></a>00348 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_LONGDESCRIPTION "upnp:longDescription"</span>
+<a name="l00349"></a>00349 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PRODUCER "upnp:producer"</span>
+<a name="l00350"></a>00350 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RATING "upnp:rating"</span>
+<a name="l00351"></a>00351 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ACTOR "upnp:actor"</span>
+<a name="l00352"></a>00352 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DIRECTOR "upnp:director"</span>
+<a name="l00353"></a>00353 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DESCRIPTION "dc:description"</span>
+<a name="l00354"></a>00354 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PUBLISHER "dc:publisher"</span>
+<a name="l00355"></a>00355 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_LANGUAGE "dc:language"</span>
+<a name="l00356"></a>00356 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RELATION "dc:relation"</span>
+<a name="l00357"></a>00357 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_STORAGEMEDIUM "upnp:storageMedium"</span>
+<a name="l00358"></a>00358 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DVDREGIONCODE "upnp:DVDRegionCode"</span>
+<a name="l00359"></a>00359 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CHANNELNAME "upnp:channelName"</span>
+<a name="l00360"></a>00360 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCHEDULEDSTARTTIME "upnp:scheduledStartTime"</span>
+<a name="l00361"></a>00361 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCHEDULEDENDTIME "upnp:scheduledEndTime"</span>
+<a name="l00362"></a>00362 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ICON "upnp:icon"</span>
+<a name="l00363"></a>00363 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_REGION "upnp:region"</span>
+<a name="l00364"></a>00364 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CHANNELNR "upnp:channelNr"</span>
+<a name="l00365"></a>00365 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RIGHTS "dc:rights"</span>
+<a name="l00366"></a>00366 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RADIOCALLSIGN "upnp:radioCallSign"</span>
+<a name="l00367"></a>00367 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RADIOSTATIONID "upnp:radioStationID"</span>
+<a name="l00368"></a>00368 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RADIOBAND "upnp:radioBand"</span>
+<a name="l00369"></a>00369 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CONTRIBUTOR "dc:contributor"</span>
+<a name="l00370"></a>00370 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DATE "dc:date"</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ALBUM "upnp:album"</span>
+<a name="l00372"></a>00372 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ARTIST "upnp:artist"</span>
+<a name="l00373"></a>00373 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DLNA_CONTAINERTYPE "dlna:container"</span>
+<a name="l00374"></a>00374 <span class="preprocessor"></span>
+<a name="l00375"></a>00375 <span class="preprocessor">#define UPNP_DIDL_SKELETON "&lt;DIDL-Lite "\</span>
+<a name="l00376"></a>00376 <span class="preprocessor"> "xmlns:dc=\"" UPNP_XMLNS_DUBLINCORE "\" "\</span>
+<a name="l00377"></a>00377 <span class="preprocessor"> "xmlns:upnp=\"" UPNP_XMLNS_UPNP "\" "\</span>
+<a name="l00378"></a>00378 <span class="preprocessor"> "xmlns:dlna=\"" UPNP_XMLNS_DLNA_META "\" "\</span>
+<a name="l00379"></a>00379 <span class="preprocessor"> "xmlns=\"" UPNP_XMLNS_DIDL "\"&gt;&lt;/DIDL-Lite&gt;"</span>
+<a name="l00380"></a>00380 <span class="preprocessor"></span>
+<a name="l00381"></a>00381 <span class="comment">/****************************************************</span>
+<a name="l00382"></a>00382 <span class="comment"> *</span>
+<a name="l00383"></a>00383 <span class="comment"> * 2.6 Connection Manager Service (CMS)</span>
+<a name="l00384"></a>00384 <span class="comment"> *</span>
+<a name="l00385"></a>00385 <span class="comment"> ****************************************************/</span>
+<a name="l00386"></a>00386
+<a name="l00387"></a>00387 <span class="comment">/*Path to service description of conection manager service*/</span>
+<a name="l00388"></a>00388 <span class="preprocessor">#define UPNP_CMS_SCPD_URL UPNP_DIR_XML "/cms_scpd.xml"</span>
+<a name="l00389"></a>00389 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_CONTROL_URL UPNP_DIR_CONTROL "/cms_control"</span>
+<a name="l00390"></a>00390 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_EVENT_URL UPNP_DIR_EVENT "/cms_event"</span>
+<a name="l00391"></a>00391 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_SERVICE_ID "urn:upnp-org:serviceId:ConnectionManager"</span>
+<a name="l00392"></a>00392 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_SERVICE_TYPE "urn:schemas-upnp-org:service:ConnectionManager:1"</span>
+<a name="l00393"></a>00393 <span class="preprocessor"></span>
+<a name="l00394"></a>00394 <span class="comment">/* Compatibility usage only --&gt; See DLNA Profiles */</span>
+<a name="l00395"></a>00395 <span class="preprocessor">#define UPNP_CMS_SUPPORTED_PROTOCOLS "http-get:*:video/mpeg:*," \</span>
+<a name="l00396"></a>00396 <span class="preprocessor"> "http-get:*:audio/mpeg:*"</span>
+<a name="l00397"></a>00397 <span class="preprocessor"></span>
+<a name="l00398"></a>00398 <span class="comment">/****************************************************</span>
+<a name="l00399"></a>00399 <span class="comment"> *</span>
+<a name="l00400"></a>00400 <span class="comment"> * The UPnP CMS actions</span>
+<a name="l00401"></a>00401 <span class="comment"> *</span>
+<a name="l00402"></a>00402 <span class="comment"> * This constant definitions represent all actions</span>
+<a name="l00403"></a>00403 <span class="comment"> * compliant with UPnP ConnectionManager:1</span>
+<a name="l00404"></a>00404 <span class="comment"> *</span>
+<a name="l00405"></a>00405 <span class="comment"> ****************************************************/</span>
+<a name="l00406"></a>00406
+<a name="l00407"></a>00407 <span class="preprocessor">#define UPNP_CMS_ACTION_GETPROTOCOLINFO "GetProtocolInfo"</span>
+<a name="l00408"></a>00408 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONIDS "GetCurrentConnectionIDs"</span>
+<a name="l00409"></a>00409 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONINFO "GetCurrentConnectionInfo"</span>
+<a name="l00410"></a>00410 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_PREPAREFORCONNECTION "PrepareForConnection"</span>
+<a name="l00411"></a>00411 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_CONNECTIONCOMPLETE "ConnectionComplete"</span>
+<a name="l00412"></a>00412 <span class="preprocessor"></span>
+<a name="l00413"></a>00413 <span class="comment">/****************************************************</span>
+<a name="l00414"></a>00414 <span class="comment"> *</span>
+<a name="l00415"></a>00415 <span class="comment"> * 2.7 Content Directory Service (CDS)</span>
+<a name="l00416"></a>00416 <span class="comment"> *</span>
+<a name="l00417"></a>00417 <span class="comment"> ****************************************************/</span>
+<a name="l00418"></a>00418
+<a name="l00419"></a>00419 <span class="comment">/*Path to service description of content directory service*/</span>
+<a name="l00420"></a>00420 <span class="preprocessor">#define UPNP_CDS_SCPD_URL UPNP_DIR_XML "/cds_scpd.xml"</span>
+<a name="l00421"></a>00421 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_CONTROL_URL UPNP_DIR_CONTROL "/cds_control"</span>
+<a name="l00422"></a>00422 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_EVENT_URL UPNP_DIR_EVENT "/cds_event"</span>
+<a name="l00423"></a>00423 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_SERVICE_ID "urn:upnp-org:serviceId:ContentDirectory"</span>
+<a name="l00424"></a>00424 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_SERVICE_TYPE "urn:schemas-upnp-org:service:ContentDirectory:1"</span>
+<a name="l00425"></a>00425 <span class="preprocessor"></span>
+<a name="l00426"></a>00426 <span class="preprocessor">#define UPNP_CDS_SEARCH_CAPABILITIES ""</span>
+<a name="l00427"></a>00427 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_SORT_CAPABILITIES UPNP_PROP_TITLE ","\</span>
+<a name="l00428"></a>00428 <span class="preprocessor"> UPNP_PROP_CREATOR ","\</span>
+<a name="l00429"></a>00429 <span class="preprocessor"> UPNP_PROP_WRITESTATUS ","\</span>
+<a name="l00430"></a>00430 <span class="preprocessor"> UPNP_PROP_DESCRIPTION ","\</span>
+<a name="l00431"></a>00431 <span class="preprocessor"> UPNP_PROP_GENRE ","\</span>
+<a name="l00432"></a>00432 <span class="preprocessor"> UPNP_PROP_LONGDESCRIPTION ","\</span>
+<a name="l00433"></a>00433 <span class="preprocessor"> UPNP_PROP_PUBLISHER</span>
+<a name="l00434"></a>00434 <span class="preprocessor"></span>
+<a name="l00435"></a>00435 <span class="comment">/****************************************************</span>
+<a name="l00436"></a>00436 <span class="comment"> *</span>
+<a name="l00437"></a>00437 <span class="comment"> * The UPnP CDS actions</span>
+<a name="l00438"></a>00438 <span class="comment"> *</span>
+<a name="l00439"></a>00439 <span class="comment"> * This constant definitions represent all actions</span>
+<a name="l00440"></a>00440 <span class="comment"> * compliant with UPnP ContentDirectory:1</span>
+<a name="l00441"></a>00441 <span class="comment"> *</span>
+<a name="l00442"></a>00442 <span class="comment"> ****************************************************/</span>
+<a name="l00443"></a>00443
+<a name="l00444"></a>00444 <span class="preprocessor">#define UPNP_CDS_ACTION_SEARCHCAPABILITIES "GetSearchCapabilities"</span>
+<a name="l00445"></a>00445 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_SORTCAPABILITIES "GetSortCapabilities"</span>
+<a name="l00446"></a>00446 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_SYSTEMUPDATEID "GetSystemUpdateID"</span>
+<a name="l00447"></a>00447 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_BROWSE "Browse"</span>
+<a name="l00448"></a>00448 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_SEARCH "Search"</span>
+<a name="l00449"></a>00449 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_CREATEOBJECT "CreateObject"</span>
+<a name="l00450"></a>00450 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_DESTROYOBJECT "DestroyObject"</span>
+<a name="l00451"></a>00451 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_UPDATEOBJECT "UpdateObject"</span>
+<a name="l00452"></a>00452 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_IMPORTRESOURCE "ImportResource"</span>
+<a name="l00453"></a>00453 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_EXPORTRESOURCE "ExportResource"</span>
+<a name="l00454"></a>00454 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_STOPTRANSFERRES "StopTransferResource"</span>
+<a name="l00455"></a>00455 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_TRANSFERPROGRESS "GetTransferProgress"</span>
+<a name="l00456"></a>00456 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_DELETERESOURCE "DeleteResource"</span>
+<a name="l00457"></a>00457 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_CREATEREFERENCE "CreateReference"</span>
+<a name="l00458"></a>00458 <span class="preprocessor"></span>
+<a name="l00459"></a>00459 <span class="comment">/****************************************************</span>
+<a name="l00460"></a>00460 <span class="comment"> *</span>
+<a name="l00461"></a>00461 <span class="comment"> * 2.8 UPnP AV Transport (AVT)</span>
+<a name="l00462"></a>00462 <span class="comment"> *</span>
+<a name="l00463"></a>00463 <span class="comment"> ****************************************************/</span>
+<a name="l00464"></a>00464
+<a name="l00465"></a>00465 <span class="preprocessor">#define UPNP_AVT_SCPD_URL UPNP_DIR_XML "/avt_scpd.xml"</span>
+<a name="l00466"></a>00466 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_CONTROL_URL UPNP_DIR_CONTROL "/avt_control"</span>
+<a name="l00467"></a>00467 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_EVENT_URL UPNP_DIR_EVENT "/avt_event"</span>
+<a name="l00468"></a>00468 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_SERVICE_ID "urn:upnp-org:serviceID:AVTransport"</span>
+<a name="l00469"></a>00469 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_SERVICE_TYPE "urn:schemas-upnp-org:service:AVTransport:1"</span>
+<a name="l00470"></a>00470 <span class="preprocessor"></span>
+<a name="l00471"></a>00471 <span class="comment">/****************************************************</span>
+<a name="l00472"></a>00472 <span class="comment"> *</span>
+<a name="l00473"></a>00473 <span class="comment"> * The UPnP AVT actions</span>
+<a name="l00474"></a>00474 <span class="comment"> *</span>
+<a name="l00475"></a>00475 <span class="comment"> * This constant definitions represent all actions</span>
+<a name="l00476"></a>00476 <span class="comment"> * compliant with UPnP AVTransport:1</span>
+<a name="l00477"></a>00477 <span class="comment"> *</span>
+<a name="l00478"></a>00478 <span class="comment"> ****************************************************/</span>
+<a name="l00479"></a>00479
+<a name="l00480"></a>00480 <span class="comment">/****************************************************</span>
+<a name="l00481"></a>00481 <span class="comment"> *</span>
+<a name="l00482"></a>00482 <span class="comment"> * 2.9 Media classes</span>
+<a name="l00483"></a>00483 <span class="comment"> *</span>
+<a name="l00484"></a>00484 <span class="comment"> ****************************************************/</span>
+<a name="l00485"></a>00485
+<a name="l00486"></a>00486 <span class="preprocessor">#define UPNP_CLASS_OBJECT "object"</span>
+<a name="l00487"></a>00487 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_ITEM UPNP_CLASS_OBJECT "." "item"</span>
+<a name="l00488"></a>00488 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_CONTAINER UPNP_CLASS_OBJECT "." "container"</span>
+<a name="l00489"></a>00489 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_IMAGE UPNP_CLASS_ITEM "." "imageItem"</span>
+<a name="l00490"></a>00490 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_AUDIO UPNP_CLASS_ITEM "." "audioItem"</span>
+<a name="l00491"></a>00491 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_VIDEO UPNP_CLASS_ITEM "." "videoItem"</span>
+<a name="l00492"></a>00492 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PLAYLIST UPNP_CLASS_ITEM "." "playlistItem"</span>
+<a name="l00493"></a>00493 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_TEXT UPNP_CLASS_ITEM "." "textItem"</span>
+<a name="l00494"></a>00494 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PHOTO UPNP_CLASS_IMAGE "." "photo"</span>
+<a name="l00495"></a>00495 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICTRACK UPNP_CLASS_AUDIO "." "musikTrack"</span>
+<a name="l00496"></a>00496 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_AUDIOBC UPNP_CLASS_AUDIO "." "audioBroadcast"</span>
+<a name="l00497"></a>00497 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_AUDIOBOOK UPNP_CLASS_AUDIO "." "audioBook"</span>
+<a name="l00498"></a>00498 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MOVIE UPNP_CLASS_VIDEO "." "movie"</span>
+<a name="l00499"></a>00499 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_VIDEOBC UPNP_CLASS_VIDEO "." "videoBroadcast"</span>
+<a name="l00500"></a>00500 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICVIDCLIP UPNP_CLASS_VIDEO "." "musicVideoClip"</span>
+<a name="l00501"></a>00501 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PERSON UPNP_CLASS_CONTAINER "." "person"</span>
+<a name="l00502"></a>00502 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PLAYLISTCONT UPNP_CLASS_CONTAINER "." "playlistContainer"</span>
+<a name="l00503"></a>00503 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_ALBUM UPNP_CLASS_CONTAINER "." "album"</span>
+<a name="l00504"></a>00504 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_GENRE UPNP_CLASS_CONTAINER "." "genre"</span>
+<a name="l00505"></a>00505 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_STORAGESYS UPNP_CLASS_CONTAINER "." "storageSystem"</span>
+<a name="l00506"></a>00506 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_STORAGEVOL UPNP_CLASS_CONTAINER "." "storageVolume"</span>
+<a name="l00507"></a>00507 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_STORAGEFOLD UPNP_CLASS_CONTAINER "." "storageFolder"</span>
+<a name="l00508"></a>00508 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICARTIST UPNP_CLASS_PERSON "." "musicArtist"</span>
+<a name="l00509"></a>00509 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICALBUM UPNP_CLASS_ALBUM "." "musicAlbum"</span>
+<a name="l00510"></a>00510 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PHOTOALBUM UPNP_CLASS_ALBUM "." "photoAlbum"</span>
+<a name="l00511"></a>00511 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICGENRE UPNP_CLASS_GENRE "." "musicGenre"</span>
+<a name="l00512"></a>00512 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MOVIEGENRE UPNP_CLASS_GENRE "." "movieGenre"</span>
+<a name="l00513"></a>00513 <span class="preprocessor"></span>
+<a name="l00514"></a>00514 <span class="comment">/****************************************************</span>
+<a name="l00515"></a>00515 <span class="comment"> *</span>
+<a name="l00516"></a>00516 <span class="comment"> * 2.10 Storage media</span>
+<a name="l00517"></a>00517 <span class="comment"> *</span>
+<a name="l00518"></a>00518 <span class="comment"> ****************************************************/</span>
+<a name="l00519"></a>00519
+<a name="l00520"></a>00520 <span class="preprocessor">#define UPNP_STORAGE_UNKNOWN "UNKNOWN"</span>
+<a name="l00521"></a>00521 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DV "DV"</span>
+<a name="l00522"></a>00522 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MINI_DV "MINI-DV"</span>
+<a name="l00523"></a>00523 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VHS "VHS"</span>
+<a name="l00524"></a>00524 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_W_VHS "W-VHS"</span>
+<a name="l00525"></a>00525 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_S_VHS "S-VHS"</span>
+<a name="l00526"></a>00526 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_D_VHS "D-VHS"</span>
+<a name="l00527"></a>00527 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VHSC "VHSC"</span>
+<a name="l00528"></a>00528 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VIDEO8 "VIDEO8"</span>
+<a name="l00529"></a>00529 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_HI8 "HI8"</span>
+<a name="l00530"></a>00530 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_ROM "CD-ROM"</span>
+<a name="l00531"></a>00531 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_DA "CD-DA"</span>
+<a name="l00532"></a>00532 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_R "CD-R"</span>
+<a name="l00533"></a>00533 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_RW "CD-RW"</span>
+<a name="l00534"></a>00534 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VIDEO_CD "VIDEO-CD"</span>
+<a name="l00535"></a>00535 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_SACD "SACD"</span>
+<a name="l00536"></a>00536 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MD_AUDIO "MD-AUDIO"</span>
+<a name="l00537"></a>00537 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MD_PICTURE "MD-PICTURE"</span>
+<a name="l00538"></a>00538 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_ROM "DVD-ROM"</span>
+<a name="l00539"></a>00539 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_VIDEO "DVD-VIDEO"</span>
+<a name="l00540"></a>00540 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_R_MINUS "DVD-R"</span>
+<a name="l00541"></a>00541 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_RW_PLUS "DVD+RW"</span>
+<a name="l00542"></a>00542 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_RW_MINUS "DVD-RW"</span>
+<a name="l00543"></a>00543 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_RAM "DVD-RAM"</span>
+<a name="l00544"></a>00544 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_AUDIO "DVD-AUDIO"</span>
+<a name="l00545"></a>00545 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DAT "DAT"</span>
+<a name="l00546"></a>00546 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_LD "LD"</span>
+<a name="l00547"></a>00547 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_HDD "HDD"</span>
+<a name="l00548"></a>00548 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MICRO_MV "MICRO-MV"</span>
+<a name="l00549"></a>00549 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_NETWORK "NETWORK"</span>
+<a name="l00550"></a>00550 <span class="preprocessor"></span>
+<a name="l00551"></a>00551 <span class="comment">/****************************************************</span>
+<a name="l00552"></a>00552 <span class="comment"> *</span>
+<a name="l00553"></a>00553 <span class="comment"> * 2.11 Known Errors</span>
+<a name="l00554"></a>00554 <span class="comment"> *</span>
+<a name="l00555"></a>00555 <span class="comment"> ****************************************************/</span>
+<a name="l00556"></a>00556
+<a name="l00557"></a>00557 <span class="comment">/* Errors 401-404, 501 are already defined in</span>
+<a name="l00558"></a>00558 <span class="comment"> * Intel SDK, however 403 MUST NOT USED.</span>
+<a name="l00559"></a>00559 <span class="comment"> */</span>
+<a name="l00560"></a>00560
+<a name="l00561"></a>00561 <span class="comment">/****** 600 Common Action Errors ******/</span>
+<a name="l00562"></a>00562
+<a name="l00563"></a>00563 <span class="preprocessor">#define UPNP_SOAP_E_ARGUMENT_INVALID 600</span>
+<a name="l00564"></a>00564 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_ARGUMENT_OUT_OF_RANGE 601</span>
+<a name="l00565"></a>00565 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_ACTION_NOT_IMPLEMENTED 602</span>
+<a name="l00566"></a>00566 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_OUT_OF_MEMORY 603</span>
+<a name="l00567"></a>00567 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_HUMAN_INTERVENTION 604</span>
+<a name="l00568"></a>00568 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_STRING_TO_LONG 605</span>
+<a name="l00569"></a>00569 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_NOT_AUTHORIZED 606</span>
+<a name="l00570"></a>00570 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_SIGNATURE_FAILURE 607</span>
+<a name="l00571"></a>00571 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_SIGNATURE_MISSING 608</span>
+<a name="l00572"></a>00572 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_NOT_ENCRYPTED 609</span>
+<a name="l00573"></a>00573 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_INVALID_SEQUENCE 610</span>
+<a name="l00574"></a>00574 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_INVALID_CONTROL_URL 611</span>
+<a name="l00575"></a>00575 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_NO_SUCH_SESSION 612</span>
+<a name="l00576"></a>00576 <span class="preprocessor"></span>
+<a name="l00577"></a>00577 <span class="comment">/****** 700 Action specific Errors ******/</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_OBJECT 701</span>
+<a name="l00580"></a>00580 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_CURRENT_TAG 702</span>
+<a name="l00581"></a>00581 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_NEW_TAG 703</span>
+<a name="l00582"></a>00582 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_REQUIRED_TAG 704</span>
+<a name="l00583"></a>00583 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_READ_ONLY_TAG 705</span>
+<a name="l00584"></a>00584 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_PARAMETER_MISMATCH 706</span>
+<a name="l00585"></a>00585 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_SEARCH_CRITERIA 708</span>
+<a name="l00586"></a>00586 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_SORT_CRITERIA 709</span>
+<a name="l00587"></a>00587 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_CONTAINER 710</span>
+<a name="l00588"></a>00588 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_RESTRICTED_OBJECT 711</span>
+<a name="l00589"></a>00589 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_BAD_METADATA 712</span>
+<a name="l00590"></a>00590 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_RESTRICTED_PARENT 713</span>
+<a name="l00591"></a>00591 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_SOURCE_RESOURCE 714</span>
+<a name="l00592"></a>00592 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_RESOURCE_ACCESS_DENIED 715</span>
+<a name="l00593"></a>00593 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_TRANSFER_BUSY 716</span>
+<a name="l00594"></a>00594 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_FILE_TRANSFER 717</span>
+<a name="l00595"></a>00595 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_DESTINATION_RESOURCE 718</span>
+<a name="l00596"></a>00596 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_DEST_RESOURCE_ACCESS_DENIED 719</span>
+<a name="l00597"></a>00597 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_CANT_PROCESS_REQUEST 720</span>
+<a name="l00598"></a>00598 <span class="preprocessor"></span>
+<a name="l00599"></a>00599 <span class="preprocessor">#define UPNP_CMS_E_INCOMPATIBLE_PROTOCOL_INFO 701</span>
+<a name="l00600"></a>00600 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_INCOMPATIBLE_DIRECTIONS 702</span>
+<a name="l00601"></a>00601 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_INSUFFICIENT_RESOURCES 703</span>
+<a name="l00602"></a>00602 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_LOCAL_RESTRICTIONS 704</span>
+<a name="l00603"></a>00603 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_ACCESS_DENIED 705</span>
+<a name="l00604"></a>00604 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_INVALID_CONNECTION_REFERENCE 706</span>
+<a name="l00605"></a>00605 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_NOT_IN_NETWORK 707</span>
+<a name="l00606"></a>00606 <span class="preprocessor"></span>
+<a name="l00607"></a>00607 <span class="comment">/****************************************************</span>
+<a name="l00608"></a>00608 <span class="comment"> *</span>
+<a name="l00609"></a>00609 <span class="comment"> * 2.12 Write Status</span>
+<a name="l00610"></a>00610 <span class="comment"> *</span>
+<a name="l00611"></a>00611 <span class="comment"> ****************************************************/</span>
+<a name="l00612"></a>00612
+<a name="l00613"></a>00613 <span class="keyword">enum</span> UPnPWriteStatus {
+<a name="l00614"></a>00614 WS_UNKNOWN=0,
+<a name="l00615"></a>00615 WS_WRITABLE,
+<a name="l00616"></a>00616 WS_PROTECTED,
+<a name="l00617"></a>00617 WS_NOT_WRITABLE,
+<a name="l00618"></a>00618 WS_MIXED
+<a name="l00619"></a>00619 };
+<a name="l00620"></a>00620
+<a name="l00621"></a>00621 <span class="comment">/****************************************************</span>
+<a name="l00622"></a>00622 <span class="comment"> *</span>
+<a name="l00623"></a>00623 <span class="comment"> * 3. DLNA</span>
+<a name="l00624"></a>00624 <span class="comment"> *</span>
+<a name="l00625"></a>00625 <span class="comment"> ****************************************************/</span>
+<a name="l00626"></a>00626
+<a name="l00627"></a>00627 <span class="preprocessor">#define DLNA_PROTOCOL_VERSION_MAJOR 1</span>
+<a name="l00628"></a>00628 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_PROTOCOL_VERSION_MINOR 5</span>
+<a name="l00629"></a>00629 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_PROTOCOL_VERSION_MICRO 0</span>
+<a name="l00630"></a>00630 <span class="preprocessor"></span>
+<a name="l00631"></a>00631 <span class="preprocessor">#define DLNA_PROTOCOL_VERSION_INT VERSION_INT(DLNA_PROTOCOL_VERSION_MAJOR, \</span>
+<a name="l00632"></a>00632 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MINOR, \</span>
+<a name="l00633"></a>00633 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MICRO)</span>
+<a name="l00634"></a>00634 <span class="preprocessor"></span>
+<a name="l00635"></a>00635 <span class="preprocessor">#define DLNA_PROTOCOL_VERSION_STR VERSION_STR(DLNA_PROTOCOL_VERSION_MAJOR, \</span>
+<a name="l00636"></a>00636 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MINOR, \</span>
+<a name="l00637"></a>00637 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MICRO)</span>
+<a name="l00638"></a>00638 <span class="preprocessor"></span>
+<a name="l00639"></a>00639 <span class="comment">/****************************************************</span>
+<a name="l00640"></a>00640 <span class="comment"> *</span>
+<a name="l00641"></a>00641 <span class="comment"> * 3.1 Protocol info fields</span>
+<a name="l00642"></a>00642 <span class="comment"> *</span>
+<a name="l00643"></a>00643 <span class="comment"> ****************************************************/</span>
+<a name="l00644"></a>00644
+<a name="l00651"></a>00651 <span class="preprocessor">#define DLNA_OPERATION_NONE 00 </span>
+<a name="l00652"></a>00652 <span class="preprocessor">#define DLNA_OPERATION_TIME_SEEK_RANGE 10 </span>
+<a name="l00653"></a>00653 <span class="preprocessor">#define DLNA_OPERATION_RANGE 01 </span>
+<a name="l00654"></a>00654 <span class="preprocessor"></span>
+<a name="l00655"></a>00655 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_CONVERSION_TRANSCODED 1 </span>
+<a name="l00656"></a>00656 <span class="preprocessor">#define DLNA_CONVERSION_NONE 0 </span>
+<a name="l00657"></a>00657 <span class="preprocessor"></span>
+<a name="l00658"></a>00658 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_SUPPORTED_PLAYSPEEDS "2,4,8,-2,-4,-8"; </span>
+<a name="l00659"></a>00659 <span class="preprocessor"></span>
+<a name="l00660"></a>00660 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_TRANSFER_PROTOCOL_HTTP 1 </span>
+<a name="l00661"></a>00661 <span class="preprocessor">#define DLNA_TRANSFER_PROTOCOL_RTP 2 </span>
+<a name="l00662"></a>00662 <span class="preprocessor"></span>
+<a name="l00663"></a>00663 <span class="preprocessor"></span><span class="comment">/****************************************************</span>
+<a name="l00664"></a>00664 <span class="comment"> *</span>
+<a name="l00665"></a>00665 <span class="comment"> * 3.2 Protocol info flags</span>
+<a name="l00666"></a>00666 <span class="comment"> *</span>
+<a name="l00667"></a>00667 <span class="comment"> ****************************************************/</span>
+<a name="l00668"></a>00668
+<a name="l00669"></a>00669 <span class="preprocessor">#define DLNA_FLAG_SENDER_PACED 1 &lt;&lt; 31 </span>
+<a name="l00670"></a>00670 <span class="preprocessor">#define DLNA_FLAG_TIME_BASED_SEEK 1 &lt;&lt; 30 </span>
+<a name="l00671"></a>00671 <span class="preprocessor">#define DLNA_FLAG_BYTE_BASED_SEEK 1 &lt;&lt; 29 </span>
+<a name="l00672"></a>00672 <span class="preprocessor">#define DLNA_FLAG_PLAY_CONTAINER 1 &lt;&lt; 28 </span>
+<a name="l00673"></a>00673 <span class="preprocessor">#define DLNA_FLAG_S0_INCREASE 1 &lt;&lt; 27 </span>
+<a name="l00674"></a>00674 <span class="preprocessor">#define DLNA_FLAG_SN_INCREASE 1 &lt;&lt; 26 </span>
+<a name="l00675"></a>00675 <span class="preprocessor">#define DLNA_FLAG_RTSP_PAUSE 1 &lt;&lt; 25 </span>
+<a name="l00676"></a>00676 <span class="preprocessor">#define DLNA_FLAG_STREAMING_TRANSFER 1 &lt;&lt; 24 </span>
+<a name="l00677"></a>00677 <span class="preprocessor">#define DLNA_FLAG_INTERACTIVE_TRANSFER 1 &lt;&lt; 23 </span>
+<a name="l00678"></a>00678 <span class="preprocessor">#define DLNA_FLAG_BACKGROUND_TRANSFER 1 &lt;&lt; 22 </span>
+<a name="l00679"></a>00679 <span class="preprocessor">#define DLNA_FLAG_CONNECTION_STALLING 1 &lt;&lt; 21 </span>
+<a name="l00680"></a>00680 <span class="preprocessor">#define DLNA_FLAG_VERSION_1_5 1 &lt;&lt; 20 </span>
+<a name="l00681"></a>00681 <span class="preprocessor">#define DLNA_FLAG_CLEARTEXT_CONTENT 1 &lt;&lt; 16 </span>
+<a name="l00682"></a>00682 <span class="preprocessor">#define DLNA_FLAG_CLEARTEXT_BYTE_FULL_SEEK 1 &lt;&lt; 15 </span>
+<a name="l00683"></a>00683 <span class="preprocessor">#define DLNA_FLAG_CLEARTEXT_LIMITED_SEEK 1 &lt;&lt; 14 </span>
+<a name="l00684"></a>00684 <span class="preprocessor"></span>
+<a name="l00685"></a>00685 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_FLAGS_PLUGIN_SUPPORT DLNA_FLAG_BYTE_BASED_SEEK | \</span>
+<a name="l00686"></a>00686 <span class="preprocessor"> DLNA_FLAG_SN_INCREASE | \</span>
+<a name="l00687"></a>00687 <span class="preprocessor"> DLNA_FLAG_STREAMING_TRANSFER | \</span>
+<a name="l00688"></a>00688 <span class="preprocessor"> DLNA_FLAG_BACKGROUND_TRANSFER | \</span>
+<a name="l00689"></a>00689 <span class="preprocessor"> DLNA_FLAG_CONNECTION_STALLING | \</span>
+<a name="l00690"></a>00690 <span class="preprocessor"> DLNA_FLAG_VERSION_1_5</span>
+<a name="l00691"></a>00691 <span class="preprocessor"></span>
+<a name="l00692"></a>00692 <span class="comment">/****************************************************</span>
+<a name="l00693"></a>00693 <span class="comment"> *</span>
+<a name="l00694"></a>00694 <span class="comment"> * 3.3 Media profiles</span>
+<a name="l00695"></a>00695 <span class="comment"> *</span>
+<a name="l00696"></a>00696 <span class="comment"> ****************************************************/</span>
+<a name="l00697"></a>00697
+<a name="l00705"></a><a class="code" href="structDLNAProfile.html">00705</a> <span class="keyword">struct </span><a class="code" href="structDLNAProfile.html">DLNAProfile</a> {
+<a name="l00706"></a><a class="code" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a">00706</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a" title="the DLNA profile ID">ID</a>;
+<a name="l00707"></a><a class="code" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41">00707</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41" title="the mime type of the resource">mime</a>;
+<a name="l00708"></a>00708 };
+<a name="l00709"></a>00709
+<a name="l00716"></a><a class="code" href="structDLNAIconProfile.html">00716</a> <span class="keyword">struct </span><a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> {
+<a name="l00717"></a><a class="code" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509">00717</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509" title="the mime type of the image">mime</a>;
+<a name="l00718"></a><a class="code" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d">00718</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d" title="image width in pixel">width</a>;
+<a name="l00719"></a><a class="code" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb">00719</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb" title="image height in pixel">height</a>;
+<a name="l00720"></a><a class="code" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3">00720</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3" title="bit depth in bits per pixel">bitDepth</a>;
+<a name="l00721"></a>00721 };
+<a name="l00722"></a>00722
+<a name="l00723"></a>00723 <span class="comment">/* Images */</span>
+<a name="l00724"></a>00724 <span class="comment">/* Audio */</span>
+<a name="l00725"></a>00725 <span class="keyword">extern</span> <a class="code" href="structDLNAProfile.html">DLNAProfile</a> DLNA_PROFILE_MPEG1_L3;
+<a name="l00726"></a>00726 <span class="comment">/* Video */</span>
+<a name="l00727"></a>00727 <span class="keyword">extern</span> <a class="code" href="structDLNAProfile.html">DLNAProfile</a> DLNA_PROFILE_MPEG_TS_SD_EU;
+<a name="l00728"></a>00728 <span class="keyword">extern</span> <a class="code" href="structDLNAProfile.html">DLNAProfile</a> DLNA_PROFILE_AVC_TS_HD_EU;
+<a name="l00729"></a>00729
+<a name="l00730"></a>00730 <span class="comment">/* Icons */</span>
+<a name="l00731"></a>00731 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_JPEG_SM_24;
+<a name="l00732"></a>00732 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_JPEG_LRG_24;
+<a name="l00733"></a>00733 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_PNG_SM_24A;
+<a name="l00734"></a>00734 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_PNG_LRG_24A;
+<a name="l00735"></a>00735
+<a name="l00736"></a>00736 <span class="comment">/****************************************************</span>
+<a name="l00737"></a>00737 <span class="comment"> *</span>
+<a name="l00738"></a>00738 <span class="comment"> * 3.4 Container types</span>
+<a name="l00739"></a>00739 <span class="comment"> *</span>
+<a name="l00740"></a>00740 <span class="comment"> ****************************************************/</span>
+<a name="l00741"></a>00741
+<a name="l00742"></a>00742 <span class="keyword">enum</span> DLNAContainerTypes {
+<a name="l00743"></a>00743 TUNER_1_0
+<a name="l00744"></a>00744 };
+<a name="l00745"></a>00745
+<a name="l00746"></a>00746 <span class="preprocessor">#define DLNA_CONTAINER_TUNER "Tuner_1_0" // The DLNA container type for a tuner</span>
+<a name="l00747"></a>00747 <span class="preprocessor"></span>
+<a name="l00748"></a>00748 <span class="comment">/****************************************************</span>
+<a name="l00749"></a>00749 <span class="comment"> *</span>
+<a name="l00750"></a>00750 <span class="comment"> * 3.5 Device types</span>
+<a name="l00751"></a>00751 <span class="comment"> *</span>
+<a name="l00752"></a>00752 <span class="comment"> ****************************************************/</span>
+<a name="l00753"></a>00753
+<a name="l00754"></a>00754 <span class="preprocessor">#define DLNA_DEVICE_DMS_1_0 "DMS-1.00"</span>
+<a name="l00755"></a>00755 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_DEVICE_DMS_1_5 "DMS-1.50"</span>
+<a name="l00756"></a>00756 <span class="preprocessor"></span>
+<a name="l00757"></a>00757 <span class="comment">/****************************************************</span>
+<a name="l00758"></a>00758 <span class="comment"> *</span>
+<a name="l00759"></a>00759 <span class="comment"> * 4. SQLite</span>
+<a name="l00760"></a>00760 <span class="comment"> *</span>
+<a name="l00761"></a>00761 <span class="comment"> ****************************************************/</span>
+<a name="l00762"></a>00762 <span class="comment">/****************************************************</span>
+<a name="l00763"></a>00763 <span class="comment"> *</span>
+<a name="l00764"></a>00764 <span class="comment"> * 4.1 Database setup</span>
+<a name="l00765"></a>00765 <span class="comment"> *</span>
+<a name="l00766"></a>00766 <span class="comment"> ****************************************************/</span>
+<a name="l00767"></a>00767
+<a name="l00768"></a>00768 <span class="preprocessor">#define SQLITE_DB_FILE "metadata.db"</span>
+<a name="l00769"></a>00769 <span class="preprocessor"></span>
+<a name="l00770"></a>00770 <span class="comment">/****************************************************</span>
+<a name="l00771"></a>00771 <span class="comment"> *</span>
+<a name="l00772"></a>00772 <span class="comment"> * Please see database.h for further definitions,</span>
+<a name="l00773"></a>00773 <span class="comment"> * SQL statements and triggers</span>
+<a name="l00774"></a>00774 <span class="comment"> *</span>
+<a name="l00775"></a>00775 <span class="comment"> ****************************************************/</span>
+<a name="l00776"></a>00776
+<a name="l00777"></a>00777 <span class="preprocessor">#endif </span><span class="comment">/* _COMMON_H */</span>
+<a name="l00778"></a>00778
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/config_8h-source.html b/doc/html/config_8h-source.html
new file mode 100644
index 0000000..4fd9900
--- /dev/null
+++ b/doc/html/config_8h-source.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: misc/config.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>misc/config.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: config.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 15. August 2009, 13:03</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _CONFIG_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _CONFIG_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;vdr/tools.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00013"></a>00013
+<a name="l00020"></a><a class="code" href="classcUPnPConfig.html">00020</a> <span class="keyword">class </span><a class="code" href="classcUPnPConfig.html">cUPnPConfig</a> {
+<a name="l00021"></a>00021 <span class="keyword">private</span>:
+<a name="l00022"></a>00022 <span class="keyword">static</span> <a class="code" href="classcUPnPConfig.html">cUPnPConfig</a>* mInstance;
+<a name="l00023"></a>00023 cString mParsedArgs;
+<a name="l00024"></a>00024 <a class="code" href="classcUPnPConfig.html">cUPnPConfig</a>();
+<a name="l00025"></a>00025 <span class="keyword">public</span>:
+<a name="l00026"></a><a class="code" href="classcUPnPConfig.html#dd0afbf876c2625acc52cfd8fd8b6a7c">00026</a> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPConfig.html#dd0afbf876c2625acc52cfd8fd8b6a7c" title="the network interface, which the server is bound to">mInterface</a>;
+<a name="l00027"></a><a class="code" href="classcUPnPConfig.html#0d7d7eb8d1ae9fffab39b39d1c9f10dd">00027</a> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPConfig.html#0d7d7eb8d1ae9fffab39b39d1c9f10dd" title="the IP address which is used by the server">mAddress</a>;
+<a name="l00028"></a><a class="code" href="classcUPnPConfig.html#93224ed337b1f74525a68c5159532cb3">00028</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPConfig.html#93224ed337b1f74525a68c5159532cb3" title="the port which the server is listening on">mPort</a>;
+<a name="l00029"></a><a class="code" href="classcUPnPConfig.html#6861c1183545e44a7d33e17440f4cd8c">00029</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPConfig.html#6861c1183545e44a7d33e17440f4cd8c" title="indicates, if the server is enabled or not">mEnable</a>;
+<a name="l00030"></a><a class="code" href="classcUPnPConfig.html#da3ca113e9f1946fd1c09ebdcdcde0af">00030</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPConfig.html#da3ca113e9f1946fd1c09ebdcdcde0af" title="indicates, if the settings are automatically detected">mAutoSetup</a>;
+<a name="l00031"></a>00031 <span class="keyword">public</span>:
+<a name="l00032"></a>00032 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPConfig.html">cUPnPConfig</a>();
+<a name="l00040"></a>00040 <span class="keyword">static</span> <a class="code" href="classcUPnPConfig.html">cUPnPConfig</a>* <span class="keyword">get</span>();
+<a name="l00053"></a>00053 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPConfig.html#3ac0d1253dba86cb4630bc1e29a9fe10">parseSetup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Name, <span class="keyword">const</span> <span class="keywordtype">char</span>* Value);
+<a name="l00066"></a>00066 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPConfig.html#19689798911a39c47958e819c33d4b09">processArgs</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]);
+<a name="l00067"></a>00067 };
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="preprocessor">#endif </span><span class="comment">/* _CONFIG_H */</span>
+<a name="l00070"></a>00070
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/connectionmanager_8h-source.html b/doc/html/connectionmanager_8h-source.html
new file mode 100644
index 0000000..6b9df28
--- /dev/null
+++ b/doc/html/connectionmanager_8h-source.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: upnpcomponents/connectionmanager.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>upnpcomponents/connectionmanager.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: connectionmanager.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 21. August 2009, 18:35</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _CONNECTIONMANAGER_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _CONNECTIONMANAGER_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "upnpservice.h"</span>
+<a name="l00012"></a>00012
+<a name="l00018"></a>00018 <span class="keyword">enum</span> eConnectionStatus {
+<a name="l00019"></a>00019 OK,
+<a name="l00020"></a>00020 CONTENT_FORMAT_MISMATCH,
+<a name="l00021"></a>00021 INSUFFICIENT_BANDWIDTH,
+<a name="l00022"></a>00022 UNRELIABLE_CHANNEL,
+<a name="l00023"></a>00023 UNKNOWN
+<a name="l00024"></a>00024 };
+<a name="l00025"></a>00025
+<a name="l00032"></a>00032 <span class="keyword">enum</span> eDirection {
+<a name="l00033"></a>00033 OUTPUT,
+<a name="l00034"></a>00034 INPUT
+<a name="l00035"></a>00035 };
+<a name="l00036"></a>00036
+<a name="l00042"></a><a class="code" href="classcVirtualConnection.html">00042</a> <span class="keyword">class </span><a class="code" href="classcVirtualConnection.html">cVirtualConnection</a> : <span class="keyword">public</span> cListObject {
+<a name="l00043"></a>00043 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcConnectionManager.html">cConnectionManager</a>;
+<a name="l00044"></a>00044 <span class="keyword">private</span>:
+<a name="l00045"></a>00045 cString mRemoteProtocolInfo;
+<a name="l00046"></a>00046 cString mRemoteConnectionManager;
+<a name="l00047"></a>00047 eDirection mDirection;
+<a name="l00048"></a>00048 <span class="keywordtype">int</span> mRemoteConnectionID;
+<a name="l00049"></a>00049 <span class="keywordtype">int</span> mConnectionID;
+<a name="l00050"></a>00050 <span class="keywordtype">int</span> mAVTransportID;
+<a name="l00051"></a>00051 <span class="keyword">const</span> <span class="keywordtype">int</span> mRcsID;
+<a name="l00052"></a>00052 eConnectionStatus mStatus;
+<a name="l00053"></a>00053 <a class="code" href="classcVirtualConnection.html">cVirtualConnection</a>();
+<a name="l00054"></a>00054 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getStatusString(eConnectionStatus Status);
+<a name="l00055"></a>00055 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getDirectionString(eDirection Direction);
+<a name="l00056"></a>00056 <span class="keyword">static</span> <span class="keywordtype">int</span> getDirection(<span class="keyword">const</span> <span class="keywordtype">char</span>* Direction);
+<a name="l00057"></a>00057 <span class="keyword">static</span> <span class="keywordtype">int</span> getConnectionStatus(<span class="keyword">const</span> <span class="keywordtype">char</span>* ConnectionStatus);
+<a name="l00058"></a>00058 };
+<a name="l00059"></a>00059
+<a name="l00066"></a><a class="code" href="classcConnectionManager.html">00066</a> <span class="keyword">class </span><a class="code" href="classcConnectionManager.html">cConnectionManager</a> : <span class="keyword">public</span> <a class="code" href="classcUpnpService.html">cUpnpService</a> {
+<a name="l00067"></a>00067 <span class="keyword">public</span>:
+<a name="l00074"></a>00074 <a class="code" href="classcConnectionManager.html#2d6d4af3110c40c399a3e4e203283ff1">cConnectionManager</a>(
+<a name="l00075"></a>00075 UpnpDevice_Handle DeviceHandle
+<a name="l00076"></a>00076 );
+<a name="l00077"></a>00077 <span class="keyword">virtual</span> ~<a class="code" href="classcConnectionManager.html">cConnectionManager</a>();
+<a name="l00079"></a>00079 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcConnectionManager.html#7990eba09a100e5e4ee5b01b87bcc16e">subscribe</a>(Upnp_Subscription_Request* Request);
+<a name="l00081"></a>00081 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcConnectionManager.html#12fa6b0a9e20c3af663e3ca2b3c97dfb">execute</a>(Upnp_Action_Request* Request);
+<a name="l00083"></a>00083 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcConnectionManager.html#02014a637c6cb04cbfe10b3cb4ce6d1d">setError</a>(Upnp_Action_Request* Request, <span class="keywordtype">int</span> Error);
+<a name="l00084"></a>00084 <span class="keyword">private</span>:
+<a name="l00085"></a>00085 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcConnectionManager.html#02014a637c6cb04cbfe10b3cb4ce6d1d">setError</a>(Upnp_Action_Request* Request, <span class="keywordtype">int</span> Error);
+<a name="l00086"></a>00086 <span class="keywordtype">int</span> getProtocolInfo(Upnp_Action_Request* Request);
+<a name="l00087"></a>00087 <span class="keywordtype">int</span> getCurrentConnectionIDs(Upnp_Action_Request* Request);
+<a name="l00088"></a>00088 <span class="keywordtype">int</span> getCurrentConnectionInfo(Upnp_Action_Request* Request);
+<a name="l00089"></a>00089 <span class="keywordtype">int</span> prepareForConnection(Upnp_Action_Request* Request);
+<a name="l00090"></a>00090 <span class="keywordtype">int</span> connectionComplete(Upnp_Action_Request* Request);
+<a name="l00091"></a>00091 <a class="code" href="classcVirtualConnection.html">cVirtualConnection</a>* createVirtualConnection(<span class="keyword">const</span> <span class="keywordtype">char</span>* RemoteProtocolInfo = NULL, <span class="keyword">const</span> <span class="keywordtype">char</span>* RemoteConnectionManager = NULL, <span class="keywordtype">int</span> RemoteConnectionID = -1, eDirection Direction = OUTPUT);
+<a name="l00092"></a>00092 <span class="keywordtype">bool</span> destroyVirtualConnection(<span class="keywordtype">int</span> ConnectionID);
+<a name="l00093"></a>00093 <span class="keyword">const</span> <span class="keywordtype">char</span>* getConnectionIDsCVS();
+<a name="l00094"></a>00094 <a class="code" href="classcVirtualConnection.html">cVirtualConnection</a>* mDefaultConnection;
+<a name="l00095"></a>00095 cList&lt;cVirtualConnection&gt;* mVirtualConnections;
+<a name="l00096"></a>00096 cString mSupportedProtocols;
+<a name="l00097"></a>00097 };
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="preprocessor">#endif </span><span class="comment">/* _CONNECTIONMANAGER_H */</span>
+<a name="l00100"></a>00100
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/contentdirectory_8h-source.html b/doc/html/contentdirectory_8h-source.html
new file mode 100644
index 0000000..374d5a2
--- /dev/null
+++ b/doc/html/contentdirectory_8h-source.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: upnpcomponents/contentdirectory.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>upnpcomponents/contentdirectory.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: contentdirectory.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 21. August 2009, 16:12</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _CONTENTDIRECTORY_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _CONTENTDIRECTORY_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;upnp/upnp.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "upnpservice.h"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "../database/metadata.h"</span>
+<a name="l00014"></a>00014
+<a name="l00021"></a><a class="code" href="classcContentDirectory.html">00021</a> <span class="keyword">class </span><a class="code" href="classcContentDirectory.html">cContentDirectory</a> : <span class="keyword">public</span> <a class="code" href="classcUpnpService.html">cUpnpService</a>, <span class="keyword">public</span> cThread {
+<a name="l00022"></a>00022 <span class="keyword">public</span>:
+<a name="l00029"></a>00029 <a class="code" href="classcContentDirectory.html#aca0fe0cffa30b1040719720ff4b82a2">cContentDirectory</a>(
+<a name="l00030"></a>00030 UpnpDevice_Handle DeviceHandle,
+<a name="l00031"></a>00031 <a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* MediaDatabase
+<a name="l00032"></a>00032 );
+<a name="l00033"></a>00033 <span class="keyword">virtual</span> ~<a class="code" href="classcContentDirectory.html">cContentDirectory</a>();
+<a name="l00035"></a>00035 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcContentDirectory.html#17acd376a722e6e7de9ec0d4cabb707b">subscribe</a>(Upnp_Subscription_Request* Request);
+<a name="l00037"></a>00037 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcContentDirectory.html#a0225df761512819b9c46f45b2a0f0d0">execute</a>(Upnp_Action_Request* Request);
+<a name="l00039"></a>00039 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcContentDirectory.html#a3b0df304987a0f2b17733c651d5b5c6">setError</a>(Upnp_Action_Request* Request, <span class="keywordtype">int</span> Error);
+<a name="l00040"></a>00040 <span class="keyword">private</span>:
+<a name="l00041"></a>00041 <a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* mMediaDatabase;
+<a name="l00042"></a>00042 <span class="keywordtype">void</span> Action();
+<a name="l00043"></a>00043 <span class="keywordtype">int</span> getSearchCapabilities(Upnp_Action_Request* Request);
+<a name="l00044"></a>00044 <span class="keywordtype">int</span> getSortCapabilities(Upnp_Action_Request* Request);
+<a name="l00045"></a>00045 <span class="keywordtype">int</span> getSystemUpdateID(Upnp_Action_Request* Request);
+<a name="l00046"></a>00046 <span class="keywordtype">int</span> browse(Upnp_Action_Request* Request);
+<a name="l00047"></a>00047 <span class="comment">// int search(Upnp_Action_Request* Request);</span>
+<a name="l00048"></a>00048 <span class="comment">// int createObject(Upnp_Action_Request* Request);</span>
+<a name="l00049"></a>00049 <span class="comment">// int destroyObject(Upnp_Action_Request* Request);</span>
+<a name="l00050"></a>00050 <span class="comment">// int updateObject(Upnp_Action_Request* Request);</span>
+<a name="l00051"></a>00051 <span class="comment">// int deleteResource(Upnp_Action_Request* Request);</span>
+<a name="l00052"></a>00052 <span class="comment">// int createReference(Upnp_Action_Request* Request);</span>
+<a name="l00053"></a>00053 };
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="preprocessor">#endif </span><span class="comment">/* _CONTENTDIRECTORY_H */</span>
+<a name="l00056"></a>00056
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/database_8h-source.html b/doc/html/database_8h-source.html
new file mode 100644
index 0000000..5b0d564
--- /dev/null
+++ b/doc/html/database_8h-source.html
@@ -0,0 +1,898 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: database/database.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>database/database.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: database.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 3. September 2009, 22:20</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _DATABASE_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _DATABASE_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;sqlite3.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;vdr/tools.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#define SQLITE_PRINT_STATEMENTS</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_PRINT_FETCHES</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_CASCADE_DELETES</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#define PK_OBJECTS TOSTRING(1)</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define PK_RESOURCES TOSTRING(2)</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define PK_SEARCHCLASSES TOSTRING(3)</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#define SQLITE_FIRST_CUSTOMID TOSTRING(100)</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#define SQLITE_COLUMN_NAME_LENGTH 64</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#define SQLITE_TABLE_RESOURCES "Resources"</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_OBJECTS "Objects"</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_ITEMS "Items"</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_CONTAINERS "Containers"</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_VIDEOITEMS "VideoItems"</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_AUDIOITEMS "AudioItems"</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_IMAGEITEMS "ImageItems"</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_VIDEOBROADCASTS "VideoBroadcasts"</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_AUDIOBROADCASTS "AudioBroadcasts"</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_MOVIES "Movies"</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_PHOTOS "Photos"</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_ALBUMS "Albums"</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_PLAYLISTS "Playlists"</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_SEARCHCLASS "SearchClass"</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_PRIMARY_KEYS "PrimaryKeys"</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_SYSTEM "System"</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TABLE_ITEMFINDER "ItemFinder"</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span>
+<a name="l00045"></a>00045 <span class="preprocessor">#define SQLITE_TYPE_TEXT "TEXT"</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TYPE_INTEGER "INTEGER"</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TYPE_BOOL SQLITE_TYPE_INTEGER</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TYPE_DATE SQLITE_TYPE_TEXT</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TYPE_ULONG SQLITE_TYPE_INTEGER</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TYPE_LONG SQLITE_TYPE_INTEGER</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TYPE_UINTEGER SQLITE_TYPE_INTEGER</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span>
+<a name="l00053"></a>00053 <span class="preprocessor">#define SQLITE_TRANSACTION_BEGIN "BEGIN IMMEDIATE TRANSACTION "</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TRANSACTION_END "COMMIT TRANSACTION"</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_TRANSACTION_TYPE "ROLLBACK"</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>
+<a name="l00057"></a>00057 <span class="preprocessor">#define SQLITE_CONFLICT_CLAUSE "ON CONFLICT " SQLITE_TRANSACTION_TYPE</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_PRIMARY_KEY SQLITE_TYPE_INTEGER " PRIMARY KEY"</span>
+<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_NOT_NULL "NOT NULL"</span>
+<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_UNIQUE "UNIQUE"</span>
+<a name="l00061"></a>00061 <span class="preprocessor"></span>
+<a name="l00062"></a>00062 <span class="preprocessor">#define SQLITE_COL_OBJECTID "ObjectID"</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_PARENTID "ParentID"</span>
+<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_TITLE "Title"</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CREATOR "Creator"</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CLASS "Class"</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RESTRICTED "Restricted"</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_WRITESTATUS "WriteStatus"</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_REFERENCEID "RefID"</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CLASSDERIVED "IncludeDerived"</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_SEARCHABLE "Searchable"</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CONTAINER_UID "UpdateID"</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RESOURCEID "ResourceID"</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_PROTOCOLINFO "ProtocolInfo"</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CONTENTTYPE "ContentType"</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RESOURCETYPE "ResourceType"</span>
+<a name="l00077"></a>00077 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RESOURCE "Resource"</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_SIZE "Size"</span>
+<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_DURATION "Duration"</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_BITRATE "Bitrate"</span>
+<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_SAMPLEFREQUENCE "SampleFreq"</span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_BITSPERSAMPLE "BitsPerSample"</span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_NOAUDIOCHANNELS "NoAudioChannels"</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_COLORDEPTH "ColorDepth"</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RESOLUTION "Resolution"</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_GENRE "Genre"</span>
+<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_LONGDESCRIPTION "LongDescription"</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_PRODUCER "Producer"</span>
+<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RATING "Rating"</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_ACTOR "Actor"</span>
+<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_DIRECTOR "Director"</span>
+<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_DESCRIPTION "Description"</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_PUBLISHER "Publisher"</span>
+<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_LANGUAGE "Language"</span>
+<a name="l00095"></a>00095 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RELATION "Relation"</span>
+<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_STORAGEMEDIUM "StorageMedium"</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_DVDREGIONCODE "DVDRegionCode"</span>
+<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CHANNELNAME "Channelname"</span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_SCHEDULEDSTARTTIME "ScheduledStartTime"</span>
+<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_SCHEDULEDENDTIME "ScheduledEndTime"</span>
+<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_ICON "Icon"</span>
+<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_REGION "Region"</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CHANNELNR "ChannelNr"</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RIGHTS "Rights"</span>
+<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RADIOCALLSIGN "CallSign"</span>
+<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RADIOSTATIONID "StationID"</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_RADIOBAND "Band"</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CONTRIBUTOR "Contributor"</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_DATE "Date"</span>
+<a name="l00110"></a>00110 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_ALBUM "Album"</span>
+<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_ARTIST "Artist"</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_DLNA_CONTAINERTYPE "DLNAContainer"</span>
+<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_CHILDCOUNT "ChildCount"</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_COL_ITEMFINDER "ItemFastID"</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span>
+<a name="l00116"></a>00116 <span class="preprocessor">#define SQLITE_UPNP_OBJECTID SQLITE_COL_OBJECTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL " " SQLITE_CONFLICT_CLAUSE " "\</span>
+<a name="l00117"></a>00117 <span class="preprocessor"> SQLITE_UNIQUE " " SQLITE_CONFLICT_CLAUSE</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span>
+<a name="l00119"></a>00119 <span class="preprocessor">#define SQLITE_INSERT_TRIGGER(TableA,TableB,Class) "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00120"></a>00120 <span class="preprocessor"> TableA "_I_" TableB " "\</span>
+<a name="l00121"></a>00121 <span class="preprocessor"> "BEFORE INSERT ON "\</span>
+<a name="l00122"></a>00122 <span class="preprocessor"> TableB " "\</span>
+<a name="l00123"></a>00123 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00124"></a>00124 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00125"></a>00125 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00126"></a>00126 <span class="preprocessor"> "((SELECT " SQLITE_COL_OBJECTID " FROM " TableA " "\</span>
+<a name="l00127"></a>00127 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID " "\</span>
+<a name="l00128"></a>00128 <span class="preprocessor"> ") IS NULL) "\</span>
+<a name="l00129"></a>00129 <span class="preprocessor"> "OR "\</span>
+<a name="l00130"></a>00130 <span class="preprocessor"> "((SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00131"></a>00131 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID " "\</span>
+<a name="l00132"></a>00132 <span class="preprocessor"> "AND " SQLITE_COL_CLASS " LIKE '" Class "%%') IS NULL) "\</span>
+<a name="l00133"></a>00133 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00134"></a>00134 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ", "\</span>
+<a name="l00135"></a>00135 <span class="preprocessor"> "'INSERT on table " TableB " failed due constraint violation "\</span>
+<a name="l00136"></a>00136 <span class="preprocessor"> "on foreign key " SQLITE_COL_OBJECTID "'"\</span>
+<a name="l00137"></a>00137 <span class="preprocessor"> ") "\</span>
+<a name="l00138"></a>00138 <span class="preprocessor"> "END; END;"</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span>
+<a name="l00140"></a>00140 <span class="preprocessor">#define SQLITE_UPDATE_TRIGGER(TableA,TableB,Class) "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00141"></a>00141 <span class="preprocessor"> TableA "_U_" TableB " "\</span>
+<a name="l00142"></a>00142 <span class="preprocessor"> "BEFORE UPDATE ON "\</span>
+<a name="l00143"></a>00143 <span class="preprocessor"> TableB " "\</span>
+<a name="l00144"></a>00144 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00145"></a>00145 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00146"></a>00146 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00147"></a>00147 <span class="preprocessor"> "((SELECT " SQLITE_COL_OBJECTID " FROM " TableA " "\</span>
+<a name="l00148"></a>00148 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID " "\</span>
+<a name="l00149"></a>00149 <span class="preprocessor"> "AND " SQLITE_COL_CLASS " LIKE '" Class "%%') IS NULL)"\</span>
+<a name="l00150"></a>00150 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00151"></a>00151 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ", "\</span>
+<a name="l00152"></a>00152 <span class="preprocessor"> "'UPDATE on table " TableB " failed due constraint violation "\</span>
+<a name="l00153"></a>00153 <span class="preprocessor"> "on foreign key " SQLITE_COL_OBJECTID "'"\</span>
+<a name="l00154"></a>00154 <span class="preprocessor"> ") "\</span>
+<a name="l00155"></a>00155 <span class="preprocessor"> "END; END;"</span>
+<a name="l00156"></a>00156 <span class="preprocessor"></span>
+<a name="l00157"></a>00157 <span class="preprocessor">#define SQLITE_INSERT_REFERENCE_TRIGGER(Table,Column) "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00158"></a>00158 <span class="preprocessor"> Table "_I_" Table " "\</span>
+<a name="l00159"></a>00159 <span class="preprocessor"> "BEFORE INSERT ON " \</span>
+<a name="l00160"></a>00160 <span class="preprocessor"> Table " " \</span>
+<a name="l00161"></a>00161 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00162"></a>00162 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00163"></a>00163 <span class="preprocessor"> "WHEN ( "\</span>
+<a name="l00164"></a>00164 <span class="preprocessor"> "((SELECT " SQLITE_COL_OBJECTID " FROM " Table " "\</span>
+<a name="l00165"></a>00165 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID " = NEW." Column ") IS NULL) "\</span>
+<a name="l00166"></a>00166 <span class="preprocessor"> "AND "\</span>
+<a name="l00167"></a>00167 <span class="preprocessor"> "(NEW." Column "!=-1)"\</span>
+<a name="l00168"></a>00168 <span class="preprocessor"> ")THEN "\</span>
+<a name="l00169"></a>00169 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " Table " "\</span>
+<a name="l00170"></a>00170 <span class="preprocessor"> "violates foreign key \"" Column "\"') "\</span>
+<a name="l00171"></a>00171 <span class="preprocessor"> "END; END;"</span>
+<a name="l00172"></a>00172 <span class="preprocessor"></span>
+<a name="l00173"></a>00173 <span class="preprocessor">#define SQLITE_UPDATE_REFERENCE_TRIGGER(Table,Column) "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00174"></a>00174 <span class="preprocessor"> Table "_U_" Table " "\</span>
+<a name="l00175"></a>00175 <span class="preprocessor"> "BEFORE INSERT ON " \</span>
+<a name="l00176"></a>00176 <span class="preprocessor"> Table " " \</span>
+<a name="l00177"></a>00177 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00178"></a>00178 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00179"></a>00179 <span class="preprocessor"> "WHEN ( "\</span>
+<a name="l00180"></a>00180 <span class="preprocessor"> "((SELECT " SQLITE_COL_OBJECTID " FROM " Table " "\</span>
+<a name="l00181"></a>00181 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID " = NEW." Column ") IS NULL) "\</span>
+<a name="l00182"></a>00182 <span class="preprocessor"> "AND "\</span>
+<a name="l00183"></a>00183 <span class="preprocessor"> "(NEW." Column "!=-1)"\</span>
+<a name="l00184"></a>00184 <span class="preprocessor"> ")THEN "\</span>
+<a name="l00185"></a>00185 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ", 'UPDATE on table " Table " "\</span>
+<a name="l00186"></a>00186 <span class="preprocessor"> "violates foreign key \"" Column "\"') "\</span>
+<a name="l00187"></a>00187 <span class="preprocessor"> "END; END;"</span>
+<a name="l00188"></a>00188 <span class="preprocessor"></span>
+<a name="l00189"></a>00189 <span class="preprocessor">#define SQLITE_DELETE_REFERENCE_TRIGGER(Table,Column) "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00190"></a>00190 <span class="preprocessor"> Table "_D_" Table " " \</span>
+<a name="l00191"></a>00191 <span class="preprocessor"> "BEFORE DELETE ON " \</span>
+<a name="l00192"></a>00192 <span class="preprocessor"> Table " " \</span>
+<a name="l00193"></a>00193 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00194"></a>00194 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00195"></a>00195 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00196"></a>00196 <span class="preprocessor"> "(SELECT " Column " FROM " Table " "\</span>
+<a name="l00197"></a>00197 <span class="preprocessor"> "WHERE " Column " = OLD." SQLITE_COL_OBJECTID ") IS NOT NULL"\</span>
+<a name="l00198"></a>00198 <span class="preprocessor"> ")THEN "\</span>
+<a name="l00199"></a>00199 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ", 'DELETE on table " Table " "\</span>
+<a name="l00200"></a>00200 <span class="preprocessor"> "violates foreign key \"" Column "\"') "\</span>
+<a name="l00201"></a>00201 <span class="preprocessor"> "END; END;"</span>
+<a name="l00202"></a>00202 <span class="preprocessor"></span>
+<a name="l00203"></a>00203 <span class="preprocessor">#ifdef SQLITE_CASCADE_DELETES</span>
+<a name="l00204"></a>00204 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_DELETE_TRIGGER(TableA,TableB) "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00205"></a>00205 <span class="preprocessor"> TableA "_D_" TableB " "\</span>
+<a name="l00206"></a>00206 <span class="preprocessor"> "BEFORE DELETE ON "\</span>
+<a name="l00207"></a>00207 <span class="preprocessor"> TableA " "\</span>
+<a name="l00208"></a>00208 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00209"></a>00209 <span class="preprocessor"> "DELETE FROM " TableB " "\</span>
+<a name="l00210"></a>00210 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=OLD." SQLITE_COL_OBJECTID "; "\</span>
+<a name="l00211"></a>00211 <span class="preprocessor"> "END;"</span>
+<a name="l00212"></a>00212 <span class="preprocessor"></span>
+<a name="l00213"></a>00213 <span class="preprocessor">#define SQLITE_DELETE_PARENT_TRIGGER "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00214"></a>00214 <span class="preprocessor"> SQLITE_TABLE_OBJECTS "_D_" SQLITE_TABLE_OBJECTS " " \</span>
+<a name="l00215"></a>00215 <span class="preprocessor"> "BEFORE DELETE ON " \</span>
+<a name="l00216"></a>00216 <span class="preprocessor"> SQLITE_TABLE_OBJECTS " " \</span>
+<a name="l00217"></a>00217 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00218"></a>00218 <span class="preprocessor"> "DELETE FROM " SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00219"></a>00219 <span class="preprocessor"> "WHERE " SQLITE_COL_PARENTID "=OLD." SQLITE_COL_OBJECTID "; "\</span>
+<a name="l00220"></a>00220 <span class="preprocessor"> "END;"</span>
+<a name="l00221"></a>00221 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00222"></a>00222 <span class="preprocessor"></span><span class="preprocessor">#define SQLITE_DELETE_TRIGGER(TableA,TableB) "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00223"></a>00223 <span class="preprocessor"> TableA "_D_" TableB " "\</span>
+<a name="l00224"></a>00224 <span class="preprocessor"> "BEFORE DELETE ON "\</span>
+<a name="l00225"></a>00225 <span class="preprocessor"> TableA " "\</span>
+<a name="l00226"></a>00226 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00227"></a>00227 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00228"></a>00228 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00229"></a>00229 <span class="preprocessor"> "(SELECT " SQLITE_COL_OBJECTID " FROM " TableB " "\</span>
+<a name="l00230"></a>00230 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=OLD." SQLITE_COL_OBJECTID ") IS NOT NULL"\</span>
+<a name="l00231"></a>00231 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00232"></a>00232 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ", "\</span>
+<a name="l00233"></a>00233 <span class="preprocessor"> "'DELETE on table " TableA " failed due constraint violation "\</span>
+<a name="l00234"></a>00234 <span class="preprocessor"> "on foreign key " SQLITE_COL_OBJECTID "'"\</span>
+<a name="l00235"></a>00235 <span class="preprocessor"> ") "\</span>
+<a name="l00236"></a>00236 <span class="preprocessor"> "END; END;"</span>
+<a name="l00237"></a>00237 <span class="preprocessor"></span>
+<a name="l00238"></a>00238 <span class="preprocessor">#define SQLITE_DELETE_PARENT_TRIGGER SQLITE_DELETE_REFERENCE_TRIGGER(SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID)</span>
+<a name="l00239"></a>00239 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00240"></a>00240 <span class="preprocessor"></span>
+<a name="l00241"></a>00241 <span class="comment">/**********************************************\</span>
+<a name="l00242"></a>00242 <span class="comment">* *</span>
+<a name="l00243"></a>00243 <span class="comment">* Primary keys *</span>
+<a name="l00244"></a>00244 <span class="comment">* *</span>
+<a name="l00245"></a>00245 <span class="comment">\**********************************************/</span>
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="preprocessor">#define SQLITE_CREATE_TABLE_PRIMARY_KEYS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00248"></a>00248 <span class="preprocessor"> SQLITE_TABLE_PRIMARY_KEYS \</span>
+<a name="l00249"></a>00249 <span class="preprocessor"> "("\</span>
+<a name="l00250"></a>00250 <span class="preprocessor"> "KeyID " SQLITE_PRIMARY_KEY " " SQLITE_NOT_NULL ","\</span>
+<a name="l00251"></a>00251 <span class="preprocessor"> "Key " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL\</span>
+<a name="l00252"></a>00252 <span class="preprocessor"> ");"\</span>
+<a name="l00253"></a>00253 <span class="preprocessor"> "INSERT OR IGNORE INTO "\</span>
+<a name="l00254"></a>00254 <span class="preprocessor"> SQLITE_TABLE_PRIMARY_KEYS \</span>
+<a name="l00255"></a>00255 <span class="preprocessor"> "(KeyID, Key) VALUES ("\</span>
+<a name="l00256"></a>00256 <span class="preprocessor"> PK_OBJECTS "," SQLITE_FIRST_CUSTOMID\</span>
+<a name="l00257"></a>00257 <span class="preprocessor"> ");"\</span>
+<a name="l00258"></a>00258 <span class="preprocessor"> "INSERT OR IGNORE INTO "\</span>
+<a name="l00259"></a>00259 <span class="preprocessor"> SQLITE_TABLE_PRIMARY_KEYS \</span>
+<a name="l00260"></a>00260 <span class="preprocessor"> "(KeyID, Key) VALUES ("\</span>
+<a name="l00261"></a>00261 <span class="preprocessor"> PK_RESOURCES ",0"\</span>
+<a name="l00262"></a>00262 <span class="preprocessor"> ");"\</span>
+<a name="l00263"></a>00263 <span class="preprocessor"> "INSERT OR IGNORE INTO "\</span>
+<a name="l00264"></a>00264 <span class="preprocessor"> SQLITE_TABLE_PRIMARY_KEYS \</span>
+<a name="l00265"></a>00265 <span class="preprocessor"> "(KeyID, Key) VALUES ("\</span>
+<a name="l00266"></a>00266 <span class="preprocessor"> PK_SEARCHCLASSES ",0"\</span>
+<a name="l00267"></a>00267 <span class="preprocessor"> ");"</span>
+<a name="l00268"></a>00268 <span class="preprocessor"></span>
+<a name="l00269"></a>00269 <span class="preprocessor">#define SQLITE_TRIGGER_UPDATE_OBJECTID "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00270"></a>00270 <span class="preprocessor"> SQLITE_TABLE_OBJECTS "_PK_UPDATE "\</span>
+<a name="l00271"></a>00271 <span class="preprocessor"> "AFTER INSERT ON "\</span>
+<a name="l00272"></a>00272 <span class="preprocessor"> SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00273"></a>00273 <span class="preprocessor"> "BEGIN "\</span>
+<a name="l00274"></a>00274 <span class="preprocessor"> "UPDATE " SQLITE_TABLE_PRIMARY_KEYS " SET Key=Key+1 WHERE KeyID=" PK_OBJECTS "; "\</span>
+<a name="l00275"></a>00275 <span class="preprocessor"> "END;"</span>
+<a name="l00276"></a>00276 <span class="preprocessor"></span>
+<a name="l00277"></a>00277 <span class="comment">/**********************************************\</span>
+<a name="l00278"></a>00278 <span class="comment">* *</span>
+<a name="l00279"></a>00279 <span class="comment">* System settings *</span>
+<a name="l00280"></a>00280 <span class="comment">* *</span>
+<a name="l00281"></a>00281 <span class="comment">\**********************************************/</span>
+<a name="l00282"></a>00282
+<a name="l00283"></a>00283 <span class="preprocessor">#define SQLITE_CREATE_TABLE_SYSTEM "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00284"></a>00284 <span class="preprocessor"> SQLITE_TABLE_SYSTEM " "\</span>
+<a name="l00285"></a>00285 <span class="preprocessor"> "("\</span>
+<a name="l00286"></a>00286 <span class="preprocessor"> "Key " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL " " SQLITE_UNIQUE ","\</span>
+<a name="l00287"></a>00287 <span class="preprocessor"> "Value " SQLITE_TYPE_TEXT " "\</span>
+<a name="l00288"></a>00288 <span class="preprocessor"> ");"</span>
+<a name="l00289"></a>00289 <span class="preprocessor"></span>
+<a name="l00290"></a>00290 <span class="preprocessor">#define SQLITE_TRIGGER_UPDATE_SYSTEM "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00291"></a>00291 <span class="preprocessor"> SQLITE_TABLE_SYSTEM "_VALUE_UPDATE "\</span>
+<a name="l00292"></a>00292 <span class="preprocessor"> "BEFORE UPDATE "\</span>
+<a name="l00293"></a>00293 <span class="preprocessor"> "ON " SQLITE_TABLE_SYSTEM " "\</span>
+<a name="l00294"></a>00294 <span class="preprocessor"> "WHEN ((SELECT Key FROM " SQLITE_TABLE_SYSTEM " WHERE Key=NEW.Key) IS NULL) "\</span>
+<a name="l00295"></a>00295 <span class="preprocessor"> "BEGIN INSERT INTO " SQLITE_TABLE_SYSTEM " (Key) VALUES (NEW.Key); END;"</span>
+<a name="l00296"></a>00296 <span class="preprocessor"></span>
+<a name="l00297"></a>00297 <span class="comment">/**********************************************\</span>
+<a name="l00298"></a>00298 <span class="comment">* *</span>
+<a name="l00299"></a>00299 <span class="comment">* Fast item finder *</span>
+<a name="l00300"></a>00300 <span class="comment">* *</span>
+<a name="l00301"></a>00301 <span class="comment">\**********************************************/</span>
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="preprocessor">#define SQLITE_CREATE_TABLE_ITEMFINDER "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00304"></a>00304 <span class="preprocessor"> SQLITE_TABLE_ITEMFINDER " "\</span>
+<a name="l00305"></a>00305 <span class="preprocessor"> "("\</span>
+<a name="l00306"></a>00306 <span class="preprocessor"> SQLITE_UPNP_OBJECTID ","\</span>
+<a name="l00307"></a>00307 <span class="preprocessor"> SQLITE_COL_ITEMFINDER " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL " " SQLITE_UNIQUE \</span>
+<a name="l00308"></a>00308 <span class="preprocessor"> ");"</span>
+<a name="l00309"></a>00309 <span class="preprocessor"></span>
+<a name="l00310"></a>00310 <span class="preprocessor">#define SQLITE_TRIGGER_D_OBJECTS_ITEMFINDER SQLITE_DELETE_TRIGGER(SQLITE_TABLE_OBJECTS,\</span>
+<a name="l00311"></a>00311 <span class="preprocessor"> SQLITE_TABLE_ITEMFINDER)</span>
+<a name="l00312"></a>00312 <span class="preprocessor"></span>
+<a name="l00313"></a>00313 <span class="comment">/**********************************************\</span>
+<a name="l00314"></a>00314 <span class="comment">* *</span>
+<a name="l00315"></a>00315 <span class="comment">* Objects *</span>
+<a name="l00316"></a>00316 <span class="comment">* *</span>
+<a name="l00317"></a>00317 <span class="comment">\**********************************************/</span>
+<a name="l00318"></a>00318
+<a name="l00319"></a>00319 <span class="preprocessor">#define SQLITE_CREATE_TABLE_OBJECTS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00320"></a>00320 <span class="preprocessor"> SQLITE_TABLE_OBJECTS \</span>
+<a name="l00321"></a>00321 <span class="preprocessor"> "(" \</span>
+<a name="l00322"></a>00322 <span class="preprocessor"> SQLITE_COL_OBJECTID " " SQLITE_PRIMARY_KEY " " SQLITE_NOT_NULL " " SQLITE_CONFLICT_CLAUSE "," \</span>
+<a name="l00323"></a>00323 <span class="preprocessor"> SQLITE_COL_PARENTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL " " SQLITE_CONFLICT_CLAUSE "," \</span>
+<a name="l00324"></a>00324 <span class="preprocessor"> SQLITE_COL_TITLE " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \</span>
+<a name="l00325"></a>00325 <span class="preprocessor"> SQLITE_COL_CREATOR " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00326"></a>00326 <span class="preprocessor"> SQLITE_COL_CLASS " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \</span>
+<a name="l00327"></a>00327 <span class="preprocessor"> SQLITE_COL_RESTRICTED " " SQLITE_TYPE_BOOL " " SQLITE_NOT_NULL "," \</span>
+<a name="l00328"></a>00328 <span class="preprocessor"> SQLITE_COL_WRITESTATUS " " SQLITE_TYPE_INTEGER \</span>
+<a name="l00329"></a>00329 <span class="preprocessor"> ");"</span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span>
+<a name="l00331"></a>00331 <span class="comment">// Trigger for foreign key ParentID</span>
+<a name="l00332"></a>00332
+<a name="l00333"></a>00333 <span class="preprocessor">#define SQLITE_TRIGGER_D_OBJECTS_OBJECTS SQLITE_DELETE_PARENT_TRIGGER</span>
+<a name="l00334"></a>00334 <span class="preprocessor"></span>
+<a name="l00335"></a>00335 <span class="preprocessor">#define SQLITE_TRIGGER_I_OBJECTS_OBJECTS SQLITE_INSERT_REFERENCE_TRIGGER(SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID)\</span>
+<a name="l00336"></a>00336 <span class="preprocessor"> "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00337"></a>00337 <span class="preprocessor"> SQLITE_TABLE_OBJECTS "_PI_" SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00338"></a>00338 <span class="preprocessor"> "BEFORE INSERT ON "\</span>
+<a name="l00339"></a>00339 <span class="preprocessor"> SQLITE_TABLE_OBJECTS " " \</span>
+<a name="l00340"></a>00340 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00341"></a>00341 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00342"></a>00342 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00343"></a>00343 <span class="preprocessor"> "((SELECT " SQLITE_COL_PARENTID " FROM " SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00344"></a>00344 <span class="preprocessor"> "WHERE " SQLITE_COL_PARENTID "=-1) IS NOT NULL) "\</span>
+<a name="l00345"></a>00345 <span class="preprocessor"> "AND "\</span>
+<a name="l00346"></a>00346 <span class="preprocessor"> "(NEW." SQLITE_COL_PARENTID "=-1)"\</span>
+<a name="l00347"></a>00347 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00348"></a>00348 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ","\</span>
+<a name="l00349"></a>00349 <span class="preprocessor"> "'INSERT on table " SQLITE_TABLE_OBJECTS " violates constraint. "\</span>
+<a name="l00350"></a>00350 <span class="preprocessor"> SQLITE_COL_PARENTID " must uniquely be -1') "\</span>
+<a name="l00351"></a>00351 <span class="preprocessor"> "END; END;"</span>
+<a name="l00352"></a>00352 <span class="preprocessor"></span>
+<a name="l00353"></a>00353 <span class="preprocessor">#define SQLITE_TRIGGER_U_OBJECTS_OBJECTS SQLITE_UPDATE_REFERENCE_TRIGGER(SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID)\</span>
+<a name="l00354"></a>00354 <span class="preprocessor"> "CREATE TRIGGER IF NOT EXISTS "\</span>
+<a name="l00355"></a>00355 <span class="preprocessor"> SQLITE_TABLE_OBJECTS "_PU_" SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00356"></a>00356 <span class="preprocessor"> "BEFORE UPDATE ON "\</span>
+<a name="l00357"></a>00357 <span class="preprocessor"> SQLITE_TABLE_OBJECTS " " \</span>
+<a name="l00358"></a>00358 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00359"></a>00359 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00360"></a>00360 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00361"></a>00361 <span class="preprocessor"> "((SELECT " SQLITE_COL_PARENTID " FROM " SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00362"></a>00362 <span class="preprocessor"> "WHERE " SQLITE_COL_PARENTID "=-1 "\</span>
+<a name="l00363"></a>00363 <span class="preprocessor"> "AND " SQLITE_COL_OBJECTID "!=NEW." SQLITE_COL_OBJECTID " ) IS NOT NULL) "\</span>
+<a name="l00364"></a>00364 <span class="preprocessor"> "AND "\</span>
+<a name="l00365"></a>00365 <span class="preprocessor"> "(NEW." SQLITE_COL_PARENTID "=-1) AND (OLD." SQLITE_COL_PARENTID "!=-1) "\</span>
+<a name="l00366"></a>00366 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00367"></a>00367 <span class="preprocessor"> "RAISE(" SQLITE_TRANSACTION_TYPE ","\</span>
+<a name="l00368"></a>00368 <span class="preprocessor"> "'UPDATE on table " SQLITE_TABLE_OBJECTS " violates constraint. "\</span>
+<a name="l00369"></a>00369 <span class="preprocessor"> SQLITE_COL_PARENTID " must uniquely be -1') "\</span>
+<a name="l00370"></a>00370 <span class="preprocessor"> "END; END;"</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span>
+<a name="l00372"></a>00372 <span class="comment">/**********************************************\</span>
+<a name="l00373"></a>00373 <span class="comment">* *</span>
+<a name="l00374"></a>00374 <span class="comment">* Items *</span>
+<a name="l00375"></a>00375 <span class="comment">* *</span>
+<a name="l00376"></a>00376 <span class="comment">\**********************************************/</span>
+<a name="l00377"></a>00377
+<a name="l00378"></a>00378 <span class="preprocessor">#define SQLITE_CREATE_TABLE_ITEMS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00379"></a>00379 <span class="preprocessor"> SQLITE_TABLE_ITEMS \</span>
+<a name="l00380"></a>00380 <span class="preprocessor"> "(" \</span>
+<a name="l00381"></a>00381 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00382"></a>00382 <span class="preprocessor"> SQLITE_COL_REFERENCEID " " SQLITE_TYPE_INTEGER " DEFAULT -1" \</span>
+<a name="l00383"></a>00383 <span class="preprocessor"> ");"</span>
+<a name="l00384"></a>00384 <span class="preprocessor"></span>
+<a name="l00385"></a>00385 <span class="comment">// Trigger for foreign key ObjectID</span>
+<a name="l00386"></a>00386
+<a name="l00387"></a>00387 <span class="preprocessor">#define SQLITE_TRIGGER_D_OBJECT_ITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_OBJECTS,\</span>
+<a name="l00388"></a>00388 <span class="preprocessor"> SQLITE_TABLE_ITEMS)</span>
+<a name="l00389"></a>00389 <span class="preprocessor"></span>
+<a name="l00390"></a>00390 <span class="preprocessor">#define SQLITE_TRIGGER_I_OBJECT_ITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_OBJECTS,\</span>
+<a name="l00391"></a>00391 <span class="preprocessor"> SQLITE_TABLE_ITEMS,\</span>
+<a name="l00392"></a>00392 <span class="preprocessor"> UPNP_CLASS_ITEM)</span>
+<a name="l00393"></a>00393 <span class="preprocessor"></span>
+<a name="l00394"></a>00394 <span class="preprocessor">#define SQLITE_TRIGGER_U_OBJECT_ITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_OBJECTS,\</span>
+<a name="l00395"></a>00395 <span class="preprocessor"> SQLITE_TABLE_ITEMS,\</span>
+<a name="l00396"></a>00396 <span class="preprocessor"> UPNP_CLASS_ITEM)</span>
+<a name="l00397"></a>00397 <span class="preprocessor"></span>
+<a name="l00398"></a>00398 <span class="comment">// Trigger for Reference items</span>
+<a name="l00399"></a>00399
+<a name="l00400"></a>00400 <span class="preprocessor">#define SQLITE_TRIGGER_I_ITEMS_ITEMS SQLITE_INSERT_REFERENCE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_COL_REFERENCEID)</span>
+<a name="l00401"></a>00401 <span class="preprocessor"></span>
+<a name="l00402"></a>00402 <span class="preprocessor">#define SQLITE_TRIGGER_U_ITEMS_ITEMS SQLITE_UPDATE_REFERENCE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_COL_REFERENCEID)</span>
+<a name="l00403"></a>00403 <span class="preprocessor"></span>
+<a name="l00404"></a>00404 <span class="preprocessor">#define SQLITE_TRIGGER_D_ITEMS_ITEMS SQLITE_DELETE_REFERENCE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_COL_REFERENCEID)</span>
+<a name="l00405"></a>00405 <span class="preprocessor"></span>
+<a name="l00406"></a>00406 <span class="comment">/**********************************************\</span>
+<a name="l00407"></a>00407 <span class="comment">* *</span>
+<a name="l00408"></a>00408 <span class="comment">* Containers *</span>
+<a name="l00409"></a>00409 <span class="comment">* *</span>
+<a name="l00410"></a>00410 <span class="comment">\**********************************************/</span>
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 <span class="preprocessor">#define SQLITE_CREATE_TABLE_CONTAINER "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00413"></a>00413 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS \</span>
+<a name="l00414"></a>00414 <span class="preprocessor"> "(" \</span>
+<a name="l00415"></a>00415 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00416"></a>00416 <span class="preprocessor"> SQLITE_COL_SEARCHABLE " " SQLITE_TYPE_INTEGER ","\</span>
+<a name="l00417"></a>00417 <span class="preprocessor"> SQLITE_COL_CONTAINER_UID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL ","\</span>
+<a name="l00418"></a>00418 <span class="preprocessor"> SQLITE_COL_DLNA_CONTAINERTYPE " " SQLITE_TYPE_TEXT \</span>
+<a name="l00419"></a>00419 <span class="preprocessor"> ");"</span>
+<a name="l00420"></a>00420 <span class="preprocessor"></span>
+<a name="l00421"></a>00421 <span class="preprocessor">#define SQLITE_TRIGGER_D_OBJECT_CONTAINERS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_OBJECTS,\</span>
+<a name="l00422"></a>00422 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS)</span>
+<a name="l00423"></a>00423 <span class="preprocessor"></span>
+<a name="l00424"></a>00424 <span class="preprocessor">#define SQLITE_TRIGGER_I_OBJECT_CONTAINERS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_OBJECTS,\</span>
+<a name="l00425"></a>00425 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS,\</span>
+<a name="l00426"></a>00426 <span class="preprocessor"> UPNP_CLASS_CONTAINER)</span>
+<a name="l00427"></a>00427 <span class="preprocessor"></span>
+<a name="l00428"></a>00428 <span class="preprocessor">#define SQLITE_TRIGGER_U_OBJECT_CONTAINERS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_OBJECTS,\</span>
+<a name="l00429"></a>00429 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS,\</span>
+<a name="l00430"></a>00430 <span class="preprocessor"> UPNP_CLASS_CONTAINER)</span>
+<a name="l00431"></a>00431 <span class="preprocessor"></span>
+<a name="l00432"></a>00432 <span class="comment">/**********************************************\</span>
+<a name="l00433"></a>00433 <span class="comment">* *</span>
+<a name="l00434"></a>00434 <span class="comment">* Video items *</span>
+<a name="l00435"></a>00435 <span class="comment">* *</span>
+<a name="l00436"></a>00436 <span class="comment">\**********************************************/</span>
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 <span class="preprocessor">#define SQLITE_CREATE_TABLE_VIDEOITEMS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00439"></a>00439 <span class="preprocessor"> SQLITE_TABLE_VIDEOITEMS \</span>
+<a name="l00440"></a>00440 <span class="preprocessor"> "(" \</span>
+<a name="l00441"></a>00441 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00442"></a>00442 <span class="preprocessor"> SQLITE_COL_GENRE " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00443"></a>00443 <span class="preprocessor"> SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00444"></a>00444 <span class="preprocessor"> SQLITE_COL_PRODUCER " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00445"></a>00445 <span class="preprocessor"> SQLITE_COL_RATING " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00446"></a>00446 <span class="preprocessor"> SQLITE_COL_ACTOR " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00447"></a>00447 <span class="preprocessor"> SQLITE_COL_DIRECTOR " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00448"></a>00448 <span class="preprocessor"> SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00449"></a>00449 <span class="preprocessor"> SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00450"></a>00450 <span class="preprocessor"> SQLITE_COL_LANGUAGE " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00451"></a>00451 <span class="preprocessor"> SQLITE_COL_RELATION " " SQLITE_TYPE_TEXT \</span>
+<a name="l00452"></a>00452 <span class="preprocessor"> ");"</span>
+<a name="l00453"></a>00453 <span class="preprocessor"></span>
+<a name="l00454"></a>00454 <span class="preprocessor">#define SQLITE_TRIGGER_D_ITEMS_VIDEOITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_TABLE_VIDEOITEMS)</span>
+<a name="l00455"></a>00455 <span class="preprocessor"></span>
+<a name="l00456"></a>00456 <span class="preprocessor">#define SQLITE_TRIGGER_U_ITEMS_VIDEOITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_ITEMS, \</span>
+<a name="l00457"></a>00457 <span class="preprocessor"> SQLITE_TABLE_VIDEOITEMS, \</span>
+<a name="l00458"></a>00458 <span class="preprocessor"> UPNP_CLASS_VIDEO)</span>
+<a name="l00459"></a>00459 <span class="preprocessor"></span>
+<a name="l00460"></a>00460 <span class="preprocessor">#define SQLITE_TRIGGER_I_ITEMS_VIDEOITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_ITEMS, \</span>
+<a name="l00461"></a>00461 <span class="preprocessor"> SQLITE_TABLE_VIDEOITEMS, \</span>
+<a name="l00462"></a>00462 <span class="preprocessor"> UPNP_CLASS_VIDEO)</span>
+<a name="l00463"></a>00463 <span class="preprocessor"></span>
+<a name="l00464"></a>00464 <span class="comment">/**********************************************\</span>
+<a name="l00465"></a>00465 <span class="comment">* *</span>
+<a name="l00466"></a>00466 <span class="comment">* Audio items *</span>
+<a name="l00467"></a>00467 <span class="comment">* *</span>
+<a name="l00468"></a>00468 <span class="comment">\**********************************************/</span>
+<a name="l00469"></a>00469
+<a name="l00470"></a>00470 <span class="preprocessor">#define SQLITE_CREATE_TABLE_AUDIOITEMS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00471"></a>00471 <span class="preprocessor"> SQLITE_TABLE_AUDIOITEMS \</span>
+<a name="l00472"></a>00472 <span class="preprocessor"> "(" \</span>
+<a name="l00473"></a>00473 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00474"></a>00474 <span class="preprocessor"> SQLITE_COL_GENRE " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00475"></a>00475 <span class="preprocessor"> SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00476"></a>00476 <span class="preprocessor"> SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00477"></a>00477 <span class="preprocessor"> SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00478"></a>00478 <span class="preprocessor"> SQLITE_COL_RELATION " " SQLITE_TYPE_TEXT \</span>
+<a name="l00479"></a>00479 <span class="preprocessor"> ");"</span>
+<a name="l00480"></a>00480 <span class="preprocessor"></span>
+<a name="l00481"></a>00481 <span class="preprocessor">#define SQLITE_TRIGGER_D_ITEMS_AUDIOITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_TABLE_AUDIOITEMS)</span>
+<a name="l00482"></a>00482 <span class="preprocessor"></span>
+<a name="l00483"></a>00483 <span class="preprocessor">#define SQLITE_TRIGGER_U_ITEMS_AUDIOITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_ITEMS, \</span>
+<a name="l00484"></a>00484 <span class="preprocessor"> SQLITE_TABLE_AUDIOITEMS, \</span>
+<a name="l00485"></a>00485 <span class="preprocessor"> UPNP_CLASS_AUDIO)</span>
+<a name="l00486"></a>00486 <span class="preprocessor"></span>
+<a name="l00487"></a>00487 <span class="preprocessor">#define SQLITE_TRIGGER_I_ITEMS_AUDIOITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_ITEMS, \</span>
+<a name="l00488"></a>00488 <span class="preprocessor"> SQLITE_TABLE_AUDIOITEMS, \</span>
+<a name="l00489"></a>00489 <span class="preprocessor"> UPNP_CLASS_AUDIO)</span>
+<a name="l00490"></a>00490 <span class="preprocessor"></span>
+<a name="l00491"></a>00491 <span class="comment">/**********************************************\</span>
+<a name="l00492"></a>00492 <span class="comment">* *</span>
+<a name="l00493"></a>00493 <span class="comment">* Image items *</span>
+<a name="l00494"></a>00494 <span class="comment">* *</span>
+<a name="l00495"></a>00495 <span class="comment">\**********************************************/</span>
+<a name="l00496"></a>00496
+<a name="l00497"></a>00497 <span class="preprocessor">#define SQLITE_CREATE_TABLE_IMAGEITEMS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00498"></a>00498 <span class="preprocessor"> SQLITE_TABLE_IMAGEITEMS \</span>
+<a name="l00499"></a>00499 <span class="preprocessor"> "("\</span>
+<a name="l00500"></a>00500 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00501"></a>00501 <span class="preprocessor"> SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00502"></a>00502 <span class="preprocessor"> SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00503"></a>00503 <span class="preprocessor"> SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00504"></a>00504 <span class="preprocessor"> SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00505"></a>00505 <span class="preprocessor"> SQLITE_COL_RATING " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00506"></a>00506 <span class="preprocessor"> SQLITE_COL_DATE " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00507"></a>00507 <span class="preprocessor"> SQLITE_COL_RIGHTS " " SQLITE_TYPE_TEXT\</span>
+<a name="l00508"></a>00508 <span class="preprocessor"> ");"</span>
+<a name="l00509"></a>00509 <span class="preprocessor"></span>
+<a name="l00510"></a>00510 <span class="preprocessor">#define SQLITE_TRIGGER_D_ITEMS_IMAGEITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_TABLE_IMAGEITEMS)</span>
+<a name="l00511"></a>00511 <span class="preprocessor"></span>
+<a name="l00512"></a>00512 <span class="preprocessor">#define SQLITE_TRIGGER_U_ITEMS_IMAGEITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_ITEMS, \</span>
+<a name="l00513"></a>00513 <span class="preprocessor"> SQLITE_TABLE_IMAGEITEMS, \</span>
+<a name="l00514"></a>00514 <span class="preprocessor"> UPNP_CLASS_IMAGE)</span>
+<a name="l00515"></a>00515 <span class="preprocessor"></span>
+<a name="l00516"></a>00516 <span class="preprocessor">#define SQLITE_TRIGGER_I_ITEMS_IMAGEITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_ITEMS, \</span>
+<a name="l00517"></a>00517 <span class="preprocessor"> SQLITE_TABLE_IMAGEITEMS, \</span>
+<a name="l00518"></a>00518 <span class="preprocessor"> UPNP_CLASS_IMAGE)</span>
+<a name="l00519"></a>00519 <span class="preprocessor"></span>
+<a name="l00520"></a>00520 <span class="comment">/**********************************************\</span>
+<a name="l00521"></a>00521 <span class="comment">* *</span>
+<a name="l00522"></a>00522 <span class="comment">* Video broadcasts *</span>
+<a name="l00523"></a>00523 <span class="comment">* *</span>
+<a name="l00524"></a>00524 <span class="comment">\**********************************************/</span>
+<a name="l00525"></a>00525
+<a name="l00526"></a>00526 <span class="preprocessor">#define SQLITE_CREATE_TABLE_VIDEOBROADCASTS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00527"></a>00527 <span class="preprocessor"> SQLITE_TABLE_VIDEOBROADCASTS \</span>
+<a name="l00528"></a>00528 <span class="preprocessor"> "("\</span>
+<a name="l00529"></a>00529 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00530"></a>00530 <span class="preprocessor"> SQLITE_COL_ICON " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00531"></a>00531 <span class="preprocessor"> SQLITE_COL_REGION " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00532"></a>00532 <span class="preprocessor"> SQLITE_COL_CHANNELNR " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00533"></a>00533 <span class="preprocessor"> SQLITE_COL_CHANNELNAME " " SQLITE_TYPE_TEXT " " SQLITE_UNIQUE \</span>
+<a name="l00534"></a>00534 <span class="preprocessor"> ");"</span>
+<a name="l00535"></a>00535 <span class="preprocessor"></span>
+<a name="l00536"></a>00536 <span class="preprocessor">#define SQLITE_TRIGGER_D_VIDEOITEMS_VIDEOBROADCASTS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_VIDEOITEMS, SQLITE_TABLE_VIDEOBROADCASTS)</span>
+<a name="l00537"></a>00537 <span class="preprocessor"></span>
+<a name="l00538"></a>00538 <span class="preprocessor">#define SQLITE_TRIGGER_U_VIDEOITEMS_VIDEOBROADCASTS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\</span>
+<a name="l00539"></a>00539 <span class="preprocessor"> SQLITE_TABLE_VIDEOBROADCASTS,\</span>
+<a name="l00540"></a>00540 <span class="preprocessor"> UPNP_CLASS_VIDEOBC)</span>
+<a name="l00541"></a>00541 <span class="preprocessor"></span>
+<a name="l00542"></a>00542 <span class="preprocessor">#define SQLITE_TRIGGER_I_VIDEOITEMS_VIDEOBROADCASTS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\</span>
+<a name="l00543"></a>00543 <span class="preprocessor"> SQLITE_TABLE_VIDEOBROADCASTS,\</span>
+<a name="l00544"></a>00544 <span class="preprocessor"> UPNP_CLASS_VIDEOBC)</span>
+<a name="l00545"></a>00545 <span class="preprocessor"></span>
+<a name="l00546"></a>00546 <span class="comment">/**********************************************\</span>
+<a name="l00547"></a>00547 <span class="comment">* *</span>
+<a name="l00548"></a>00548 <span class="comment">* Audio broadcasts *</span>
+<a name="l00549"></a>00549 <span class="comment">* *</span>
+<a name="l00550"></a>00550 <span class="comment">\**********************************************/</span>
+<a name="l00551"></a>00551
+<a name="l00552"></a>00552 <span class="preprocessor">#define SQLITE_CREATE_TABLE_AUDIOBROADCASTS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00553"></a>00553 <span class="preprocessor"> SQLITE_TABLE_AUDIOBROADCASTS \</span>
+<a name="l00554"></a>00554 <span class="preprocessor"> "("\</span>
+<a name="l00555"></a>00555 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00556"></a>00556 <span class="preprocessor"> SQLITE_COL_REGION " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00557"></a>00557 <span class="preprocessor"> SQLITE_COL_RADIOCALLSIGN " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00558"></a>00558 <span class="preprocessor"> SQLITE_COL_RADIOSTATIONID " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00559"></a>00559 <span class="preprocessor"> SQLITE_COL_RADIOBAND " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00560"></a>00560 <span class="preprocessor"> SQLITE_COL_CHANNELNR " " SQLITE_TYPE_INTEGER \</span>
+<a name="l00561"></a>00561 <span class="preprocessor"> ");"</span>
+<a name="l00562"></a>00562 <span class="preprocessor"></span>
+<a name="l00563"></a>00563 <span class="preprocessor">#define SQLITE_TRIGGER_D_AUDIOITEMS_AUDIOBROADCASTS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_AUDIOITEMS, SQLITE_TABLE_AUDIOBROADCASTS)</span>
+<a name="l00564"></a>00564 <span class="preprocessor"></span>
+<a name="l00565"></a>00565 <span class="preprocessor">#define SQLITE_TRIGGER_I_AUDIOITEMS_AUDIOBROADCASTS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_AUDIOITEMS,\</span>
+<a name="l00566"></a>00566 <span class="preprocessor"> SQLITE_TABLE_AUDIOBROADCASTS,\</span>
+<a name="l00567"></a>00567 <span class="preprocessor"> UPNP_CLASS_AUDIOBC)</span>
+<a name="l00568"></a>00568 <span class="preprocessor"></span>
+<a name="l00569"></a>00569 <span class="preprocessor">#define SQLITE_TRIGGER_U_AUDIOITEMS_AUDIOBROADCASTS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_AUDIOITEMS,\</span>
+<a name="l00570"></a>00570 <span class="preprocessor"> SQLITE_TABLE_AUDIOBROADCASTS,\</span>
+<a name="l00571"></a>00571 <span class="preprocessor"> UPNP_CLASS_AUDIOBC)</span>
+<a name="l00572"></a>00572 <span class="preprocessor"></span>
+<a name="l00573"></a>00573 <span class="comment">/**********************************************\</span>
+<a name="l00574"></a>00574 <span class="comment">* *</span>
+<a name="l00575"></a>00575 <span class="comment">* Movies *</span>
+<a name="l00576"></a>00576 <span class="comment">* *</span>
+<a name="l00577"></a>00577 <span class="comment">\**********************************************/</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="preprocessor">#define SQLITE_CREATE_TABLE_MOVIES "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00580"></a>00580 <span class="preprocessor"> SQLITE_TABLE_MOVIES \</span>
+<a name="l00581"></a>00581 <span class="preprocessor"> "("\</span>
+<a name="l00582"></a>00582 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00583"></a>00583 <span class="preprocessor"> SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00584"></a>00584 <span class="preprocessor"> SQLITE_COL_DVDREGIONCODE " " SQLITE_TYPE_INTEGER "," \</span>
+<a name="l00585"></a>00585 <span class="preprocessor"> SQLITE_COL_CHANNELNAME " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00586"></a>00586 <span class="preprocessor"> SQLITE_COL_SCHEDULEDSTARTTIME " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00587"></a>00587 <span class="preprocessor"> SQLITE_COL_SCHEDULEDENDTIME " " SQLITE_TYPE_TEXT\</span>
+<a name="l00588"></a>00588 <span class="preprocessor"> ");"</span>
+<a name="l00589"></a>00589 <span class="preprocessor"></span>
+<a name="l00590"></a>00590 <span class="preprocessor">#define SQLITE_TRIGGER_D_VIDEOITEMS_MOVIES SQLITE_DELETE_TRIGGER(SQLITE_TABLE_VIDEOITEMS, SQLITE_TABLE_MOVIES)</span>
+<a name="l00591"></a>00591 <span class="preprocessor"></span>
+<a name="l00592"></a>00592
+<a name="l00593"></a>00593 <span class="preprocessor">#define SQLITE_TRIGGER_I_VIDEOITEMS_MOVIES SQLITE_INSERT_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\</span>
+<a name="l00594"></a>00594 <span class="preprocessor"> SQLITE_TABLE_MOVIES,\</span>
+<a name="l00595"></a>00595 <span class="preprocessor"> UPNP_CLASS_MOVIE)</span>
+<a name="l00596"></a>00596 <span class="preprocessor"></span>
+<a name="l00597"></a>00597 <span class="preprocessor">#define SQLITE_TRIGGER_U_VIDEOITEMS_MOVIES SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\</span>
+<a name="l00598"></a>00598 <span class="preprocessor"> SQLITE_TABLE_MOVIES,\</span>
+<a name="l00599"></a>00599 <span class="preprocessor"> UPNP_CLASS_MOVIE)</span>
+<a name="l00600"></a>00600 <span class="preprocessor"></span>
+<a name="l00601"></a>00601 <span class="comment">/**********************************************\</span>
+<a name="l00602"></a>00602 <span class="comment">* *</span>
+<a name="l00603"></a>00603 <span class="comment">* Photos *</span>
+<a name="l00604"></a>00604 <span class="comment">* *</span>
+<a name="l00605"></a>00605 <span class="comment">\**********************************************/</span>
+<a name="l00606"></a>00606
+<a name="l00607"></a>00607 <span class="preprocessor">#define SQLITE_CREATE_TABLE_PHOTOS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00608"></a>00608 <span class="preprocessor"> SQLITE_TABLE_PHOTOS \</span>
+<a name="l00609"></a>00609 <span class="preprocessor"> "("\</span>
+<a name="l00610"></a>00610 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00611"></a>00611 <span class="preprocessor"> SQLITE_COL_ALBUM " " SQLITE_TYPE_TEXT\</span>
+<a name="l00612"></a>00612 <span class="preprocessor"> ");"</span>
+<a name="l00613"></a>00613 <span class="preprocessor"></span>
+<a name="l00614"></a>00614 <span class="preprocessor">#define SQLITE_TRIGGER_D_IMAGEITEMS_PHOTOS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_IMAGEITEMS, SQLITE_TABLE_PHOTOS)</span>
+<a name="l00615"></a>00615 <span class="preprocessor"></span>
+<a name="l00616"></a>00616 <span class="preprocessor">#define SQLITE_TRIGGER_I_IMAGEITEMS_PHOTOS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_IMAGEITEMS,\</span>
+<a name="l00617"></a>00617 <span class="preprocessor"> SQLITE_TABLE_PHOTOS,\</span>
+<a name="l00618"></a>00618 <span class="preprocessor"> UPNP_CLASS_PHOTO)</span>
+<a name="l00619"></a>00619 <span class="preprocessor"></span>
+<a name="l00620"></a>00620 <span class="preprocessor">#define SQLITE_TRIGGER_U_IMAGEITEMS_PHOTOS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_IMAGEITEMS,\</span>
+<a name="l00621"></a>00621 <span class="preprocessor"> SQLITE_TABLE_PHOTOS,\</span>
+<a name="l00622"></a>00622 <span class="preprocessor"> UPNP_CLASS_PHOTO)</span>
+<a name="l00623"></a>00623 <span class="preprocessor"></span>
+<a name="l00624"></a>00624 <span class="comment">/**********************************************\</span>
+<a name="l00625"></a>00625 <span class="comment">* *</span>
+<a name="l00626"></a>00626 <span class="comment">* Albums *</span>
+<a name="l00627"></a>00627 <span class="comment">* *</span>
+<a name="l00628"></a>00628 <span class="comment">\**********************************************/</span>
+<a name="l00629"></a>00629
+<a name="l00630"></a>00630 <span class="preprocessor">#define SQLITE_CREATE_TABLE_ALBUMS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00631"></a>00631 <span class="preprocessor"> SQLITE_TABLE_ALBUMS \</span>
+<a name="l00632"></a>00632 <span class="preprocessor"> "("\</span>
+<a name="l00633"></a>00633 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00634"></a>00634 <span class="preprocessor"> SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00635"></a>00635 <span class="preprocessor"> SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00636"></a>00636 <span class="preprocessor"> SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00637"></a>00637 <span class="preprocessor"> SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00638"></a>00638 <span class="preprocessor"> SQLITE_COL_CONTRIBUTOR " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00639"></a>00639 <span class="preprocessor"> SQLITE_COL_DATE " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00640"></a>00640 <span class="preprocessor"> SQLITE_COL_RELATION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00641"></a>00641 <span class="preprocessor"> SQLITE_COL_RIGHTS " " SQLITE_TYPE_TEXT \</span>
+<a name="l00642"></a>00642 <span class="preprocessor"> ");"</span>
+<a name="l00643"></a>00643 <span class="preprocessor"></span>
+<a name="l00644"></a>00644 <span class="preprocessor">#define SQLITE_TRIGGER_D_CONTAINERS_ALBUMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_CONTAINERS, SQLITE_TABLE_ALBUMS)</span>
+<a name="l00645"></a>00645 <span class="preprocessor"></span>
+<a name="l00646"></a>00646 <span class="preprocessor">#define SQLITE_TRIGGER_U_CONTAINERS_ALBUMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_CONTAINERS,\</span>
+<a name="l00647"></a>00647 <span class="preprocessor"> SQLITE_TABLE_ALBUMS,\</span>
+<a name="l00648"></a>00648 <span class="preprocessor"> UPNP_CLASS_ALBUM)</span>
+<a name="l00649"></a>00649 <span class="preprocessor"></span>
+<a name="l00650"></a>00650 <span class="preprocessor">#define SQLITE_TRIGGER_I_CONTAINERS_ALBUMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_CONTAINERS,\</span>
+<a name="l00651"></a>00651 <span class="preprocessor"> SQLITE_TABLE_ALBUMS,\</span>
+<a name="l00652"></a>00652 <span class="preprocessor"> UPNP_CLASS_ALBUM)</span>
+<a name="l00653"></a>00653 <span class="preprocessor"></span>
+<a name="l00654"></a>00654 <span class="comment">/**********************************************\</span>
+<a name="l00655"></a>00655 <span class="comment">* *</span>
+<a name="l00656"></a>00656 <span class="comment">* Playlists *</span>
+<a name="l00657"></a>00657 <span class="comment">* *</span>
+<a name="l00658"></a>00658 <span class="comment">\**********************************************/</span>
+<a name="l00659"></a>00659
+<a name="l00660"></a>00660 <span class="preprocessor">#define SQLITE_CREATE_TABLE_PLAYLISTS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00661"></a>00661 <span class="preprocessor"> SQLITE_TABLE_PLAYLISTS \</span>
+<a name="l00662"></a>00662 <span class="preprocessor"> "(" \</span>
+<a name="l00663"></a>00663 <span class="preprocessor"> SQLITE_UPNP_OBJECTID "," \</span>
+<a name="l00664"></a>00664 <span class="preprocessor"> SQLITE_COL_ARTIST " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00665"></a>00665 <span class="preprocessor"> SQLITE_COL_GENRE " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00666"></a>00666 <span class="preprocessor"> SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00667"></a>00667 <span class="preprocessor"> SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00668"></a>00668 <span class="preprocessor"> SQLITE_COL_PRODUCER " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00669"></a>00669 <span class="preprocessor"> SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00670"></a>00670 <span class="preprocessor"> SQLITE_COL_CONTRIBUTOR " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00671"></a>00671 <span class="preprocessor"> SQLITE_COL_DATE " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00672"></a>00672 <span class="preprocessor"> SQLITE_COL_LANGUAGE " " SQLITE_TYPE_TEXT ","\</span>
+<a name="l00673"></a>00673 <span class="preprocessor"> SQLITE_COL_RIGHTS " " SQLITE_TYPE_TEXT\</span>
+<a name="l00674"></a>00674 <span class="preprocessor"> ");"</span>
+<a name="l00675"></a>00675 <span class="preprocessor"></span>
+<a name="l00676"></a>00676 <span class="preprocessor">#define SQLITE_TRIGGER_D_CONTAINERS_PLAYLISTS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_CONTAINERS, SQLITE_TABLE_PLAYLISTS)</span>
+<a name="l00677"></a>00677 <span class="preprocessor"></span>
+<a name="l00678"></a>00678 <span class="preprocessor">#define SQLITE_TRIGGER_I_CONTAINERS_PLAYLISTS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_CONTAINERS,\</span>
+<a name="l00679"></a>00679 <span class="preprocessor"> SQLITE_TABLE_PLAYLISTS,\</span>
+<a name="l00680"></a>00680 <span class="preprocessor"> UPNP_CLASS_PLAYLISTCONT)</span>
+<a name="l00681"></a>00681 <span class="preprocessor"></span>
+<a name="l00682"></a>00682 <span class="preprocessor">#define SQLITE_TRIGGER_U_CONTAINERS_PLAYLISTS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_CONTAINERS,\</span>
+<a name="l00683"></a>00683 <span class="preprocessor"> SQLITE_TABLE_PLAYLISTS,\</span>
+<a name="l00684"></a>00684 <span class="preprocessor"> UPNP_CLASS_PLAYLISTCONT)</span>
+<a name="l00685"></a>00685 <span class="preprocessor"></span>
+<a name="l00686"></a>00686 <span class="comment">/**********************************************\</span>
+<a name="l00687"></a>00687 <span class="comment">* *</span>
+<a name="l00688"></a>00688 <span class="comment">* Search classes *</span>
+<a name="l00689"></a>00689 <span class="comment">* *</span>
+<a name="l00690"></a>00690 <span class="comment">\**********************************************/</span>
+<a name="l00691"></a>00691
+<a name="l00692"></a>00692 <span class="preprocessor">#define SQLITE_CREATE_TABLE_SEARCHCLASS "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00693"></a>00693 <span class="preprocessor"> SQLITE_TABLE_SEARCHCLASS \</span>
+<a name="l00694"></a>00694 <span class="preprocessor"> "(" \</span>
+<a name="l00695"></a>00695 <span class="preprocessor"> SQLITE_COL_OBJECTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL "," \</span>
+<a name="l00696"></a>00696 <span class="preprocessor"> SQLITE_COL_CLASS " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00697"></a>00697 <span class="preprocessor"> SQLITE_COL_CLASSDERIVED " " SQLITE_TYPE_BOOL \</span>
+<a name="l00698"></a>00698 <span class="preprocessor"> ");"</span>
+<a name="l00699"></a>00699 <span class="preprocessor"></span>
+<a name="l00700"></a>00700 <span class="preprocessor">#define SQLITE_TRIGGER_D_CONTAINERS_SEARCHCLASSES "CREATE TRIGGER IF NOT EXISTS " \</span>
+<a name="l00701"></a>00701 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS "_D_" SQLITE_TABLE_SEARCHCLASS " " \</span>
+<a name="l00702"></a>00702 <span class="preprocessor"> "BEFORE DELETE ON " \</span>
+<a name="l00703"></a>00703 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS " " \</span>
+<a name="l00704"></a>00704 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00705"></a>00705 <span class="preprocessor"> "DELETE FROM " SQLITE_TABLE_SEARCHCLASS " "\</span>
+<a name="l00706"></a>00706 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "= OLD." SQLITE_COL_OBJECTID "; " \</span>
+<a name="l00707"></a>00707 <span class="preprocessor"> "END;"</span>
+<a name="l00708"></a>00708 <span class="preprocessor"></span>
+<a name="l00709"></a>00709 <span class="preprocessor">#define SQLITE_TRIGGER_U_CONTAINERS_SEARCHCLASSES "CREATE TRIGGER IF NOT EXISTS " \</span>
+<a name="l00710"></a>00710 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS "_U_" SQLITE_TABLE_SEARCHCLASS " " \</span>
+<a name="l00711"></a>00711 <span class="preprocessor"> "BEFORE UPDATE ON " \</span>
+<a name="l00712"></a>00712 <span class="preprocessor"> SQLITE_TABLE_SEARCHCLASS " " \</span>
+<a name="l00713"></a>00713 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00714"></a>00714 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00715"></a>00715 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00716"></a>00716 <span class="preprocessor"> "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_CONTAINERS " "\</span>
+<a name="l00717"></a>00717 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL "\</span>
+<a name="l00718"></a>00718 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00719"></a>00719 <span class="preprocessor"> "RAISE (" SQLITE_TRANSACTION_TYPE ", 'UPDATE on table " SQLITE_TABLE_SEARCHCLASS " "\</span>
+<a name="l00720"></a>00720 <span class="preprocessor"> "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \</span>
+<a name="l00721"></a>00721 <span class="preprocessor"> "END; END;"</span>
+<a name="l00722"></a>00722 <span class="preprocessor"></span>
+<a name="l00723"></a>00723 <span class="preprocessor">#define SQLITE_TRIGGER_I_CONTAINERS_SEARCHCLASSES "CREATE TRIGGER IF NOT EXISTS " \</span>
+<a name="l00724"></a>00724 <span class="preprocessor"> SQLITE_TABLE_CONTAINERS "_I_" SQLITE_TABLE_SEARCHCLASS " " \</span>
+<a name="l00725"></a>00725 <span class="preprocessor"> "BEFORE INSERT ON " \</span>
+<a name="l00726"></a>00726 <span class="preprocessor"> SQLITE_TABLE_SEARCHCLASS " " \</span>
+<a name="l00727"></a>00727 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00728"></a>00728 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00729"></a>00729 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00730"></a>00730 <span class="preprocessor"> "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_CONTAINERS " "\</span>
+<a name="l00731"></a>00731 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL "\</span>
+<a name="l00732"></a>00732 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00733"></a>00733 <span class="preprocessor"> "RAISE (" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " SQLITE_TABLE_SEARCHCLASS " "\</span>
+<a name="l00734"></a>00734 <span class="preprocessor"> "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \</span>
+<a name="l00735"></a>00735 <span class="preprocessor"> "END; END;"</span>
+<a name="l00736"></a>00736 <span class="preprocessor"></span>
+<a name="l00737"></a>00737 <span class="comment">/**********************************************\</span>
+<a name="l00738"></a>00738 <span class="comment">* *</span>
+<a name="l00739"></a>00739 <span class="comment">* Resources *</span>
+<a name="l00740"></a>00740 <span class="comment">* *</span>
+<a name="l00741"></a>00741 <span class="comment">\**********************************************/</span>
+<a name="l00742"></a>00742
+<a name="l00743"></a>00743 <span class="preprocessor">#define SQLITE_CREATE_TABLE_RESOURCES "CREATE TABLE IF NOT EXISTS "\</span>
+<a name="l00744"></a>00744 <span class="preprocessor"> SQLITE_TABLE_RESOURCES \</span>
+<a name="l00745"></a>00745 <span class="preprocessor"> "(" \</span>
+<a name="l00746"></a>00746 <span class="preprocessor"> SQLITE_COL_RESOURCEID " " SQLITE_PRIMARY_KEY " " SQLITE_NOT_NULL "," \</span>
+<a name="l00747"></a>00747 <span class="preprocessor"> SQLITE_COL_OBJECTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL "," \</span>
+<a name="l00748"></a>00748 <span class="preprocessor"> SQLITE_COL_PROTOCOLINFO " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \</span>
+<a name="l00749"></a>00749 <span class="preprocessor"> SQLITE_COL_CONTENTTYPE " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \</span>
+<a name="l00750"></a>00750 <span class="preprocessor"> SQLITE_COL_RESOURCETYPE " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL "," \</span>
+<a name="l00751"></a>00751 <span class="preprocessor"> SQLITE_COL_RESOURCE " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \</span>
+<a name="l00752"></a>00752 <span class="preprocessor"> SQLITE_COL_SIZE " " SQLITE_TYPE_ULONG "," \</span>
+<a name="l00753"></a>00753 <span class="preprocessor"> SQLITE_COL_DURATION " " SQLITE_TYPE_TEXT "," \</span>
+<a name="l00754"></a>00754 <span class="preprocessor"> SQLITE_COL_BITRATE " " SQLITE_TYPE_UINTEGER "," \</span>
+<a name="l00755"></a>00755 <span class="preprocessor"> SQLITE_COL_SAMPLEFREQUENCE " " SQLITE_TYPE_UINTEGER "," \</span>
+<a name="l00756"></a>00756 <span class="preprocessor"> SQLITE_COL_BITSPERSAMPLE " " SQLITE_TYPE_UINTEGER "," \</span>
+<a name="l00757"></a>00757 <span class="preprocessor"> SQLITE_COL_NOAUDIOCHANNELS " " SQLITE_TYPE_UINTEGER "," \</span>
+<a name="l00758"></a>00758 <span class="preprocessor"> SQLITE_COL_COLORDEPTH " " SQLITE_TYPE_UINTEGER "," \</span>
+<a name="l00759"></a>00759 <span class="preprocessor"> SQLITE_COL_RESOLUTION " " SQLITE_TYPE_TEXT \</span>
+<a name="l00760"></a>00760 <span class="preprocessor"> ");"</span>
+<a name="l00761"></a>00761 <span class="preprocessor"></span>
+<a name="l00762"></a>00762 <span class="preprocessor">#define SQLITE_TRIGGER_D_OBJECT_RESOURCES "CREATE TRIGGER IF NOT EXISTS " \</span>
+<a name="l00763"></a>00763 <span class="preprocessor"> SQLITE_TABLE_OBJECTS "_D_" SQLITE_TABLE_RESOURCES " " \</span>
+<a name="l00764"></a>00764 <span class="preprocessor"> "BEFORE DELETE ON " \</span>
+<a name="l00765"></a>00765 <span class="preprocessor"> SQLITE_TABLE_OBJECTS " " \</span>
+<a name="l00766"></a>00766 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00767"></a>00767 <span class="preprocessor"> "DELETE FROM " SQLITE_TABLE_RESOURCES " "\</span>
+<a name="l00768"></a>00768 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "= OLD." SQLITE_COL_OBJECTID "; " \</span>
+<a name="l00769"></a>00769 <span class="preprocessor"> "END;"</span>
+<a name="l00770"></a>00770 <span class="preprocessor"></span>
+<a name="l00771"></a>00771 <span class="preprocessor">#define SQLITE_TRIGGER_I_OBJECT_RESOURCES "CREATE TRIGGER IF NOT EXISTS " \</span>
+<a name="l00772"></a>00772 <span class="preprocessor"> SQLITE_TABLE_OBJECTS "_I_" SQLITE_TABLE_RESOURCES " " \</span>
+<a name="l00773"></a>00773 <span class="preprocessor"> "BEFORE INSERT ON " \</span>
+<a name="l00774"></a>00774 <span class="preprocessor"> SQLITE_TABLE_RESOURCES " " \</span>
+<a name="l00775"></a>00775 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00776"></a>00776 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00777"></a>00777 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00778"></a>00778 <span class="preprocessor"> "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00779"></a>00779 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL"\</span>
+<a name="l00780"></a>00780 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00781"></a>00781 <span class="preprocessor"> "RAISE (" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " SQLITE_TABLE_RESOURCES " "\</span>
+<a name="l00782"></a>00782 <span class="preprocessor"> "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \</span>
+<a name="l00783"></a>00783 <span class="preprocessor"> "END; END;"</span>
+<a name="l00784"></a>00784 <span class="preprocessor"></span>
+<a name="l00785"></a>00785 <span class="preprocessor">#define SQLITE_TRIGGER_U_OBJECT_RESOURCES "CREATE TRIGGER IF NOT EXISTS " \</span>
+<a name="l00786"></a>00786 <span class="preprocessor"> SQLITE_TABLE_OBJECTS "_U_" SQLITE_TABLE_RESOURCES " " \</span>
+<a name="l00787"></a>00787 <span class="preprocessor"> "BEFORE UPDATE ON " \</span>
+<a name="l00788"></a>00788 <span class="preprocessor"> SQLITE_TABLE_RESOURCES " " \</span>
+<a name="l00789"></a>00789 <span class="preprocessor"> "FOR EACH ROW BEGIN "\</span>
+<a name="l00790"></a>00790 <span class="preprocessor"> "SELECT CASE "\</span>
+<a name="l00791"></a>00791 <span class="preprocessor"> "WHEN ("\</span>
+<a name="l00792"></a>00792 <span class="preprocessor"> "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_OBJECTS " "\</span>
+<a name="l00793"></a>00793 <span class="preprocessor"> "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL"\</span>
+<a name="l00794"></a>00794 <span class="preprocessor"> ") THEN "\</span>
+<a name="l00795"></a>00795 <span class="preprocessor"> "RAISE (" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " SQLITE_TABLE_RESOURCES " "\</span>
+<a name="l00796"></a>00796 <span class="preprocessor"> "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \</span>
+<a name="l00797"></a>00797 <span class="preprocessor"> "END; END;"</span>
+<a name="l00798"></a>00798 <span class="preprocessor"></span>
+<a name="l00799"></a>00799 <span class="keyword">class </span><a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>;
+<a name="l00800"></a>00800
+<a name="l00808"></a><a class="code" href="classcRow.html">00808</a> <span class="keyword">class </span><a class="code" href="classcRow.html">cRow</a> : <span class="keyword">public</span> cListObject {
+<a name="l00809"></a>00809 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>;
+<a name="l00810"></a>00810 <span class="keyword">private</span>:
+<a name="l00811"></a>00811 <span class="keywordtype">int</span> currentCol;
+<a name="l00812"></a>00812 <span class="keywordtype">int</span> ColCount;
+<a name="l00813"></a>00813 <span class="keywordtype">char</span>** Columns;
+<a name="l00814"></a>00814 <span class="keywordtype">char</span>** Values;
+<a name="l00815"></a>00815 <a class="code" href="classcRow.html">cRow</a>();
+<a name="l00816"></a>00816 <span class="keyword">public</span>:
+<a name="l00817"></a>00817 <span class="keyword">virtual</span> ~<a class="code" href="classcRow.html">cRow</a>();
+<a name="l00823"></a><a class="code" href="classcRow.html#88b64cc4fcf8f0974f2cf11e875fbaf4">00823</a> <span class="keywordtype">int</span> <a class="code" href="classcRow.html#88b64cc4fcf8f0974f2cf11e875fbaf4">Count</a>(){ <span class="keywordflow">return</span> this-&gt;ColCount; }
+<a name="l00834"></a>00834 <span class="keywordtype">bool</span> <a class="code" href="classcRow.html#4b1e1e5ffe36d35c61476bc2e4ef4eb1">fetchColumn</a>(
+<a name="l00835"></a>00835 cString* Column,
+<a name="l00836"></a>00836 cString* Value
+<a name="l00837"></a>00837 );
+<a name="l00838"></a>00838
+<a name="l00849"></a>00849 <span class="keywordtype">bool</span> <a class="code" href="classcRow.html#4b1e1e5ffe36d35c61476bc2e4ef4eb1">fetchColumn</a>(
+<a name="l00850"></a>00850 <span class="keywordtype">char</span>** Column,
+<a name="l00851"></a>00851 <span class="keywordtype">char</span>** Value
+<a name="l00852"></a>00852 );
+<a name="l00853"></a>00853 };
+<a name="l00854"></a>00854
+<a name="l00862"></a><a class="code" href="classcRows.html">00862</a> <span class="keyword">class </span><a class="code" href="classcRows.html">cRows</a> : <span class="keyword">public</span> cList&lt;cRow&gt; {
+<a name="l00863"></a>00863 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>;
+<a name="l00864"></a>00864 <span class="keyword">private</span>:
+<a name="l00865"></a>00865 <a class="code" href="classcRow.html">cRow</a>* mLastRow;
+<a name="l00866"></a>00866 <a class="code" href="classcRows.html">cRows</a>();
+<a name="l00867"></a>00867 <span class="keyword">public</span>:
+<a name="l00868"></a>00868 <span class="keyword">virtual</span> ~<a class="code" href="classcRows.html">cRows</a>();
+<a name="l00879"></a>00879 <span class="keywordtype">bool</span> <a class="code" href="classcRows.html#03a454862807c81280fd7b87b35ba19e">fetchRow</a>(
+<a name="l00880"></a>00880 <a class="code" href="classcRow.html">cRow</a>** Row
+<a name="l00881"></a>00881 );
+<a name="l00882"></a>00882 };
+<a name="l00883"></a>00883
+<a name="l00892"></a><a class="code" href="classcSQLiteDatabase.html">00892</a> <span class="keyword">class </span><a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a> {
+<a name="l00893"></a>00893 <span class="keyword">friend</span> <span class="keyword">class </span>cStatement;
+<a name="l00894"></a>00894 <span class="keyword">private</span>:
+<a name="l00895"></a>00895 <span class="keywordtype">bool</span> mAutoCommit;
+<a name="l00896"></a>00896 <span class="keywordtype">bool</span> mActiveTransaction;
+<a name="l00897"></a>00897 <a class="code" href="classcRow.html">cRow</a>* mLastRow;
+<a name="l00898"></a>00898 <a class="code" href="classcRows.html">cRows</a>* mRows;
+<a name="l00899"></a>00899 sqlite3* mDatabase;
+<a name="l00900"></a>00900 <span class="keyword">static</span> <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>* mInstance;
+<a name="l00901"></a>00901 <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>();
+<a name="l00902"></a>00902 <span class="keywordtype">int</span> initialize();
+<a name="l00903"></a>00903 <span class="keywordtype">int</span> initializeTables();
+<a name="l00904"></a>00904 <span class="keywordtype">int</span> initializeTriggers();
+<a name="l00905"></a>00905 <span class="keyword">static</span> <span class="keywordtype">int</span> getResultRow(<span class="keywordtype">void</span>* DB, <span class="keywordtype">int</span> NumCols, <span class="keywordtype">char</span>** Values, <span class="keywordtype">char</span>** ColNames);
+<a name="l00906"></a>00906 <span class="keywordtype">int</span> exec(<span class="keyword">const</span> <span class="keywordtype">char</span>* Statement);
+<a name="l00907"></a>00907 <span class="keyword">public</span>:
+<a name="l00923"></a>00923 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">sprintf</a>(
+<a name="l00924"></a>00924 <span class="keyword">const</span> <span class="keywordtype">char</span>* Format,
+<a name="l00925"></a>00925 ...
+<a name="l00926"></a>00926 );
+<a name="l00927"></a>00927 <span class="keyword">virtual</span> ~<a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>();
+<a name="l00937"></a>00937 <span class="keyword">static</span> <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>* <a class="code" href="classcSQLiteDatabase.html#a39756509bd68fd8e335cc9cc40c6f26">getInstance</a>();
+<a name="l00946"></a><a class="code" href="classcSQLiteDatabase.html#2119fbbf7a02c9c627038ddc14c9eb48">00946</a> <span class="keywordtype">int</span> <a class="code" href="classcSQLiteDatabase.html#2119fbbf7a02c9c627038ddc14c9eb48">getResultCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mRows-&gt;Count(); }
+<a name="l00955"></a>00955 <span class="keywordtype">long</span> <a class="code" href="classcSQLiteDatabase.html#408e5de345a74f2540ee1cea3c97cd51">getLastInsertRowID</a>() <span class="keyword">const</span>;
+<a name="l00965"></a><a class="code" href="classcSQLiteDatabase.html#4cd24d9d63173c54b63aadc7ada86e7e">00965</a> <a class="code" href="classcRows.html">cRows</a>* <a class="code" href="classcSQLiteDatabase.html#4cd24d9d63173c54b63aadc7ada86e7e">getResultRows</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mRows; }
+<a name="l00979"></a>00979 <span class="keywordtype">int</span> <a class="code" href="classcSQLiteDatabase.html#33ac864ee86fe3f08f66f1c14fcfc331">execStatement</a>(
+<a name="l00980"></a>00980 <span class="keyword">const</span> <span class="keywordtype">char</span>* Statement ,
+<a name="l00981"></a>00981 ...
+<a name="l00982"></a>00982 );
+<a name="l00991"></a>00991 <span class="keywordtype">void</span> <a class="code" href="classcSQLiteDatabase.html#5c481c06d73cff4f1192409bfc23a15a">startTransaction</a>();
+<a name="l01000"></a>01000 <span class="keywordtype">void</span> <a class="code" href="classcSQLiteDatabase.html#f11b7090ae824f7f3fc094dc7112323a">commitTransaction</a>();
+<a name="l01009"></a>01009 <span class="keywordtype">void</span> <a class="code" href="classcSQLiteDatabase.html#e20eff598832e1da41a8e915ee807548">rollbackTransaction</a>();
+<a name="l01021"></a><a class="code" href="classcSQLiteDatabase.html#b1749baadeb733ea3efdbbd9ffe83253">01021</a> <span class="keywordtype">void</span> <a class="code" href="classcSQLiteDatabase.html#b1749baadeb733ea3efdbbd9ffe83253">setAutoCommit</a>(
+<a name="l01022"></a>01022 <span class="keywordtype">bool</span> Commit=<span class="keyword">true</span>
+<a name="l01023"></a>01023 ){ this-&gt;mAutoCommit = Commit; }
+<a name="l01024"></a>01024 };
+<a name="l01025"></a>01025
+<a name="l01026"></a>01026 <span class="preprocessor">#endif </span><span class="comment">/* _DATABASE_H */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/dlna_8h-source.html b/doc/html/dlna_8h-source.html
new file mode 100644
index 0000000..4d15041
--- /dev/null
+++ b/doc/html/dlna_8h-source.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: upnpcomponents/dlna.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>upnpcomponents/dlna.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: dlna.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 18. April 2009, 23:27</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _DLNA_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _DLNA_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;vdr/channels.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;vdr/recording.h&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="keyword">class </span><a class="code" href="classcDlna.html">cDlna</a>;
+<a name="l00016"></a>00016
+<a name="l00023"></a><a class="code" href="classcRegisteredProfile.html">00023</a> <span class="keyword">class </span><a class="code" href="classcRegisteredProfile.html">cRegisteredProfile</a> : <span class="keyword">public</span> cListObject {
+<a name="l00024"></a>00024 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcDlna.html">cDlna</a>;
+<a name="l00025"></a>00025 <span class="keyword">private</span>:
+<a name="l00026"></a>00026 <a class="code" href="structDLNAProfile.html">DLNAProfile</a>* Profile;
+<a name="l00027"></a>00027 <span class="keywordtype">int</span> Operation;
+<a name="l00028"></a>00028 <span class="keyword">const</span> <span class="keywordtype">char</span>* PlaySpeeds;
+<a name="l00029"></a>00029 <span class="keywordtype">int</span> Conversion;
+<a name="l00030"></a>00030 <span class="keywordtype">int</span> PrimaryFlags;
+<a name="l00031"></a>00031 <span class="keyword">public</span>:
+<a name="l00032"></a>00032 <a class="code" href="classcRegisteredProfile.html">cRegisteredProfile</a>(){};
+<a name="l00033"></a>00033 <span class="keyword">virtual</span> ~<a class="code" href="classcRegisteredProfile.html">cRegisteredProfile</a>(){};
+<a name="l00034"></a>00034 };
+<a name="l00035"></a>00035
+<a name="l00043"></a><a class="code" href="classcDlna.html">00043</a> <span class="keyword">class </span><a class="code" href="classcDlna.html">cDlna</a> {
+<a name="l00044"></a>00044 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPServer.html">cUPnPServer</a>;
+<a name="l00045"></a>00045 <span class="keyword">public</span>:
+<a name="l00054"></a>00054 <span class="keyword">static</span> <a class="code" href="classcDlna.html">cDlna</a>* <a class="code" href="classcDlna.html#1e30449831b903d508dae6640039fc25">getInstance</a>(<span class="keywordtype">void</span>);
+<a name="l00055"></a>00055 <span class="keyword">virtual</span> ~<a class="code" href="classcDlna.html">cDlna</a>();
+<a name="l00056"></a>00056 <span class="comment">//const char* getProtocolInfo(UPnPObjectID OID);</span>
+<a name="l00065"></a>00065 <span class="comment"></span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcDlna.html#a7ae0cc7b651bc6ccd82ef5da527d09a">getDeviceDescription</a>(
+<a name="l00066"></a>00066 <span class="keyword">const</span> <span class="keywordtype">char</span>* URLBase
+<a name="l00067"></a>00067 );
+<a name="l00075"></a>00075 <span class="keywordtype">void</span> <a class="code" href="classcDlna.html#0250d3903e7dcbdc8ebadfacd4e6fb50">registerProfile</a>(
+<a name="l00076"></a>00076 <a class="code" href="structDLNAProfile.html">DLNAProfile</a>* Profile,
+<a name="l00077"></a>00077 <span class="keywordtype">int</span> Op = -1,
+<a name="l00078"></a>00078 <span class="keyword">const</span> <span class="keywordtype">char</span>* Ps = NULL,
+<a name="l00079"></a>00079 <span class="keywordtype">int</span> Ci = -1,
+<a name="l00080"></a>00080 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Flags = 0
+<a name="l00081"></a>00081 );
+<a name="l00087"></a>00087 <span class="keywordtype">void</span> <a class="code" href="classcDlna.html#e26b723ec63a60f397ce41bd95641dfa">registerMainProfiles</a>();
+<a name="l00096"></a>00096 <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcDlna.html#68a9565f022c7037c51ad337274d8c3a">getSupportedProtocols</a>();
+<a name="l00105"></a>00105 <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcDlna.html#992777f6c75dadd61bed6a75e03f1dfd">getProtocolInfo</a>(
+<a name="l00106"></a>00106 <a class="code" href="structDLNAProfile.html">DLNAProfile</a> *Prof
+<a name="l00107"></a>00107 );
+<a name="l00116"></a>00116 <a class="code" href="structDLNAProfile.html">DLNAProfile</a>* <a class="code" href="classcDlna.html#4eacc299d19fa20beba98d88d4230388">getProfileOfChannel</a>(
+<a name="l00117"></a>00117 cChannel* Channel
+<a name="l00118"></a>00118 );
+<a name="l00127"></a>00127 <a class="code" href="structDLNAProfile.html">DLNAProfile</a>* <a class="code" href="classcDlna.html#69dc71fe30130cafa399bb851ef5def8">getProfileOfRecording</a>(
+<a name="l00128"></a>00128 cRecording* Recording
+<a name="l00129"></a>00129 );
+<a name="l00138"></a>00138 <a class="code" href="structDLNAProfile.html">DLNAProfile</a>* <a class="code" href="classcDlna.html#4b5c30f707060b66c3980af70b7d8d08">getProfileOfFile</a>(
+<a name="l00139"></a>00139 cString File
+<a name="l00140"></a>00140 );
+<a name="l00141"></a>00141 <span class="keyword">private</span>:
+<a name="l00142"></a>00142 <span class="keyword">const</span> <span class="keywordtype">char</span>* getRegisteredProtocolInfoString(<a class="code" href="classcRegisteredProfile.html">cRegisteredProfile</a> *Profile);
+<a name="l00143"></a>00143 <a class="code" href="classcDlna.html">cDlna</a>();
+<a name="l00144"></a>00144 <span class="keywordtype">void</span> init(<span class="keywordtype">void</span>);
+<a name="l00145"></a>00145 <span class="keyword">static</span> <a class="code" href="classcDlna.html">cDlna</a>* mInstance;
+<a name="l00146"></a>00146 cList&lt;cRegisteredProfile&gt;* mRegisteredProfiles;
+<a name="l00147"></a>00147 };
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="preprocessor">#endif </span><span class="comment">/* _DLNA_H */</span>
+<a name="l00150"></a>00150
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
new file mode 100644
index 0000000..3767dc9
--- /dev/null
+++ b/doc/html/doxygen.css
@@ -0,0 +1,441 @@
+body, table, div, p, dl {
+ font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+ font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+ text-align: center;
+ font-size: 150%;
+}
+
+h2 {
+ font-size: 120%;
+}
+
+h3 {
+ font-size: 100%;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+div.qindex, div.navtab{
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #153788;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #1b77c5;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+}
+
+a.codeRef {
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+pre.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+
+td.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ border: 1px solid #CCCCCC;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+}
+
+td.indexvalue {
+ background-color: #e8eef2;
+ border: 1px solid #CCCCCC;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #f0f0f0;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+/* @end */
+
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+
+th.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+
+hr {
+ height: 0;
+ border: none;
+ border-top: 1px solid #666;
+}
+
+/* @group Member Descriptions */
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #FAFAFA;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+ border-top: 1px solid #ccc;
+}
+
+.memTemplParams {
+ color: #606060;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.memitem {
+ padding: 0;
+}
+
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+
+.memproto, .memdoc {
+ border: 1px solid #84b0c7;
+}
+
+.memproto {
+ padding: 0;
+ background-color: #d5e1e8;
+ font-weight: bold;
+ -webkit-border-top-left-radius: 8px;
+ -webkit-border-top-right-radius: 8px;
+ -moz-border-radius-topleft: 8px;
+ -moz-border-radius-topright: 8px;
+}
+
+.memdoc {
+ padding: 2px 5px;
+ background-color: #eef3f5;
+ border-top-width: 0;
+ -webkit-border-bottom-left-radius: 8px;
+ -webkit-border-bottom-right-radius: 8px;
+ -moz-border-radius-bottomleft: 8px;
+ -moz-border-radius-bottomright: 8px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+ font-family: sans-serif;
+ margin: 0.5em;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice. Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+ height: 61px;
+ background-repeat: no-repeat;
+ background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+ display: none;
+}
+*/
+
+.directory > h3 {
+ margin-top: 0;
+}
+
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+
+.directory div {
+ display: none;
+ margin: 0px;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+.directory-alt > h3 {
+ margin-top: 0;
+}
+
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+
+.directory-alt img {
+ vertical-align: -30%;
+}
+
+/* @end */
+
+address {
+ font-style: normal;
+ color: #333;
+}
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
new file mode 100644
index 0000000..f0a274b
--- /dev/null
+++ b/doc/html/doxygen.png
Binary files differ
diff --git a/doc/html/filehandle_8h-source.html b/doc/html/filehandle_8h-source.html
new file mode 100644
index 0000000..e8e4980
--- /dev/null
+++ b/doc/html/filehandle_8h-source.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: receiver/filehandle.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>receiver/filehandle.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: filehandle.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 15. Oktober 2009, 10:49</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _FILEHANDLE_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _FILEHANDLE_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;upnp/upnp.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00013"></a>00013
+<a name="l00020"></a><a class="code" href="classcFileHandle.html">00020</a> <span class="keyword">class </span><a class="code" href="classcFileHandle.html">cFileHandle</a> {
+<a name="l00021"></a>00021 <span class="keyword">public</span>:
+<a name="l00033"></a>00033 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">open</a>(
+<a name="l00034"></a>00034 UpnpOpenFileMode mode
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 ) = 0;
+<a name="l00050"></a>00050 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">read</a>(
+<a name="l00051"></a>00051 <span class="keywordtype">char</span>* buf,
+<a name="l00052"></a>00052 <span class="keywordtype">size_t</span> buflen
+<a name="l00053"></a>00053 ) = 0;
+<a name="l00066"></a>00066 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">write</a>(
+<a name="l00067"></a>00067 <span class="keywordtype">char</span>* buf,
+<a name="l00068"></a>00068 <span class="keywordtype">size_t</span> buflen
+<a name="l00069"></a>00069 ) = 0;
+<a name="l00090"></a>00090 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">seek</a>(
+<a name="l00091"></a>00091 off_t offset,
+<a name="l00092"></a>00092 <span class="keywordtype">int</span> whence
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 ) = 0;
+<a name="l00102"></a>00102 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">close</a>() = 0;
+<a name="l00103"></a>00103 <span class="keyword">virtual</span> ~<a class="code" href="classcFileHandle.html">cFileHandle</a>(){};
+<a name="l00104"></a>00104 <span class="keyword">private</span>:
+<a name="l00105"></a>00105 };
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="preprocessor">#endif </span><span class="comment">/* _FILEHANDLE_H */</span>
+<a name="l00108"></a>00108
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/files.html b/doc/html/files.html
new file mode 100644
index 0000000..d44abd1
--- /dev/null
+++ b/doc/html/files.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: File Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>File List</h1>Here is a list of all documented files with brief descriptions:<table>
+ <tr><td class="indexkey"><b>common.h</b> <a href="common_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>upnp.h</b> <a href="upnp_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">database/<b>database.h</b> <a href="database_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">database/<b>metadata.h</b> <a href="metadata_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">database/<b>object.h</b> <a href="object_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">database/<b>resources.h</b> <a href="resources_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">misc/<b>avdetector.h</b> <a href="avdetector_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">misc/<b>config.h</b> <a href="config_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">misc/<b>menusetup.h</b> <a href="menusetup_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">misc/<b>search.h</b> <a href="search_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">misc/<b>util.h</b> <a href="util_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">receiver/<b>filehandle.h</b> <a href="filehandle_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">receiver/<b>livereceiver.h</b> <a href="livereceiver_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">receiver/<b>recplayer.h</b> <a href="recplayer_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">server/<b>server.h</b> <a href="server_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">upnpcomponents/<b>connectionmanager.h</b> <a href="connectionmanager_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">upnpcomponents/<b>contentdirectory.h</b> <a href="contentdirectory_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">upnpcomponents/<b>dlna.h</b> <a href="dlna_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">upnpcomponents/<b>upnpservice.h</b> <a href="upnpservice_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">upnpcomponents/<b>upnpwebserver.h</b> <a href="upnpwebserver_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions.html b/doc/html/functions.html
new file mode 100644
index 0000000..29e1da5
--- /dev/null
+++ b/doc/html/functions.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_ID
+: <a class="el" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c">cUPnPObjectID</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x61.html b/doc/html/functions_0x61.html
new file mode 100644
index 0000000..7b10030
--- /dev/null
+++ b/doc/html/functions_0x61.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li class="current"><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>Action()
+: <a class="el" href="classcLiveReceiver.html#5c1f30f48fdc612c19ff4b9b4c176b07">cLiveReceiver</a>
+<li>Activate()
+: <a class="el" href="classcLiveReceiver.html#631c7392c3226b07ba654875580fb26c">cLiveReceiver</a>
+<li>Active()
+: <a class="el" href="classcPluginUpnp.html#6b220cadefe502e7dfa4d70acea35083">cPluginUpnp</a>
+<li>addCreateClass()
+: <a class="el" href="classcUPnPClassContainer.html#55613e5fa7019137aa818036e91a0811">cUPnPClassContainer</a>
+<li>addFastFind()
+: <a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">cMediaDatabase</a>
+<li>addObject()
+: <a class="el" href="classcUPnPClassContainer.html#589392682fb7c8e698d09b2eeca83887">cUPnPClassContainer</a>
+<li>addResource()
+: <a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">cUPnPClassObject</a>
+<li>addSearchClass()
+: <a class="el" href="classcUPnPClassContainer.html#d177af2487ff337fe79ef11fe1e07dd1">cUPnPClassContainer</a>
+<li>autoDetectSettings()
+: <a class="el" href="classcUPnPServer.html#783f27c1997257539ccb8ff7ade815be">cUPnPServer</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html
new file mode 100644
index 0000000..88a9611
--- /dev/null
+++ b/doc/html/functions_0x62.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li class="current"><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>bitDepth
+: <a class="el" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3">DLNAIconProfile</a>
+<li>browse()
+: <a class="el" href="classcMediaDatabase.html#25ff666113dbe72598e4ef4e23af5d8f">cMediaDatabase</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html
new file mode 100644
index 0000000..7fa685c
--- /dev/null
+++ b/doc/html/functions_0x63.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li class="current"><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>cConnectionManager()
+: <a class="el" href="classcConnectionManager.html#2d6d4af3110c40c399a3e4e203283ff1">cConnectionManager</a>
+<li>cContentDirectory()
+: <a class="el" href="classcContentDirectory.html#aca0fe0cffa30b1040719720ff4b82a2">cContentDirectory</a>
+<li>clearObject()
+: <a class="el" href="classcUPnPObjectFactory.html#947c7256906b4dbe63d156723cdc38be">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">cUPnPObjectMediator</a>
+, <a class="el" href="classcMediatorInterface.html#cd087c690154d43ac5ef92c5a42f2349">cMediatorInterface</a>
+<li>clearSortCriteria()
+: <a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">cUPnPClassObject</a>
+<li>close()
+: <a class="el" href="classcLiveReceiver.html#5b8beb2bc6809aacbdb087e31e836a27">cLiveReceiver</a>
+, <a class="el" href="classcRecordingPlayer.html#5e81aeecd16f89e432690a9b05d8dd6a">cRecordingPlayer</a>
+, <a class="el" href="classcUPnPWebServer.html#79d080eaf445325b7f8759dfb0744c26">cUPnPWebServer</a>
+, <a class="el" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">cFileHandle</a>
+<li>cMediaDatabase()
+: <a class="el" href="classcMediaDatabase.html#ace0720fbddbdd7f2e4ca5ad16d5acd2">cMediaDatabase</a>
+<li>CommandLineHelp()
+: <a class="el" href="classcPluginUpnp.html#e2e63843aab64e06ce9b533f4893f7e0">cPluginUpnp</a>
+<li>commitTransaction()
+: <a class="el" href="classcSQLiteDatabase.html#f11b7090ae824f7f3fc094dc7112323a">cSQLiteDatabase</a>
+<li>Compare()
+: <a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">cUPnPClassObject</a>
+<li>Count()
+: <a class="el" href="classcRow.html#88b64cc4fcf8f0974f2cf11e875fbaf4">cRow</a>
+<li>createDIDLFragment()
+: <a class="el" href="classcUPnPClassObject.html#9090f5982129bc5aa15c6e19db627445">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassContainer.html#fec5b0bae4ed2d194bfc9973f14a3926">cUPnPClassContainer</a>
+<li>createFromChannel()
+: <a class="el" href="classcUPnPResources.html#974dd63afd52b87732800b7cf578a387">cUPnPResources</a>
+<li>createFromFile()
+: <a class="el" href="classcUPnPResources.html#b2bac789a9caf023940dfc02a079c249">cUPnPResources</a>
+<li>createFromRecording()
+: <a class="el" href="classcUPnPResources.html#47b243391bc9e1867bc16d4307f2af8a">cUPnPResources</a>
+<li>createObject()
+: <a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcMediatorInterface.html#68a8350f7ea5ccd2496580035228b1fc">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#c71bbdb30be6b0fd17f67b8850aeccdb">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#751177c725da94b1b91f6cda4645844d">cUPnPContainerMediator</a>
+<li>cUPnPClassContainer()
+: <a class="el" href="classcUPnPClassContainer.html#e485882089f12f383ddbea26e186d851">cUPnPClassContainer</a>
+<li>cUPnPClassItem()
+: <a class="el" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a>
+<li>cUPnPClassMovie()
+: <a class="el" href="classcUPnPClassMovie.html#7343932df4e5bfd9821e16026cb7c66d">cUPnPClassMovie</a>
+<li>cUPnPClassVideoBroadcast()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#a8d1e73bc9cbb20da6727f3c2e823d79">cUPnPClassVideoBroadcast</a>
+<li>cUPnPClassVideoItem()
+: <a class="el" href="classcUPnPClassVideoItem.html#38ce1c18cc9d474791255fdcb43824d2">cUPnPClassVideoItem</a>
+<li>cUPnPContainerMediator()
+: <a class="el" href="classcUPnPContainerMediator.html#e6fce4835ea40a77b401a093f65b5822">cUPnPContainerMediator</a>
+<li>cUPnPItemMediator()
+: <a class="el" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a>
+<li>cUPnPMovieMediator()
+: <a class="el" href="classcUPnPMovieMediator.html#aa40d0f4054d6b90b2cbb0fe6bd8ac38">cUPnPMovieMediator</a>
+<li>cUPnPObjectID()
+: <a class="el" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">cUPnPObjectID</a>
+<li>cUPnPObjectMediator()
+: <a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>
+<li>cUPnPServer()
+: <a class="el" href="classcUPnPServer.html#e0277b2231f10e66a5c6ce9acb42fcd0">cUPnPServer</a>
+<li>cUPnPVideoBroadcastMediator()
+: <a class="el" href="classcUPnPVideoBroadcastMediator.html#58179b50ee5a5952cff70aa4473845f9">cUPnPVideoBroadcastMediator</a>
+<li>cUPnPVideoItemMediator()
+: <a class="el" href="classcUPnPVideoItemMediator.html#1f56334e155773b6c3d86f481f4ad96b">cUPnPVideoItemMediator</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html
new file mode 100644
index 0000000..05a5c5c
--- /dev/null
+++ b/doc/html/functions_0x64.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li class="current"><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>databaseToObject()
+: <a class="el" href="classcUPnPObjectMediator.html#07a6a1d2694fb2f4573bd50374406b24">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#1f3645ebe0a33a81d0b3f22060dc4761">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#79f483b48f596047ed9549f0b036f35b">cUPnPContainerMediator</a>
+<li>delCreateClass()
+: <a class="el" href="classcUPnPClassContainer.html#23c2949d1cb925423a6b113cf0021a5f">cUPnPClassContainer</a>
+<li>deleteObject()
+: <a class="el" href="classcMediatorInterface.html#ffbddb7fe72554b9cde9d02648cf8f0e">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#10198e67d9da1f964aa895cd463b2f92">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">cUPnPObjectMediator</a>
+<li>delSearchClass()
+: <a class="el" href="classcUPnPClassContainer.html#3cfb0c2035e678cde990631b804d4ab2">cUPnPClassContainer</a>
+<li>Description()
+: <a class="el" href="classcPluginUpnp.html#6fc36c7fdf1f0deed776897725bcda9b">cPluginUpnp</a>
+<li>detectVideoProperties()
+: <a class="el" href="classcAudioVideoDetector.html#0a376b4d1421f0d799189d4e03c4cbcc">cAudioVideoDetector</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html
new file mode 100644
index 0000000..2bf087c
--- /dev/null
+++ b/doc/html/functions_0x65.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li class="current"><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>enable()
+: <a class="el" href="classcUPnPServer.html#4935ab1fbcc03279193e0f9fa675fb8b">cUPnPServer</a>
+<li>execStatement()
+: <a class="el" href="classcSQLiteDatabase.html#33ac864ee86fe3f08f66f1c14fcfc331">cSQLiteDatabase</a>
+<li>execute()
+: <a class="el" href="classcContentDirectory.html#a0225df761512819b9c46f45b2a0f0d0">cContentDirectory</a>
+, <a class="el" href="classcConnectionManager.html#12fa6b0a9e20c3af663e3ca2b3c97dfb">cConnectionManager</a>
+, <a class="el" href="classcUpnpService.html#bbffca233e6aa193eda223cb7bfc2917">cUpnpService</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html
new file mode 100644
index 0000000..9ba5cfe
--- /dev/null
+++ b/doc/html/functions_0x66.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li class="current"><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>fetchColumn()
+: <a class="el" href="classcRow.html#4b1e1e5ffe36d35c61476bc2e4ef4eb1">cRow</a>
+<li>fetchRow()
+: <a class="el" href="classcRows.html#03a454862807c81280fd7b87b35ba19e">cRows</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html
new file mode 100644
index 0000000..a24a4be
--- /dev/null
+++ b/doc/html/functions_0x67.html
@@ -0,0 +1,234 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li class="current"><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>get()
+: <a class="el" href="classcUPnPConfig.html#3949dcc8a418edb8a0ece2dce62f515c">cUPnPConfig</a>
+<li>getActors()
+: <a class="el" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">cUPnPClassVideoItem</a>
+<li>getBitrate()
+: <a class="el" href="classcUPnPResource.html#3f2f3d5c447fee28d3dff5cf739e4c98">cUPnPResource</a>
+<li>getBitsPerSample()
+: <a class="el" href="classcUPnPResource.html#3efd82888fd648dd08b5d43520638d17">cUPnPResource</a>
+<li>getChannelName()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#b63ea63a4ab8ac3cb654b0bab4df620a">cUPnPClassVideoBroadcast</a>
+<li>getChannelNr()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#6065509557e13176878098861fcfeb9d">cUPnPClassVideoBroadcast</a>
+<li>getChildCount()
+: <a class="el" href="classcUPnPClassContainer.html#b23a80cebe626e0b2b6c3b1a83b039c6">cUPnPClassContainer</a>
+<li>getClass()
+: <a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">cUPnPClassObject</a>
+<li>getColorDepth()
+: <a class="el" href="classcUPnPResource.html#276eddcc28bad31d6178cf109373074a">cUPnPResource</a>
+<li>getConfigDirectory()
+: <a class="el" href="classcPluginUpnp.html#ac2101984519b848cc04370b5527c145">cPluginUpnp</a>
+<li>getContainer()
+: <a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassContainer.html#32eb7f1d0b3821f0d9573fe59befdf10">cUPnPClassContainer</a>
+<li>getContainerType()
+: <a class="el" href="classcUPnPClassContainer.html#b4977eba812c34a4201935f31be0f5c9">cUPnPClassContainer</a>
+<li>getContainerUpdateIDs()
+: <a class="el" href="classcMediaDatabase.html#dadd330e273e0f354d51b76cee436198">cMediaDatabase</a>
+<li>getContentType()
+: <a class="el" href="classcUPnPResource.html#6aeaaf476c5d6548b15bb381c032b815">cUPnPResource</a>
+<li>getCreateClasses()
+: <a class="el" href="classcUPnPClassContainer.html#d9a875daad1093311723262f5f6c1f7c">cUPnPClassContainer</a>
+<li>getCreator()
+: <a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">cUPnPClassObject</a>
+<li>getDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">cUPnPClassVideoItem</a>
+<li>getDeviceDescription()
+: <a class="el" href="classcDlna.html#a7ae0cc7b651bc6ccd82ef5da527d09a">cDlna</a>
+<li>getDirectors()
+: <a class="el" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">cUPnPClassVideoItem</a>
+<li>getDuration()
+: <a class="el" href="classcUPnPResource.html#5da7e39c5fc76f5607c232319daa135c">cUPnPResource</a>
+<li>getDVDRegionCode()
+: <a class="el" href="classcUPnPClassMovie.html#80a41ba769974e80635b80aa3c41f66d">cUPnPClassMovie</a>
+<li>getFileSize()
+: <a class="el" href="classcUPnPResource.html#5cabb363c4fd0785d3f073011df835e9">cUPnPResource</a>
+<li>getGenre()
+: <a class="el" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">cUPnPClassVideoItem</a>
+<li>getIcon()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#f4c2a9f5d62e41d853385b7b7685d536">cUPnPClassVideoBroadcast</a>
+<li>getID()
+: <a class="el" href="classcUPnPResource.html#47ad15c119fbcfdda1bc5f60d0a3efc9">cUPnPResource</a>
+, <a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">cUPnPClassObject</a>
+<li>getImportURI()
+: <a class="el" href="classcUPnPResource.html#04ab0d214e39ddfa18339926cef9fd64">cUPnPResource</a>
+<li>getInfo()
+: <a class="el" href="classcUPnPWebServer.html#0540de6d9f111756593d202f30102ffb">cUPnPWebServer</a>
+<li>getInstance()
+: <a class="el" href="classcUPnPResources.html#c3136b664928d2214e76e0e65a4ace6a">cUPnPResources</a>
+, <a class="el" href="classcDlna.html#1e30449831b903d508dae6640039fc25">cDlna</a>
+, <a class="el" href="classcUPnPWebServer.html#59fb8d378eae0193665b51fdda5a4da0">cUPnPWebServer</a>
+, <a class="el" href="classcSQLiteDatabase.html#a39756509bd68fd8e335cc9cc40c6f26">cSQLiteDatabase</a>
+, <a class="el" href="classcUPnPObjectFactory.html#5b99e366dad18ab44ee1d2da5f1c3b4d">cUPnPObjectFactory</a>
+<li>getInterface()
+: <a class="el" href="classcUPnPServer.html#e28dd555ac861850c9a2bbd22d9a7d3a">cUPnPServer</a>
+<li>getLanguage()
+: <a class="el" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">cUPnPClassVideoItem</a>
+<li>getLastInsertRowID()
+: <a class="el" href="classcSQLiteDatabase.html#408e5de345a74f2540ee1cea3c97cd51">cSQLiteDatabase</a>
+<li>getLastModification()
+: <a class="el" href="classcUPnPResource.html#c95a8fe0bdba2c371a46e4e267dab1aa">cUPnPResource</a>
+<li>getLongDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">cUPnPClassVideoItem</a>
+<li>getNrAudioChannels()
+: <a class="el" href="classcUPnPResource.html#ff18e089f421d710580292f0b91b40f8">cUPnPResource</a>
+<li>getObject()
+: <a class="el" href="classcUPnPClassContainer.html#b2d43f5d5b6ad40d444b7e353979451d">cUPnPClassContainer</a>
+, <a class="el" href="classcMediatorInterface.html#716ad95bf6ac5a10e9409ced7a63a9d8">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#a26f57549c26c6fc15425158e7fda4b6">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#78b71f96fb4289dc78f897d6282078d6">cUPnPContainerMediator</a>
+<li>getObjectByFastFind()
+: <a class="el" href="classcMediaDatabase.html#b0fac893d82c29276d68b94569cfef1d">cMediaDatabase</a>
+<li>getObjectByID()
+: <a class="el" href="classcMediaDatabase.html#b8da7da9612c64de0ddf88db3c316d5a">cMediaDatabase</a>
+<li>getObjectList()
+: <a class="el" href="classcUPnPClassContainer.html#ba09b831bbb533d1dbcb6cff4f4b9c23">cUPnPClassContainer</a>
+<li>getParent()
+: <a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">cUPnPClassObject</a>
+<li>getParentID()
+: <a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">cUPnPClassObject</a>
+<li>getProducers()
+: <a class="el" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">cUPnPClassVideoItem</a>
+<li>getProfileOfChannel()
+: <a class="el" href="classcDlna.html#4eacc299d19fa20beba98d88d4230388">cDlna</a>
+<li>getProfileOfFile()
+: <a class="el" href="classcDlna.html#4b5c30f707060b66c3980af70b7d8d08">cDlna</a>
+<li>getProfileOfRecording()
+: <a class="el" href="classcDlna.html#69dc71fe30130cafa399bb851ef5def8">cDlna</a>
+<li>getProperty()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">cUPnPClassVideoBroadcast</a>
+, <a class="el" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">cUPnPClassMovie</a>
+, <a class="el" href="classcUPnPClassObject.html#539cf36abc96b95bc8437601fed8a0f6">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#31f7010baa65cc25b95a864f05eb4e62">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassContainer.html#f70297d2275e083f05024524d21118d7">cUPnPClassContainer</a>
+, <a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">cUPnPClassVideoItem</a>
+<li>getPropertyList()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">cUPnPClassVideoBroadcast</a>
+, <a class="el" href="classcUPnPClassObject.html#4a4d2cd2e59d364050bb64a3d9dced6e">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#add0c9d378036e270e6f99d8d1409e3b">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">cUPnPClassVideoItem</a>
+, <a class="el" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">cUPnPClassMovie</a>
+, <a class="el" href="classcUPnPClassContainer.html#d952c993314a9352d13f644bb95fbdc2">cUPnPClassContainer</a>
+<li>getProtocolInfo()
+: <a class="el" href="classcDlna.html#992777f6c75dadd61bed6a75e03f1dfd">cDlna</a>
+, <a class="el" href="classcUPnPResource.html#0ff5e61a2d07873ae2ebdab7d87b3d9f">cUPnPResource</a>
+<li>getPublishers()
+: <a class="el" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">cUPnPClassVideoItem</a>
+<li>getRating()
+: <a class="el" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">cUPnPClassVideoItem</a>
+<li>getReference()
+: <a class="el" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">cUPnPClassItem</a>
+<li>getReferenceID()
+: <a class="el" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">cUPnPClassItem</a>
+<li>getRegion()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#f4582c82588879c110947fdfc50b7895">cUPnPClassVideoBroadcast</a>
+<li>getRelations()
+: <a class="el" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">cUPnPClassVideoItem</a>
+<li>getResolution()
+: <a class="el" href="classcUPnPResource.html#27d5140dc72a8e034ce197913d6aa1d5">cUPnPResource</a>
+<li>getResource()
+: <a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPResources.html#cfec64e65fa14c1efb653c9c4fbbc609">cUPnPResources</a>
+, <a class="el" href="classcUPnPResource.html#b648a88993b0e5a4421514f45a5b266f">cUPnPResource</a>
+, <a class="el" href="classcUPnPResourceMediator.html#9d4d8cc5eafb18b13ad7d14793d3f9de">cUPnPResourceMediator</a>
+<li>getResources()
+: <a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">cUPnPClassObject</a>
+<li>getResourcesOfObject()
+: <a class="el" href="classcUPnPResources.html#5da9137336fa284040a823f53267b837">cUPnPResources</a>
+<li>getResourceType()
+: <a class="el" href="classcUPnPResource.html#6b6855ba6d4bd06805750ede92449c8d">cUPnPResource</a>
+<li>getResultCount()
+: <a class="el" href="classcSQLiteDatabase.html#2119fbbf7a02c9c627038ddc14c9eb48">cSQLiteDatabase</a>
+<li>getResultRows()
+: <a class="el" href="classcSQLiteDatabase.html#4cd24d9d63173c54b63aadc7ada86e7e">cSQLiteDatabase</a>
+<li>getSampleFrequency()
+: <a class="el" href="classcUPnPResource.html#5ea6003b282c48f575bc54f5c9658ca9">cUPnPResource</a>
+<li>getSearchClasses()
+: <a class="el" href="classcUPnPClassContainer.html#735327b72c023d3048db0d4fd2a608cc">cUPnPClassContainer</a>
+<li>getServerAddress()
+: <a class="el" href="classcUPnPServer.html#f938922eff48ca1035e88677e095c0c4">cUPnPServer</a>
+<li>getSize()
+: <a class="el" href="classcUPnPResource.html#361f6991a29dddf575a2b0b63ce5a66a">cUPnPResource</a>
+<li>getStorageMedium()
+: <a class="el" href="classcUPnPClassMovie.html#9fc36c7e0a1a465ec720b219a1710cc6">cUPnPClassMovie</a>
+<li>getSupportedProtocols()
+: <a class="el" href="classcDlna.html#68a9565f022c7037c51ad337274d8c3a">cDlna</a>
+<li>getSystemUpdateID()
+: <a class="el" href="classcMediaDatabase.html#96232caa30b80d4e3ca667c317101fd0">cMediaDatabase</a>
+<li>getTitle()
+: <a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">cUPnPClassObject</a>
+<li>getUpdateID()
+: <a class="el" href="classcUPnPClassContainer.html#475ad1a2003cc9b169685f825a9d790d">cUPnPClassContainer</a>
+<li>getWriteStatus()
+: <a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">cUPnPClassObject</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html
new file mode 100644
index 0000000..224ddf0
--- /dev/null
+++ b/doc/html/functions_0x68.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li class="current"><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb">DLNAIconProfile</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html
new file mode 100644
index 0000000..371b129
--- /dev/null
+++ b/doc/html/functions_0x69.html
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li class="current"><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>ID
+: <a class="el" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a">DLNAProfile</a>
+, <a class="el" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd">cClass</a>
+<li>includeDerived
+: <a class="el" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8">cClass</a>
+<li>init()
+: <a class="el" href="classcUPnPWebServer.html#a374ec8a84405fb2ee16dc00ba0218f5">cUPnPWebServer</a>
+<li>Initialize()
+: <a class="el" href="classcPluginUpnp.html#3f3daf1d0cd8d176cf1a349b9de10df7">cPluginUpnp</a>
+<li>initializeObject()
+: <a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">cUPnPObjectMediator</a>
+<li>isAutoDetectionEnabled()
+: <a class="el" href="classcUPnPServer.html#389ffe474f61ec18b6f99dd02a9c31e4">cUPnPServer</a>
+<li>isContainer()
+: <a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">cUPnPClassObject</a>
+<li>isEnabled()
+: <a class="el" href="classcUPnPServer.html#fbaaebd4496e98106c2d9be4c2512a66">cUPnPServer</a>
+<li>isRestricted()
+: <a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">cUPnPClassObject</a>
+<li>isRunning()
+: <a class="el" href="classcUPnPServer.html#af5358b41e19ba2917371c2d118d0145">cUPnPServer</a>
+<li>isSearchable()
+: <a class="el" href="classcUPnPClassContainer.html#c6d1de26df91d64379a9a2db1f5a7301">cUPnPClassContainer</a>
+<li>isUpdated()
+: <a class="el" href="classcUPnPClassContainer.html#a8ae4e790074d3a34bc7ec173a02595a">cUPnPClassContainer</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html
new file mode 100644
index 0000000..d66ec15
--- /dev/null
+++ b/doc/html/functions_0x6c.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li class="current"><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>Load()
+: <a class="el" href="classcMenuSetupUPnP.html#6f3e5ab68db53ce74ec81af07671d00e">cMenuSetupUPnP</a>
+<li>loadResources()
+: <a class="el" href="classcUPnPResources.html#eaffc72ee9faeb046a41b965ce61507f">cUPnPResources</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html
new file mode 100644
index 0000000..3d35625
--- /dev/null
+++ b/doc/html/functions_0x6d.html
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li class="current"><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>mActors
+: <a class="el" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8">cUPnPClassVideoItem</a>
+<li>mAddress
+: <a class="el" href="classcUPnPConfig.html#0d7d7eb8d1ae9fffab39b39d1c9f10dd">cUPnPConfig</a>
+<li>mAutoSetup
+: <a class="el" href="classcUPnPConfig.html#da3ca113e9f1946fd1c09ebdcdcde0af">cUPnPConfig</a>
+<li>mChannelName
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#aae072a7d7a21b699561a62700971c26">cUPnPClassVideoBroadcast</a>
+<li>mChannelNr
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#8ad5b61bf9e88e1b30a132ca72b0d905">cUPnPClassVideoBroadcast</a>
+<li>mChildren
+: <a class="el" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7">cUPnPClassContainer</a>
+<li>mChildrenID
+: <a class="el" href="classcUPnPClassContainer.html#df514e47f80f94f957ec451e566107a5">cUPnPClassContainer</a>
+<li>mClass
+: <a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">cUPnPClassObject</a>
+<li>mContainerType
+: <a class="el" href="classcUPnPClassContainer.html#0e4678ea867811f9c5e70e018992c8c8">cUPnPClassContainer</a>
+<li>mCreateClasses
+: <a class="el" href="classcUPnPClassContainer.html#aa82cb4dae2c818609e60468e2ea6de4">cUPnPClassContainer</a>
+<li>mCreator
+: <a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">cUPnPClassObject</a>
+<li>mDatabase
+: <a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">cUPnPObjectMediator</a>
+<li>mDescription
+: <a class="el" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e">cUPnPClassVideoItem</a>
+<li>mDeviceHandle
+: <a class="el" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea">cUpnpService</a>
+<li>mDIDLFragment
+: <a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">cUPnPClassObject</a>
+<li>mDirectors
+: <a class="el" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad">cUPnPClassVideoItem</a>
+<li>mDVDRegionCode
+: <a class="el" href="classcUPnPClassMovie.html#90cc86f3eb248bbea4b3bf845862455f">cUPnPClassMovie</a>
+<li>mEnable
+: <a class="el" href="classcUPnPConfig.html#6861c1183545e44a7d33e17440f4cd8c">cUPnPConfig</a>
+<li>mGenre
+: <a class="el" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3">cUPnPClassVideoItem</a>
+<li>mIcon
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#24aa59d4c90d705f651cddf4ed90ad73">cUPnPClassVideoBroadcast</a>
+<li>mID
+: <a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">cUPnPClassObject</a>
+<li>mime
+: <a class="el" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41">DLNAProfile</a>
+, <a class="el" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509">DLNAIconProfile</a>
+<li>mInterface
+: <a class="el" href="classcUPnPConfig.html#dd0afbf876c2625acc52cfd8fd8b6a7c">cUPnPConfig</a>
+<li>mLanguage
+: <a class="el" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471">cUPnPClassVideoItem</a>
+<li>mLastModified
+: <a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">cUPnPClassObject</a>
+<li>mLongDescription
+: <a class="el" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59">cUPnPClassVideoItem</a>
+<li>mMediaDatabase
+: <a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">cUPnPObjectMediator</a>
+<li>mNumberReturned
+: <a class="el" href="structcUPnPResultSet.html#94b5bc7673773e674a81d0c5adc7f4e7">cUPnPResultSet</a>
+<li>modified()
+: <a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">cUPnPClassObject</a>
+<li>mParent
+: <a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">cUPnPClassObject</a>
+<li>mPort
+: <a class="el" href="classcUPnPConfig.html#93224ed337b1f74525a68c5159532cb3">cUPnPConfig</a>
+<li>mProducers
+: <a class="el" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0">cUPnPClassVideoItem</a>
+<li>mPublishers
+: <a class="el" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e">cUPnPClassVideoItem</a>
+<li>mRating
+: <a class="el" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9">cUPnPClassVideoItem</a>
+<li>mReference
+: <a class="el" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">cUPnPClassItem</a>
+<li>mRegion
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#9a9420e700fd45afd24beba8ae261909">cUPnPClassVideoBroadcast</a>
+<li>mRelations
+: <a class="el" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97">cUPnPClassVideoItem</a>
+<li>mResources
+: <a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">cUPnPClassObject</a>
+<li>mResourcesID
+: <a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">cUPnPClassObject</a>
+<li>mRestricted
+: <a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">cUPnPClassObject</a>
+<li>mResult
+: <a class="el" href="structcUPnPResultSet.html#7e891eca2a37daea6285d2f7a2731c1d">cUPnPResultSet</a>
+<li>mSearchable
+: <a class="el" href="classcUPnPClassContainer.html#640da8763c5ce432b46125faa3be01da">cUPnPClassContainer</a>
+<li>mSearchClasses
+: <a class="el" href="classcUPnPClassContainer.html#5b66ce95c06498c6166b856d015139b5">cUPnPClassContainer</a>
+<li>mSortCriteria
+: <a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">cUPnPClassObject</a>
+<li>mSortDescending
+: <a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">cUPnPClassObject</a>
+<li>mStorageMedium
+: <a class="el" href="classcUPnPClassMovie.html#a9bcda545b8ce19e3b613757b3759127">cUPnPClassMovie</a>
+<li>mTitle
+: <a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">cUPnPClassObject</a>
+<li>mTotalMatches
+: <a class="el" href="structcUPnPResultSet.html#78bd90b56bfc5804e54df6579cd8e541">cUPnPResultSet</a>
+<li>mUpdateID
+: <a class="el" href="classcUPnPClassContainer.html#8cdeed9b80cae365174680dd4196664f">cUPnPClassContainer</a>
+<li>mWriteStatus
+: <a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">cUPnPClassObject</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html
new file mode 100644
index 0000000..2b0cf68
--- /dev/null
+++ b/doc/html/functions_0x6e.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li class="current"><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>newInstance()
+: <a class="el" href="classcLiveReceiver.html#1e28c50bb73404597b2363422e038c12">cLiveReceiver</a>
+, <a class="el" href="classcRecordingPlayer.html#59abdfe4e4339943afbd713d2fb35e40">cRecordingPlayer</a>
+<li>newResource()
+: <a class="el" href="classcUPnPResourceMediator.html#14367dd7e160f6c6812279b84a4fa8e2">cUPnPResourceMediator</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html
new file mode 100644
index 0000000..094c789
--- /dev/null
+++ b/doc/html/functions_0x6f.html
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li class="current"><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>objectToDatabase()
+: <a class="el" href="classcUPnPObjectMediator.html#c44c010895f92adc63af2a2d34cf34c8">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#6d954b1cfdc4a7d55981c6ebff9d6d04">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#1caa4625fca42940ba36999a71ac49ec">cUPnPContainerMediator</a>
+<li>open()
+: <a class="el" href="classcLiveReceiver.html#b8e751f641be1da4a925106e3dd062e9">cLiveReceiver</a>
+, <a class="el" href="classcRecordingPlayer.html#e7ad4362d821f38db5143c0aeff15d97">cRecordingPlayer</a>
+, <a class="el" href="classcUPnPWebServer.html#5f9d44729464cab3e8bf74e4457dbb24">cUPnPWebServer</a>
+, <a class="el" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">cFileHandle</a>
+<li>operator int()
+: <a class="el" href="structcUPnPObjectID.html#73ff8d0e18486552dbfbf828a2e7bc7c">cUPnPObjectID</a>
+<li>operator long()
+: <a class="el" href="structcUPnPObjectID.html#d5659a7a9f7cfc7dd6ae0911ebd5e03c">cUPnPObjectID</a>
+<li>operator unsigned int()
+: <a class="el" href="structcUPnPObjectID.html#daa4eae524c68f1f85b8d82d16568d10">cUPnPObjectID</a>
+<li>operator!=()
+: <a class="el" href="structcUPnPObjectID.html#d55b5dc94c58d56762c602de5dd99790">cUPnPObjectID</a>
+, <a class="el" href="structcClass.html#1de09f337ef261d363f261f83a3cf7ae">cClass</a>
+, <a class="el" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">cUPnPObjectID</a>
+<li>operator*()
+: <a class="el" href="structcUPnPObjectID.html#33e67c6f297892763b5a4a41cd435490">cUPnPObjectID</a>
+<li>operator++()
+: <a class="el" href="structcUPnPObjectID.html#d46000a3acdd6f522bf3b86e48d47ddf">cUPnPObjectID</a>
+<li>operator--()
+: <a class="el" href="structcUPnPObjectID.html#3e6872234bfd011a720b7847190dfdb9">cUPnPObjectID</a>
+<li>operator=()
+: <a class="el" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">cUPnPObjectID</a>
+<li>operator==()
+: <a class="el" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">cUPnPObjectID</a>
+, <a class="el" href="structcClass.html#22a5df5fd2bfc9e7b58018a6b8d45309">cClass</a>
+, <a class="el" href="structcUPnPObjectID.html#18cf7d50a8ae1b6d2034e88fef78e23f">cUPnPObjectID</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html
new file mode 100644
index 0000000..17e672b
--- /dev/null
+++ b/doc/html/functions_0x70.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li class="current"><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>parse()
+: <a class="el" href="classcPathParser.html#83229f6ecd4254d7ed145573eae7967a">cPathParser</a>
+, <a class="el" href="classcSortCriteria.html#818579ec634d8b6f670a55545970b9e7">cSortCriteria</a>
+, <a class="el" href="classcFilterCriteria.html#e327772fdf9f8db127c7ce1a737f1c7c">cFilterCriteria</a>
+<li>parseIntegerValue()
+: <a class="el" href="classcUpnpService.html#846cd44a1c014395278c3af339122656">cUpnpService</a>
+<li>parseSetup()
+: <a class="el" href="classcUPnPConfig.html#3ac0d1253dba86cb4630bc1e29a9fe10">cUPnPConfig</a>
+<li>parseStringValue()
+: <a class="el" href="classcUpnpService.html#925b7a9628230ce69b803afb8fee212f">cUpnpService</a>
+<li>processArgs()
+: <a class="el" href="classcUPnPConfig.html#19689798911a39c47958e819c33d4b09">cUPnPConfig</a>
+<li>ProcessArgs()
+: <a class="el" href="classcPluginUpnp.html#acbc8a8b3f67d08ed20ff1c8beaa4fe2">cPluginUpnp</a>
+<li>ProcessKey()
+: <a class="el" href="classcMenuSetupUPnP.html#5a6d78afea79d330e710d09b808d5240">cMenuSetupUPnP</a>
+<li>Property
+: <a class="el" href="structcSortCrit.html#fedfdc7edd9ec85496338f52df0a04d1">cSortCrit</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html
new file mode 100644
index 0000000..263c2e5
--- /dev/null
+++ b/doc/html/functions_0x72.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li class="current"><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>read()
+: <a class="el" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">cFileHandle</a>
+, <a class="el" href="classcLiveReceiver.html#4a19e1fd4e1d043fb091bfb01a9cbf08">cLiveReceiver</a>
+, <a class="el" href="classcUPnPWebServer.html#7bdaa921f11a40da60c5fc99f577a017">cUPnPWebServer</a>
+, <a class="el" href="classcRecordingPlayer.html#e0fda8b0be8e47133698f1763e649b3d">cRecordingPlayer</a>
+<li>Receive()
+: <a class="el" href="classcLiveReceiver.html#c8bc191994b0acd3fa2d23b26f996f8a">cLiveReceiver</a>
+<li>registerMainProfiles()
+: <a class="el" href="classcDlna.html#e26b723ec63a60f397ce41bd95641dfa">cDlna</a>
+<li>registerMediator()
+: <a class="el" href="classcUPnPObjectFactory.html#f2b20dffcd46c08d5b2de4b6807e0689">cUPnPObjectFactory</a>
+<li>registerProfile()
+: <a class="el" href="classcDlna.html#0250d3903e7dcbdc8ebadfacd4e6fb50">cDlna</a>
+<li>removeObject()
+: <a class="el" href="classcUPnPClassContainer.html#2e3110bd01c17df34cd60302d9330e72">cUPnPClassContainer</a>
+<li>removeResource()
+: <a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">cUPnPClassObject</a>
+<li>restart()
+: <a class="el" href="classcUPnPServer.html#9dd50cfea9042d49ef58b99b44c0c5af">cUPnPServer</a>
+<li>rollbackTransaction()
+: <a class="el" href="classcSQLiteDatabase.html#e20eff598832e1da41a8e915ee807548">cSQLiteDatabase</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html
new file mode 100644
index 0000000..f5af01a
--- /dev/null
+++ b/doc/html/functions_0x73.html
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li class="current"><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>saveObject()
+: <a class="el" href="classcMediatorInterface.html#a2f40e697f499c64cfd007aa70e3da7e">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#1b521c8cfa3507bec49274b606d5d2c5">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">cUPnPObjectMediator</a>
+<li>saveResource()
+: <a class="el" href="classcUPnPResourceMediator.html#a633cef46d5cae9aecec05ea28d7c14e">cUPnPResourceMediator</a>
+<li>search()
+: <a class="el" href="classcMediaDatabase.html#36bdc240d3fa11d685440d365d9ab8c9">cMediaDatabase</a>
+<li>seek()
+: <a class="el" href="classcRecordingPlayer.html#43f7ba867374d6be9e78c68c872bf608">cRecordingPlayer</a>
+, <a class="el" href="classcUPnPWebServer.html#2d1ee3a89ea42cb9fd0669937061695f">cUPnPWebServer</a>
+, <a class="el" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">cFileHandle</a>
+, <a class="el" href="classcLiveReceiver.html#efb4156ef247773873dee42053e94edf">cLiveReceiver</a>
+<li>setActors()
+: <a class="el" href="classcUPnPClassVideoItem.html#33b104046098dbf66d894143181678c4">cUPnPClassVideoItem</a>
+<li>setAddress()
+: <a class="el" href="classcUPnPServer.html#ebebc8d232cf4ad04e5f72f5ab763db6">cUPnPServer</a>
+<li>setAutoCommit()
+: <a class="el" href="classcSQLiteDatabase.html#b1749baadeb733ea3efdbbd9ffe83253">cSQLiteDatabase</a>
+<li>setAutoDetection()
+: <a class="el" href="classcUPnPServer.html#7c91df7310a99786a0a126497299d030">cUPnPServer</a>
+<li>setChannelName()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#b3d1740f8ad67cec1c82c23078b03189">cUPnPClassVideoBroadcast</a>
+<li>setChannelNr()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#4a7804c6c86531d7e23cbc714daa6077">cUPnPClassVideoBroadcast</a>
+<li>setClass()
+: <a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">cUPnPClassObject</a>
+<li>setContainerType()
+: <a class="el" href="classcUPnPClassContainer.html#495f4218ec9566ede534a96daf387462">cUPnPClassContainer</a>
+<li>setCreateClasses()
+: <a class="el" href="classcUPnPClassContainer.html#633b1e47657d9039d0919ce9b139f9b2">cUPnPClassContainer</a>
+<li>setCreator()
+: <a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">cUPnPClassObject</a>
+<li>setDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#f5a642732c66b6920f5b4646a4c34a92">cUPnPClassVideoItem</a>
+<li>setDirectors()
+: <a class="el" href="classcUPnPClassVideoItem.html#a5fc1a420bfd307bbd026c0681162e0a">cUPnPClassVideoItem</a>
+<li>setDVDRegionCode()
+: <a class="el" href="classcUPnPClassMovie.html#3df7d1a4d798fddde1b379a2302a128c">cUPnPClassMovie</a>
+<li>setError()
+: <a class="el" href="classcConnectionManager.html#02014a637c6cb04cbfe10b3cb4ce6d1d">cConnectionManager</a>
+, <a class="el" href="classcContentDirectory.html#a3b0df304987a0f2b17733c651d5b5c6">cContentDirectory</a>
+, <a class="el" href="classcUpnpService.html#f0976057350505eca781aafcaf6b1d14">cUpnpService</a>
+<li>setGenre()
+: <a class="el" href="classcUPnPClassVideoItem.html#1be14ea33f9bbf53e636fea3658cc6f8">cUPnPClassVideoItem</a>
+<li>setIcon()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#13e432f8a97072f3b45b1d199b82ae02">cUPnPClassVideoBroadcast</a>
+<li>setID()
+: <a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">cUPnPClassObject</a>
+<li>setInterface()
+: <a class="el" href="classcUPnPServer.html#81cf9d85c09093094febe6966a568702">cUPnPServer</a>
+<li>setLanguage()
+: <a class="el" href="classcUPnPClassVideoItem.html#89c24d198ce7bdc31aac727e65b02a84">cUPnPClassVideoItem</a>
+<li>setLongDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#05c5b8394cbfcaeffe5f99c885496e3d">cUPnPClassVideoItem</a>
+<li>setModified()
+: <a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">cUPnPClassObject</a>
+<li>setParent()
+: <a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">cUPnPClassObject</a>
+<li>setProducers()
+: <a class="el" href="classcUPnPClassVideoItem.html#3812b8056c9d2c7d13a7734e4219b27b">cUPnPClassVideoItem</a>
+<li>setProperty()
+: <a class="el" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">cUPnPClassMovie</a>
+, <a class="el" href="classcUPnPClassObject.html#6f2a803a0d0e148133edce23ed6c0e7c">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#ab17057659c17792a5b67f4297ade642">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassContainer.html#488761ebb4f074ded0d5374f862a1b54">cUPnPClassContainer</a>
+, <a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">cUPnPClassVideoItem</a>
+, <a class="el" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">cUPnPClassVideoBroadcast</a>
+<li>setPublishers()
+: <a class="el" href="classcUPnPClassVideoItem.html#db14c0944a89f179832a4f4914caa4ca">cUPnPClassVideoItem</a>
+<li>setRating()
+: <a class="el" href="classcUPnPClassVideoItem.html#6d4143016fc91fcbb0db4e9f8a8a0047">cUPnPClassVideoItem</a>
+<li>setReference()
+: <a class="el" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">cUPnPClassItem</a>
+<li>setRegion()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#228fcc06291dc3989917bbfa5ce3153f">cUPnPClassVideoBroadcast</a>
+<li>setRelations()
+: <a class="el" href="classcUPnPClassVideoItem.html#844385c5fb4f55c95a2994c7aaf120ef">cUPnPClassVideoItem</a>
+<li>setResources()
+: <a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">cUPnPClassObject</a>
+<li>setRestricted()
+: <a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">cUPnPClassObject</a>
+<li>setSearchable()
+: <a class="el" href="classcUPnPClassContainer.html#d32e937984f39806a15a22d13a644703">cUPnPClassContainer</a>
+<li>setSearchClasses()
+: <a class="el" href="classcUPnPClassContainer.html#aa34f20a75725837af2168a192687a51">cUPnPClassContainer</a>
+<li>setServerPort()
+: <a class="el" href="classcUPnPServer.html#77494ce55a93601110bd4ffce8559b23">cUPnPServer</a>
+<li>setSortCriteria()
+: <a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">cUPnPClassObject</a>
+<li>setStorageMedium()
+: <a class="el" href="classcUPnPClassMovie.html#136a1daa4c14c2d7397624eb288c463e">cUPnPClassMovie</a>
+<li>setTitle()
+: <a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">cUPnPClassObject</a>
+<li>setUpdateID()
+: <a class="el" href="classcUPnPClassContainer.html#9d3b9dd6388dd2021889a56a4fccfed3">cUPnPClassContainer</a>
+<li>SetupMenu()
+: <a class="el" href="classcPluginUpnp.html#9b1891ed7e2d3aa56dae03b778d616ee">cPluginUpnp</a>
+<li>SetupParse()
+: <a class="el" href="classcPluginUpnp.html#3f8b911f1e452789110e69b11587ebce">cPluginUpnp</a>
+<li>setWriteStatus()
+: <a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">cUPnPClassObject</a>
+<li>SortBy()
+: <a class="el" href="classcUPnPObjects.html#d9368864f90f5b72742895015df1aef2">cUPnPObjects</a>
+<li>SortDescending
+: <a class="el" href="structcSortCrit.html#ca3564efa1903ab8b1ba144d43c6715f">cSortCrit</a>
+<li>sprintf()
+: <a class="el" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">cSQLiteDatabase</a>
+<li>start()
+: <a class="el" href="classcUPnPServer.html#811d90c5aadc75bc48670757def1c21e">cUPnPServer</a>
+<li>Start()
+: <a class="el" href="classcPluginUpnp.html#4738d8a5d72e56ec8b7b2f4f0b3549fe">cPluginUpnp</a>
+<li>startTransaction()
+: <a class="el" href="classcSQLiteDatabase.html#5c481c06d73cff4f1192409bfc23a15a">cSQLiteDatabase</a>
+<li>stop()
+: <a class="el" href="classcUPnPServer.html#c5ecc7ef5d42db1fa136ff00b24d1289">cUPnPServer</a>
+<li>Stop()
+: <a class="el" href="classcPluginUpnp.html#f59cbb0bb2a3872e33461fb46b4f79b4">cPluginUpnp</a>
+<li>Store()
+: <a class="el" href="classcMenuSetupUPnP.html#e90738a7757dcc01e64e8ccad2f8a0e6">cMenuSetupUPnP</a>
+<li>subscribe()
+: <a class="el" href="classcUpnpService.html#e6d3522d580e5975f5a38d5bea88e29d">cUpnpService</a>
+, <a class="el" href="classcContentDirectory.html#17acd376a722e6e7de9ec0d4cabb707b">cContentDirectory</a>
+, <a class="el" href="classcConnectionManager.html#7990eba09a100e5e4ee5b01b87bcc16e">cConnectionManager</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html
new file mode 100644
index 0000000..9c41e2c
--- /dev/null
+++ b/doc/html/functions_0x75.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li class="current"><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>uninit()
+: <a class="el" href="classcUPnPWebServer.html#cd20b60b929abfb205ec438127caed49">cUPnPWebServer</a>
+<li>unregisterMediator()
+: <a class="el" href="classcUPnPObjectFactory.html#ae48ef32453881a77857bf9772d79d22">cUPnPObjectFactory</a>
+<li>update()
+: <a class="el" href="classcUPnPClassContainer.html#6f89b0043d19349efbc52caf7b7dbb3a">cUPnPClassContainer</a>
+<li>Update()
+: <a class="el" href="classcMenuSetupUPnP.html#ed45944671b8974f7639aefee11e8f50">cMenuSetupUPnP</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html
new file mode 100644
index 0000000..ab1e618
--- /dev/null
+++ b/doc/html/functions_0x76.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li class="current"><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>Version()
+: <a class="el" href="classcPluginUpnp.html#584844bf459ec3eb7f6037f9cbb52fd5">cPluginUpnp</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html
new file mode 100644
index 0000000..51da034
--- /dev/null
+++ b/doc/html/functions_0x77.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li class="current"><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>width
+: <a class="el" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d">DLNAIconProfile</a>
+<li>write()
+: <a class="el" href="classcUPnPWebServer.html#46e282288394c8ba37e9d4846944c6a4">cUPnPWebServer</a>
+, <a class="el" href="classcRecordingPlayer.html#7dd0cb78ae8032eb677f01d71187d6e0">cRecordingPlayer</a>
+, <a class="el" href="classcLiveReceiver.html#eb56988441b589b6e34ea01825dfb183">cLiveReceiver</a>
+, <a class="el" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">cFileHandle</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html
new file mode 100644
index 0000000..696985d
--- /dev/null
+++ b/doc/html/functions_0x7e.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html#index__"><span>_</span></a></li>
+ <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li class="current"><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented class members with links to the class documentation for each member:
+<p>
+<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
+<li>~cUPnPServer()
+: <a class="el" href="classcUPnPServer.html#8eb136050f3f6c2edb7acbf5d690723d">cUPnPServer</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
new file mode 100644
index 0000000..a37ef25
--- /dev/null
+++ b/doc/html/functions_func.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>Action()
+: <a class="el" href="classcLiveReceiver.html#5c1f30f48fdc612c19ff4b9b4c176b07">cLiveReceiver</a>
+<li>Activate()
+: <a class="el" href="classcLiveReceiver.html#631c7392c3226b07ba654875580fb26c">cLiveReceiver</a>
+<li>Active()
+: <a class="el" href="classcPluginUpnp.html#6b220cadefe502e7dfa4d70acea35083">cPluginUpnp</a>
+<li>addCreateClass()
+: <a class="el" href="classcUPnPClassContainer.html#55613e5fa7019137aa818036e91a0811">cUPnPClassContainer</a>
+<li>addFastFind()
+: <a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">cMediaDatabase</a>
+<li>addObject()
+: <a class="el" href="classcUPnPClassContainer.html#589392682fb7c8e698d09b2eeca83887">cUPnPClassContainer</a>
+<li>addResource()
+: <a class="el" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">cUPnPClassObject</a>
+<li>addSearchClass()
+: <a class="el" href="classcUPnPClassContainer.html#d177af2487ff337fe79ef11fe1e07dd1">cUPnPClassContainer</a>
+<li>autoDetectSettings()
+: <a class="el" href="classcUPnPServer.html#783f27c1997257539ccb8ff7ade815be">cUPnPServer</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x62.html b/doc/html/functions_func_0x62.html
new file mode 100644
index 0000000..1ced278
--- /dev/null
+++ b/doc/html/functions_func_0x62.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li class="current"><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>browse()
+: <a class="el" href="classcMediaDatabase.html#25ff666113dbe72598e4ef4e23af5d8f">cMediaDatabase</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x63.html b/doc/html/functions_func_0x63.html
new file mode 100644
index 0000000..2cc3e39
--- /dev/null
+++ b/doc/html/functions_func_0x63.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li class="current"><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>cConnectionManager()
+: <a class="el" href="classcConnectionManager.html#2d6d4af3110c40c399a3e4e203283ff1">cConnectionManager</a>
+<li>cContentDirectory()
+: <a class="el" href="classcContentDirectory.html#aca0fe0cffa30b1040719720ff4b82a2">cContentDirectory</a>
+<li>clearObject()
+: <a class="el" href="classcUPnPObjectFactory.html#947c7256906b4dbe63d156723cdc38be">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">cUPnPObjectMediator</a>
+, <a class="el" href="classcMediatorInterface.html#cd087c690154d43ac5ef92c5a42f2349">cMediatorInterface</a>
+<li>clearSortCriteria()
+: <a class="el" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">cUPnPClassObject</a>
+<li>close()
+: <a class="el" href="classcLiveReceiver.html#5b8beb2bc6809aacbdb087e31e836a27">cLiveReceiver</a>
+, <a class="el" href="classcRecordingPlayer.html#5e81aeecd16f89e432690a9b05d8dd6a">cRecordingPlayer</a>
+, <a class="el" href="classcUPnPWebServer.html#79d080eaf445325b7f8759dfb0744c26">cUPnPWebServer</a>
+, <a class="el" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">cFileHandle</a>
+<li>cMediaDatabase()
+: <a class="el" href="classcMediaDatabase.html#ace0720fbddbdd7f2e4ca5ad16d5acd2">cMediaDatabase</a>
+<li>CommandLineHelp()
+: <a class="el" href="classcPluginUpnp.html#e2e63843aab64e06ce9b533f4893f7e0">cPluginUpnp</a>
+<li>commitTransaction()
+: <a class="el" href="classcSQLiteDatabase.html#f11b7090ae824f7f3fc094dc7112323a">cSQLiteDatabase</a>
+<li>Compare()
+: <a class="el" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">cUPnPClassObject</a>
+<li>Count()
+: <a class="el" href="classcRow.html#88b64cc4fcf8f0974f2cf11e875fbaf4">cRow</a>
+<li>createDIDLFragment()
+: <a class="el" href="classcUPnPClassObject.html#9090f5982129bc5aa15c6e19db627445">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassContainer.html#fec5b0bae4ed2d194bfc9973f14a3926">cUPnPClassContainer</a>
+<li>createFromChannel()
+: <a class="el" href="classcUPnPResources.html#974dd63afd52b87732800b7cf578a387">cUPnPResources</a>
+<li>createFromFile()
+: <a class="el" href="classcUPnPResources.html#b2bac789a9caf023940dfc02a079c249">cUPnPResources</a>
+<li>createFromRecording()
+: <a class="el" href="classcUPnPResources.html#47b243391bc9e1867bc16d4307f2af8a">cUPnPResources</a>
+<li>createObject()
+: <a class="el" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcMediatorInterface.html#68a8350f7ea5ccd2496580035228b1fc">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#c71bbdb30be6b0fd17f67b8850aeccdb">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#751177c725da94b1b91f6cda4645844d">cUPnPContainerMediator</a>
+<li>cUPnPClassContainer()
+: <a class="el" href="classcUPnPClassContainer.html#e485882089f12f383ddbea26e186d851">cUPnPClassContainer</a>
+<li>cUPnPClassItem()
+: <a class="el" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a>
+<li>cUPnPClassMovie()
+: <a class="el" href="classcUPnPClassMovie.html#7343932df4e5bfd9821e16026cb7c66d">cUPnPClassMovie</a>
+<li>cUPnPClassVideoBroadcast()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#a8d1e73bc9cbb20da6727f3c2e823d79">cUPnPClassVideoBroadcast</a>
+<li>cUPnPClassVideoItem()
+: <a class="el" href="classcUPnPClassVideoItem.html#38ce1c18cc9d474791255fdcb43824d2">cUPnPClassVideoItem</a>
+<li>cUPnPContainerMediator()
+: <a class="el" href="classcUPnPContainerMediator.html#e6fce4835ea40a77b401a093f65b5822">cUPnPContainerMediator</a>
+<li>cUPnPItemMediator()
+: <a class="el" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a>
+<li>cUPnPMovieMediator()
+: <a class="el" href="classcUPnPMovieMediator.html#aa40d0f4054d6b90b2cbb0fe6bd8ac38">cUPnPMovieMediator</a>
+<li>cUPnPObjectID()
+: <a class="el" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">cUPnPObjectID</a>
+<li>cUPnPObjectMediator()
+: <a class="el" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>
+<li>cUPnPServer()
+: <a class="el" href="classcUPnPServer.html#e0277b2231f10e66a5c6ce9acb42fcd0">cUPnPServer</a>
+<li>cUPnPVideoBroadcastMediator()
+: <a class="el" href="classcUPnPVideoBroadcastMediator.html#58179b50ee5a5952cff70aa4473845f9">cUPnPVideoBroadcastMediator</a>
+<li>cUPnPVideoItemMediator()
+: <a class="el" href="classcUPnPVideoItemMediator.html#1f56334e155773b6c3d86f481f4ad96b">cUPnPVideoItemMediator</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x64.html b/doc/html/functions_func_0x64.html
new file mode 100644
index 0000000..b71ee03
--- /dev/null
+++ b/doc/html/functions_func_0x64.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li class="current"><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>databaseToObject()
+: <a class="el" href="classcUPnPObjectMediator.html#07a6a1d2694fb2f4573bd50374406b24">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#1f3645ebe0a33a81d0b3f22060dc4761">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#79f483b48f596047ed9549f0b036f35b">cUPnPContainerMediator</a>
+<li>delCreateClass()
+: <a class="el" href="classcUPnPClassContainer.html#23c2949d1cb925423a6b113cf0021a5f">cUPnPClassContainer</a>
+<li>deleteObject()
+: <a class="el" href="classcMediatorInterface.html#ffbddb7fe72554b9cde9d02648cf8f0e">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#10198e67d9da1f964aa895cd463b2f92">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">cUPnPObjectMediator</a>
+<li>delSearchClass()
+: <a class="el" href="classcUPnPClassContainer.html#3cfb0c2035e678cde990631b804d4ab2">cUPnPClassContainer</a>
+<li>Description()
+: <a class="el" href="classcPluginUpnp.html#6fc36c7fdf1f0deed776897725bcda9b">cPluginUpnp</a>
+<li>detectVideoProperties()
+: <a class="el" href="classcAudioVideoDetector.html#0a376b4d1421f0d799189d4e03c4cbcc">cAudioVideoDetector</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x65.html b/doc/html/functions_func_0x65.html
new file mode 100644
index 0000000..31cfdd8
--- /dev/null
+++ b/doc/html/functions_func_0x65.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li class="current"><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>enable()
+: <a class="el" href="classcUPnPServer.html#4935ab1fbcc03279193e0f9fa675fb8b">cUPnPServer</a>
+<li>execStatement()
+: <a class="el" href="classcSQLiteDatabase.html#33ac864ee86fe3f08f66f1c14fcfc331">cSQLiteDatabase</a>
+<li>execute()
+: <a class="el" href="classcContentDirectory.html#a0225df761512819b9c46f45b2a0f0d0">cContentDirectory</a>
+, <a class="el" href="classcConnectionManager.html#12fa6b0a9e20c3af663e3ca2b3c97dfb">cConnectionManager</a>
+, <a class="el" href="classcUpnpService.html#bbffca233e6aa193eda223cb7bfc2917">cUpnpService</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x66.html b/doc/html/functions_func_0x66.html
new file mode 100644
index 0000000..3cf24d4
--- /dev/null
+++ b/doc/html/functions_func_0x66.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li class="current"><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>fetchColumn()
+: <a class="el" href="classcRow.html#4b1e1e5ffe36d35c61476bc2e4ef4eb1">cRow</a>
+<li>fetchRow()
+: <a class="el" href="classcRows.html#03a454862807c81280fd7b87b35ba19e">cRows</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x67.html b/doc/html/functions_func_0x67.html
new file mode 100644
index 0000000..2d7aecd
--- /dev/null
+++ b/doc/html/functions_func_0x67.html
@@ -0,0 +1,232 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li class="current"><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>get()
+: <a class="el" href="classcUPnPConfig.html#3949dcc8a418edb8a0ece2dce62f515c">cUPnPConfig</a>
+<li>getActors()
+: <a class="el" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">cUPnPClassVideoItem</a>
+<li>getBitrate()
+: <a class="el" href="classcUPnPResource.html#3f2f3d5c447fee28d3dff5cf739e4c98">cUPnPResource</a>
+<li>getBitsPerSample()
+: <a class="el" href="classcUPnPResource.html#3efd82888fd648dd08b5d43520638d17">cUPnPResource</a>
+<li>getChannelName()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#b63ea63a4ab8ac3cb654b0bab4df620a">cUPnPClassVideoBroadcast</a>
+<li>getChannelNr()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#6065509557e13176878098861fcfeb9d">cUPnPClassVideoBroadcast</a>
+<li>getChildCount()
+: <a class="el" href="classcUPnPClassContainer.html#b23a80cebe626e0b2b6c3b1a83b039c6">cUPnPClassContainer</a>
+<li>getClass()
+: <a class="el" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">cUPnPClassObject</a>
+<li>getColorDepth()
+: <a class="el" href="classcUPnPResource.html#276eddcc28bad31d6178cf109373074a">cUPnPResource</a>
+<li>getConfigDirectory()
+: <a class="el" href="classcPluginUpnp.html#ac2101984519b848cc04370b5527c145">cPluginUpnp</a>
+<li>getContainer()
+: <a class="el" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassContainer.html#32eb7f1d0b3821f0d9573fe59befdf10">cUPnPClassContainer</a>
+<li>getContainerType()
+: <a class="el" href="classcUPnPClassContainer.html#b4977eba812c34a4201935f31be0f5c9">cUPnPClassContainer</a>
+<li>getContainerUpdateIDs()
+: <a class="el" href="classcMediaDatabase.html#dadd330e273e0f354d51b76cee436198">cMediaDatabase</a>
+<li>getContentType()
+: <a class="el" href="classcUPnPResource.html#6aeaaf476c5d6548b15bb381c032b815">cUPnPResource</a>
+<li>getCreateClasses()
+: <a class="el" href="classcUPnPClassContainer.html#d9a875daad1093311723262f5f6c1f7c">cUPnPClassContainer</a>
+<li>getCreator()
+: <a class="el" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">cUPnPClassObject</a>
+<li>getDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">cUPnPClassVideoItem</a>
+<li>getDeviceDescription()
+: <a class="el" href="classcDlna.html#a7ae0cc7b651bc6ccd82ef5da527d09a">cDlna</a>
+<li>getDirectors()
+: <a class="el" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">cUPnPClassVideoItem</a>
+<li>getDuration()
+: <a class="el" href="classcUPnPResource.html#5da7e39c5fc76f5607c232319daa135c">cUPnPResource</a>
+<li>getDVDRegionCode()
+: <a class="el" href="classcUPnPClassMovie.html#80a41ba769974e80635b80aa3c41f66d">cUPnPClassMovie</a>
+<li>getFileSize()
+: <a class="el" href="classcUPnPResource.html#5cabb363c4fd0785d3f073011df835e9">cUPnPResource</a>
+<li>getGenre()
+: <a class="el" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">cUPnPClassVideoItem</a>
+<li>getIcon()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#f4c2a9f5d62e41d853385b7b7685d536">cUPnPClassVideoBroadcast</a>
+<li>getID()
+: <a class="el" href="classcUPnPResource.html#47ad15c119fbcfdda1bc5f60d0a3efc9">cUPnPResource</a>
+, <a class="el" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">cUPnPClassObject</a>
+<li>getImportURI()
+: <a class="el" href="classcUPnPResource.html#04ab0d214e39ddfa18339926cef9fd64">cUPnPResource</a>
+<li>getInfo()
+: <a class="el" href="classcUPnPWebServer.html#0540de6d9f111756593d202f30102ffb">cUPnPWebServer</a>
+<li>getInstance()
+: <a class="el" href="classcUPnPResources.html#c3136b664928d2214e76e0e65a4ace6a">cUPnPResources</a>
+, <a class="el" href="classcDlna.html#1e30449831b903d508dae6640039fc25">cDlna</a>
+, <a class="el" href="classcUPnPWebServer.html#59fb8d378eae0193665b51fdda5a4da0">cUPnPWebServer</a>
+, <a class="el" href="classcSQLiteDatabase.html#a39756509bd68fd8e335cc9cc40c6f26">cSQLiteDatabase</a>
+, <a class="el" href="classcUPnPObjectFactory.html#5b99e366dad18ab44ee1d2da5f1c3b4d">cUPnPObjectFactory</a>
+<li>getInterface()
+: <a class="el" href="classcUPnPServer.html#e28dd555ac861850c9a2bbd22d9a7d3a">cUPnPServer</a>
+<li>getLanguage()
+: <a class="el" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">cUPnPClassVideoItem</a>
+<li>getLastInsertRowID()
+: <a class="el" href="classcSQLiteDatabase.html#408e5de345a74f2540ee1cea3c97cd51">cSQLiteDatabase</a>
+<li>getLastModification()
+: <a class="el" href="classcUPnPResource.html#c95a8fe0bdba2c371a46e4e267dab1aa">cUPnPResource</a>
+<li>getLongDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">cUPnPClassVideoItem</a>
+<li>getNrAudioChannels()
+: <a class="el" href="classcUPnPResource.html#ff18e089f421d710580292f0b91b40f8">cUPnPResource</a>
+<li>getObject()
+: <a class="el" href="classcUPnPClassContainer.html#b2d43f5d5b6ad40d444b7e353979451d">cUPnPClassContainer</a>
+, <a class="el" href="classcMediatorInterface.html#716ad95bf6ac5a10e9409ced7a63a9d8">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#a26f57549c26c6fc15425158e7fda4b6">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#78b71f96fb4289dc78f897d6282078d6">cUPnPContainerMediator</a>
+<li>getObjectByFastFind()
+: <a class="el" href="classcMediaDatabase.html#b0fac893d82c29276d68b94569cfef1d">cMediaDatabase</a>
+<li>getObjectByID()
+: <a class="el" href="classcMediaDatabase.html#b8da7da9612c64de0ddf88db3c316d5a">cMediaDatabase</a>
+<li>getObjectList()
+: <a class="el" href="classcUPnPClassContainer.html#ba09b831bbb533d1dbcb6cff4f4b9c23">cUPnPClassContainer</a>
+<li>getParent()
+: <a class="el" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">cUPnPClassObject</a>
+<li>getParentID()
+: <a class="el" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">cUPnPClassObject</a>
+<li>getProducers()
+: <a class="el" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">cUPnPClassVideoItem</a>
+<li>getProfileOfChannel()
+: <a class="el" href="classcDlna.html#4eacc299d19fa20beba98d88d4230388">cDlna</a>
+<li>getProfileOfFile()
+: <a class="el" href="classcDlna.html#4b5c30f707060b66c3980af70b7d8d08">cDlna</a>
+<li>getProfileOfRecording()
+: <a class="el" href="classcDlna.html#69dc71fe30130cafa399bb851ef5def8">cDlna</a>
+<li>getProperty()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">cUPnPClassVideoBroadcast</a>
+, <a class="el" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">cUPnPClassMovie</a>
+, <a class="el" href="classcUPnPClassObject.html#539cf36abc96b95bc8437601fed8a0f6">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#31f7010baa65cc25b95a864f05eb4e62">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassContainer.html#f70297d2275e083f05024524d21118d7">cUPnPClassContainer</a>
+, <a class="el" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">cUPnPClassVideoItem</a>
+<li>getPropertyList()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">cUPnPClassVideoBroadcast</a>
+, <a class="el" href="classcUPnPClassObject.html#4a4d2cd2e59d364050bb64a3d9dced6e">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#add0c9d378036e270e6f99d8d1409e3b">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">cUPnPClassVideoItem</a>
+, <a class="el" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">cUPnPClassMovie</a>
+, <a class="el" href="classcUPnPClassContainer.html#d952c993314a9352d13f644bb95fbdc2">cUPnPClassContainer</a>
+<li>getProtocolInfo()
+: <a class="el" href="classcDlna.html#992777f6c75dadd61bed6a75e03f1dfd">cDlna</a>
+, <a class="el" href="classcUPnPResource.html#0ff5e61a2d07873ae2ebdab7d87b3d9f">cUPnPResource</a>
+<li>getPublishers()
+: <a class="el" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">cUPnPClassVideoItem</a>
+<li>getRating()
+: <a class="el" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">cUPnPClassVideoItem</a>
+<li>getReference()
+: <a class="el" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">cUPnPClassItem</a>
+<li>getReferenceID()
+: <a class="el" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">cUPnPClassItem</a>
+<li>getRegion()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#f4582c82588879c110947fdfc50b7895">cUPnPClassVideoBroadcast</a>
+<li>getRelations()
+: <a class="el" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">cUPnPClassVideoItem</a>
+<li>getResolution()
+: <a class="el" href="classcUPnPResource.html#27d5140dc72a8e034ce197913d6aa1d5">cUPnPResource</a>
+<li>getResource()
+: <a class="el" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPResources.html#cfec64e65fa14c1efb653c9c4fbbc609">cUPnPResources</a>
+, <a class="el" href="classcUPnPResource.html#b648a88993b0e5a4421514f45a5b266f">cUPnPResource</a>
+, <a class="el" href="classcUPnPResourceMediator.html#9d4d8cc5eafb18b13ad7d14793d3f9de">cUPnPResourceMediator</a>
+<li>getResources()
+: <a class="el" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">cUPnPClassObject</a>
+<li>getResourcesOfObject()
+: <a class="el" href="classcUPnPResources.html#5da9137336fa284040a823f53267b837">cUPnPResources</a>
+<li>getResourceType()
+: <a class="el" href="classcUPnPResource.html#6b6855ba6d4bd06805750ede92449c8d">cUPnPResource</a>
+<li>getResultCount()
+: <a class="el" href="classcSQLiteDatabase.html#2119fbbf7a02c9c627038ddc14c9eb48">cSQLiteDatabase</a>
+<li>getResultRows()
+: <a class="el" href="classcSQLiteDatabase.html#4cd24d9d63173c54b63aadc7ada86e7e">cSQLiteDatabase</a>
+<li>getSampleFrequency()
+: <a class="el" href="classcUPnPResource.html#5ea6003b282c48f575bc54f5c9658ca9">cUPnPResource</a>
+<li>getSearchClasses()
+: <a class="el" href="classcUPnPClassContainer.html#735327b72c023d3048db0d4fd2a608cc">cUPnPClassContainer</a>
+<li>getServerAddress()
+: <a class="el" href="classcUPnPServer.html#f938922eff48ca1035e88677e095c0c4">cUPnPServer</a>
+<li>getSize()
+: <a class="el" href="classcUPnPResource.html#361f6991a29dddf575a2b0b63ce5a66a">cUPnPResource</a>
+<li>getStorageMedium()
+: <a class="el" href="classcUPnPClassMovie.html#9fc36c7e0a1a465ec720b219a1710cc6">cUPnPClassMovie</a>
+<li>getSupportedProtocols()
+: <a class="el" href="classcDlna.html#68a9565f022c7037c51ad337274d8c3a">cDlna</a>
+<li>getSystemUpdateID()
+: <a class="el" href="classcMediaDatabase.html#96232caa30b80d4e3ca667c317101fd0">cMediaDatabase</a>
+<li>getTitle()
+: <a class="el" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">cUPnPClassObject</a>
+<li>getUpdateID()
+: <a class="el" href="classcUPnPClassContainer.html#475ad1a2003cc9b169685f825a9d790d">cUPnPClassContainer</a>
+<li>getWriteStatus()
+: <a class="el" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">cUPnPClassObject</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x69.html b/doc/html/functions_func_0x69.html
new file mode 100644
index 0000000..06b87fb
--- /dev/null
+++ b/doc/html/functions_func_0x69.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li class="current"><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>init()
+: <a class="el" href="classcUPnPWebServer.html#a374ec8a84405fb2ee16dc00ba0218f5">cUPnPWebServer</a>
+<li>Initialize()
+: <a class="el" href="classcPluginUpnp.html#3f3daf1d0cd8d176cf1a349b9de10df7">cPluginUpnp</a>
+<li>initializeObject()
+: <a class="el" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">cUPnPObjectMediator</a>
+<li>isAutoDetectionEnabled()
+: <a class="el" href="classcUPnPServer.html#389ffe474f61ec18b6f99dd02a9c31e4">cUPnPServer</a>
+<li>isContainer()
+: <a class="el" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">cUPnPClassObject</a>
+<li>isEnabled()
+: <a class="el" href="classcUPnPServer.html#fbaaebd4496e98106c2d9be4c2512a66">cUPnPServer</a>
+<li>isRestricted()
+: <a class="el" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">cUPnPClassObject</a>
+<li>isRunning()
+: <a class="el" href="classcUPnPServer.html#af5358b41e19ba2917371c2d118d0145">cUPnPServer</a>
+<li>isSearchable()
+: <a class="el" href="classcUPnPClassContainer.html#c6d1de26df91d64379a9a2db1f5a7301">cUPnPClassContainer</a>
+<li>isUpdated()
+: <a class="el" href="classcUPnPClassContainer.html#a8ae4e790074d3a34bc7ec173a02595a">cUPnPClassContainer</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x6c.html b/doc/html/functions_func_0x6c.html
new file mode 100644
index 0000000..47851b5
--- /dev/null
+++ b/doc/html/functions_func_0x6c.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li class="current"><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>Load()
+: <a class="el" href="classcMenuSetupUPnP.html#6f3e5ab68db53ce74ec81af07671d00e">cMenuSetupUPnP</a>
+<li>loadResources()
+: <a class="el" href="classcUPnPResources.html#eaffc72ee9faeb046a41b965ce61507f">cUPnPResources</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x6d.html b/doc/html/functions_func_0x6d.html
new file mode 100644
index 0000000..cf0deb1
--- /dev/null
+++ b/doc/html/functions_func_0x6d.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li class="current"><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>modified()
+: <a class="el" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">cUPnPClassObject</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x6e.html b/doc/html/functions_func_0x6e.html
new file mode 100644
index 0000000..54ae04b
--- /dev/null
+++ b/doc/html/functions_func_0x6e.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li class="current"><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>newInstance()
+: <a class="el" href="classcLiveReceiver.html#1e28c50bb73404597b2363422e038c12">cLiveReceiver</a>
+, <a class="el" href="classcRecordingPlayer.html#59abdfe4e4339943afbd713d2fb35e40">cRecordingPlayer</a>
+<li>newResource()
+: <a class="el" href="classcUPnPResourceMediator.html#14367dd7e160f6c6812279b84a4fa8e2">cUPnPResourceMediator</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x6f.html b/doc/html/functions_func_0x6f.html
new file mode 100644
index 0000000..008b35b
--- /dev/null
+++ b/doc/html/functions_func_0x6f.html
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li class="current"><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>objectToDatabase()
+: <a class="el" href="classcUPnPObjectMediator.html#c44c010895f92adc63af2a2d34cf34c8">cUPnPObjectMediator</a>
+, <a class="el" href="classcUPnPItemMediator.html#6d954b1cfdc4a7d55981c6ebff9d6d04">cUPnPItemMediator</a>
+, <a class="el" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">cUPnPVideoBroadcastMediator</a>
+, <a class="el" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">cUPnPMovieMediator</a>
+, <a class="el" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">cUPnPVideoItemMediator</a>
+, <a class="el" href="classcUPnPContainerMediator.html#1caa4625fca42940ba36999a71ac49ec">cUPnPContainerMediator</a>
+<li>open()
+: <a class="el" href="classcLiveReceiver.html#b8e751f641be1da4a925106e3dd062e9">cLiveReceiver</a>
+, <a class="el" href="classcRecordingPlayer.html#e7ad4362d821f38db5143c0aeff15d97">cRecordingPlayer</a>
+, <a class="el" href="classcUPnPWebServer.html#5f9d44729464cab3e8bf74e4457dbb24">cUPnPWebServer</a>
+, <a class="el" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">cFileHandle</a>
+<li>operator int()
+: <a class="el" href="structcUPnPObjectID.html#73ff8d0e18486552dbfbf828a2e7bc7c">cUPnPObjectID</a>
+<li>operator long()
+: <a class="el" href="structcUPnPObjectID.html#d5659a7a9f7cfc7dd6ae0911ebd5e03c">cUPnPObjectID</a>
+<li>operator unsigned int()
+: <a class="el" href="structcUPnPObjectID.html#daa4eae524c68f1f85b8d82d16568d10">cUPnPObjectID</a>
+<li>operator!=()
+: <a class="el" href="structcUPnPObjectID.html#d55b5dc94c58d56762c602de5dd99790">cUPnPObjectID</a>
+, <a class="el" href="structcClass.html#1de09f337ef261d363f261f83a3cf7ae">cClass</a>
+, <a class="el" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">cUPnPObjectID</a>
+<li>operator*()
+: <a class="el" href="structcUPnPObjectID.html#33e67c6f297892763b5a4a41cd435490">cUPnPObjectID</a>
+<li>operator++()
+: <a class="el" href="structcUPnPObjectID.html#d46000a3acdd6f522bf3b86e48d47ddf">cUPnPObjectID</a>
+<li>operator--()
+: <a class="el" href="structcUPnPObjectID.html#3e6872234bfd011a720b7847190dfdb9">cUPnPObjectID</a>
+<li>operator=()
+: <a class="el" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">cUPnPObjectID</a>
+<li>operator==()
+: <a class="el" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">cUPnPObjectID</a>
+, <a class="el" href="structcClass.html#22a5df5fd2bfc9e7b58018a6b8d45309">cClass</a>
+, <a class="el" href="structcUPnPObjectID.html#18cf7d50a8ae1b6d2034e88fef78e23f">cUPnPObjectID</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x70.html b/doc/html/functions_func_0x70.html
new file mode 100644
index 0000000..be95372
--- /dev/null
+++ b/doc/html/functions_func_0x70.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li class="current"><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>parse()
+: <a class="el" href="classcPathParser.html#83229f6ecd4254d7ed145573eae7967a">cPathParser</a>
+, <a class="el" href="classcSortCriteria.html#818579ec634d8b6f670a55545970b9e7">cSortCriteria</a>
+, <a class="el" href="classcFilterCriteria.html#e327772fdf9f8db127c7ce1a737f1c7c">cFilterCriteria</a>
+<li>parseIntegerValue()
+: <a class="el" href="classcUpnpService.html#846cd44a1c014395278c3af339122656">cUpnpService</a>
+<li>parseSetup()
+: <a class="el" href="classcUPnPConfig.html#3ac0d1253dba86cb4630bc1e29a9fe10">cUPnPConfig</a>
+<li>parseStringValue()
+: <a class="el" href="classcUpnpService.html#925b7a9628230ce69b803afb8fee212f">cUpnpService</a>
+<li>ProcessArgs()
+: <a class="el" href="classcPluginUpnp.html#acbc8a8b3f67d08ed20ff1c8beaa4fe2">cPluginUpnp</a>
+<li>processArgs()
+: <a class="el" href="classcUPnPConfig.html#19689798911a39c47958e819c33d4b09">cUPnPConfig</a>
+<li>ProcessKey()
+: <a class="el" href="classcMenuSetupUPnP.html#5a6d78afea79d330e710d09b808d5240">cMenuSetupUPnP</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x72.html b/doc/html/functions_func_0x72.html
new file mode 100644
index 0000000..18991a8
--- /dev/null
+++ b/doc/html/functions_func_0x72.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li class="current"><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>read()
+: <a class="el" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">cFileHandle</a>
+, <a class="el" href="classcLiveReceiver.html#4a19e1fd4e1d043fb091bfb01a9cbf08">cLiveReceiver</a>
+, <a class="el" href="classcUPnPWebServer.html#7bdaa921f11a40da60c5fc99f577a017">cUPnPWebServer</a>
+, <a class="el" href="classcRecordingPlayer.html#e0fda8b0be8e47133698f1763e649b3d">cRecordingPlayer</a>
+<li>Receive()
+: <a class="el" href="classcLiveReceiver.html#c8bc191994b0acd3fa2d23b26f996f8a">cLiveReceiver</a>
+<li>registerMainProfiles()
+: <a class="el" href="classcDlna.html#e26b723ec63a60f397ce41bd95641dfa">cDlna</a>
+<li>registerMediator()
+: <a class="el" href="classcUPnPObjectFactory.html#f2b20dffcd46c08d5b2de4b6807e0689">cUPnPObjectFactory</a>
+<li>registerProfile()
+: <a class="el" href="classcDlna.html#0250d3903e7dcbdc8ebadfacd4e6fb50">cDlna</a>
+<li>removeObject()
+: <a class="el" href="classcUPnPClassContainer.html#2e3110bd01c17df34cd60302d9330e72">cUPnPClassContainer</a>
+<li>removeResource()
+: <a class="el" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">cUPnPClassObject</a>
+<li>restart()
+: <a class="el" href="classcUPnPServer.html#9dd50cfea9042d49ef58b99b44c0c5af">cUPnPServer</a>
+<li>rollbackTransaction()
+: <a class="el" href="classcSQLiteDatabase.html#e20eff598832e1da41a8e915ee807548">cSQLiteDatabase</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x73.html b/doc/html/functions_func_0x73.html
new file mode 100644
index 0000000..0f4c45d
--- /dev/null
+++ b/doc/html/functions_func_0x73.html
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li class="current"><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>saveObject()
+: <a class="el" href="classcMediatorInterface.html#a2f40e697f499c64cfd007aa70e3da7e">cMediatorInterface</a>
+, <a class="el" href="classcUPnPObjectFactory.html#1b521c8cfa3507bec49274b606d5d2c5">cUPnPObjectFactory</a>
+, <a class="el" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">cUPnPObjectMediator</a>
+<li>saveResource()
+: <a class="el" href="classcUPnPResourceMediator.html#a633cef46d5cae9aecec05ea28d7c14e">cUPnPResourceMediator</a>
+<li>search()
+: <a class="el" href="classcMediaDatabase.html#36bdc240d3fa11d685440d365d9ab8c9">cMediaDatabase</a>
+<li>seek()
+: <a class="el" href="classcRecordingPlayer.html#43f7ba867374d6be9e78c68c872bf608">cRecordingPlayer</a>
+, <a class="el" href="classcUPnPWebServer.html#2d1ee3a89ea42cb9fd0669937061695f">cUPnPWebServer</a>
+, <a class="el" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">cFileHandle</a>
+, <a class="el" href="classcLiveReceiver.html#efb4156ef247773873dee42053e94edf">cLiveReceiver</a>
+<li>setActors()
+: <a class="el" href="classcUPnPClassVideoItem.html#33b104046098dbf66d894143181678c4">cUPnPClassVideoItem</a>
+<li>setAddress()
+: <a class="el" href="classcUPnPServer.html#ebebc8d232cf4ad04e5f72f5ab763db6">cUPnPServer</a>
+<li>setAutoCommit()
+: <a class="el" href="classcSQLiteDatabase.html#b1749baadeb733ea3efdbbd9ffe83253">cSQLiteDatabase</a>
+<li>setAutoDetection()
+: <a class="el" href="classcUPnPServer.html#7c91df7310a99786a0a126497299d030">cUPnPServer</a>
+<li>setChannelName()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#b3d1740f8ad67cec1c82c23078b03189">cUPnPClassVideoBroadcast</a>
+<li>setChannelNr()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#4a7804c6c86531d7e23cbc714daa6077">cUPnPClassVideoBroadcast</a>
+<li>setClass()
+: <a class="el" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">cUPnPClassObject</a>
+<li>setContainerType()
+: <a class="el" href="classcUPnPClassContainer.html#495f4218ec9566ede534a96daf387462">cUPnPClassContainer</a>
+<li>setCreateClasses()
+: <a class="el" href="classcUPnPClassContainer.html#633b1e47657d9039d0919ce9b139f9b2">cUPnPClassContainer</a>
+<li>setCreator()
+: <a class="el" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">cUPnPClassObject</a>
+<li>setDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#f5a642732c66b6920f5b4646a4c34a92">cUPnPClassVideoItem</a>
+<li>setDirectors()
+: <a class="el" href="classcUPnPClassVideoItem.html#a5fc1a420bfd307bbd026c0681162e0a">cUPnPClassVideoItem</a>
+<li>setDVDRegionCode()
+: <a class="el" href="classcUPnPClassMovie.html#3df7d1a4d798fddde1b379a2302a128c">cUPnPClassMovie</a>
+<li>setError()
+: <a class="el" href="classcConnectionManager.html#02014a637c6cb04cbfe10b3cb4ce6d1d">cConnectionManager</a>
+, <a class="el" href="classcContentDirectory.html#a3b0df304987a0f2b17733c651d5b5c6">cContentDirectory</a>
+, <a class="el" href="classcUpnpService.html#f0976057350505eca781aafcaf6b1d14">cUpnpService</a>
+<li>setGenre()
+: <a class="el" href="classcUPnPClassVideoItem.html#1be14ea33f9bbf53e636fea3658cc6f8">cUPnPClassVideoItem</a>
+<li>setIcon()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#13e432f8a97072f3b45b1d199b82ae02">cUPnPClassVideoBroadcast</a>
+<li>setID()
+: <a class="el" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">cUPnPClassObject</a>
+<li>setInterface()
+: <a class="el" href="classcUPnPServer.html#81cf9d85c09093094febe6966a568702">cUPnPServer</a>
+<li>setLanguage()
+: <a class="el" href="classcUPnPClassVideoItem.html#89c24d198ce7bdc31aac727e65b02a84">cUPnPClassVideoItem</a>
+<li>setLongDescription()
+: <a class="el" href="classcUPnPClassVideoItem.html#05c5b8394cbfcaeffe5f99c885496e3d">cUPnPClassVideoItem</a>
+<li>setModified()
+: <a class="el" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">cUPnPClassObject</a>
+<li>setParent()
+: <a class="el" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">cUPnPClassObject</a>
+<li>setProducers()
+: <a class="el" href="classcUPnPClassVideoItem.html#3812b8056c9d2c7d13a7734e4219b27b">cUPnPClassVideoItem</a>
+<li>setProperty()
+: <a class="el" href="classcUPnPClassObject.html#6f2a803a0d0e148133edce23ed6c0e7c">cUPnPClassObject</a>
+, <a class="el" href="classcUPnPClassItem.html#ab17057659c17792a5b67f4297ade642">cUPnPClassItem</a>
+, <a class="el" href="classcUPnPClassContainer.html#488761ebb4f074ded0d5374f862a1b54">cUPnPClassContainer</a>
+, <a class="el" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">cUPnPClassVideoItem</a>
+, <a class="el" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">cUPnPClassVideoBroadcast</a>
+, <a class="el" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">cUPnPClassMovie</a>
+<li>setPublishers()
+: <a class="el" href="classcUPnPClassVideoItem.html#db14c0944a89f179832a4f4914caa4ca">cUPnPClassVideoItem</a>
+<li>setRating()
+: <a class="el" href="classcUPnPClassVideoItem.html#6d4143016fc91fcbb0db4e9f8a8a0047">cUPnPClassVideoItem</a>
+<li>setReference()
+: <a class="el" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">cUPnPClassItem</a>
+<li>setRegion()
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#228fcc06291dc3989917bbfa5ce3153f">cUPnPClassVideoBroadcast</a>
+<li>setRelations()
+: <a class="el" href="classcUPnPClassVideoItem.html#844385c5fb4f55c95a2994c7aaf120ef">cUPnPClassVideoItem</a>
+<li>setResources()
+: <a class="el" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">cUPnPClassObject</a>
+<li>setRestricted()
+: <a class="el" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">cUPnPClassObject</a>
+<li>setSearchable()
+: <a class="el" href="classcUPnPClassContainer.html#d32e937984f39806a15a22d13a644703">cUPnPClassContainer</a>
+<li>setSearchClasses()
+: <a class="el" href="classcUPnPClassContainer.html#aa34f20a75725837af2168a192687a51">cUPnPClassContainer</a>
+<li>setServerPort()
+: <a class="el" href="classcUPnPServer.html#77494ce55a93601110bd4ffce8559b23">cUPnPServer</a>
+<li>setSortCriteria()
+: <a class="el" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">cUPnPClassObject</a>
+<li>setStorageMedium()
+: <a class="el" href="classcUPnPClassMovie.html#136a1daa4c14c2d7397624eb288c463e">cUPnPClassMovie</a>
+<li>setTitle()
+: <a class="el" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">cUPnPClassObject</a>
+<li>setUpdateID()
+: <a class="el" href="classcUPnPClassContainer.html#9d3b9dd6388dd2021889a56a4fccfed3">cUPnPClassContainer</a>
+<li>SetupMenu()
+: <a class="el" href="classcPluginUpnp.html#9b1891ed7e2d3aa56dae03b778d616ee">cPluginUpnp</a>
+<li>SetupParse()
+: <a class="el" href="classcPluginUpnp.html#3f8b911f1e452789110e69b11587ebce">cPluginUpnp</a>
+<li>setWriteStatus()
+: <a class="el" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">cUPnPClassObject</a>
+<li>SortBy()
+: <a class="el" href="classcUPnPObjects.html#d9368864f90f5b72742895015df1aef2">cUPnPObjects</a>
+<li>sprintf()
+: <a class="el" href="classcSQLiteDatabase.html#cdc42326657aea81fd26da6500642381">cSQLiteDatabase</a>
+<li>Start()
+: <a class="el" href="classcPluginUpnp.html#4738d8a5d72e56ec8b7b2f4f0b3549fe">cPluginUpnp</a>
+<li>start()
+: <a class="el" href="classcUPnPServer.html#811d90c5aadc75bc48670757def1c21e">cUPnPServer</a>
+<li>startTransaction()
+: <a class="el" href="classcSQLiteDatabase.html#5c481c06d73cff4f1192409bfc23a15a">cSQLiteDatabase</a>
+<li>Stop()
+: <a class="el" href="classcPluginUpnp.html#f59cbb0bb2a3872e33461fb46b4f79b4">cPluginUpnp</a>
+<li>stop()
+: <a class="el" href="classcUPnPServer.html#c5ecc7ef5d42db1fa136ff00b24d1289">cUPnPServer</a>
+<li>Store()
+: <a class="el" href="classcMenuSetupUPnP.html#e90738a7757dcc01e64e8ccad2f8a0e6">cMenuSetupUPnP</a>
+<li>subscribe()
+: <a class="el" href="classcConnectionManager.html#7990eba09a100e5e4ee5b01b87bcc16e">cConnectionManager</a>
+, <a class="el" href="classcContentDirectory.html#17acd376a722e6e7de9ec0d4cabb707b">cContentDirectory</a>
+, <a class="el" href="classcUpnpService.html#e6d3522d580e5975f5a38d5bea88e29d">cUpnpService</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x75.html b/doc/html/functions_func_0x75.html
new file mode 100644
index 0000000..2581a10
--- /dev/null
+++ b/doc/html/functions_func_0x75.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li class="current"><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>uninit()
+: <a class="el" href="classcUPnPWebServer.html#cd20b60b929abfb205ec438127caed49">cUPnPWebServer</a>
+<li>unregisterMediator()
+: <a class="el" href="classcUPnPObjectFactory.html#ae48ef32453881a77857bf9772d79d22">cUPnPObjectFactory</a>
+<li>update()
+: <a class="el" href="classcUPnPClassContainer.html#6f89b0043d19349efbc52caf7b7dbb3a">cUPnPClassContainer</a>
+<li>Update()
+: <a class="el" href="classcMenuSetupUPnP.html#ed45944671b8974f7639aefee11e8f50">cMenuSetupUPnP</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x76.html b/doc/html/functions_func_0x76.html
new file mode 100644
index 0000000..c54db5c
--- /dev/null
+++ b/doc/html/functions_func_0x76.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li class="current"><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>Version()
+: <a class="el" href="classcPluginUpnp.html#584844bf459ec3eb7f6037f9cbb52fd5">cPluginUpnp</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x77.html b/doc/html/functions_func_0x77.html
new file mode 100644
index 0000000..4d0780d
--- /dev/null
+++ b/doc/html/functions_func_0x77.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li class="current"><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>write()
+: <a class="el" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">cFileHandle</a>
+, <a class="el" href="classcUPnPWebServer.html#46e282288394c8ba37e9d4846944c6a4">cUPnPWebServer</a>
+, <a class="el" href="classcRecordingPlayer.html#7dd0cb78ae8032eb677f01d71187d6e0">cRecordingPlayer</a>
+, <a class="el" href="classcLiveReceiver.html#eb56988441b589b6e34ea01825dfb183">cLiveReceiver</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html
new file mode 100644
index 0000000..a5d063f
--- /dev/null
+++ b/doc/html/functions_func_0x7e.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li class="current"><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
+<li>~cUPnPServer()
+: <a class="el" href="classcUPnPServer.html#8eb136050f3f6c2edb7acbf5d690723d">cUPnPServer</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html
new file mode 100644
index 0000000..dd18f51
--- /dev/null
+++ b/doc/html/functions_vars.html
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Class Members - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index__"><span>_</span></a></li>
+ <li><a href="#index_b"><span>b</span></a></li>
+ <li><a href="#index_h"><span>h</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_m"><span>m</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_ID
+: <a class="el" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c">cUPnPObjectID</a>
+</ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>bitDepth
+: <a class="el" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3">DLNAIconProfile</a>
+</ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb">DLNAIconProfile</a>
+</ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>ID
+: <a class="el" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a">DLNAProfile</a>
+, <a class="el" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd">cClass</a>
+<li>includeDerived
+: <a class="el" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8">cClass</a>
+</ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>mActors
+: <a class="el" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8">cUPnPClassVideoItem</a>
+<li>mAddress
+: <a class="el" href="classcUPnPConfig.html#0d7d7eb8d1ae9fffab39b39d1c9f10dd">cUPnPConfig</a>
+<li>mAutoSetup
+: <a class="el" href="classcUPnPConfig.html#da3ca113e9f1946fd1c09ebdcdcde0af">cUPnPConfig</a>
+<li>mChannelName
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#aae072a7d7a21b699561a62700971c26">cUPnPClassVideoBroadcast</a>
+<li>mChannelNr
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#8ad5b61bf9e88e1b30a132ca72b0d905">cUPnPClassVideoBroadcast</a>
+<li>mChildren
+: <a class="el" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7">cUPnPClassContainer</a>
+<li>mChildrenID
+: <a class="el" href="classcUPnPClassContainer.html#df514e47f80f94f957ec451e566107a5">cUPnPClassContainer</a>
+<li>mClass
+: <a class="el" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">cUPnPClassObject</a>
+<li>mContainerType
+: <a class="el" href="classcUPnPClassContainer.html#0e4678ea867811f9c5e70e018992c8c8">cUPnPClassContainer</a>
+<li>mCreateClasses
+: <a class="el" href="classcUPnPClassContainer.html#aa82cb4dae2c818609e60468e2ea6de4">cUPnPClassContainer</a>
+<li>mCreator
+: <a class="el" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">cUPnPClassObject</a>
+<li>mDatabase
+: <a class="el" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">cUPnPObjectMediator</a>
+<li>mDescription
+: <a class="el" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e">cUPnPClassVideoItem</a>
+<li>mDeviceHandle
+: <a class="el" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea">cUpnpService</a>
+<li>mDIDLFragment
+: <a class="el" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">cUPnPClassObject</a>
+<li>mDirectors
+: <a class="el" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad">cUPnPClassVideoItem</a>
+<li>mDVDRegionCode
+: <a class="el" href="classcUPnPClassMovie.html#90cc86f3eb248bbea4b3bf845862455f">cUPnPClassMovie</a>
+<li>mEnable
+: <a class="el" href="classcUPnPConfig.html#6861c1183545e44a7d33e17440f4cd8c">cUPnPConfig</a>
+<li>mGenre
+: <a class="el" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3">cUPnPClassVideoItem</a>
+<li>mIcon
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#24aa59d4c90d705f651cddf4ed90ad73">cUPnPClassVideoBroadcast</a>
+<li>mID
+: <a class="el" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">cUPnPClassObject</a>
+<li>mime
+: <a class="el" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41">DLNAProfile</a>
+, <a class="el" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509">DLNAIconProfile</a>
+<li>mInterface
+: <a class="el" href="classcUPnPConfig.html#dd0afbf876c2625acc52cfd8fd8b6a7c">cUPnPConfig</a>
+<li>mLanguage
+: <a class="el" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471">cUPnPClassVideoItem</a>
+<li>mLastModified
+: <a class="el" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">cUPnPClassObject</a>
+<li>mLongDescription
+: <a class="el" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59">cUPnPClassVideoItem</a>
+<li>mMediaDatabase
+: <a class="el" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">cUPnPObjectMediator</a>
+<li>mNumberReturned
+: <a class="el" href="structcUPnPResultSet.html#94b5bc7673773e674a81d0c5adc7f4e7">cUPnPResultSet</a>
+<li>mParent
+: <a class="el" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">cUPnPClassObject</a>
+<li>mPort
+: <a class="el" href="classcUPnPConfig.html#93224ed337b1f74525a68c5159532cb3">cUPnPConfig</a>
+<li>mProducers
+: <a class="el" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0">cUPnPClassVideoItem</a>
+<li>mPublishers
+: <a class="el" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e">cUPnPClassVideoItem</a>
+<li>mRating
+: <a class="el" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9">cUPnPClassVideoItem</a>
+<li>mReference
+: <a class="el" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">cUPnPClassItem</a>
+<li>mRegion
+: <a class="el" href="classcUPnPClassVideoBroadcast.html#9a9420e700fd45afd24beba8ae261909">cUPnPClassVideoBroadcast</a>
+<li>mRelations
+: <a class="el" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97">cUPnPClassVideoItem</a>
+<li>mResources
+: <a class="el" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">cUPnPClassObject</a>
+<li>mResourcesID
+: <a class="el" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">cUPnPClassObject</a>
+<li>mRestricted
+: <a class="el" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">cUPnPClassObject</a>
+<li>mResult
+: <a class="el" href="structcUPnPResultSet.html#7e891eca2a37daea6285d2f7a2731c1d">cUPnPResultSet</a>
+<li>mSearchable
+: <a class="el" href="classcUPnPClassContainer.html#640da8763c5ce432b46125faa3be01da">cUPnPClassContainer</a>
+<li>mSearchClasses
+: <a class="el" href="classcUPnPClassContainer.html#5b66ce95c06498c6166b856d015139b5">cUPnPClassContainer</a>
+<li>mSortCriteria
+: <a class="el" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">cUPnPClassObject</a>
+<li>mSortDescending
+: <a class="el" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">cUPnPClassObject</a>
+<li>mStorageMedium
+: <a class="el" href="classcUPnPClassMovie.html#a9bcda545b8ce19e3b613757b3759127">cUPnPClassMovie</a>
+<li>mTitle
+: <a class="el" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">cUPnPClassObject</a>
+<li>mTotalMatches
+: <a class="el" href="structcUPnPResultSet.html#78bd90b56bfc5804e54df6579cd8e541">cUPnPResultSet</a>
+<li>mUpdateID
+: <a class="el" href="classcUPnPClassContainer.html#8cdeed9b80cae365174680dd4196664f">cUPnPClassContainer</a>
+<li>mWriteStatus
+: <a class="el" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">cUPnPClassObject</a>
+</ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>Property
+: <a class="el" href="structcSortCrit.html#fedfdc7edd9ec85496338f52df0a04d1">cSortCrit</a>
+</ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>SortDescending
+: <a class="el" href="structcSortCrit.html#ca3564efa1903ab8b1ba144d43c6715f">cSortCrit</a>
+</ul>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>width
+: <a class="el" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d">DLNAIconProfile</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/graph_legend.dot b/doc/html/graph_legend.dot
new file mode 100644
index 0000000..9a09018
--- /dev/null
+++ b/doc/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+ node [fontname="FreeSans",fontsize="10",shape=record];
+ Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize="10",style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize="10",style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize="10",style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html
new file mode 100644
index 0000000..9f3b817
--- /dev/null
+++ b/doc/html/graph_legend.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Graph Legend</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> This will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/graph_legend.png b/doc/html/graph_legend.png
new file mode 100644
index 0000000..9c64830
--- /dev/null
+++ b/doc/html/graph_legend.png
Binary files differ
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html
new file mode 100644
index 0000000..a40fc32
--- /dev/null
+++ b/doc/html/hierarchy.html
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Hierarchical Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li class="current"><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Class Hierarchy</h1><a href="inherits.html">Go to the graphical class hierarchy</a>
+<p>
+This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>
+<li><a class="el" href="structcClass.html">cClass</a>
+<li><a class="el" href="classcDlna.html">cDlna</a>
+<li><a class="el" href="classcFileHandle.html">cFileHandle</a>
+<ul>
+<li><a class="el" href="classcLiveReceiver.html">cLiveReceiver</a>
+<li><a class="el" href="classcRecordingPlayer.html">cRecordingPlayer</a>
+</ul>
+<li><a class="el" href="classcFilterCriteria.html">cFilterCriteria</a>
+<li><a class="el" href="classcMediaDatabase.html">cMediaDatabase</a>
+<li><a class="el" href="classcMediatorInterface.html">cMediatorInterface</a>
+<ul>
+<li><a class="el" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>
+<ul>
+<li><a class="el" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a>
+<li><a class="el" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>
+<ul>
+<li><a class="el" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>
+<ul>
+<li><a class="el" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a>
+<li><a class="el" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a>
+</ul>
+</ul>
+</ul>
+</ul>
+<li><a class="el" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a>
+<li><a class="el" href="classcPathParser.html">cPathParser</a>
+<li><a class="el" href="classcPluginUpnp.html">cPluginUpnp</a>
+<li><a class="el" href="classcRegisteredProfile.html">cRegisteredProfile</a>
+<li><a class="el" href="classcRow.html">cRow</a>
+<li><a class="el" href="classcRows.html">cRows</a>
+<li><a class="el" href="structcSortCrit.html">cSortCrit</a>
+<li><a class="el" href="classcSortCriteria.html">cSortCriteria</a>
+<li><a class="el" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>
+<li><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a>
+<ul>
+<li><a class="el" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>
+<li><a class="el" href="classcUPnPClassItem.html">cUPnPClassItem</a>
+<ul>
+<li><a class="el" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>
+<ul>
+<li><a class="el" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>
+<li><a class="el" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>
+</ul>
+</ul>
+</ul>
+<li><a class="el" href="classcUPnPConfig.html">cUPnPConfig</a>
+<li><a class="el" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a>
+<li><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>
+<li><a class="el" href="classcUPnPObjects.html">cUPnPObjects</a>
+<li><a class="el" href="classcUPnPResource.html">cUPnPResource</a>
+<li><a class="el" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>
+<li><a class="el" href="classcUPnPResources.html">cUPnPResources</a>
+<li><a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a>
+<li><a class="el" href="classcUPnPServer.html">cUPnPServer</a>
+<li><a class="el" href="classcUpnpService.html">cUpnpService</a>
+<ul>
+<li><a class="el" href="classcConnectionManager.html">cConnectionManager</a>
+<li><a class="el" href="classcContentDirectory.html">cContentDirectory</a>
+</ul>
+<li><a class="el" href="classcUPnPWebServer.html">cUPnPWebServer</a>
+<li><a class="el" href="classcVirtualConnection.html">cVirtualConnection</a>
+<li><a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a>
+<li><a class="el" href="structDLNAProfile.html">DLNAProfile</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644
index 0000000..f68970c
--- /dev/null
+++ b/doc/html/index.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>UPnP/DLNA plugin for VDR Documentation</h1>
+<p>
+<h3 align="center">0.0.1 </h3></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/inherit__graph__0.map b/doc/html/inherit__graph__0.map
new file mode 100644
index 0000000..a61a799
--- /dev/null
+++ b/doc/html/inherit__graph__0.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcAudioVideoDetector.html" title="cAudioVideoDetector" alt="" coords="5,5,149,32">
diff --git a/doc/html/inherit__graph__0.md5 b/doc/html/inherit__graph__0.md5
new file mode 100644
index 0000000..152d83e
--- /dev/null
+++ b/doc/html/inherit__graph__0.md5
@@ -0,0 +1 @@
+656533ff1c2b4ba4c0df02d3881eb15b \ No newline at end of file
diff --git a/doc/html/inherit__graph__0.png b/doc/html/inherit__graph__0.png
new file mode 100644
index 0000000..dab2fc3
--- /dev/null
+++ b/doc/html/inherit__graph__0.png
Binary files differ
diff --git a/doc/html/inherit__graph__1.map b/doc/html/inherit__graph__1.map
new file mode 100644
index 0000000..e98069e
--- /dev/null
+++ b/doc/html/inherit__graph__1.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structcClass.html" title="cClass" alt="" coords="5,5,67,32">
diff --git a/doc/html/inherit__graph__1.md5 b/doc/html/inherit__graph__1.md5
new file mode 100644
index 0000000..5cf1bea
--- /dev/null
+++ b/doc/html/inherit__graph__1.md5
@@ -0,0 +1 @@
+fd800ee5748e57248eca4ac10c331777 \ No newline at end of file
diff --git a/doc/html/inherit__graph__1.png b/doc/html/inherit__graph__1.png
new file mode 100644
index 0000000..0472c6d
--- /dev/null
+++ b/doc/html/inherit__graph__1.png
Binary files differ
diff --git a/doc/html/inherit__graph__10.map b/doc/html/inherit__graph__10.map
new file mode 100644
index 0000000..9e2a10e
--- /dev/null
+++ b/doc/html/inherit__graph__10.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcRegisteredProfile.html" title="cRegisteredProfile" alt="" coords="5,5,133,32">
diff --git a/doc/html/inherit__graph__10.md5 b/doc/html/inherit__graph__10.md5
new file mode 100644
index 0000000..a6e6a12
--- /dev/null
+++ b/doc/html/inherit__graph__10.md5
@@ -0,0 +1 @@
+6cc5767b26e27bbe502ba76d6744cc73 \ No newline at end of file
diff --git a/doc/html/inherit__graph__10.png b/doc/html/inherit__graph__10.png
new file mode 100644
index 0000000..f8b85d3
--- /dev/null
+++ b/doc/html/inherit__graph__10.png
Binary files differ
diff --git a/doc/html/inherit__graph__11.map b/doc/html/inherit__graph__11.map
new file mode 100644
index 0000000..a7e07c5
--- /dev/null
+++ b/doc/html/inherit__graph__11.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcRow.html" title="cRow" alt="" coords="5,5,59,32">
diff --git a/doc/html/inherit__graph__11.md5 b/doc/html/inherit__graph__11.md5
new file mode 100644
index 0000000..2ab98b7
--- /dev/null
+++ b/doc/html/inherit__graph__11.md5
@@ -0,0 +1 @@
+b4013c16f09455c2c92ebbec1fed8bd9 \ No newline at end of file
diff --git a/doc/html/inherit__graph__11.png b/doc/html/inherit__graph__11.png
new file mode 100644
index 0000000..053b527
--- /dev/null
+++ b/doc/html/inherit__graph__11.png
Binary files differ
diff --git a/doc/html/inherit__graph__12.map b/doc/html/inherit__graph__12.map
new file mode 100644
index 0000000..d910497
--- /dev/null
+++ b/doc/html/inherit__graph__12.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcRows.html" title="cRows" alt="" coords="7,5,65,32">
diff --git a/doc/html/inherit__graph__12.md5 b/doc/html/inherit__graph__12.md5
new file mode 100644
index 0000000..6711e71
--- /dev/null
+++ b/doc/html/inherit__graph__12.md5
@@ -0,0 +1 @@
+3b2f7592c6a12c8eed4afdc919c6318a \ No newline at end of file
diff --git a/doc/html/inherit__graph__12.png b/doc/html/inherit__graph__12.png
new file mode 100644
index 0000000..851b60f
--- /dev/null
+++ b/doc/html/inherit__graph__12.png
Binary files differ
diff --git a/doc/html/inherit__graph__13.map b/doc/html/inherit__graph__13.map
new file mode 100644
index 0000000..e1a9d60
--- /dev/null
+++ b/doc/html/inherit__graph__13.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structcSortCrit.html" title="cSortCrit" alt="" coords="5,5,77,32">
diff --git a/doc/html/inherit__graph__13.md5 b/doc/html/inherit__graph__13.md5
new file mode 100644
index 0000000..952dd5e
--- /dev/null
+++ b/doc/html/inherit__graph__13.md5
@@ -0,0 +1 @@
+d7f8910244f8c348e81f2078bb8e6318 \ No newline at end of file
diff --git a/doc/html/inherit__graph__13.png b/doc/html/inherit__graph__13.png
new file mode 100644
index 0000000..1e907e9
--- /dev/null
+++ b/doc/html/inherit__graph__13.png
Binary files differ
diff --git a/doc/html/inherit__graph__14.map b/doc/html/inherit__graph__14.map
new file mode 100644
index 0000000..f01ae16
--- /dev/null
+++ b/doc/html/inherit__graph__14.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcSortCriteria.html" title="cSortCriteria" alt="" coords="5,5,99,32">
diff --git a/doc/html/inherit__graph__14.md5 b/doc/html/inherit__graph__14.md5
new file mode 100644
index 0000000..ff34fde
--- /dev/null
+++ b/doc/html/inherit__graph__14.md5
@@ -0,0 +1 @@
+0932cddc97d09babe22c47174a985177 \ No newline at end of file
diff --git a/doc/html/inherit__graph__14.png b/doc/html/inherit__graph__14.png
new file mode 100644
index 0000000..aaaf39b
--- /dev/null
+++ b/doc/html/inherit__graph__14.png
Binary files differ
diff --git a/doc/html/inherit__graph__15.map b/doc/html/inherit__graph__15.map
new file mode 100644
index 0000000..3c62baf
--- /dev/null
+++ b/doc/html/inherit__graph__15.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcSQLiteDatabase.html" title="cSQLiteDatabase" alt="" coords="7,5,129,32">
diff --git a/doc/html/inherit__graph__15.md5 b/doc/html/inherit__graph__15.md5
new file mode 100644
index 0000000..2085e9d
--- /dev/null
+++ b/doc/html/inherit__graph__15.md5
@@ -0,0 +1 @@
+2d366559c8dafd43320957d517656049 \ No newline at end of file
diff --git a/doc/html/inherit__graph__15.png b/doc/html/inherit__graph__15.png
new file mode 100644
index 0000000..8f51787
--- /dev/null
+++ b/doc/html/inherit__graph__15.png
Binary files differ
diff --git a/doc/html/inherit__graph__16.map b/doc/html/inherit__graph__16.map
new file mode 100644
index 0000000..7eef196
--- /dev/null
+++ b/doc/html/inherit__graph__16.map
@@ -0,0 +1,6 @@
+<area shape="rect" href="$classcUPnPClassObject.html" title="cUPnPClassObject" alt="" coords="5,31,139,57">
+<area shape="rect" href="$classcUPnPClassContainer.html" title="cUPnPClassContainer" alt="" coords="188,5,337,32">
+<area shape="rect" href="$classcUPnPClassItem.html" title="cUPnPClassItem" alt="" coords="203,56,323,83">
+<area shape="rect" href="$classcUPnPClassVideoItem.html" title="cUPnPClassVideoItem" alt="" coords="387,56,541,83">
+<area shape="rect" href="$classcUPnPClassMovie.html" title="cUPnPClassMovie" alt="" coords="619,31,749,57">
+<area shape="rect" href="$classcUPnPClassVideoBroadcast.html" title="cUPnPClassVideoBroadcast" alt="" coords="591,81,777,108">
diff --git a/doc/html/inherit__graph__16.md5 b/doc/html/inherit__graph__16.md5
new file mode 100644
index 0000000..0f067c5
--- /dev/null
+++ b/doc/html/inherit__graph__16.md5
@@ -0,0 +1 @@
+bc70d1ef877c6b85d7d56f42667f022f \ No newline at end of file
diff --git a/doc/html/inherit__graph__16.png b/doc/html/inherit__graph__16.png
new file mode 100644
index 0000000..f844536
--- /dev/null
+++ b/doc/html/inherit__graph__16.png
Binary files differ
diff --git a/doc/html/inherit__graph__17.map b/doc/html/inherit__graph__17.map
new file mode 100644
index 0000000..243432c
--- /dev/null
+++ b/doc/html/inherit__graph__17.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPConfig.html" title="cUPnPConfig" alt="" coords="7,5,105,32">
diff --git a/doc/html/inherit__graph__17.md5 b/doc/html/inherit__graph__17.md5
new file mode 100644
index 0000000..0075d83
--- /dev/null
+++ b/doc/html/inherit__graph__17.md5
@@ -0,0 +1 @@
+14a5063878b5c87bee2e3c7e2edd8890 \ No newline at end of file
diff --git a/doc/html/inherit__graph__17.png b/doc/html/inherit__graph__17.png
new file mode 100644
index 0000000..bc23571
--- /dev/null
+++ b/doc/html/inherit__graph__17.png
Binary files differ
diff --git a/doc/html/inherit__graph__18.map b/doc/html/inherit__graph__18.map
new file mode 100644
index 0000000..6f9efd1
--- /dev/null
+++ b/doc/html/inherit__graph__18.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPObjectFactory.html" title="cUPnPObjectFactory" alt="" coords="5,5,149,32">
diff --git a/doc/html/inherit__graph__18.md5 b/doc/html/inherit__graph__18.md5
new file mode 100644
index 0000000..415f183
--- /dev/null
+++ b/doc/html/inherit__graph__18.md5
@@ -0,0 +1 @@
+b79b47373d0e042c4e6e6f3748d3b799 \ No newline at end of file
diff --git a/doc/html/inherit__graph__18.png b/doc/html/inherit__graph__18.png
new file mode 100644
index 0000000..2597bda
--- /dev/null
+++ b/doc/html/inherit__graph__18.png
Binary files differ
diff --git a/doc/html/inherit__graph__19.map b/doc/html/inherit__graph__19.map
new file mode 100644
index 0000000..37e883b
--- /dev/null
+++ b/doc/html/inherit__graph__19.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structcUPnPObjectID.html" title="cUPnPObjectID" alt="" coords="7,5,119,32">
diff --git a/doc/html/inherit__graph__19.md5 b/doc/html/inherit__graph__19.md5
new file mode 100644
index 0000000..ddabd05
--- /dev/null
+++ b/doc/html/inherit__graph__19.md5
@@ -0,0 +1 @@
+31664e8d23a7207c51b57f1d103e3a18 \ No newline at end of file
diff --git a/doc/html/inherit__graph__19.png b/doc/html/inherit__graph__19.png
new file mode 100644
index 0000000..7b01670
--- /dev/null
+++ b/doc/html/inherit__graph__19.png
Binary files differ
diff --git a/doc/html/inherit__graph__2.map b/doc/html/inherit__graph__2.map
new file mode 100644
index 0000000..a3e2cb6
--- /dev/null
+++ b/doc/html/inherit__graph__2.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcDlna.html" title="cDlna" alt="" coords="7,5,60,32">
diff --git a/doc/html/inherit__graph__2.md5 b/doc/html/inherit__graph__2.md5
new file mode 100644
index 0000000..9cf34c4
--- /dev/null
+++ b/doc/html/inherit__graph__2.md5
@@ -0,0 +1 @@
+af49e515b707f75763f7cf80718eb677 \ No newline at end of file
diff --git a/doc/html/inherit__graph__2.png b/doc/html/inherit__graph__2.png
new file mode 100644
index 0000000..afad60d
--- /dev/null
+++ b/doc/html/inherit__graph__2.png
Binary files differ
diff --git a/doc/html/inherit__graph__20.map b/doc/html/inherit__graph__20.map
new file mode 100644
index 0000000..013cfa0
--- /dev/null
+++ b/doc/html/inherit__graph__20.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPObjects.html" title="cUPnPObjects" alt="" coords="7,5,113,32">
diff --git a/doc/html/inherit__graph__20.md5 b/doc/html/inherit__graph__20.md5
new file mode 100644
index 0000000..5f067a3
--- /dev/null
+++ b/doc/html/inherit__graph__20.md5
@@ -0,0 +1 @@
+35062c2c2182f43554eb440c7200ab08 \ No newline at end of file
diff --git a/doc/html/inherit__graph__20.png b/doc/html/inherit__graph__20.png
new file mode 100644
index 0000000..187e93d
--- /dev/null
+++ b/doc/html/inherit__graph__20.png
Binary files differ
diff --git a/doc/html/inherit__graph__21.map b/doc/html/inherit__graph__21.map
new file mode 100644
index 0000000..55fe9da
--- /dev/null
+++ b/doc/html/inherit__graph__21.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPResource.html" title="cUPnPResource" alt="" coords="5,5,123,32">
diff --git a/doc/html/inherit__graph__21.md5 b/doc/html/inherit__graph__21.md5
new file mode 100644
index 0000000..6f6b8d1
--- /dev/null
+++ b/doc/html/inherit__graph__21.md5
@@ -0,0 +1 @@
+0e448f880d2fde82c2ad6d307abfd36e \ No newline at end of file
diff --git a/doc/html/inherit__graph__21.png b/doc/html/inherit__graph__21.png
new file mode 100644
index 0000000..dd5b004
--- /dev/null
+++ b/doc/html/inherit__graph__21.png
Binary files differ
diff --git a/doc/html/inherit__graph__22.map b/doc/html/inherit__graph__22.map
new file mode 100644
index 0000000..edc4cfb
--- /dev/null
+++ b/doc/html/inherit__graph__22.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPResourceMediator.html" title="cUPnPResourceMediator" alt="" coords="5,5,173,32">
diff --git a/doc/html/inherit__graph__22.md5 b/doc/html/inherit__graph__22.md5
new file mode 100644
index 0000000..61d544f
--- /dev/null
+++ b/doc/html/inherit__graph__22.md5
@@ -0,0 +1 @@
+164efacca9f93bd62d5d237be1fc9205 \ No newline at end of file
diff --git a/doc/html/inherit__graph__22.png b/doc/html/inherit__graph__22.png
new file mode 100644
index 0000000..5bd6b18
--- /dev/null
+++ b/doc/html/inherit__graph__22.png
Binary files differ
diff --git a/doc/html/inherit__graph__23.map b/doc/html/inherit__graph__23.map
new file mode 100644
index 0000000..b54ccbc
--- /dev/null
+++ b/doc/html/inherit__graph__23.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPResources.html" title="cUPnPResources" alt="" coords="7,5,129,32">
diff --git a/doc/html/inherit__graph__23.md5 b/doc/html/inherit__graph__23.md5
new file mode 100644
index 0000000..05f73ea
--- /dev/null
+++ b/doc/html/inherit__graph__23.md5
@@ -0,0 +1 @@
+5da3cc3aac848698a24ede093a1c8b60 \ No newline at end of file
diff --git a/doc/html/inherit__graph__23.png b/doc/html/inherit__graph__23.png
new file mode 100644
index 0000000..483aec1
--- /dev/null
+++ b/doc/html/inherit__graph__23.png
Binary files differ
diff --git a/doc/html/inherit__graph__24.map b/doc/html/inherit__graph__24.map
new file mode 100644
index 0000000..a036538
--- /dev/null
+++ b/doc/html/inherit__graph__24.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structcUPnPResultSet.html" title="cUPnPResultSet" alt="" coords="5,5,125,32">
diff --git a/doc/html/inherit__graph__24.md5 b/doc/html/inherit__graph__24.md5
new file mode 100644
index 0000000..cbf6237
--- /dev/null
+++ b/doc/html/inherit__graph__24.md5
@@ -0,0 +1 @@
+d4067186227c387a648bb4001a89e309 \ No newline at end of file
diff --git a/doc/html/inherit__graph__24.png b/doc/html/inherit__graph__24.png
new file mode 100644
index 0000000..06ff771
--- /dev/null
+++ b/doc/html/inherit__graph__24.png
Binary files differ
diff --git a/doc/html/inherit__graph__25.map b/doc/html/inherit__graph__25.map
new file mode 100644
index 0000000..9f470e6
--- /dev/null
+++ b/doc/html/inherit__graph__25.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPServer.html" title="cUPnPServer" alt="" coords="7,5,105,32">
diff --git a/doc/html/inherit__graph__25.md5 b/doc/html/inherit__graph__25.md5
new file mode 100644
index 0000000..6c31a4a
--- /dev/null
+++ b/doc/html/inherit__graph__25.md5
@@ -0,0 +1 @@
+229237716f69442bb8fc692505907713 \ No newline at end of file
diff --git a/doc/html/inherit__graph__25.png b/doc/html/inherit__graph__25.png
new file mode 100644
index 0000000..86fefd1
--- /dev/null
+++ b/doc/html/inherit__graph__25.png
Binary files differ
diff --git a/doc/html/inherit__graph__26.map b/doc/html/inherit__graph__26.map
new file mode 100644
index 0000000..95dd720
--- /dev/null
+++ b/doc/html/inherit__graph__26.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcUpnpService.html" title="cUpnpService" alt="" coords="7,31,108,57">
+<area shape="rect" href="$classcConnectionManager.html" title="cConnectionManager" alt="" coords="157,5,301,32">
+<area shape="rect" href="$classcContentDirectory.html" title="cContentDirectory" alt="" coords="167,56,292,83">
diff --git a/doc/html/inherit__graph__26.md5 b/doc/html/inherit__graph__26.md5
new file mode 100644
index 0000000..f7e86b6
--- /dev/null
+++ b/doc/html/inherit__graph__26.md5
@@ -0,0 +1 @@
+886182bb100278eec75b1fbcb4cb30d3 \ No newline at end of file
diff --git a/doc/html/inherit__graph__26.png b/doc/html/inherit__graph__26.png
new file mode 100644
index 0000000..4afa572
--- /dev/null
+++ b/doc/html/inherit__graph__26.png
Binary files differ
diff --git a/doc/html/inherit__graph__27.map b/doc/html/inherit__graph__27.map
new file mode 100644
index 0000000..3462348
--- /dev/null
+++ b/doc/html/inherit__graph__27.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcUPnPWebServer.html" title="cUPnPWebServer" alt="" coords="7,5,132,32">
diff --git a/doc/html/inherit__graph__27.md5 b/doc/html/inherit__graph__27.md5
new file mode 100644
index 0000000..a29e305
--- /dev/null
+++ b/doc/html/inherit__graph__27.md5
@@ -0,0 +1 @@
+c742773ea78447d8fba974fcaeabcca2 \ No newline at end of file
diff --git a/doc/html/inherit__graph__27.png b/doc/html/inherit__graph__27.png
new file mode 100644
index 0000000..9b1a0bd
--- /dev/null
+++ b/doc/html/inherit__graph__27.png
Binary files differ
diff --git a/doc/html/inherit__graph__28.map b/doc/html/inherit__graph__28.map
new file mode 100644
index 0000000..98c2251
--- /dev/null
+++ b/doc/html/inherit__graph__28.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcVirtualConnection.html" title="cVirtualConnection" alt="" coords="5,5,136,32">
diff --git a/doc/html/inherit__graph__28.md5 b/doc/html/inherit__graph__28.md5
new file mode 100644
index 0000000..bc10b9b
--- /dev/null
+++ b/doc/html/inherit__graph__28.md5
@@ -0,0 +1 @@
+06e1f31992d53d3644ac14e01b7a50bc \ No newline at end of file
diff --git a/doc/html/inherit__graph__28.png b/doc/html/inherit__graph__28.png
new file mode 100644
index 0000000..65d931b
--- /dev/null
+++ b/doc/html/inherit__graph__28.png
Binary files differ
diff --git a/doc/html/inherit__graph__29.map b/doc/html/inherit__graph__29.map
new file mode 100644
index 0000000..f614a3f
--- /dev/null
+++ b/doc/html/inherit__graph__29.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structDLNAIconProfile.html" title="DLNAIconProfile" alt="" coords="5,5,123,32">
diff --git a/doc/html/inherit__graph__29.md5 b/doc/html/inherit__graph__29.md5
new file mode 100644
index 0000000..c8dea22
--- /dev/null
+++ b/doc/html/inherit__graph__29.md5
@@ -0,0 +1 @@
+45902844fb33ce1e31de224ff85b0d73 \ No newline at end of file
diff --git a/doc/html/inherit__graph__29.png b/doc/html/inherit__graph__29.png
new file mode 100644
index 0000000..8ad849d
--- /dev/null
+++ b/doc/html/inherit__graph__29.png
Binary files differ
diff --git a/doc/html/inherit__graph__3.map b/doc/html/inherit__graph__3.map
new file mode 100644
index 0000000..7f37973
--- /dev/null
+++ b/doc/html/inherit__graph__3.map
@@ -0,0 +1,3 @@
+<area shape="rect" href="$classcFileHandle.html" title="cFileHandle" alt="" coords="7,31,95,57">
+<area shape="rect" href="$classcLiveReceiver.html" title="cLiveReceiver" alt="" coords="155,5,259,32">
+<area shape="rect" href="$classcRecordingPlayer.html" title="cRecordingPlayer" alt="" coords="145,56,268,83">
diff --git a/doc/html/inherit__graph__3.md5 b/doc/html/inherit__graph__3.md5
new file mode 100644
index 0000000..5c4d578
--- /dev/null
+++ b/doc/html/inherit__graph__3.md5
@@ -0,0 +1 @@
+3a78ace026180243ee32a23174dbfa1c \ No newline at end of file
diff --git a/doc/html/inherit__graph__3.png b/doc/html/inherit__graph__3.png
new file mode 100644
index 0000000..21110b3
--- /dev/null
+++ b/doc/html/inherit__graph__3.png
Binary files differ
diff --git a/doc/html/inherit__graph__30.map b/doc/html/inherit__graph__30.map
new file mode 100644
index 0000000..17a81fb
--- /dev/null
+++ b/doc/html/inherit__graph__30.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structDLNAProfile.html" title="DLNAProfile" alt="" coords="7,5,97,32">
diff --git a/doc/html/inherit__graph__30.md5 b/doc/html/inherit__graph__30.md5
new file mode 100644
index 0000000..c7a55d8
--- /dev/null
+++ b/doc/html/inherit__graph__30.md5
@@ -0,0 +1 @@
+c3f24193b134694529f631d703c53a21 \ No newline at end of file
diff --git a/doc/html/inherit__graph__30.png b/doc/html/inherit__graph__30.png
new file mode 100644
index 0000000..581712e
--- /dev/null
+++ b/doc/html/inherit__graph__30.png
Binary files differ
diff --git a/doc/html/inherit__graph__4.map b/doc/html/inherit__graph__4.map
new file mode 100644
index 0000000..98ebadd
--- /dev/null
+++ b/doc/html/inherit__graph__4.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcFilterCriteria.html" title="cFilterCriteria" alt="" coords="5,5,104,32">
diff --git a/doc/html/inherit__graph__4.md5 b/doc/html/inherit__graph__4.md5
new file mode 100644
index 0000000..fd5bf31
--- /dev/null
+++ b/doc/html/inherit__graph__4.md5
@@ -0,0 +1 @@
+5b2f0325b833ccba1a5439898222f72b \ No newline at end of file
diff --git a/doc/html/inherit__graph__4.png b/doc/html/inherit__graph__4.png
new file mode 100644
index 0000000..f1805cc
--- /dev/null
+++ b/doc/html/inherit__graph__4.png
Binary files differ
diff --git a/doc/html/inherit__graph__5.map b/doc/html/inherit__graph__5.map
new file mode 100644
index 0000000..9797794
--- /dev/null
+++ b/doc/html/inherit__graph__5.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcMediaDatabase.html" title="cMediaDatabase" alt="" coords="7,5,124,32">
diff --git a/doc/html/inherit__graph__5.md5 b/doc/html/inherit__graph__5.md5
new file mode 100644
index 0000000..f6e99ae
--- /dev/null
+++ b/doc/html/inherit__graph__5.md5
@@ -0,0 +1 @@
+58edcfc55d6b69903a63b636dd5a4a88 \ No newline at end of file
diff --git a/doc/html/inherit__graph__5.png b/doc/html/inherit__graph__5.png
new file mode 100644
index 0000000..7a569db
--- /dev/null
+++ b/doc/html/inherit__graph__5.png
Binary files differ
diff --git a/doc/html/inherit__graph__6.map b/doc/html/inherit__graph__6.map
new file mode 100644
index 0000000..acdcb46
--- /dev/null
+++ b/doc/html/inherit__graph__6.map
@@ -0,0 +1,7 @@
+<area shape="rect" href="$classcMediatorInterface.html" title="cMediatorInterface" alt="" coords="7,31,135,57">
+<area shape="rect" href="$classcUPnPObjectMediator.html" title="cUPnPObjectMediator" alt="" coords="185,31,335,57">
+<area shape="rect" href="$classcUPnPContainerMediator.html" title="cUPnPContainerMediator" alt="" coords="384,5,552,32">
+<area shape="rect" href="$classcUPnPItemMediator.html" title="cUPnPItemMediator" alt="" coords="399,56,537,83">
+<area shape="rect" href="$classcUPnPVideoItemMediator.html" title="cUPnPVideoItemMediator" alt="" coords="601,56,772,83">
+<area shape="rect" href="$classcUPnPMovieMediator.html" title="cUPnPMovieMediator" alt="" coords="851,31,997,57">
+<area shape="rect" href="$classcUPnPVideoBroadcastMediator.html" title="cUPnPVideoBroadcastMediator" alt="" coords="823,81,1025,108">
diff --git a/doc/html/inherit__graph__6.md5 b/doc/html/inherit__graph__6.md5
new file mode 100644
index 0000000..c27d248
--- /dev/null
+++ b/doc/html/inherit__graph__6.md5
@@ -0,0 +1 @@
+60c20bb30e9a330cedd7bc6b6c1f4393 \ No newline at end of file
diff --git a/doc/html/inherit__graph__6.png b/doc/html/inherit__graph__6.png
new file mode 100644
index 0000000..73f3713
--- /dev/null
+++ b/doc/html/inherit__graph__6.png
Binary files differ
diff --git a/doc/html/inherit__graph__7.map b/doc/html/inherit__graph__7.map
new file mode 100644
index 0000000..cce5791
--- /dev/null
+++ b/doc/html/inherit__graph__7.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcMenuSetupUPnP.html" title="cMenuSetupUPnP" alt="" coords="5,5,133,32">
diff --git a/doc/html/inherit__graph__7.md5 b/doc/html/inherit__graph__7.md5
new file mode 100644
index 0000000..0bf1cba
--- /dev/null
+++ b/doc/html/inherit__graph__7.md5
@@ -0,0 +1 @@
+927f0ea7d785113fa9f136a3478f74b4 \ No newline at end of file
diff --git a/doc/html/inherit__graph__7.png b/doc/html/inherit__graph__7.png
new file mode 100644
index 0000000..0443a41
--- /dev/null
+++ b/doc/html/inherit__graph__7.png
Binary files differ
diff --git a/doc/html/inherit__graph__8.map b/doc/html/inherit__graph__8.map
new file mode 100644
index 0000000..deda59a
--- /dev/null
+++ b/doc/html/inherit__graph__8.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcPathParser.html" title="cPathParser" alt="" coords="5,5,99,32">
diff --git a/doc/html/inherit__graph__8.md5 b/doc/html/inherit__graph__8.md5
new file mode 100644
index 0000000..b16af4c
--- /dev/null
+++ b/doc/html/inherit__graph__8.md5
@@ -0,0 +1 @@
+c307bf54a6c23b68c84db069bd71f6e6 \ No newline at end of file
diff --git a/doc/html/inherit__graph__8.png b/doc/html/inherit__graph__8.png
new file mode 100644
index 0000000..d6fc914
--- /dev/null
+++ b/doc/html/inherit__graph__8.png
Binary files differ
diff --git a/doc/html/inherit__graph__9.map b/doc/html/inherit__graph__9.map
new file mode 100644
index 0000000..6278422
--- /dev/null
+++ b/doc/html/inherit__graph__9.map
@@ -0,0 +1 @@
+<area shape="rect" href="$classcPluginUpnp.html" title="cPluginUpnp" alt="" coords="7,5,100,32">
diff --git a/doc/html/inherit__graph__9.md5 b/doc/html/inherit__graph__9.md5
new file mode 100644
index 0000000..39519e3
--- /dev/null
+++ b/doc/html/inherit__graph__9.md5
@@ -0,0 +1 @@
+4dcf81119b4305cdd74545396f134244 \ No newline at end of file
diff --git a/doc/html/inherit__graph__9.png b/doc/html/inherit__graph__9.png
new file mode 100644
index 0000000..5686014
--- /dev/null
+++ b/doc/html/inherit__graph__9.png
Binary files differ
diff --git a/doc/html/inherits.html b/doc/html/inherits.html
new file mode 100644
index 0000000..09e5ca4
--- /dev/null
+++ b/doc/html/inherits.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Graphical Class Hierarchy</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li class="current"><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graphical Class Hierarchy</h1><a href="hierarchy.html">Go to the textual class hierarchy</a>
+<p>
+<table border="0" cellspacing="10" cellpadding="0">
+<tr><td><img src="inherit__graph__0.png" border="0" alt="" usemap="#cAudioVideoDetector_map">
+<map name="cAudioVideoDetector_map">
+<area shape="rect" href="classcAudioVideoDetector.html" title="cAudioVideoDetector" alt="" coords="5,5,149,32"></map></td></tr>
+<tr><td><img src="inherit__graph__1.png" border="0" alt="" usemap="#cClass_map">
+<map name="cClass_map">
+<area shape="rect" href="structcClass.html" title="cClass" alt="" coords="5,5,67,32"></map></td></tr>
+<tr><td><img src="inherit__graph__2.png" border="0" alt="" usemap="#cDlna_map">
+<map name="cDlna_map">
+<area shape="rect" href="classcDlna.html" title="cDlna" alt="" coords="7,5,60,32"></map></td></tr>
+<tr><td><img src="inherit__graph__3.png" border="0" alt="" usemap="#cFileHandle_map">
+<map name="cFileHandle_map">
+<area shape="rect" href="classcFileHandle.html" title="cFileHandle" alt="" coords="7,31,95,57"><area shape="rect" href="classcLiveReceiver.html" title="cLiveReceiver" alt="" coords="155,5,259,32"><area shape="rect" href="classcRecordingPlayer.html" title="cRecordingPlayer" alt="" coords="145,56,268,83"></map></td></tr>
+<tr><td><img src="inherit__graph__4.png" border="0" alt="" usemap="#cFilterCriteria_map">
+<map name="cFilterCriteria_map">
+<area shape="rect" href="classcFilterCriteria.html" title="cFilterCriteria" alt="" coords="5,5,104,32"></map></td></tr>
+<tr><td><img src="inherit__graph__5.png" border="0" alt="" usemap="#cMediaDatabase_map">
+<map name="cMediaDatabase_map">
+<area shape="rect" href="classcMediaDatabase.html" title="cMediaDatabase" alt="" coords="7,5,124,32"></map></td></tr>
+<tr><td><img src="inherit__graph__6.png" border="0" alt="" usemap="#cMediatorInterface_map">
+<map name="cMediatorInterface_map">
+<area shape="rect" href="classcMediatorInterface.html" title="cMediatorInterface" alt="" coords="7,31,135,57"><area shape="rect" href="classcUPnPObjectMediator.html" title="cUPnPObjectMediator" alt="" coords="185,31,335,57"><area shape="rect" href="classcUPnPContainerMediator.html" title="cUPnPContainerMediator" alt="" coords="384,5,552,32"><area shape="rect" href="classcUPnPItemMediator.html" title="cUPnPItemMediator" alt="" coords="399,56,537,83"><area shape="rect" href="classcUPnPVideoItemMediator.html" title="cUPnPVideoItemMediator" alt="" coords="601,56,772,83"><area shape="rect" href="classcUPnPMovieMediator.html" title="cUPnPMovieMediator" alt="" coords="851,31,997,57"><area shape="rect" href="classcUPnPVideoBroadcastMediator.html" title="cUPnPVideoBroadcastMediator" alt="" coords="823,81,1025,108"></map></td></tr>
+<tr><td><img src="inherit__graph__7.png" border="0" alt="" usemap="#cMenuSetupUPnP_map">
+<map name="cMenuSetupUPnP_map">
+<area shape="rect" href="classcMenuSetupUPnP.html" title="cMenuSetupUPnP" alt="" coords="5,5,133,32"></map></td></tr>
+<tr><td><img src="inherit__graph__8.png" border="0" alt="" usemap="#cPathParser_map">
+<map name="cPathParser_map">
+<area shape="rect" href="classcPathParser.html" title="cPathParser" alt="" coords="5,5,99,32"></map></td></tr>
+<tr><td><img src="inherit__graph__9.png" border="0" alt="" usemap="#cPluginUpnp_map">
+<map name="cPluginUpnp_map">
+<area shape="rect" href="classcPluginUpnp.html" title="cPluginUpnp" alt="" coords="7,5,100,32"></map></td></tr>
+<tr><td><img src="inherit__graph__10.png" border="0" alt="" usemap="#cRegisteredProfile_map">
+<map name="cRegisteredProfile_map">
+<area shape="rect" href="classcRegisteredProfile.html" title="cRegisteredProfile" alt="" coords="5,5,133,32"></map></td></tr>
+<tr><td><img src="inherit__graph__11.png" border="0" alt="" usemap="#cRow_map">
+<map name="cRow_map">
+<area shape="rect" href="classcRow.html" title="cRow" alt="" coords="5,5,59,32"></map></td></tr>
+<tr><td><img src="inherit__graph__12.png" border="0" alt="" usemap="#cRows_map">
+<map name="cRows_map">
+<area shape="rect" href="classcRows.html" title="cRows" alt="" coords="7,5,65,32"></map></td></tr>
+<tr><td><img src="inherit__graph__13.png" border="0" alt="" usemap="#cSortCrit_map">
+<map name="cSortCrit_map">
+<area shape="rect" href="structcSortCrit.html" title="cSortCrit" alt="" coords="5,5,77,32"></map></td></tr>
+<tr><td><img src="inherit__graph__14.png" border="0" alt="" usemap="#cSortCriteria_map">
+<map name="cSortCriteria_map">
+<area shape="rect" href="classcSortCriteria.html" title="cSortCriteria" alt="" coords="5,5,99,32"></map></td></tr>
+<tr><td><img src="inherit__graph__15.png" border="0" alt="" usemap="#cSQLiteDatabase_map">
+<map name="cSQLiteDatabase_map">
+<area shape="rect" href="classcSQLiteDatabase.html" title="cSQLiteDatabase" alt="" coords="7,5,129,32"></map></td></tr>
+<tr><td><img src="inherit__graph__16.png" border="0" alt="" usemap="#cUPnPClassObject_map">
+<map name="cUPnPClassObject_map">
+<area shape="rect" href="classcUPnPClassObject.html" title="cUPnPClassObject" alt="" coords="5,31,139,57"><area shape="rect" href="classcUPnPClassContainer.html" title="cUPnPClassContainer" alt="" coords="188,5,337,32"><area shape="rect" href="classcUPnPClassItem.html" title="cUPnPClassItem" alt="" coords="203,56,323,83"><area shape="rect" href="classcUPnPClassVideoItem.html" title="cUPnPClassVideoItem" alt="" coords="387,56,541,83"><area shape="rect" href="classcUPnPClassMovie.html" title="cUPnPClassMovie" alt="" coords="619,31,749,57"><area shape="rect" href="classcUPnPClassVideoBroadcast.html" title="cUPnPClassVideoBroadcast" alt="" coords="591,81,777,108"></map></td></tr>
+<tr><td><img src="inherit__graph__17.png" border="0" alt="" usemap="#cUPnPConfig_map">
+<map name="cUPnPConfig_map">
+<area shape="rect" href="classcUPnPConfig.html" title="cUPnPConfig" alt="" coords="7,5,105,32"></map></td></tr>
+<tr><td><img src="inherit__graph__18.png" border="0" alt="" usemap="#cUPnPObjectFactory_map">
+<map name="cUPnPObjectFactory_map">
+<area shape="rect" href="classcUPnPObjectFactory.html" title="cUPnPObjectFactory" alt="" coords="5,5,149,32"></map></td></tr>
+<tr><td><img src="inherit__graph__19.png" border="0" alt="" usemap="#cUPnPObjectID_map">
+<map name="cUPnPObjectID_map">
+<area shape="rect" href="structcUPnPObjectID.html" title="cUPnPObjectID" alt="" coords="7,5,119,32"></map></td></tr>
+<tr><td><img src="inherit__graph__20.png" border="0" alt="" usemap="#cUPnPObjects_map">
+<map name="cUPnPObjects_map">
+<area shape="rect" href="classcUPnPObjects.html" title="cUPnPObjects" alt="" coords="7,5,113,32"></map></td></tr>
+<tr><td><img src="inherit__graph__21.png" border="0" alt="" usemap="#cUPnPResource_map">
+<map name="cUPnPResource_map">
+<area shape="rect" href="classcUPnPResource.html" title="cUPnPResource" alt="" coords="5,5,123,32"></map></td></tr>
+<tr><td><img src="inherit__graph__22.png" border="0" alt="" usemap="#cUPnPResourceMediator_map">
+<map name="cUPnPResourceMediator_map">
+<area shape="rect" href="classcUPnPResourceMediator.html" title="cUPnPResourceMediator" alt="" coords="5,5,173,32"></map></td></tr>
+<tr><td><img src="inherit__graph__23.png" border="0" alt="" usemap="#cUPnPResources_map">
+<map name="cUPnPResources_map">
+<area shape="rect" href="classcUPnPResources.html" title="cUPnPResources" alt="" coords="7,5,129,32"></map></td></tr>
+<tr><td><img src="inherit__graph__24.png" border="0" alt="" usemap="#cUPnPResultSet_map">
+<map name="cUPnPResultSet_map">
+<area shape="rect" href="structcUPnPResultSet.html" title="cUPnPResultSet" alt="" coords="5,5,125,32"></map></td></tr>
+<tr><td><img src="inherit__graph__25.png" border="0" alt="" usemap="#cUPnPServer_map">
+<map name="cUPnPServer_map">
+<area shape="rect" href="classcUPnPServer.html" title="cUPnPServer" alt="" coords="7,5,105,32"></map></td></tr>
+<tr><td><img src="inherit__graph__26.png" border="0" alt="" usemap="#cUpnpService_map">
+<map name="cUpnpService_map">
+<area shape="rect" href="classcUpnpService.html" title="cUpnpService" alt="" coords="7,31,108,57"><area shape="rect" href="classcConnectionManager.html" title="cConnectionManager" alt="" coords="157,5,301,32"><area shape="rect" href="classcContentDirectory.html" title="cContentDirectory" alt="" coords="167,56,292,83"></map></td></tr>
+<tr><td><img src="inherit__graph__27.png" border="0" alt="" usemap="#cUPnPWebServer_map">
+<map name="cUPnPWebServer_map">
+<area shape="rect" href="classcUPnPWebServer.html" title="cUPnPWebServer" alt="" coords="7,5,132,32"></map></td></tr>
+<tr><td><img src="inherit__graph__28.png" border="0" alt="" usemap="#cVirtualConnection_map">
+<map name="cVirtualConnection_map">
+<area shape="rect" href="classcVirtualConnection.html" title="cVirtualConnection" alt="" coords="5,5,136,32"></map></td></tr>
+<tr><td><img src="inherit__graph__29.png" border="0" alt="" usemap="#DLNAIconProfile_map">
+<map name="DLNAIconProfile_map">
+<area shape="rect" href="structDLNAIconProfile.html" title="DLNAIconProfile" alt="" coords="5,5,123,32"></map></td></tr>
+<tr><td><img src="inherit__graph__30.png" border="0" alt="" usemap="#DLNAProfile_map">
+<map name="DLNAProfile_map">
+<area shape="rect" href="structDLNAProfile.html" title="DLNAProfile" alt="" coords="7,5,97,32"></map></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/interfacecFileHandle-members.html b/doc/html/interfacecFileHandle-members.html
new file mode 100644
index 0000000..24c896e
--- /dev/null
+++ b/doc/html/interfacecFileHandle-members.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cFileHandle Member List</h1>This is the complete list of members for <a class="el" href="classcFileHandle.html">cFileHandle</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#d7eaed7d254a64c85a48c3968238b93d">close</a>()=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#cdf4f4d07382de675b498d85544ea1b6">open</a>(UpnpOpenFileMode mode)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#458f25a4c7f62d528cffc84e66d38e7d">read</a>(char *buf, size_t buflen)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#d2dde523301abe5e79e6109a93ba705b">seek</a>(off_t offset, int whence)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcFileHandle.html#e1495303f52f6f2d7ac37a030f78a937">write</a>(char *buf, size_t buflen)=0</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~cFileHandle</b>() (defined in <a class="el" href="classcFileHandle.html">cFileHandle</a>)</td><td><a class="el" href="classcFileHandle.html">cFileHandle</a></td><td><code> [inline, virtual]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Fri Nov 6 22:22:12 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/livereceiver_8h-source.html b/doc/html/livereceiver_8h-source.html
new file mode 100644
index 0000000..6a47b13
--- /dev/null
+++ b/doc/html/livereceiver_8h-source.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: receiver/livereceiver.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>receiver/livereceiver.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: livereceiver.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 4. Juni 2009, 13:28</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _LIVERECEIVER_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _LIVERECEIVER_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "filehandle.h"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;vdr/thread.h&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;vdr/receiver.h&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;vdr/ringbuffer.h&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#define RECEIVER_WAIT_ON_NODATA 50 // 50 ms</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 2 // 2s</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span>
+<a name="l00028"></a><a class="code" href="classcLiveReceiver.html">00028</a> <span class="keyword">class </span><a class="code" href="classcLiveReceiver.html">cLiveReceiver</a> : <span class="keyword">public</span> cReceiver, <span class="keyword">public</span> cThread, <span class="keyword">public</span> <a class="code" href="classcFileHandle.html">cFileHandle</a> {
+<a name="l00029"></a>00029 <span class="keyword">public</span>:
+<a name="l00043"></a>00043 <span class="keyword">static</span> <a class="code" href="classcLiveReceiver.html">cLiveReceiver</a>* <a class="code" href="classcLiveReceiver.html#1e28c50bb73404597b2363422e038c12">newInstance</a>(
+<a name="l00044"></a>00044 cChannel *Channel,
+<a name="l00045"></a>00045 <span class="keywordtype">int</span> Priority
+<a name="l00046"></a>00046 );
+<a name="l00047"></a>00047 <span class="keyword">virtual</span> ~<a class="code" href="classcLiveReceiver.html">cLiveReceiver</a>(<span class="keywordtype">void</span>);
+<a name="l00049"></a>00049 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcLiveReceiver.html#b8e751f641be1da4a925106e3dd062e9">open</a>(UpnpOpenFileMode mode);
+<a name="l00051"></a>00051 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcLiveReceiver.html#4a19e1fd4e1d043fb091bfb01a9cbf08">read</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">size_t</span> buflen);
+<a name="l00053"></a>00053 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcLiveReceiver.html#eb56988441b589b6e34ea01825dfb183">write</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">size_t</span> buflen);
+<a name="l00055"></a>00055 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcLiveReceiver.html#efb4156ef247773873dee42053e94edf">seek</a>(off_t offset, <span class="keywordtype">int</span> whence);
+<a name="l00057"></a>00057 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcLiveReceiver.html#5b8beb2bc6809aacbdb087e31e836a27">close</a>();
+<a name="l00058"></a>00058 <span class="keyword">protected</span>:
+<a name="l00066"></a>00066 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcLiveReceiver.html#c8bc191994b0acd3fa2d23b26f996f8a">Receive</a>(
+<a name="l00067"></a>00067 uchar *Data,
+<a name="l00068"></a>00068 <span class="keywordtype">int</span> Length
+<a name="l00069"></a>00069 );
+<a name="l00079"></a>00079 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcLiveReceiver.html#631c7392c3226b07ba654875580fb26c">Activate</a>(
+<a name="l00080"></a>00080 <span class="keywordtype">bool</span> On
+<a name="l00081"></a>00081 );
+<a name="l00092"></a>00092 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcLiveReceiver.html#5c1f30f48fdc612c19ff4b9b4c176b07">Action</a>(<span class="keywordtype">void</span>);
+<a name="l00093"></a>00093 <span class="keyword">private</span>:
+<a name="l00094"></a>00094 <a class="code" href="classcLiveReceiver.html">cLiveReceiver</a>(cChannel *Channel, cDevice *Device);
+<a name="l00095"></a>00095 cDevice *mDevice;
+<a name="l00096"></a>00096 cChannel *mChannel;
+<a name="l00097"></a>00097 cRingBufferLinear *mLiveBuffer;
+<a name="l00098"></a>00098 cRingBufferLinear *mOutputBuffer;
+<a name="l00099"></a>00099 cFrameDetector *mFrameDetector;
+<a name="l00100"></a>00100 cPatPmtGenerator mPatPmtGenerator;
+<a name="l00101"></a>00101 };
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="preprocessor">#endif </span><span class="comment">/* _LIVERECEIVER_H */</span>
+<a name="l00104"></a>00104
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/menusetup_8h-source.html b/doc/html/menusetup_8h-source.html
new file mode 100644
index 0000000..d60891f
--- /dev/null
+++ b/doc/html/menusetup_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: misc/menusetup.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>misc/menusetup.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: menusetup.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 19. April 2009, 16:50</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _CMENUSETUPUPNP_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _CMENUSETUPUPNP_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;vdr/plugin.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "../server/server.h"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "config.h"</span>
+<a name="l00014"></a>00014
+<a name="l00021"></a><a class="code" href="classcMenuSetupUPnP.html">00021</a> <span class="keyword">class </span><a class="code" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a> : <span class="keyword">public</span> cMenuSetupPage {
+<a name="l00022"></a>00022 <span class="keyword">public</span>:
+<a name="l00023"></a>00023 <a class="code" href="classcMenuSetupUPnP.html">cMenuSetupUPnP</a>();
+<a name="l00024"></a>00024 <span class="comment">// virtual ~cMenuSetupUPnP();</span>
+<a name="l00035"></a>00035 <span class="comment"></span> <span class="keyword">virtual</span> eOSState <a class="code" href="classcMenuSetupUPnP.html#5a6d78afea79d330e710d09b808d5240">ProcessKey</a>(
+<a name="l00036"></a>00036 eKeys Key
+<a name="l00037"></a>00037 );
+<a name="l00038"></a>00038 <span class="keyword">protected</span>:
+<a name="l00044"></a>00044 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcMenuSetupUPnP.html#e90738a7757dcc01e64e8ccad2f8a0e6">Store</a>(<span class="keywordtype">void</span>);
+<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="classcMenuSetupUPnP.html#ed45944671b8974f7639aefee11e8f50">Update</a>(<span class="keywordtype">void</span>);
+<a name="l00056"></a>00056 <span class="keywordtype">void</span> <a class="code" href="classcMenuSetupUPnP.html#6f3e5ab68db53ce74ec81af07671d00e">Load</a>(<span class="keywordtype">void</span>);
+<a name="l00057"></a>00057 <span class="keyword">private</span>:
+<a name="l00058"></a>00058 <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span>* getInterfaceList(<span class="keywordtype">int</span> *count);
+<a name="l00059"></a>00059 <span class="keywordtype">int</span> getInterfaceIndex(<span class="keyword">const</span> <span class="keywordtype">char</span>* Interface);
+<a name="l00060"></a>00060 <span class="keyword">const</span> <span class="keywordtype">char</span>* getInterface(<span class="keywordtype">int</span> Index);
+<a name="l00061"></a>00061 cOsdItem *mCtrlBind;
+<a name="l00062"></a>00062 cOsdItem *mCtrlEnabled;
+<a name="l00063"></a>00063 cOsdItem *mCtrlPort;
+<a name="l00064"></a>00064 cOsdItem *mCtrlAutoMode;
+<a name="l00065"></a>00065 <a class="code" href="classcUPnPServer.html">cUPnPServer</a>* mUpnpServer;
+<a name="l00073"></a>00073 <span class="keywordtype">int</span> mEnable;
+<a name="l00074"></a>00074 <span class="keywordtype">int</span> mAutoSetup;
+<a name="l00084"></a>00084 <span class="keywordtype">int</span> mPort;
+<a name="l00085"></a>00085 <span class="keywordtype">int</span> mDetectPort;
+<a name="l00093"></a>00093 <span class="keywordtype">int</span> mInterfaceIndex;
+<a name="l00099"></a>00099 <span class="keywordtype">char</span> *mAddress;
+<a name="l00100"></a>00100 };
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="preprocessor">#endif </span><span class="comment">/* _CMENUSETUPUPNP_H */</span>
+<a name="l00103"></a>00103
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/metadata_8h-source.html b/doc/html/metadata_8h-source.html
new file mode 100644
index 0000000..095405b
--- /dev/null
+++ b/doc/html/metadata_8h-source.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: database/metadata.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>database/metadata.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: metadata.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 28. Mai 2009, 21:14</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _METADATA_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _METADATA_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;vdr/tools.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;vdr/channels.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;vdr/recording.h&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "database.h"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "object.h"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "resources.h"</span>
+<a name="l00018"></a>00018
+<a name="l00024"></a><a class="code" href="structcUPnPResultSet.html">00024</a> <span class="keyword">struct </span><a class="code" href="structcUPnPResultSet.html">cUPnPResultSet</a> {
+<a name="l00025"></a><a class="code" href="structcUPnPResultSet.html#94b5bc7673773e674a81d0c5adc7f4e7">00025</a> <span class="keywordtype">int</span> <a class="code" href="structcUPnPResultSet.html#94b5bc7673773e674a81d0c5adc7f4e7" title="The number of returned matches.">mNumberReturned</a>;
+<a name="l00026"></a><a class="code" href="structcUPnPResultSet.html#78bd90b56bfc5804e54df6579cd8e541">00026</a> <span class="keywordtype">int</span> <a class="code" href="structcUPnPResultSet.html#78bd90b56bfc5804e54df6579cd8e541" title="The total amount of matches.">mTotalMatches</a>;
+<a name="l00027"></a><a class="code" href="structcUPnPResultSet.html#7e891eca2a37daea6285d2f7a2731c1d">00027</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structcUPnPResultSet.html#7e891eca2a37daea6285d2f7a2731c1d" title="The DIDL-Lite fragment.">mResult</a>;
+<a name="l00028"></a>00028 };
+<a name="l00029"></a>00029
+<a name="l00038"></a><a class="code" href="classcMediaDatabase.html">00038</a> <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a> : <span class="keyword">public</span> cThread {
+<a name="l00039"></a>00039 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPServer.html">cUPnPServer</a>;
+<a name="l00040"></a>00040 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l00041"></a>00041 <span class="keyword">private</span>:
+<a name="l00042"></a>00042 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mSystemUpdateID;
+<a name="l00043"></a>00043 <a class="code" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a>* mFactory;
+<a name="l00044"></a>00044 cHash&lt;cUPnPClassObject&gt;* mObjects;
+<a name="l00045"></a>00045 <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>* <a class="code" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541" title="the SQLite 3 database wrapper">mDatabase</a>;
+<a name="l00046"></a>00046 <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> mLastInsertObjectID;
+<a name="l00047"></a>00047 <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> getNextObjectID();
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> cacheObject(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l00049"></a>00049 <span class="keywordtype">int</span> prepareDatabase();
+<a name="l00050"></a>00050 <span class="keywordtype">int</span> loadChannels();
+<a name="l00051"></a>00051 <span class="keywordtype">int</span> loadRecordings();
+<a name="l00052"></a>00052 <span class="keywordtype">void</span> updateChannelEPG();
+<a name="l00053"></a>00053 <span class="keywordtype">void</span> updateRecordings();
+<a name="l00054"></a>00054 <span class="keywordtype">bool</span> init();
+<a name="l00055"></a>00055 <span class="keywordtype">void</span> updateSystemID();
+<a name="l00056"></a>00056 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Action();
+<a name="l00057"></a>00057 <span class="keyword">public</span>:
+<a name="l00067"></a>00067 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcMediaDatabase.html#96232caa30b80d4e3ca667c317101fd0">getSystemUpdateID</a>();
+<a name="l00077"></a>00077 <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcMediaDatabase.html#dadd330e273e0f354d51b76cee436198">getContainerUpdateIDs</a>();
+<a name="l00083"></a>00083 <a class="code" href="classcMediaDatabase.html#ace0720fbddbdd7f2e4ca5ad16d5acd2">cMediaDatabase</a>();
+<a name="l00084"></a>00084 <span class="keyword">virtual</span> ~<a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>();
+<a name="l00096"></a>00096 <span class="keywordtype">int</span> <a class="code" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">addFastFind</a>(
+<a name="l00097"></a>00097 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object,
+<a name="l00098"></a>00098 <span class="keyword">const</span> <span class="keywordtype">char</span>* FastFind
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 );
+<a name="l00113"></a>00113 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcMediaDatabase.html#b0fac893d82c29276d68b94569cfef1d">getObjectByFastFind</a>(
+<a name="l00114"></a>00114 <span class="keyword">const</span> <span class="keywordtype">char</span>* FastFind
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 );
+<a name="l00127"></a>00127 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcMediaDatabase.html#b8da7da9612c64de0ddf88db3c316d5a">getObjectByID</a>(
+<a name="l00128"></a>00128 <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID
+<a name="l00129"></a>00129 );
+<a name="l00145"></a>00145 <span class="keywordtype">int</span> <a class="code" href="classcMediaDatabase.html#25ff666113dbe72598e4ef4e23af5d8f">browse</a>(
+<a name="l00146"></a>00146 OUT <a class="code" href="structcUPnPResultSet.html">cUPnPResultSet</a>** Results,
+<a name="l00147"></a>00147 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* ID,
+<a name="l00148"></a>00148 IN <span class="keywordtype">bool</span> BrowseMetadata,
+<a name="l00149"></a>00149 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* Filter = <span class="stringliteral">"*"</span>,
+<a name="l00150"></a>00150 IN <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Offset = 0,
+<a name="l00151"></a>00151 IN <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Count = 0,
+<a name="l00152"></a>00152 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* SortCriteria = <span class="stringliteral">""</span>
+<a name="l00153"></a>00153 );
+<a name="l00173"></a>00173 <span class="keywordtype">int</span> <a class="code" href="classcMediaDatabase.html#36bdc240d3fa11d685440d365d9ab8c9">search</a>(
+<a name="l00174"></a>00174 OUT <a class="code" href="structcUPnPResultSet.html">cUPnPResultSet</a>** Results,
+<a name="l00175"></a>00175 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* ID,
+<a name="l00176"></a>00176 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* Search,
+<a name="l00177"></a>00177 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* Filter = <span class="stringliteral">"*"</span>,
+<a name="l00178"></a>00178 IN <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Offset = 0,
+<a name="l00179"></a>00179 IN <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Count = 0,
+<a name="l00180"></a>00180 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* SortCriteria = <span class="stringliteral">""</span>
+<a name="l00181"></a>00181 );
+<a name="l00182"></a>00182 };
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 <span class="preprocessor">#endif </span><span class="comment">/* _METADATA_H */</span>
+<a name="l00185"></a>00185
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/object_8h-source.html b/doc/html/object_8h-source.html
new file mode 100644
index 0000000..0f6d435
--- /dev/null
+++ b/doc/html/object_8h-source.html
@@ -0,0 +1,498 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: database/object.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>database/object.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: object.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 11. September 2009, 20:39</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _OBJECT_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _OBJECT_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "database.h"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "../misc/util.h"</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;vdr/tools.h&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;map&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;upnp/ixml.h&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00025"></a><a class="code" href="structcUPnPObjectID.html">00025</a> <span class="keyword">struct </span><a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> {
+<a name="l00026"></a><a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c">00026</a> <span class="keywordtype">int</span> <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>;
+<a name="l00027"></a>00027
+<a name="l00032"></a><a class="code" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">00032</a> <a class="code" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">cUPnPObjectID</a>():<a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>(-1){}
+<a name="l00038"></a><a class="code" href="structcUPnPObjectID.html#baeac468c4117f2fac4e3d93f3de9730">00038</a> <a class="code" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">cUPnPObjectID</a>(
+<a name="l00039"></a>00039 <span class="keywordtype">long</span> ID
+<a name="l00040"></a>00040 ){ <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> = (int)ID; }
+<a name="l00046"></a><a class="code" href="structcUPnPObjectID.html#f3e044892ae1c1d840d4154ab96a2440">00046</a> <a class="code" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">cUPnPObjectID</a>(
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> ID
+<a name="l00048"></a>00048 ){ <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> = ID; }
+<a name="l00050"></a><a class="code" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">00050</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;<a class="code" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">operator=</a>(
+<a name="l00051"></a>00051 <span class="keywordtype">long</span> ID
+<a name="l00052"></a>00052 ){ <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> = ID; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00054"></a><a class="code" href="structcUPnPObjectID.html#b83af995ac5e03b6f6402d83a6713960">00054</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;<a class="code" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">operator=</a>(
+<a name="l00055"></a>00055 <span class="keywordtype">int</span> ID
+<a name="l00056"></a>00056 ){ <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> = ID; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00058"></a><a class="code" href="structcUPnPObjectID.html#9d2adc7bcee2e5b1d51aa7ffc385296f">00058</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;<a class="code" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">operator=</a>(
+<a name="l00059"></a>00059 <span class="keyword">const</span> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; ID
+<a name="l00060"></a>00060 ){ <span class="keywordflow">if</span>(<span class="keyword">this</span> != &amp;ID){ <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> = ID.<a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>; } <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00062"></a><a class="code" href="structcUPnPObjectID.html#c347bd50efed28fda02f98da46114786">00062</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;<a class="code" href="structcUPnPObjectID.html#c347bd50efed28fda02f98da46114786">operator++</a>(){ <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>++; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00064"></a><a class="code" href="structcUPnPObjectID.html#d46000a3acdd6f522bf3b86e48d47ddf">00064</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> <a class="code" href="structcUPnPObjectID.html#d46000a3acdd6f522bf3b86e48d47ddf">operator++</a>(<span class="keywordtype">int</span>){ <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> old = *<span class="keyword">this</span>; <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>++; <span class="keywordflow">return</span> old; }
+<a name="l00066"></a><a class="code" href="structcUPnPObjectID.html#3e6872234bfd011a720b7847190dfdb9">00066</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> <a class="code" href="structcUPnPObjectID.html#3e6872234bfd011a720b7847190dfdb9">operator--</a>(<span class="keywordtype">int</span>){ <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> old = *<span class="keyword">this</span>; <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>--; <span class="keywordflow">return</span> old; }
+<a name="l00068"></a><a class="code" href="structcUPnPObjectID.html#40864616e14e4b5c98ff274098402be7">00068</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;<a class="code" href="structcUPnPObjectID.html#40864616e14e4b5c98ff274098402be7">operator--</a>(){ <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>--; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00070"></a><a class="code" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">00070</a> <span class="keywordtype">bool</span> <a class="code" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">operator!=</a>(
+<a name="l00071"></a>00071 <span class="keywordtype">long</span> ID
+<a name="l00072"></a>00072 ){ <span class="keywordflow">return</span> <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> != ID; }
+<a name="l00074"></a><a class="code" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">00074</a> <span class="keywordtype">bool</span> <a class="code" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">operator==</a>(
+<a name="l00075"></a>00075 <span class="keywordtype">long</span> ID
+<a name="l00076"></a>00076 ){ <span class="keywordflow">return</span> <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> == ID; }
+<a name="l00078"></a><a class="code" href="structcUPnPObjectID.html#5183bfe859555d90c7bc7abd576d0980">00078</a> <span class="keywordtype">bool</span> <a class="code" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">operator!=</a>(
+<a name="l00079"></a>00079 <span class="keywordtype">int</span> ID
+<a name="l00080"></a>00080 ){ <span class="keywordflow">return</span> <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> != ID; }
+<a name="l00082"></a><a class="code" href="structcUPnPObjectID.html#18cf7d50a8ae1b6d2034e88fef78e23f">00082</a> <span class="keywordtype">bool</span> <a class="code" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">operator==</a>(
+<a name="l00083"></a>00083 <span class="keywordtype">int</span> ID
+<a name="l00084"></a>00084 ){ <span class="keywordflow">return</span> <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a> == ID; }
+<a name="l00086"></a><a class="code" href="structcUPnPObjectID.html#d55b5dc94c58d56762c602de5dd99790">00086</a> <span class="keywordtype">bool</span> <a class="code" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">operator!=</a>(
+<a name="l00087"></a>00087 <span class="keyword">const</span> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; ID
+<a name="l00088"></a>00088 ){ <span class="keywordflow">return</span> *<span class="keyword">this</span> == ID; }
+<a name="l00090"></a><a class="code" href="structcUPnPObjectID.html#54cb3e4ab1b340c9580e915dbf9319a1">00090</a> <span class="keywordtype">bool</span> <a class="code" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">operator==</a>(
+<a name="l00091"></a>00091 <span class="keyword">const</span> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; ID
+<a name="l00092"></a>00092 ){ <span class="keywordflow">return</span> *<span class="keyword">this</span> == ID; }
+<a name="l00094"></a><a class="code" href="structcUPnPObjectID.html#daa4eae524c68f1f85b8d82d16568d10">00094</a> <a class="code" href="structcUPnPObjectID.html#daa4eae524c68f1f85b8d82d16568d10">operator unsigned int</a>(){ <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)<a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>; }
+<a name="l00096"></a><a class="code" href="structcUPnPObjectID.html#73ff8d0e18486552dbfbf828a2e7bc7c">00096</a> <a class="code" href="structcUPnPObjectID.html#73ff8d0e18486552dbfbf828a2e7bc7c">operator int</a>(){ <span class="keywordflow">return</span> <a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>; }
+<a name="l00098"></a><a class="code" href="structcUPnPObjectID.html#d5659a7a9f7cfc7dd6ae0911ebd5e03c">00098</a> <a class="code" href="structcUPnPObjectID.html#d5659a7a9f7cfc7dd6ae0911ebd5e03c">operator long</a>(){ <span class="keywordflow">return</span> (<span class="keywordtype">long</span>)<a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>; }
+<a name="l00100"></a><a class="code" href="structcUPnPObjectID.html#33e67c6f297892763b5a4a41cd435490">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structcUPnPObjectID.html#33e67c6f297892763b5a4a41cd435490">operator*</a>(){ <span class="keywordtype">char</span>* buf; <span class="keywordflow">return</span> asprintf(&amp;buf,<span class="stringliteral">"%d"</span>,<a class="code" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c" title="The UPnP Object ID.">_ID</a>)?buf:NULL; }
+<a name="l00101"></a>00101 };
+<a name="l00102"></a>00102
+<a name="l00108"></a><a class="code" href="structcClass.html">00108</a> <span class="keyword">struct </span><a class="code" href="structcClass.html">cClass</a> {
+<a name="l00109"></a><a class="code" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd">00109</a> cString <a class="code" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd" title="The upnp class ID.">ID</a>;
+<a name="l00110"></a><a class="code" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8">00110</a> <span class="keywordtype">bool</span> <a class="code" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8" title="flag, to indicate if derived classes are allowed">includeDerived</a>;
+<a name="l00111"></a>00111
+<a name="l00116"></a><a class="code" href="structcClass.html#22a5df5fd2bfc9e7b58018a6b8d45309">00116</a> <span class="keywordtype">bool</span> <a class="code" href="structcClass.html#22a5df5fd2bfc9e7b58018a6b8d45309">operator==</a>(<span class="keyword">const</span> <a class="code" href="structcClass.html">cClass</a> &amp;cmp){ <span class="keywordflow">return</span> (!strcasecmp(cmp.<a class="code" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd" title="The upnp class ID.">ID</a>,<a class="code" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd" title="The upnp class ID.">ID</a>) &amp;&amp; <a class="code" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8" title="flag, to indicate if derived classes are allowed">includeDerived</a>==cmp.<a class="code" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8" title="flag, to indicate if derived classes are allowed">includeDerived</a>); }
+<a name="l00118"></a><a class="code" href="structcClass.html#1de09f337ef261d363f261f83a3cf7ae">00118</a> <span class="keywordtype">bool</span> <a class="code" href="structcClass.html#1de09f337ef261d363f261f83a3cf7ae">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structcClass.html">cClass</a> &amp;cmp){ <span class="keywordflow">return</span> !(*<span class="keyword">this</span>==cmp); }
+<a name="l00119"></a>00119 };
+<a name="l00120"></a>00120
+<a name="l00126"></a><a class="code" href="classcUPnPResource.html">00126</a> <span class="keyword">class </span><a class="code" href="classcUPnPResource.html">cUPnPResource</a> : <span class="keyword">public</span> cListObject {
+<a name="l00127"></a>00127 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>;
+<a name="l00128"></a>00128 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPResources.html">cUPnPResources</a>;
+<a name="l00129"></a>00129 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcAudioVideoDetector.html">cAudioVideoDetector</a>;
+<a name="l00130"></a>00130 <span class="keyword">private</span>:
+<a name="l00131"></a>00131 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mResourceID;
+<a name="l00132"></a>00132 <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> mObjectID;
+<a name="l00133"></a>00133 <span class="keywordtype">int</span> mResourceType;
+<a name="l00134"></a>00134 cString mResource;
+<a name="l00135"></a>00135 cString mDuration;
+<a name="l00136"></a>00136 cString mResolution;
+<a name="l00137"></a>00137 cString mProtocolInfo;
+<a name="l00138"></a>00138 cString mContentType;
+<a name="l00139"></a>00139 cString mImportURI;
+<a name="l00140"></a>00140 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> mSize;
+<a name="l00141"></a>00141 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mBitrate;
+<a name="l00142"></a>00142 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mSampleFrequency;
+<a name="l00143"></a>00143 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mBitsPerSample;
+<a name="l00144"></a>00144 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mNrAudioChannels;
+<a name="l00145"></a>00145 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mColorDepth;
+<a name="l00146"></a>00146 <a class="code" href="classcUPnPResource.html">cUPnPResource</a>();
+<a name="l00147"></a>00147 <span class="keyword">public</span>:
+<a name="l00155"></a><a class="code" href="classcUPnPResource.html#47ad15c119fbcfdda1bc5f60d0a3efc9">00155</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPResource.html#47ad15c119fbcfdda1bc5f60d0a3efc9">getID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mResourceID; }
+<a name="l00164"></a><a class="code" href="classcUPnPResource.html#b648a88993b0e5a4421514f45a5b266f">00164</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPResource.html#b648a88993b0e5a4421514f45a5b266f">getResource</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mResource; }
+<a name="l00172"></a><a class="code" href="classcUPnPResource.html#5da7e39c5fc76f5607c232319daa135c">00172</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPResource.html#5da7e39c5fc76f5607c232319daa135c">getDuration</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mDuration; }
+<a name="l00180"></a><a class="code" href="classcUPnPResource.html#27d5140dc72a8e034ce197913d6aa1d5">00180</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPResource.html#27d5140dc72a8e034ce197913d6aa1d5">getResolution</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mResolution; }
+<a name="l00188"></a><a class="code" href="classcUPnPResource.html#0ff5e61a2d07873ae2ebdab7d87b3d9f">00188</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPResource.html#0ff5e61a2d07873ae2ebdab7d87b3d9f">getProtocolInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mProtocolInfo; }
+<a name="l00196"></a><a class="code" href="classcUPnPResource.html#6aeaaf476c5d6548b15bb381c032b815">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPResource.html#6aeaaf476c5d6548b15bb381c032b815">getContentType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mContentType; }
+<a name="l00205"></a><a class="code" href="classcUPnPResource.html#04ab0d214e39ddfa18339926cef9fd64">00205</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPResource.html#04ab0d214e39ddfa18339926cef9fd64">getImportURI</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mImportURI; }
+<a name="l00213"></a><a class="code" href="classcUPnPResource.html#6b6855ba6d4bd06805750ede92449c8d">00213</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPResource.html#6b6855ba6d4bd06805750ede92449c8d">getResourceType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mResourceType; }
+<a name="l00221"></a><a class="code" href="classcUPnPResource.html#361f6991a29dddf575a2b0b63ce5a66a">00221</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classcUPnPResource.html#361f6991a29dddf575a2b0b63ce5a66a">getSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mSize; }
+<a name="l00230"></a>00230 off64_t <a class="code" href="classcUPnPResource.html#5cabb363c4fd0785d3f073011df835e9">getFileSize</a>() <span class="keyword">const</span>;
+<a name="l00239"></a>00239 time_t <a class="code" href="classcUPnPResource.html#c95a8fe0bdba2c371a46e4e267dab1aa">getLastModification</a>() <span class="keyword">const</span>;
+<a name="l00247"></a><a class="code" href="classcUPnPResource.html#3f2f3d5c447fee28d3dff5cf739e4c98">00247</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPResource.html#3f2f3d5c447fee28d3dff5cf739e4c98">getBitrate</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mBitrate; }
+<a name="l00255"></a><a class="code" href="classcUPnPResource.html#5ea6003b282c48f575bc54f5c9658ca9">00255</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPResource.html#5ea6003b282c48f575bc54f5c9658ca9">getSampleFrequency</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mSampleFrequency; }
+<a name="l00263"></a><a class="code" href="classcUPnPResource.html#3efd82888fd648dd08b5d43520638d17">00263</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPResource.html#3efd82888fd648dd08b5d43520638d17">getBitsPerSample</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mBitsPerSample; }
+<a name="l00271"></a><a class="code" href="classcUPnPResource.html#ff18e089f421d710580292f0b91b40f8">00271</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPResource.html#ff18e089f421d710580292f0b91b40f8">getNrAudioChannels</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mNrAudioChannels; }
+<a name="l00279"></a><a class="code" href="classcUPnPResource.html#276eddcc28bad31d6178cf109373074a">00279</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPResource.html#276eddcc28bad31d6178cf109373074a">getColorDepth</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mColorDepth; }
+<a name="l00280"></a>00280 };
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 <span class="keyword">class </span><a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>;
+<a name="l00283"></a>00283 <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l00284"></a>00284 <span class="keyword">class </span><a class="code" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a>;
+<a name="l00285"></a>00285 <span class="keyword">class </span><a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>;
+<a name="l00286"></a>00286
+<a name="l00293"></a><a class="code" href="classcUPnPObjects.html">00293</a> <span class="keyword">class </span><a class="code" href="classcUPnPObjects.html">cUPnPObjects</a> : <span class="keyword">public</span> cList&lt;cUPnPClassObject&gt; {
+<a name="l00294"></a>00294 <span class="keyword">public</span>:
+<a name="l00295"></a>00295 <a class="code" href="classcUPnPObjects.html">cUPnPObjects</a>();
+<a name="l00296"></a>00296 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPObjects.html">cUPnPObjects</a>();
+<a name="l00302"></a>00302 <span class="keywordtype">void</span> <a class="code" href="classcUPnPObjects.html#d9368864f90f5b72742895015df1aef2">SortBy</a>(
+<a name="l00303"></a>00303 <span class="keyword">const</span> <span class="keywordtype">char</span>* Property,
+<a name="l00304"></a>00304 <span class="keywordtype">bool</span> Descending = <span class="keyword">false</span>
+<a name="l00305"></a>00305 );
+<a name="l00306"></a>00306 };
+<a name="l00307"></a>00307
+<a name="l00313"></a><a class="code" href="classcUPnPClassObject.html">00313</a> <span class="keyword">class </span><a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a> : <span class="keyword">public</span> cListObject {
+<a name="l00314"></a>00314 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l00315"></a>00315 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l00316"></a>00316 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>;
+<a name="l00317"></a>00317 <span class="keyword">private</span>:
+<a name="l00318"></a>00318 <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> mLastID;
+<a name="l00319"></a>00319 <span class="keywordtype">bool</span> mDeleted; <span class="comment">// is this Objected marked as deleted, NOT used yet.</span>
+<a name="l00320"></a>00320 <span class="keyword">protected</span>:
+<a name="l00321"></a><a class="code" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1">00321</a> time_t <a class="code" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1" title="The last modification of this property.">mLastModified</a>;
+<a name="l00322"></a><a class="code" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08">00322</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> <a class="code" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08" title="The object ID.">mID</a>;
+<a name="l00323"></a><a class="code" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d">00323</a> <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d" title="The parent object.">mParent</a>;
+<a name="l00324"></a><a class="code" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20">00324</a> cString <a class="code" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20" title="Class (Who am I?).">mClass</a>;
+<a name="l00325"></a><a class="code" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6">00325</a> cString <a class="code" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6" title="Object title.">mTitle</a>;
+<a name="l00326"></a><a class="code" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137">00326</a> cString <a class="code" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137" title="Creator of this object.">mCreator</a>;
+<a name="l00327"></a><a class="code" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5">00327</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5" title="Ability of changing metadata?">mRestricted</a>;
+<a name="l00328"></a><a class="code" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9">00328</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9" title="Ability of writing resources?">mWriteStatus</a>;
+<a name="l00329"></a><a class="code" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253">00329</a> cList&lt;cUPnPResource&gt;* <a class="code" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253" title="The resources of this object.">mResources</a>;
+<a name="l00330"></a><a class="code" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291">00330</a> cHash&lt;cUPnPResource&gt;* <a class="code" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291" title="The resources of this object as hashmap.">mResourcesID</a>;
+<a name="l00331"></a><a class="code" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a">00331</a> IXML_Document* <a class="code" href="classcUPnPClassObject.html#21b48ab17d1d7379943aa9d4c026046a" title="The DIDL fragment of the object.">mDIDLFragment</a>;
+<a name="l00332"></a><a class="code" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb">00332</a> cString <a class="code" href="classcUPnPClassObject.html#f7156d07778825170844d35fda5959eb" title="The sort criteria to sort with.">mSortCriteria</a>;
+<a name="l00333"></a><a class="code" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c">00333</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassObject.html#0bcc859a9bb114ebf93c474137bf157c" title="The direction of the sort.">mSortDescending</a>;
+<a name="l00334"></a>00334 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>();
+<a name="l00346"></a>00346 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#1e00f20de14c17cfebd4f6670d5e548d">setID</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l00358"></a>00358 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#d092a68523a7e3a8bd8d1b6f79888eff">setParent</a>(<a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* Parent);
+<a name="l00370"></a>00370 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#980233a73fe6b3286313f992909602ae">setClass</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Class);
+<a name="l00377"></a><a class="code" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">00377</a> <span class="keywordtype">void</span> <a class="code" href="classcUPnPClassObject.html#f5c5ca8dd663fe6c59ee2d29dba870e5">setModified</a>(<span class="keywordtype">void</span>){ this-&gt;<a class="code" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1" title="The last modification of this property.">mLastModified</a> = time(NULL); }
+<a name="l00378"></a>00378 <span class="keyword">public</span>:
+<a name="l00386"></a><a class="code" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">00386</a> time_t <a class="code" href="classcUPnPClassObject.html#18c91d90256db85d1356db17b27f69c3">modified</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#3196f065470aac0fd027ff81225f18e1" title="The last modification of this property.">mLastModified</a>; }
+<a name="l00387"></a>00387 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>();
+<a name="l00400"></a>00400 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#7297d228db4033bf8968eaee502131dd">Compare</a>(<span class="keyword">const</span> cListObject&amp; ListObject) <span class="keyword">const</span>;
+<a name="l00409"></a>00409 <span class="keyword">virtual</span> cStringList* <a class="code" href="classcUPnPClassObject.html#4a4d2cd2e59d364050bb64a3d9dced6e">getPropertyList</a>();
+<a name="l00422"></a>00422 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassObject.html#539cf36abc96b95bc8437601fed8a0f6">getProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keywordtype">char</span>** Value) <span class="keyword">const</span> ;
+<a name="l00435"></a>00435 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassObject.html#6f2a803a0d0e148133edce23ed6c0e7c">setProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keyword">const</span> <span class="keywordtype">char</span>* Value);
+<a name="l00446"></a><a class="code" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">00446</a> <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* <a class="code" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a>(){ <span class="keywordflow">return</span> NULL; }
+<a name="l00458"></a>00458 <span class="keyword">virtual</span> IXML_Node* <a class="code" href="classcUPnPClassObject.html#9090f5982129bc5aa15c6e19db627445">createDIDLFragment</a>(IXML_Document* Document, cStringList* Filter) = 0;
+<a name="l00468"></a><a class="code" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">00468</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassObject.html#44f963ff6d731daca5b163ddbb1cf50f">isContainer</a>(){ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#ce6f39a8484ae48ea9801b11046cd2a6">getContainer</a>()==NULL?<span class="keyword">false</span>:<span class="keyword">true</span>; }
+<a name="l00477"></a>00477 <span class="keywordtype">void</span> <a class="code" href="classcUPnPClassObject.html#6bf77953db1fd098a0ec5bc8795e6c6b">setSortCriteria</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keywordtype">bool</span> Descending = <span class="keyword">false</span>);
+<a name="l00484"></a>00484 <span class="keywordtype">void</span> <a class="code" href="classcUPnPClassObject.html#19295252a40ad5fd1a4870a473ac90ea">clearSortCriteria</a>();
+<a name="l00485"></a>00485 <span class="comment">/******* Setter *******/</span>
+<a name="l00497"></a>00497 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#717c3efc5b21fc0c92ef19f1925b24c5">setTitle</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title);
+<a name="l00508"></a>00508 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#b59e3528eda8c223f5336bd8a7d47527">setCreator</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Creator);
+<a name="l00520"></a>00520 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#40819ea39a75fc93e8c8a2ffde43732d">setRestricted</a>(<span class="keywordtype">bool</span> Restricted);
+<a name="l00532"></a>00532 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#4731b6c591544342da067f5abef5b661">setWriteStatus</a>(<span class="keywordtype">int</span> Status);
+<a name="l00544"></a>00544 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#18856f1b0320713a754a87f66b62396e">setResources</a>(cList&lt;cUPnPResource&gt;* Resources);
+<a name="l00555"></a>00555 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#3132df806f003bde133e6724125366f2">addResource</a>(<a class="code" href="classcUPnPResource.html">cUPnPResource</a>* Resource);
+<a name="l00566"></a>00566 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#5df5b5c205aaaeea44a1e5d03b7cba23">removeResource</a>(<a class="code" href="classcUPnPResource.html">cUPnPResource</a>* Resource);
+<a name="l00567"></a>00567 <span class="comment">/******* Getter *******/</span>
+<a name="l00575"></a><a class="code" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">00575</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> <a class="code" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#96ccf6ef7924ae0d440a87cc88221e08" title="The object ID.">mID</a>; }
+<a name="l00584"></a><a class="code" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">00584</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> <a class="code" href="classcUPnPClassObject.html#9eb008855499fc1afcd807cb019d7abe">getParentID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d" title="The parent object.">mParent</a>?this-&gt;<a class="code" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d" title="The parent object.">mParent</a>-&gt;<a class="code" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>():<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a>(-1); }
+<a name="l00593"></a><a class="code" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">00593</a> <a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* <a class="code" href="classcUPnPClassObject.html#4787df89382fc962598fe4008a3eefd9">getParent</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>*)this-&gt;<a class="code" href="classcUPnPClassObject.html#bccecf0a80934f907c3ede2dfe5fc27d" title="The parent object.">mParent</a>; }
+<a name="l00602"></a><a class="code" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">00602</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassObject.html#12312c25d2a926f4d4fe5c4e0eb46f6a">getTitle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#b31f0c0cb2d9761c90713a1744634ec6" title="Object title.">mTitle</a>; }
+<a name="l00612"></a><a class="code" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">00612</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassObject.html#39c9bb75681ce4517c4eff6a6bdffad7">getClass</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#60875cd885a2ac83b5c8eba2f4b98c20" title="Class (Who am I?).">mClass</a>; }
+<a name="l00621"></a><a class="code" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">00621</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassObject.html#2069a6b6653c5dcbbaa582fbc9ea3075">getCreator</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#a5e80e4679babeaaee989b0591046137" title="Creator of this object.">mCreator</a>; }
+<a name="l00633"></a><a class="code" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">00633</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassObject.html#a5498dca2bf917a16f2a8d78f34b6516">isRestricted</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#d3709ce6e3c60a3cea616e437408d9b5" title="Ability of changing metadata?">mRestricted</a>; }
+<a name="l00642"></a><a class="code" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">00642</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassObject.html#c3ac47d3b60823e7efd31f5b58b9d331">getWriteStatus</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#63ae3b00533846717e40fdf4729d50c9" title="Ability of writing resources?">mWriteStatus</a>; }
+<a name="l00651"></a><a class="code" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">00651</a> <a class="code" href="classcUPnPResource.html">cUPnPResource</a>* <a class="code" href="classcUPnPClassObject.html#7bce9528b984a9f943d9a1892bb592ad">getResource</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ResourceID)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#36028ece195b24fa9ff01c2713a8a291" title="The resources of this object as hashmap.">mResourcesID</a>-&gt;Get(ResourceID); }
+<a name="l00659"></a><a class="code" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">00659</a> cList&lt;cUPnPResource&gt;* <a class="code" href="classcUPnPClassObject.html#24136f55324f724bfe7129eb424f4597">getResources</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassObject.html#3da123add3d4de3c6d9a6fe76c666253" title="The resources of this object.">mResources</a>; }
+<a name="l00660"></a>00660 };
+<a name="l00661"></a>00661
+<a name="l00667"></a><a class="code" href="classcUPnPClassItem.html">00667</a> <span class="keyword">class </span><a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a> {
+<a name="l00668"></a>00668 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l00669"></a>00669 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l00670"></a>00670 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>;
+<a name="l00671"></a>00671 <span class="keyword">protected</span>:
+<a name="l00672"></a>00672 <span class="comment">// cUPnPObjectID mReferenceID;</span>
+<a name="l00673"></a><a class="code" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a">00673</a> <a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a>* <a class="code" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a" title="The reference item.">mReference</a>;
+<a name="l00674"></a>00674
+<a name="l00679"></a>00679 <a class="code" href="classcUPnPClassItem.html#c7d477be76ca83891c990441b539935d">cUPnPClassItem</a>();
+<a name="l00680"></a>00680 <span class="keyword">public</span>:
+<a name="l00681"></a>00681 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a>(){};
+<a name="l00682"></a>00682 <span class="keyword">virtual</span> cStringList* <a class="code" href="classcUPnPClassItem.html#add0c9d378036e270e6f99d8d1409e3b">getPropertyList</a>();
+<a name="l00683"></a>00683 <span class="keyword">virtual</span> IXML_Node* <a class="code" href="classcUPnPClassItem.html#5385975d79cd8e8b78429ecfe11b30a7">createDIDLFragment</a>(IXML_Document* Document, cStringList* Filter);
+<a name="l00684"></a>00684 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassItem.html#ab17057659c17792a5b67f4297ade642">setProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keyword">const</span> <span class="keywordtype">char</span>* Value);
+<a name="l00685"></a>00685 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassItem.html#31f7010baa65cc25b95a864f05eb4e62">getProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keywordtype">char</span>** Value) <span class="keyword">const</span>;
+<a name="l00686"></a>00686 <span class="comment">/******** Setter ********/</span>
+<a name="l00696"></a>00696 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassItem.html#79153d8d7b4ac30af0af0146d69c8e83">setReference</a>(<a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a>* Reference);
+<a name="l00697"></a>00697 <span class="comment">/******** Getter ********/</span>
+<a name="l00705"></a><a class="code" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">00705</a> <a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a>* <a class="code" href="classcUPnPClassItem.html#153dcb71951d47891d1e066f97e6cd29">getReference</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a" title="The reference item.">mReference</a>; }
+<a name="l00714"></a><a class="code" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">00714</a> <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> <a class="code" href="classcUPnPClassItem.html#c269fe6cfe8846722b90810a21e42bfc">getReferenceID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a" title="The reference item.">mReference</a>?this-&gt;<a class="code" href="classcUPnPClassItem.html#86a22ee98384003e3c09c43f15b3a58a" title="The reference item.">mReference</a>-&gt;<a class="code" href="classcUPnPClassObject.html#8ae04f4f645c764c0179be1cbf99941a">getID</a>():<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a>(-1); }
+<a name="l00715"></a>00715 };
+<a name="l00716"></a>00716
+<a name="l00717"></a>00717 <span class="keyword">typedef</span> std::vector&lt;cClass&gt; tClassVector;
+<a name="l00718"></a>00718
+<a name="l00724"></a><a class="code" href="classcUPnPClassContainer.html">00724</a> <span class="keyword">class </span><a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a> {
+<a name="l00725"></a>00725 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l00726"></a>00726 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l00727"></a>00727 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a>;
+<a name="l00728"></a>00728 <span class="keyword">protected</span>:
+<a name="l00729"></a><a class="code" href="classcUPnPClassContainer.html#0e4678ea867811f9c5e70e018992c8c8">00729</a> cString <a class="code" href="classcUPnPClassContainer.html#0e4678ea867811f9c5e70e018992c8c8" title="DLNA container type.">mContainerType</a>;
+<a name="l00730"></a><a class="code" href="classcUPnPClassContainer.html#5b66ce95c06498c6166b856d015139b5">00730</a> tClassVector <a class="code" href="classcUPnPClassContainer.html#5b66ce95c06498c6166b856d015139b5" title="Classes which are searchable.">mSearchClasses</a>;
+<a name="l00731"></a><a class="code" href="classcUPnPClassContainer.html#aa82cb4dae2c818609e60468e2ea6de4">00731</a> tClassVector <a class="code" href="classcUPnPClassContainer.html#aa82cb4dae2c818609e60468e2ea6de4" title="Classes which are creatable.">mCreateClasses</a>;
+<a name="l00732"></a><a class="code" href="classcUPnPClassContainer.html#640da8763c5ce432b46125faa3be01da">00732</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassContainer.html#640da8763c5ce432b46125faa3be01da" title="Is the Container searchable?">mSearchable</a>;
+<a name="l00733"></a><a class="code" href="classcUPnPClassContainer.html#8cdeed9b80cae365174680dd4196664f">00733</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#8cdeed9b80cae365174680dd4196664f" title="The containerUpdateID.">mUpdateID</a>;
+<a name="l00734"></a><a class="code" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7">00734</a> <a class="code" href="classcUPnPObjects.html">cUPnPObjects</a>* <a class="code" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7" title="List of children.">mChildren</a>;
+<a name="l00735"></a><a class="code" href="classcUPnPClassContainer.html#df514e47f80f94f957ec451e566107a5">00735</a> cHash&lt;cUPnPClassObject&gt;* <a class="code" href="classcUPnPClassContainer.html#df514e47f80f94f957ec451e566107a5" title="List of children as hash map.">mChildrenID</a>;
+<a name="l00736"></a>00736
+<a name="l00741"></a>00741 <span class="keywordtype">void</span> <a class="code" href="classcUPnPClassContainer.html#6f89b0043d19349efbc52caf7b7dbb3a">update</a>();
+<a name="l00753"></a>00753 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#9d3b9dd6388dd2021889a56a4fccfed3">setUpdateID</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> UID);
+<a name="l00759"></a>00759 <a class="code" href="classcUPnPClassContainer.html#e485882089f12f383ddbea26e186d851">cUPnPClassContainer</a>();
+<a name="l00760"></a>00760 <span class="keyword">public</span>:
+<a name="l00761"></a>00761 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>();
+<a name="l00762"></a>00762 <span class="keyword">virtual</span> cStringList* <a class="code" href="classcUPnPClassContainer.html#d952c993314a9352d13f644bb95fbdc2">getPropertyList</a>();
+<a name="l00763"></a>00763 <span class="keyword">virtual</span> IXML_Node* <a class="code" href="classcUPnPClassContainer.html#fec5b0bae4ed2d194bfc9973f14a3926">createDIDLFragment</a>(IXML_Document* Document, cStringList* Filter);
+<a name="l00764"></a>00764 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassContainer.html#488761ebb4f074ded0d5374f862a1b54">setProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keyword">const</span> <span class="keywordtype">char</span>* Value);
+<a name="l00765"></a>00765 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassContainer.html#f70297d2275e083f05024524d21118d7">getProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keywordtype">char</span>** Value) <span class="keyword">const</span>;
+<a name="l00766"></a><a class="code" href="classcUPnPClassContainer.html#32eb7f1d0b3821f0d9573fe59befdf10">00766</a> <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* <a class="code" href="classcUPnPClassContainer.html#32eb7f1d0b3821f0d9573fe59befdf10">getContainer</a>(){ <span class="keywordflow">return</span> <span class="keyword">this</span>; }
+<a name="l00775"></a>00775 <span class="keywordtype">void</span> <a class="code" href="classcUPnPClassContainer.html#589392682fb7c8e698d09b2eeca83887">addObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l00784"></a>00784 <span class="keywordtype">void</span> <a class="code" href="classcUPnPClassContainer.html#2e3110bd01c17df34cd60302d9330e72">removeObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l00793"></a>00793 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcUPnPClassContainer.html#b2d43f5d5b6ad40d444b7e353979451d">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID) <span class="keyword">const</span>;
+<a name="l00801"></a><a class="code" href="classcUPnPClassContainer.html#ba09b831bbb533d1dbcb6cff4f4b9c23">00801</a> <a class="code" href="classcUPnPObjects.html">cUPnPObjects</a>* <a class="code" href="classcUPnPClassContainer.html#ba09b831bbb533d1dbcb6cff4f4b9c23">getObjectList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7" title="List of children.">mChildren</a>; }
+<a name="l00812"></a>00812 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#d177af2487ff337fe79ef11fe1e07dd1">addSearchClass</a>(<a class="code" href="structcClass.html">cClass</a> SearchClass);
+<a name="l00823"></a>00823 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#3cfb0c2035e678cde990631b804d4ab2">delSearchClass</a>(<a class="code" href="structcClass.html">cClass</a> SearchClass);
+<a name="l00834"></a>00834 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#55613e5fa7019137aa818036e91a0811">addCreateClass</a>(<a class="code" href="structcClass.html">cClass</a> CreateClass);
+<a name="l00845"></a>00845 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#23c2949d1cb925423a6b113cf0021a5f">delCreateClass</a>(<a class="code" href="structcClass.html">cClass</a> CreateClass);
+<a name="l00846"></a>00846 <span class="comment">/******** Setter ********/</span>
+<a name="l00857"></a>00857 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#495f4218ec9566ede534a96daf387462">setContainerType</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Type);
+<a name="l00871"></a>00871 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#aa34f20a75725837af2168a192687a51">setSearchClasses</a>(std::vector&lt;cClass&gt; SearchClasses);
+<a name="l00883"></a>00883 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#633b1e47657d9039d0919ce9b139f9b2">setCreateClasses</a>(std::vector&lt;cClass&gt; CreateClasses);
+<a name="l00895"></a>00895 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#d32e937984f39806a15a22d13a644703">setSearchable</a>(<span class="keywordtype">bool</span> Searchable);
+<a name="l00896"></a>00896 <span class="comment">/******** Getter ********/</span>
+<a name="l00906"></a><a class="code" href="classcUPnPClassContainer.html#b4977eba812c34a4201935f31be0f5c9">00906</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassContainer.html#b4977eba812c34a4201935f31be0f5c9">getContainerType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassContainer.html#0e4678ea867811f9c5e70e018992c8c8" title="DLNA container type.">mContainerType</a>; }
+<a name="l00915"></a><a class="code" href="classcUPnPClassContainer.html#735327b72c023d3048db0d4fd2a608cc">00915</a> <span class="keyword">const</span> std::vector&lt;cClass&gt;* <a class="code" href="classcUPnPClassContainer.html#735327b72c023d3048db0d4fd2a608cc">getSearchClasses</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &amp;(this-&gt;<a class="code" href="classcUPnPClassContainer.html#5b66ce95c06498c6166b856d015139b5" title="Classes which are searchable.">mSearchClasses</a>); }
+<a name="l00926"></a><a class="code" href="classcUPnPClassContainer.html#d9a875daad1093311723262f5f6c1f7c">00926</a> <span class="keyword">const</span> std::vector&lt;cClass&gt;* <a class="code" href="classcUPnPClassContainer.html#d9a875daad1093311723262f5f6c1f7c">getCreateClasses</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &amp;(this-&gt;<a class="code" href="classcUPnPClassContainer.html#aa82cb4dae2c818609e60468e2ea6de4" title="Classes which are creatable.">mCreateClasses</a>); }
+<a name="l00937"></a><a class="code" href="classcUPnPClassContainer.html#c6d1de26df91d64379a9a2db1f5a7301">00937</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassContainer.html#c6d1de26df91d64379a9a2db1f5a7301">isSearchable</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassContainer.html#640da8763c5ce432b46125faa3be01da" title="Is the Container searchable?">mSearchable</a>; }
+<a name="l00945"></a><a class="code" href="classcUPnPClassContainer.html#b23a80cebe626e0b2b6c3b1a83b039c6">00945</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#b23a80cebe626e0b2b6c3b1a83b039c6">getChildCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassContainer.html#ec00054069266b3da9212e09b107a7d7" title="List of children.">mChildren</a>-&gt;Count(); }
+<a name="l00953"></a><a class="code" href="classcUPnPClassContainer.html#475ad1a2003cc9b169685f825a9d790d">00953</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassContainer.html#475ad1a2003cc9b169685f825a9d790d">getUpdateID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassContainer.html#8cdeed9b80cae365174680dd4196664f" title="The containerUpdateID.">mUpdateID</a>; }
+<a name="l00964"></a>00964 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassContainer.html#a8ae4e790074d3a34bc7ec173a02595a">isUpdated</a>();
+<a name="l00965"></a>00965 };
+<a name="l00966"></a>00966
+<a name="l00972"></a><a class="code" href="classcUPnPClassVideoItem.html">00972</a> <span class="keyword">class </span><a class="code" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a> {
+<a name="l00973"></a>00973 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l00974"></a>00974 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l00975"></a>00975 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>;
+<a name="l00976"></a>00976 <span class="keyword">protected</span>:
+<a name="l00977"></a><a class="code" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3">00977</a> cString <a class="code" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3" title="Genre of the video.">mGenre</a>;
+<a name="l00978"></a><a class="code" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e">00978</a> cString <a class="code" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e" title="Description.">mDescription</a>;
+<a name="l00979"></a><a class="code" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59">00979</a> cString <a class="code" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59" title="a longer description">mLongDescription</a>;
+<a name="l00980"></a><a class="code" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e">00980</a> cString <a class="code" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e" title="CSV of Publishers.">mPublishers</a>;
+<a name="l00981"></a><a class="code" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471">00981</a> cString <a class="code" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471" title="RFC 1766 Language code.">mLanguage</a>;
+<a name="l00982"></a><a class="code" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97">00982</a> cString <a class="code" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97" title="Relation to other contents.">mRelations</a>;
+<a name="l00983"></a><a class="code" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0">00983</a> cString <a class="code" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0" title="CSV of Producers.">mProducers</a>;
+<a name="l00984"></a><a class="code" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9">00984</a> cString <a class="code" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9" title="Rating (for parential control).">mRating</a>;
+<a name="l00985"></a><a class="code" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8">00985</a> cString <a class="code" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8" title="CSV of Actors.">mActors</a>;
+<a name="l00986"></a><a class="code" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad">00986</a> cString <a class="code" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad" title="CSV of Directors.">mDirectors</a>;
+<a name="l00987"></a>00987
+<a name="l00992"></a>00992 <a class="code" href="classcUPnPClassVideoItem.html#38ce1c18cc9d474791255fdcb43824d2">cUPnPClassVideoItem</a>();
+<a name="l00993"></a>00993 <span class="keyword">public</span>:
+<a name="l00994"></a>00994 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>();
+<a name="l00995"></a>00995 <span class="comment">//virtual cString createDIDLFragment(cStringList* Filter);</span>
+<a name="l00996"></a>00996 <span class="keyword">virtual</span> cStringList* <a class="code" href="classcUPnPClassVideoItem.html#9dc397419b45535a3e6a676667b619a4">getPropertyList</a>();
+<a name="l00997"></a>00997 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassVideoItem.html#3cbda6d87f5a9ff0475a75e76ba19924">setProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keyword">const</span> <span class="keywordtype">char</span>* Value);
+<a name="l00998"></a>00998 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassVideoItem.html#94ab2ffcbe14abb63c680e6748e70ef1">getProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keywordtype">char</span>** Value) <span class="keyword">const</span>;
+<a name="l00999"></a>00999 <span class="comment">/******** Setter ********/</span>
+<a name="l01011"></a>01011 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#05c5b8394cbfcaeffe5f99c885496e3d">setLongDescription</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* LongDescription);
+<a name="l01024"></a>01024 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#f5a642732c66b6920f5b4646a4c34a92">setDescription</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Description);
+<a name="l01035"></a>01035 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#db14c0944a89f179832a4f4914caa4ca">setPublishers</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Publishers);
+<a name="l01049"></a>01049 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#1be14ea33f9bbf53e636fea3658cc6f8">setGenre</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Genre);
+<a name="l01062"></a>01062 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#89c24d198ce7bdc31aac727e65b02a84">setLanguage</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Language);
+<a name="l01076"></a>01076 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#844385c5fb4f55c95a2994c7aaf120ef">setRelations</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Relations);
+<a name="l01087"></a>01087 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#a5fc1a420bfd307bbd026c0681162e0a">setDirectors</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Directors);
+<a name="l01099"></a>01099 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#33b104046098dbf66d894143181678c4">setActors</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Actors);
+<a name="l01111"></a>01111 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#3812b8056c9d2c7d13a7734e4219b27b">setProducers</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Producers);
+<a name="l01123"></a>01123 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoItem.html#6d4143016fc91fcbb0db4e9f8a8a0047">setRating</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Rating);
+<a name="l01124"></a>01124 <span class="comment">/******** Getter ********/</span>
+<a name="l01132"></a><a class="code" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">01132</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#b3ca922f5605d81bd8d3457fa19e228d">getGenre</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#b7fa79ab14701142597088b0a73515c3" title="Genre of the video.">mGenre</a>; }
+<a name="l01140"></a><a class="code" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">01140</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#29f6f76f4ac21d6c15dbe2eb95a7d0c6">getLongDescription</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#577abd61e96e6a7a17acd48eb7854a59" title="a longer description">mLongDescription</a>; }
+<a name="l01148"></a><a class="code" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">01148</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#364180a89479d6143cfbe146d337a7dc">getDescription</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#bdf0f85f02d43ef32d8aab1daecddd7e" title="Description.">mDescription</a>; }
+<a name="l01156"></a><a class="code" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">01156</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#797dc99dd12b77af641b266ada7cb1dc">getPublishers</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#f6bcbeb08f86a8e8c133e0904c07e89e" title="CSV of Publishers.">mPublishers</a>; }
+<a name="l01164"></a><a class="code" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">01164</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#4d134ac251a6c9b67a002d6fa831bf1c">getLanguage</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#9d1d5e4f5058e4ca6a9e011b6eb97471" title="RFC 1766 Language code.">mLanguage</a>; }
+<a name="l01172"></a><a class="code" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">01172</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#755e9710173d62fc2c9b98076391c916">getRelations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#dc03dd27283de69640cea28783459d97" title="Relation to other contents.">mRelations</a>; }
+<a name="l01180"></a><a class="code" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">01180</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#61bca560d8469a441894896fe950adf3">getActors</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#2f22a58a30b8baf53a3dd76e6bc679a8" title="CSV of Actors.">mActors</a>; }
+<a name="l01188"></a><a class="code" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">01188</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#bd72ad944de96ddc8795cfe531adfef1">getProducers</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#fa8cca909e9bde4fdff684bfdd4d8ac0" title="CSV of Producers.">mProducers</a>; }
+<a name="l01196"></a><a class="code" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">01196</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#5b24963eb2d6d5d8e1547ba73863e13c">getDirectors</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#79ace4a5927eaf082628ee8120e988ad" title="CSV of Directors.">mDirectors</a>; }
+<a name="l01204"></a><a class="code" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">01204</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoItem.html#2d8b94809b1207a14831e095c2b598a6">getRating</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoItem.html#73540adc3263ddbabc10018ba9a52cf9" title="Rating (for parential control).">mRating</a>; }
+<a name="l01205"></a>01205 };
+<a name="l01206"></a>01206
+<a name="l01212"></a><a class="code" href="classcUPnPClassMovie.html">01212</a> <span class="keyword">class </span><a class="code" href="classcUPnPClassMovie.html">cUPnPClassMovie</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> {
+<a name="l01213"></a>01213 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l01214"></a>01214 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l01215"></a>01215 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a>;
+<a name="l01216"></a>01216 <span class="keyword">protected</span>:
+<a name="l01217"></a><a class="code" href="classcUPnPClassMovie.html#90cc86f3eb248bbea4b3bf845862455f">01217</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassMovie.html#90cc86f3eb248bbea4b3bf845862455f" title="The Region code of the movie (0 - 8).">mDVDRegionCode</a>;
+<a name="l01218"></a><a class="code" href="classcUPnPClassMovie.html#a9bcda545b8ce19e3b613757b3759127">01218</a> cString <a class="code" href="classcUPnPClassMovie.html#a9bcda545b8ce19e3b613757b3759127" title="The storage medium where the movie is stored.">mStorageMedium</a>;
+<a name="l01219"></a>01219
+<a name="l01224"></a>01224 <a class="code" href="classcUPnPClassMovie.html#7343932df4e5bfd9821e16026cb7c66d">cUPnPClassMovie</a>();
+<a name="l01225"></a>01225 <span class="keyword">public</span>:
+<a name="l01226"></a>01226 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>();
+<a name="l01227"></a>01227 <span class="comment">//virtual cString createDIDLFragment(cStringList* Filter);</span>
+<a name="l01228"></a>01228 <span class="keyword">virtual</span> cStringList* <a class="code" href="classcUPnPClassMovie.html#b62e6dac175090b82c47f955e29c146c">getPropertyList</a>();
+<a name="l01229"></a>01229 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassMovie.html#d7f990edda85f2caabe822d2ceeb2b0d">setProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keyword">const</span> <span class="keywordtype">char</span>* Value);
+<a name="l01230"></a>01230 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassMovie.html#b4c1d5a973856469b93d2033b65d7ba2">getProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keywordtype">char</span>** Value) <span class="keyword">const</span>;
+<a name="l01231"></a>01231 <span class="comment">/******** Setter ********/</span>
+<a name="l01245"></a>01245 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassMovie.html#3df7d1a4d798fddde1b379a2302a128c">setDVDRegionCode</a>(<span class="keywordtype">int</span> RegionCode);
+<a name="l01258"></a>01258 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassMovie.html#136a1daa4c14c2d7397624eb288c463e">setStorageMedium</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* StorageMedium);
+<a name="l01259"></a>01259 <span class="comment">/******** Getter ********/</span>
+<a name="l01271"></a><a class="code" href="classcUPnPClassMovie.html#80a41ba769974e80635b80aa3c41f66d">01271</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassMovie.html#80a41ba769974e80635b80aa3c41f66d">getDVDRegionCode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassMovie.html#90cc86f3eb248bbea4b3bf845862455f" title="The Region code of the movie (0 - 8).">mDVDRegionCode</a>; }
+<a name="l01279"></a><a class="code" href="classcUPnPClassMovie.html#9fc36c7e0a1a465ec720b219a1710cc6">01279</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassMovie.html#9fc36c7e0a1a465ec720b219a1710cc6">getStorageMedium</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassMovie.html#a9bcda545b8ce19e3b613757b3759127" title="The storage medium where the movie is stored.">mStorageMedium</a>; }
+<a name="l01280"></a>01280 };
+<a name="l01281"></a>01281
+<a name="l01287"></a><a class="code" href="classcUPnPClassVideoBroadcast.html">01287</a> <span class="keyword">class </span><a class="code" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a> {
+<a name="l01288"></a>01288 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l01289"></a>01289 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>;
+<a name="l01290"></a>01290 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a>;
+<a name="l01291"></a>01291 <span class="keyword">protected</span>:
+<a name="l01292"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#24aa59d4c90d705f651cddf4ed90ad73">01292</a> cString <a class="code" href="classcUPnPClassVideoBroadcast.html#24aa59d4c90d705f651cddf4ed90ad73" title="The channel icon of the channel.">mIcon</a>;
+<a name="l01293"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#9a9420e700fd45afd24beba8ae261909">01293</a> cString <a class="code" href="classcUPnPClassVideoBroadcast.html#9a9420e700fd45afd24beba8ae261909" title="The region where the channel can be received.">mRegion</a>;
+<a name="l01294"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#8ad5b61bf9e88e1b30a132ca72b0d905">01294</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#8ad5b61bf9e88e1b30a132ca72b0d905" title="The channel number.">mChannelNr</a>;
+<a name="l01295"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#aae072a7d7a21b699561a62700971c26">01295</a> cString <a class="code" href="classcUPnPClassVideoBroadcast.html#aae072a7d7a21b699561a62700971c26" title="The channel name or provider name.">mChannelName</a>;
+<a name="l01296"></a>01296
+<a name="l01301"></a>01301 <a class="code" href="classcUPnPClassVideoBroadcast.html#a8d1e73bc9cbb20da6727f3c2e823d79">cUPnPClassVideoBroadcast</a>();
+<a name="l01302"></a>01302 <span class="keyword">public</span>:
+<a name="l01303"></a>01303 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>();
+<a name="l01304"></a>01304 <span class="comment">//virtual cString createDIDLFragment(cStringList* Filter);</span>
+<a name="l01305"></a>01305 <span class="keyword">virtual</span> cStringList* <a class="code" href="classcUPnPClassVideoBroadcast.html#192f6a04c87fe8d56f99c71337cf0f68">getPropertyList</a>();
+<a name="l01306"></a>01306 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#ce7a341834e448479d3c8f4f0254ce43">setProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keyword">const</span> <span class="keywordtype">char</span>* Value);
+<a name="l01307"></a>01307 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#e1d13a13de094337cea6be214c4da0f0">getProperty</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property, <span class="keywordtype">char</span>** Value) <span class="keyword">const</span>;
+<a name="l01308"></a>01308 <span class="comment">/******** Setter ********/</span>
+<a name="l01320"></a>01320 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#13e432f8a97072f3b45b1d199b82ae02">setIcon</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* IconURI);
+<a name="l01331"></a>01331 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#228fcc06291dc3989917bbfa5ce3153f">setRegion</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Region);
+<a name="l01343"></a>01343 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#4a7804c6c86531d7e23cbc714daa6077">setChannelNr</a>(<span class="keywordtype">int</span> ChannelNr);
+<a name="l01354"></a>01354 <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#b3d1740f8ad67cec1c82c23078b03189">setChannelName</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* ChannelName);
+<a name="l01355"></a>01355 <span class="comment">/******** Getter ********/</span>
+<a name="l01363"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#f4c2a9f5d62e41d853385b7b7685d536">01363</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoBroadcast.html#f4c2a9f5d62e41d853385b7b7685d536">getIcon</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoBroadcast.html#24aa59d4c90d705f651cddf4ed90ad73" title="The channel icon of the channel.">mIcon</a>; }
+<a name="l01371"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#f4582c82588879c110947fdfc50b7895">01371</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoBroadcast.html#f4582c82588879c110947fdfc50b7895">getRegion</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoBroadcast.html#9a9420e700fd45afd24beba8ae261909" title="The region where the channel can be received.">mRegion</a>; }
+<a name="l01379"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#6065509557e13176878098861fcfeb9d">01379</a> <span class="keywordtype">int</span> <a class="code" href="classcUPnPClassVideoBroadcast.html#6065509557e13176878098861fcfeb9d">getChannelNr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoBroadcast.html#8ad5b61bf9e88e1b30a132ca72b0d905" title="The channel number.">mChannelNr</a>; }
+<a name="l01387"></a><a class="code" href="classcUPnPClassVideoBroadcast.html#b63ea63a4ab8ac3cb654b0bab4df620a">01387</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPClassVideoBroadcast.html#b63ea63a4ab8ac3cb654b0bab4df620a">getChannelName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="classcUPnPClassVideoBroadcast.html#aae072a7d7a21b699561a62700971c26" title="The channel name or provider name.">mChannelName</a>; }
+<a name="l01388"></a>01388 };
+<a name="l01389"></a>01389
+<a name="l01396"></a><a class="code" href="classcMediatorInterface.html">01396</a> <span class="keyword">class </span><a class="code" href="classcMediatorInterface.html">cMediatorInterface</a> {
+<a name="l01397"></a>01397 <span class="keyword">public</span>:
+<a name="l01398"></a>01398 <span class="keyword">virtual</span> ~<a class="code" href="classcMediatorInterface.html">cMediatorInterface</a>(){};
+<a name="l01408"></a>01408 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcMediatorInterface.html#68a8350f7ea5ccd2496580035228b1fc">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted) = 0;
+<a name="l01418"></a>01418 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcMediatorInterface.html#716ad95bf6ac5a10e9409ced7a63a9d8">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID) = 0;
+<a name="l01430"></a>01430 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcMediatorInterface.html#a2f40e697f499c64cfd007aa70e3da7e">saveObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object) = 0;
+<a name="l01442"></a>01442 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcMediatorInterface.html#ffbddb7fe72554b9cde9d02648cf8f0e">deleteObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object) = 0;
+<a name="l01454"></a>01454 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcMediatorInterface.html#cd087c690154d43ac5ef92c5a42f2349">clearObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object) = 0;
+<a name="l01455"></a>01455 };
+<a name="l01456"></a>01456
+<a name="l01457"></a>01457 <span class="keyword">typedef</span> std::map&lt;const char*, cMediatorInterface*, strCmp&gt; tMediatorMap;
+<a name="l01458"></a>01458
+<a name="l01469"></a><a class="code" href="classcUPnPObjectFactory.html">01469</a> <span class="keyword">class </span><a class="code" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a> {
+<a name="l01470"></a>01470 <span class="keyword">private</span>:
+<a name="l01471"></a>01471 <span class="keyword">static</span> <a class="code" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a>* mInstance;
+<a name="l01472"></a>01472 <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>* mDatabase;
+<a name="l01473"></a>01473 tMediatorMap mMediators;
+<a name="l01474"></a>01474 <a class="code" href="classcMediatorInterface.html">cMediatorInterface</a>* findMediatorByID(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01475"></a>01475 <a class="code" href="classcMediatorInterface.html">cMediatorInterface</a>* findMediatorByClass(<span class="keyword">const</span> <span class="keywordtype">char</span>* Class);
+<a name="l01476"></a>01476 <a class="code" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a>();
+<a name="l01477"></a>01477 <span class="keyword">public</span>:
+<a name="l01487"></a>01487 <span class="keyword">static</span> <a class="code" href="classcUPnPObjectFactory.html">cUPnPObjectFactory</a>* <a class="code" href="classcUPnPObjectFactory.html#5b99e366dad18ab44ee1d2da5f1c3b4d">getInstance</a>();
+<a name="l01498"></a>01498 <span class="keywordtype">void</span> <a class="code" href="classcUPnPObjectFactory.html#f2b20dffcd46c08d5b2de4b6807e0689">registerMediator</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* UPnPClass, <a class="code" href="classcMediatorInterface.html">cMediatorInterface</a>* Mediator);
+<a name="l01509"></a>01509 <span class="keywordtype">void</span> <a class="code" href="classcUPnPObjectFactory.html#ae48ef32453881a77857bf9772d79d22">unregisterMediator</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* UPnPClass, <span class="keywordtype">bool</span> freeMediator=<span class="keyword">true</span>);
+<a name="l01515"></a>01515 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcUPnPObjectFactory.html#c71bbdb30be6b0fd17f67b8850aeccdb">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* UPnPClass, <span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted=<span class="keyword">true</span>);
+<a name="l01517"></a>01517 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcUPnPObjectFactory.html#a26f57549c26c6fc15425158e7fda4b6">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01519"></a>01519 <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectFactory.html#1b521c8cfa3507bec49274b606d5d2c5">saveObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01521"></a>01521 <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectFactory.html#10198e67d9da1f964aa895cd463b2f92">deleteObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01523"></a>01523 <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectFactory.html#947c7256906b4dbe63d156723cdc38be">clearObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01524"></a>01524 };
+<a name="l01525"></a>01525
+<a name="l01526"></a>01526 <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l01527"></a>01527
+<a name="l01535"></a><a class="code" href="classcUPnPObjectMediator.html">01535</a> <span class="keyword">class </span><a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a> : <span class="keyword">public</span> <a class="code" href="classcMediatorInterface.html">cMediatorInterface</a> {
+<a name="l01536"></a>01536 <span class="keyword">protected</span>:
+<a name="l01537"></a><a class="code" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541">01537</a> <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>* <a class="code" href="classcUPnPObjectMediator.html#e4c8b57a4ebeee1cd55306d436a10541" title="the SQLite 3 database wrapper">mDatabase</a>;
+<a name="l01538"></a><a class="code" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf">01538</a> <a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* <a class="code" href="classcUPnPObjectMediator.html#dbdaa3de8276658a0f8d91d24a789ddf" title="the media database">mMediaDatabase</a>;
+<a name="l01539"></a>01539
+<a name="l01545"></a>01545 <a class="code" href="classcUPnPObjectMediator.html#1bc635808c95f6bd774046c37b8139a1">cUPnPObjectMediator</a>(
+<a name="l01546"></a>01546 <a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* MediaDatabase
+<a name="l01547"></a>01547 );
+<a name="l01558"></a>01558 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectMediator.html#a5a3c6d0fd0cff8c74e6fc40d723290f">initializeObject</a>(
+<a name="l01559"></a>01559 <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object,
+<a name="l01560"></a>01560 <span class="keyword">const</span> <span class="keywordtype">char</span>* Class,
+<a name="l01561"></a>01561 <span class="keyword">const</span> <span class="keywordtype">char</span>* Title,
+<a name="l01562"></a>01562 <span class="keywordtype">bool</span> Restricted
+<a name="l01563"></a>01563 );
+<a name="l01574"></a>01574 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectMediator.html#c44c010895f92adc63af2a2d34cf34c8">objectToDatabase</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01586"></a>01586 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectMediator.html#07a6a1d2694fb2f4573bd50374406b24">databaseToObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object, <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01587"></a>01587 <span class="keyword">public</span>:
+<a name="l01588"></a>01588 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a>();
+<a name="l01590"></a>01590 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcUPnPObjectMediator.html#bfbca3f1cbadacee2b21306364750f26">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted);
+<a name="l01592"></a>01592 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* <a class="code" href="classcUPnPObjectMediator.html#5b4fff612476fb51690919f9c59899a5">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01594"></a>01594 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectMediator.html#c200f88239b8940d9d38cbe04c3e961e">saveObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01596"></a>01596 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectMediator.html#0d2f9d72a678002456cbdeccb2c6e5fe">deleteObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01598"></a>01598 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPObjectMediator.html#9ab720e86c6d6cb397799ac5070f70aa">clearObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01599"></a>01599 };
+<a name="l01600"></a>01600
+<a name="l01608"></a><a class="code" href="classcUPnPItemMediator.html">01608</a> <span class="keyword">class </span><a class="code" href="classcUPnPItemMediator.html">cUPnPItemMediator</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a> {
+<a name="l01609"></a>01609 <span class="keyword">protected</span>:
+<a name="l01611"></a>01611 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPItemMediator.html#6d954b1cfdc4a7d55981c6ebff9d6d04">objectToDatabase</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01613"></a>01613 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPItemMediator.html#1f3645ebe0a33a81d0b3f22060dc4761">databaseToObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object, <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01614"></a>01614 <span class="keyword">public</span>:
+<a name="l01623"></a>01623 <a class="code" href="classcUPnPItemMediator.html#99ec31552ae8e4d52da6920ff959c133">cUPnPItemMediator</a>(<a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* MediaDatabase);
+<a name="l01624"></a>01624 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPItemMediator.html">cUPnPItemMediator</a>(){};
+<a name="l01626"></a>01626 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a>* <a class="code" href="classcUPnPItemMediator.html#e2fd4cf5e6435f1eeadd11f9a99cd2db">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted);
+<a name="l01628"></a>01628 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a>* <a class="code" href="classcUPnPItemMediator.html#81411b2a472ade71d73a9c8ddc2a7990">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01629"></a>01629 };
+<a name="l01630"></a>01630
+<a name="l01638"></a><a class="code" href="classcUPnPVideoItemMediator.html">01638</a> <span class="keyword">class </span><a class="code" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPItemMediator.html">cUPnPItemMediator</a> {
+<a name="l01639"></a>01639 <span class="keyword">protected</span>:
+<a name="l01640"></a>01640 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPVideoItemMediator.html#984e10738bca46ce38307d5f60e26bd3">objectToDatabase</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01641"></a>01641 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPVideoItemMediator.html#3f7ec1937b2b95e3ec5462470971d350">databaseToObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object, <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01642"></a>01642 <span class="keyword">public</span>:
+<a name="l01651"></a>01651 <a class="code" href="classcUPnPVideoItemMediator.html#1f56334e155773b6c3d86f481f4ad96b">cUPnPVideoItemMediator</a>(<a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* MediaDatabase);
+<a name="l01652"></a>01652 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a>(){};
+<a name="l01653"></a>01653 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>* <a class="code" href="classcUPnPVideoItemMediator.html#27e001142c3651c36dfd3b7c450414c0">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted);
+<a name="l01654"></a>01654 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>* <a class="code" href="classcUPnPVideoItemMediator.html#dd8927340a69d247965ef9250adefb21">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01655"></a>01655 };
+<a name="l01656"></a>01656
+<a name="l01664"></a><a class="code" href="classcUPnPVideoBroadcastMediator.html">01664</a> <span class="keyword">class </span><a class="code" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a> {
+<a name="l01665"></a>01665 <span class="keyword">protected</span>:
+<a name="l01666"></a>01666 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPVideoBroadcastMediator.html#822f9c93928a7dbe9491c8cccbf53f95">objectToDatabase</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01667"></a>01667 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPVideoBroadcastMediator.html#33237e5d850c107d37be37c1646b17d7">databaseToObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object, <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01668"></a>01668 <span class="keyword">public</span>:
+<a name="l01677"></a>01677 <a class="code" href="classcUPnPVideoBroadcastMediator.html#58179b50ee5a5952cff70aa4473845f9">cUPnPVideoBroadcastMediator</a>(<a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* MediaDatabase);
+<a name="l01678"></a>01678 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPVideoBroadcastMediator.html">cUPnPVideoBroadcastMediator</a>(){};
+<a name="l01679"></a>01679 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>* <a class="code" href="classcUPnPVideoBroadcastMediator.html#14fefa90807d40d91a80712729af2beb">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted);
+<a name="l01680"></a>01680 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>* <a class="code" href="classcUPnPVideoBroadcastMediator.html#c13bf0f008f49b0ab499542391998a24">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01681"></a>01681 };
+<a name="l01682"></a>01682
+<a name="l01690"></a><a class="code" href="classcUPnPMovieMediator.html">01690</a> <span class="keyword">class </span><a class="code" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPVideoItemMediator.html">cUPnPVideoItemMediator</a> {
+<a name="l01691"></a>01691 <span class="keyword">protected</span>:
+<a name="l01692"></a>01692 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPMovieMediator.html#61ab6dcaf2417898428ddf1f635788b7">objectToDatabase</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01693"></a>01693 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPMovieMediator.html#542135e9c1051b57a8f6f5ecc0c1ede3">databaseToObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object, <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01694"></a>01694 <span class="keyword">public</span>:
+<a name="l01703"></a>01703 <a class="code" href="classcUPnPMovieMediator.html#aa40d0f4054d6b90b2cbb0fe6bd8ac38">cUPnPMovieMediator</a>(<a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* MediaDatabase);
+<a name="l01704"></a>01704 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPMovieMediator.html">cUPnPMovieMediator</a>(){};
+<a name="l01705"></a>01705 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>* <a class="code" href="classcUPnPMovieMediator.html#29d40a311b7283cc4fba36860ac8c935">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted);
+<a name="l01706"></a>01706 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassMovie.html">cUPnPClassMovie</a>* <a class="code" href="classcUPnPMovieMediator.html#d85b240eb54efd9ab46c440b51c71e83">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01707"></a>01707 };
+<a name="l01708"></a>01708
+<a name="l01716"></a><a class="code" href="classcUPnPContainerMediator.html">01716</a> <span class="keyword">class </span><a class="code" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a> : <span class="keyword">public</span> <a class="code" href="classcUPnPObjectMediator.html">cUPnPObjectMediator</a> {
+<a name="l01717"></a>01717 <span class="keyword">protected</span>:
+<a name="l01718"></a>01718 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPContainerMediator.html#1caa4625fca42940ba36999a71ac49ec">objectToDatabase</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l01719"></a>01719 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPContainerMediator.html#79f483b48f596047ed9549f0b036f35b">databaseToObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object, <a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01720"></a>01720 <span class="keyword">public</span>:
+<a name="l01729"></a>01729 <a class="code" href="classcUPnPContainerMediator.html#e6fce4835ea40a77b401a093f65b5822">cUPnPContainerMediator</a>(<a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* MediaDatabase);
+<a name="l01730"></a>01730 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPContainerMediator.html">cUPnPContainerMediator</a>(){};
+<a name="l01731"></a>01731 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* <a class="code" href="classcUPnPContainerMediator.html#751177c725da94b1b91f6cda4645844d">createObject</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Title, <span class="keywordtype">bool</span> Restricted);
+<a name="l01732"></a>01732 <span class="keyword">virtual</span> <a class="code" href="classcUPnPClassContainer.html">cUPnPClassContainer</a>* <a class="code" href="classcUPnPContainerMediator.html#78b71f96fb4289dc78f897d6282078d6">getObject</a>(<a class="code" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID);
+<a name="l01733"></a>01733 };
+<a name="l01734"></a>01734
+<a name="l01735"></a>01735 <span class="preprocessor">#endif </span><span class="comment">/* _OBJECT_H */</span>
+<a name="l01736"></a>01736
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/recplayer_8h-source.html b/doc/html/recplayer_8h-source.html
new file mode 100644
index 0000000..4dcf279
--- /dev/null
+++ b/doc/html/recplayer_8h-source.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: receiver/recplayer.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>receiver/recplayer.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: recplayer.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 8. Juni 2009, 11:57</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _RECPLAYER_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _RECPLAYER_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "filehandle.h"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;vdr/recording.h&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00024"></a><a class="code" href="classcRecordingPlayer.html">00024</a> <span class="keyword">class </span><a class="code" href="classcRecordingPlayer.html">cRecordingPlayer</a> : <a class="code" href="classcFileHandle.html">cFileHandle</a> {
+<a name="l00025"></a>00025 <span class="keyword">public</span>:
+<a name="l00035"></a>00035 <span class="keyword">static</span> <a class="code" href="classcRecordingPlayer.html">cRecordingPlayer</a> *<a class="code" href="classcRecordingPlayer.html#59abdfe4e4339943afbd713d2fb35e40">newInstance</a>(cRecording *Recording);
+<a name="l00036"></a>00036 <span class="keyword">virtual</span> ~<a class="code" href="classcRecordingPlayer.html">cRecordingPlayer</a>();
+<a name="l00037"></a>00037 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcRecordingPlayer.html#e7ad4362d821f38db5143c0aeff15d97">open</a>(UpnpOpenFileMode mode);
+<a name="l00038"></a>00038 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcRecordingPlayer.html#e0fda8b0be8e47133698f1763e649b3d">read</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">size_t</span> buflen);
+<a name="l00039"></a>00039 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcRecordingPlayer.html#7dd0cb78ae8032eb677f01d71187d6e0">write</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">size_t</span> buflen);
+<a name="l00040"></a>00040 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcRecordingPlayer.html#43f7ba867374d6be9e78c68c872bf608">seek</a>(off_t offset, <span class="keywordtype">int</span> origin);
+<a name="l00041"></a>00041 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcRecordingPlayer.html#5e81aeecd16f89e432690a9b05d8dd6a">close</a>();
+<a name="l00042"></a>00042 <span class="keyword">private</span>:
+<a name="l00043"></a>00043 <span class="keywordtype">void</span> Scan(<span class="keywordtype">void</span>);
+<a name="l00044"></a>00044 <a class="code" href="classcRecordingPlayer.html">cRecordingPlayer</a>(cRecording *Recording);
+<a name="l00045"></a>00045 FILE* GetFile(<span class="keywordtype">int</span> Index = 0);
+<a name="l00046"></a>00046 FILE* NextFile(<span class="keywordtype">void</span>);
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> SeekInFile(<span class="keywordtype">int</span> Index, off_t Offset);
+<a name="l00048"></a>00048 cRecording *mRecording;
+<a name="l00049"></a>00049 off_t* mOffsets;
+<a name="l00050"></a>00050 off_t mOffset;
+<a name="l00051"></a>00051 off_t mTotalLenght;
+<a name="l00052"></a>00052 <span class="keywordtype">int</span> mIndex;
+<a name="l00053"></a>00053 FILE *mFile;
+<a name="l00054"></a>00054 };
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="preprocessor">#endif </span><span class="comment">/* _RECPLAYER_H */</span>
+<a name="l00057"></a>00057
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/resources_8h-source.html b/doc/html/resources_8h-source.html
new file mode 100644
index 0000000..cfcf9ca
--- /dev/null
+++ b/doc/html/resources_8h-source.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: database/resources.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>database/resources.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: resources.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 30. September 2009, 15:17</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _RESOURCES_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _RESOURCES_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "database.h"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "object.h"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;vdr/channels.h&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;vdr/recording.h&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="keyword">class </span><a class="code" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>;
+<a name="l00017"></a>00017 <span class="keyword">class </span><a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>;
+<a name="l00018"></a>00018
+<a name="l00025"></a><a class="code" href="classcUPnPResources.html">00025</a> <span class="keyword">class </span><a class="code" href="classcUPnPResources.html">cUPnPResources</a> {
+<a name="l00026"></a>00026 <span class="keyword">private</span>:
+<a name="l00027"></a>00027 cHash&lt;cUPnPResource&gt;* mResources;
+<a name="l00028"></a>00028 <span class="keyword">static</span> <a class="code" href="classcUPnPResources.html">cUPnPResources</a>* mInstance;
+<a name="l00029"></a>00029 <a class="code" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>* mMediator;
+<a name="l00030"></a>00030 <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>* mDatabase;
+<a name="l00031"></a>00031 <a class="code" href="classcUPnPResources.html">cUPnPResources</a>();
+<a name="l00032"></a>00032 <span class="keyword">public</span>:
+<a name="l00044"></a>00044 <span class="keywordtype">int</span> <a class="code" href="classcUPnPResources.html#5da9137336fa284040a823f53267b837">getResourcesOfObject</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object);
+<a name="l00054"></a>00054 <span class="keywordtype">int</span> <a class="code" href="classcUPnPResources.html#eaffc72ee9faeb046a41b965ce61507f">loadResources</a>();
+<a name="l00056"></a>00056 <a class="code" href="classcUPnPResource.html">cUPnPResource</a>* <a class="code" href="classcUPnPResources.html#cfec64e65fa14c1efb653c9c4fbbc609">getResource</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ResourceID);
+<a name="l00057"></a>00057 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPResources.html">cUPnPResources</a>();
+<a name="l00065"></a>00065 <span class="keyword">static</span> <a class="code" href="classcUPnPResources.html">cUPnPResources</a>* <a class="code" href="classcUPnPResources.html#c3136b664928d2214e76e0e65a4ace6a">getInstance</a>();
+<a name="l00079"></a>00079 <span class="keywordtype">int</span> <a class="code" href="classcUPnPResources.html#974dd63afd52b87732800b7cf578a387">createFromChannel</a>(<a class="code" href="classcUPnPClassVideoBroadcast.html">cUPnPClassVideoBroadcast</a>* Object, cChannel* Channel);
+<a name="l00093"></a>00093 <span class="keywordtype">int</span> <a class="code" href="classcUPnPResources.html#47b243391bc9e1867bc16d4307f2af8a">createFromRecording</a>(<a class="code" href="classcUPnPClassVideoItem.html">cUPnPClassVideoItem</a>* Object, cRecording* Recording);
+<a name="l00107"></a>00107 <span class="keywordtype">int</span> <a class="code" href="classcUPnPResources.html#b2bac789a9caf023940dfc02a079c249">createFromFile</a>(<a class="code" href="classcUPnPClassItem.html">cUPnPClassItem</a>* Object, cString File);
+<a name="l00108"></a>00108 };
+<a name="l00109"></a>00109
+<a name="l00116"></a><a class="code" href="classcUPnPResourceMediator.html">00116</a> <span class="keyword">class </span><a class="code" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a> {
+<a name="l00117"></a>00117 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPResources.html">cUPnPResources</a>;
+<a name="l00118"></a>00118 <span class="keyword">private</span>:
+<a name="l00119"></a>00119 <a class="code" href="classcSQLiteDatabase.html">cSQLiteDatabase</a>* mDatabase;
+<a name="l00120"></a>00120 <a class="code" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>();
+<a name="l00121"></a>00121 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getNextResourceID();
+<a name="l00122"></a>00122 <span class="keyword">public</span>:
+<a name="l00123"></a>00123 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPResourceMediator.html">cUPnPResourceMediator</a>();
+<a name="l00132"></a>00132 <a class="code" href="classcUPnPResource.html">cUPnPResource</a>* <a class="code" href="classcUPnPResourceMediator.html#9d4d8cc5eafb18b13ad7d14793d3f9de">getResource</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ResourceID);
+<a name="l00144"></a>00144 <span class="keywordtype">int</span> <a class="code" href="classcUPnPResourceMediator.html#a633cef46d5cae9aecec05ea28d7c14e">saveResource</a>(<a class="code" href="classcUPnPResource.html">cUPnPResource</a>* Resource);
+<a name="l00158"></a>00158 <a class="code" href="classcUPnPResource.html">cUPnPResource</a>* <a class="code" href="classcUPnPResourceMediator.html#14367dd7e160f6c6812279b84a4fa8e2">newResource</a>(<a class="code" href="classcUPnPClassObject.html">cUPnPClassObject</a>* Object, <span class="keywordtype">int</span> ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo);
+<a name="l00159"></a>00159 };
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="preprocessor">#endif </span><span class="comment">/* _RESOURCES_H */</span>
+<a name="l00162"></a>00162
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/search_8h-source.html b/doc/html/search_8h-source.html
new file mode 100644
index 0000000..0ae0475
--- /dev/null
+++ b/doc/html/search_8h-source.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: misc/search.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>misc/search.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: search.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 27. August 2009, 21:21</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _SEARCH_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _SEARCH_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;map&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;vdr/tools.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "util.h"</span>
+<a name="l00014"></a>00014
+<a name="l00021"></a><a class="code" href="structcSortCrit.html">00021</a> <span class="keyword">struct </span><a class="code" href="structcSortCrit.html">cSortCrit</a> : <span class="keyword">public</span> cListObject {
+<a name="l00022"></a><a class="code" href="structcSortCrit.html#fedfdc7edd9ec85496338f52df0a04d1">00022</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structcSortCrit.html#fedfdc7edd9ec85496338f52df0a04d1" title="the Property, which shall be sorted">Property</a>;
+<a name="l00023"></a><a class="code" href="structcSortCrit.html#ca3564efa1903ab8b1ba144d43c6715f">00023</a> <span class="keywordtype">bool</span> <a class="code" href="structcSortCrit.html#ca3564efa1903ab8b1ba144d43c6715f" title="sort the objects in descending order">SortDescending</a>;
+<a name="l00024"></a>00024 };
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">typedef</span> std::map&lt;const char*, const char*, strCmp&gt; propertyMap;
+<a name="l00027"></a>00027
+<a name="l00036"></a><a class="code" href="classcPathParser.html">00036</a> <span class="keyword">class </span><a class="code" href="classcPathParser.html">cPathParser</a> {
+<a name="l00037"></a>00037 <span class="keyword">private</span>:
+<a name="l00038"></a>00038 cString mKey;
+<a name="l00039"></a>00039 propertyMap mProperties;
+<a name="l00040"></a>00040 <span class="keywordtype">int</span> mSection;
+<a name="l00041"></a>00041 <span class="keywordtype">int</span> mMethod;
+<a name="l00042"></a>00042 <span class="keywordtype">bool</span> parsePath(<span class="keyword">const</span> <span class="keywordtype">char</span>* Path, <span class="keywordtype">int</span>* Section, <span class="keywordtype">int</span>* Method, propertyMap* Properties);
+<a name="l00043"></a>00043 <span class="keywordtype">void</span> pushPropertyKey(<span class="keyword">const</span> <span class="keywordtype">char</span>* Start, <span class="keyword">const</span> <span class="keywordtype">char</span>* End);
+<a name="l00044"></a>00044 <span class="keywordtype">void</span> pushPropertyValue(<span class="keyword">const</span> <span class="keywordtype">char</span>* Start, <span class="keyword">const</span> <span class="keywordtype">char</span>* End);
+<a name="l00045"></a>00045 <span class="keywordtype">void</span> pushMethod(<span class="keywordtype">int</span> Method);
+<a name="l00046"></a>00046 <span class="keywordtype">void</span> pushSection(<span class="keywordtype">int</span> Section);
+<a name="l00047"></a>00047 <a class="code" href="classcPathParser.html">cPathParser</a>();
+<a name="l00048"></a>00048 <span class="keyword">public</span>:
+<a name="l00049"></a>00049 <span class="keyword">virtual</span> ~<a class="code" href="classcPathParser.html">cPathParser</a>();
+<a name="l00059"></a>00059 <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classcPathParser.html#83229f6ecd4254d7ed145573eae7967a">parse</a>(
+<a name="l00060"></a>00060 <span class="keyword">const</span> <span class="keywordtype">char</span>* Path,
+<a name="l00061"></a>00061 <span class="keywordtype">int</span>* Section,
+<a name="l00062"></a>00062 <span class="keywordtype">int</span>* Method,
+<a name="l00063"></a>00063 propertyMap* Properties
+<a name="l00064"></a>00064 );
+<a name="l00065"></a>00065 };
+<a name="l00066"></a>00066
+<a name="l00074"></a><a class="code" href="classcSortCriteria.html">00074</a> <span class="keyword">class </span><a class="code" href="classcSortCriteria.html">cSortCriteria</a> {
+<a name="l00075"></a>00075 <span class="keyword">private</span>:
+<a name="l00076"></a>00076 <a class="code" href="structcSortCrit.html">cSortCrit</a>* mCurrentCrit;
+<a name="l00077"></a>00077 cList&lt;cSortCrit&gt;* mCriteriaList;
+<a name="l00078"></a>00078 <span class="keywordtype">bool</span> parseSort(<span class="keyword">const</span> <span class="keywordtype">char</span>* Sort);
+<a name="l00079"></a>00079 <span class="keywordtype">void</span> pushProperty(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property);
+<a name="l00080"></a>00080 <span class="keywordtype">void</span> pushDirection(<span class="keyword">const</span> <span class="keywordtype">char</span> Direction);
+<a name="l00081"></a>00081 cList&lt;cSortCrit&gt;* getSortList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mCriteriaList; }
+<a name="l00082"></a>00082 <a class="code" href="classcSortCriteria.html">cSortCriteria</a>();
+<a name="l00083"></a>00083 <span class="keyword">public</span>:
+<a name="l00084"></a>00084 <span class="keyword">virtual</span> ~<a class="code" href="classcSortCriteria.html">cSortCriteria</a>();
+<a name="l00094"></a>00094 <span class="keyword">static</span> cList&lt;cSortCrit&gt;* <a class="code" href="classcSortCriteria.html#818579ec634d8b6f670a55545970b9e7">parse</a>(
+<a name="l00095"></a>00095 <span class="keyword">const</span> <span class="keywordtype">char</span>* Sort
+<a name="l00096"></a>00096 );
+<a name="l00097"></a>00097 };
+<a name="l00098"></a>00098
+<a name="l00105"></a><a class="code" href="classcFilterCriteria.html">00105</a> <span class="keyword">class </span><a class="code" href="classcFilterCriteria.html">cFilterCriteria</a> {
+<a name="l00106"></a>00106 <span class="keyword">private</span>:
+<a name="l00107"></a>00107 cStringList* mFilterList;
+<a name="l00108"></a>00108 <a class="code" href="classcFilterCriteria.html">cFilterCriteria</a>();
+<a name="l00109"></a>00109 <span class="keywordtype">bool</span> parseFilter(<span class="keyword">const</span> <span class="keywordtype">char</span>* Filter);
+<a name="l00110"></a>00110 <span class="keywordtype">void</span> pushProperty(<span class="keyword">const</span> <span class="keywordtype">char</span>* Property);
+<a name="l00111"></a>00111 <span class="keywordtype">void</span> pushAsterisk(<span class="keyword">const</span> <span class="keywordtype">char</span> Asterisk);
+<a name="l00112"></a>00112 cStringList* getFilterList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mFilterList; }
+<a name="l00113"></a>00113 <span class="keyword">public</span>:
+<a name="l00114"></a>00114 <span class="keyword">virtual</span> ~<a class="code" href="classcFilterCriteria.html">cFilterCriteria</a>();
+<a name="l00123"></a>00123 <span class="keyword">static</span> cStringList* <a class="code" href="classcFilterCriteria.html#e327772fdf9f8db127c7ce1a737f1c7c">parse</a>(
+<a name="l00124"></a>00124 <span class="keyword">const</span> <span class="keywordtype">char</span>* Filter
+<a name="l00125"></a>00125 );
+<a name="l00126"></a>00126 };
+<a name="l00127"></a>00127
+<a name="l00132"></a>00132 <span class="keyword">class </span>cSearch {
+<a name="l00133"></a>00133 <span class="keyword">private</span>:
+<a name="l00134"></a>00134 <span class="keywordtype">char</span>* SQLWhereStmt;
+<a name="l00135"></a>00135 <span class="keyword">const</span> <span class="keywordtype">char</span>* CurrentProperty;
+<a name="l00136"></a>00136 <span class="keyword">const</span> <span class="keywordtype">char</span>* CurrentOperator;
+<a name="l00137"></a>00137 <span class="keyword">const</span> <span class="keywordtype">char</span>* CurrentValue;
+<a name="l00138"></a>00138 <span class="keyword">static</span> cSearch* mInstance;
+<a name="l00139"></a>00139 cSearch();
+<a name="l00140"></a>00140 <span class="keywordtype">bool</span> parseCriteria(<span class="keyword">const</span> <span class="keywordtype">char</span>* Search);
+<a name="l00141"></a>00141 <span class="keywordtype">void</span> pushExistance (<span class="keyword">const</span> <span class="keywordtype">char</span>* Exists);
+<a name="l00142"></a>00142 <span class="keywordtype">void</span> pushProperty (<span class="keyword">const</span> <span class="keywordtype">char</span>* Property);
+<a name="l00143"></a>00143 <span class="keywordtype">void</span> pushOperator (<span class="keyword">const</span> <span class="keywordtype">char</span>* Operator);
+<a name="l00144"></a>00144 <span class="keywordtype">void</span> pushConcatOp (<span class="keyword">const</span> <span class="keywordtype">char</span>* Operator);
+<a name="l00145"></a>00145 <span class="keywordtype">void</span> pushStartBrackedExp(<span class="keyword">const</span> <span class="keywordtype">char</span>);
+<a name="l00146"></a>00146 <span class="keywordtype">void</span> pushEndBrackedExp(<span class="keyword">const</span> <span class="keywordtype">char</span>);
+<a name="l00147"></a>00147 <span class="keywordtype">void</span> pushValue (<span class="keyword">const</span> <span class="keywordtype">char</span>* Start, <span class="keyword">const</span> <span class="keywordtype">char</span>* End);
+<a name="l00148"></a>00148 <span class="keywordtype">void</span> pushExpression(<span class="keyword">const</span> <span class="keywordtype">char</span>* Start, <span class="keyword">const</span> <span class="keywordtype">char</span>* End);
+<a name="l00149"></a>00149 <span class="keyword">public</span>:
+<a name="l00150"></a>00150 <span class="keyword">virtual</span> ~cSearch();
+<a name="l00151"></a>00151 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* parse(<span class="keyword">const</span> <span class="keywordtype">char</span>* Search);
+<a name="l00152"></a>00152 };
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="preprocessor">#endif </span><span class="comment">/* _SEARCH_H */</span>
+<a name="l00156"></a>00156
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/server_8h-source.html b/doc/html/server_8h-source.html
new file mode 100644
index 0000000..6219996
--- /dev/null
+++ b/doc/html/server_8h-source.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: server/server.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>server/server.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * File: server.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 19. April 2009, 17:42</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _SERVER_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _SERVER_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;netinet/in.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;vdr/recording.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;vdr/thread.h&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;upnp/upnp.h&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "../misc/util.h"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "../upnpcomponents/upnpwebserver.h"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "../database/metadata.h"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../upnpcomponents/connectionmanager.h"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "../upnpcomponents/contentdirectory.h"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "../upnp.h"</span>
+<a name="l00022"></a>00022
+<a name="l00030"></a><a class="code" href="classcUPnPServer.html">00030</a> <span class="keyword">class </span><a class="code" href="classcUPnPServer.html">cUPnPServer</a> {
+<a name="l00031"></a>00031 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcPluginUpnp.html">cPluginUpnp</a>;
+<a name="l00032"></a>00032 <span class="keyword">public</span>:
+<a name="l00039"></a>00039 <a class="code" href="classcUPnPServer.html#e0277b2231f10e66a5c6ce9acb42fcd0">cUPnPServer</a>();
+<a name="l00046"></a>00046 <span class="keyword">virtual</span> <a class="code" href="classcUPnPServer.html#8eb136050f3f6c2edb7acbf5d690723d">~cUPnPServer</a>();
+<a name="l00057"></a>00057 <span class="keywordtype">void</span> <a class="code" href="classcUPnPServer.html#4935ab1fbcc03279193e0f9fa675fb8b">enable</a>(<span class="keywordtype">bool</span> enabled);
+<a name="l00067"></a>00067 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#811d90c5aadc75bc48670757def1c21e">start</a>(<span class="keywordtype">void</span>);
+<a name="l00079"></a>00079 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#9dd50cfea9042d49ef58b99b44c0c5af">restart</a>(<span class="keywordtype">void</span>);
+<a name="l00086"></a>00086 <span class="keywordtype">void</span> <a class="code" href="classcUPnPServer.html#c5ecc7ef5d42db1fa136ff00b24d1289">stop</a>(<span class="keywordtype">void</span>);
+<a name="l00097"></a>00097 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#783f27c1997257539ccb8ff7ade815be">autoDetectSettings</a>(<span class="keywordtype">void</span>);
+<a name="l00105"></a>00105 sockaddr_in* <a class="code" href="classcUPnPServer.html#f938922eff48ca1035e88677e095c0c4">getServerAddress</a>(<span class="keywordtype">void</span>);
+<a name="l00111"></a><a class="code" href="classcUPnPServer.html#e28dd555ac861850c9a2bbd22d9a7d3a">00111</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcUPnPServer.html#e28dd555ac861850c9a2bbd22d9a7d3a">getInterface</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mInterface; }
+<a name="l00129"></a>00129 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#77494ce55a93601110bd4ffce8559b23">setServerPort</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> port);
+<a name="l00140"></a>00140 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#81cf9d85c09093094febe6966a568702">setInterface</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Interface);
+<a name="l00156"></a>00156 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#ebebc8d232cf4ad04e5f72f5ab763db6">setAddress</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Address);
+<a name="l00168"></a>00168 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#7c91df7310a99786a0a126497299d030">setAutoDetection</a>(<span class="keywordtype">bool</span> enable);
+<a name="l00178"></a><a class="code" href="classcUPnPServer.html#fbaaebd4496e98106c2d9be4c2512a66">00178</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#fbaaebd4496e98106c2d9be4c2512a66">isEnabled</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mIsEnabled; }
+<a name="l00188"></a><a class="code" href="classcUPnPServer.html#af5358b41e19ba2917371c2d118d0145">00188</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#af5358b41e19ba2917371c2d118d0145">isRunning</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;mIsRunning; }
+<a name="l00198"></a><a class="code" href="classcUPnPServer.html#389ffe474f61ec18b6f99dd02a9c31e4">00198</a> <span class="keywordtype">bool</span> <a class="code" href="classcUPnPServer.html#389ffe474f61ec18b6f99dd02a9c31e4">isAutoDetectionEnabled</a>() { <span class="keywordflow">return</span> this-&gt;mIsAutoDetectionEnabled; }
+<a name="l00199"></a>00199 <span class="keyword">protected</span>:
+<a name="l00200"></a>00200 <span class="keyword">private</span>:
+<a name="l00206"></a>00206 <span class="keywordtype">bool</span> init(<span class="keywordtype">void</span>);
+<a name="l00207"></a>00207 <span class="keywordtype">bool</span> uninit(<span class="keywordtype">void</span>);
+<a name="l00208"></a>00208 <span class="keyword">static</span> <span class="keywordtype">int</span> upnpActionCallback(Upnp_EventType eventtype, <span class="keywordtype">void</span> *event, <span class="keywordtype">void</span> *cookie);
+<a name="l00209"></a>00209 <span class="keywordtype">bool</span> mIsRunning;
+<a name="l00210"></a>00210 <span class="keywordtype">bool</span> mIsEnabled;
+<a name="l00211"></a>00211 sockaddr_in* mServerAddr;
+<a name="l00212"></a>00212 cString mInterface;
+<a name="l00213"></a>00213 <span class="keywordtype">bool</span> mIsAutoDetectionEnabled;
+<a name="l00214"></a>00214 cString mDeviceDescription;
+<a name="l00215"></a>00215 <a class="code" href="classcUPnPWebServer.html">cUPnPWebServer</a>* mWebServer;
+<a name="l00216"></a>00216 <a class="code" href="classcMediaDatabase.html">cMediaDatabase</a>* mMediaDatabase;
+<a name="l00217"></a>00217 UpnpDevice_Handle mDeviceHandle;
+<a name="l00218"></a>00218 <span class="keyword">static</span> <a class="code" href="classcConnectionManager.html">cConnectionManager</a>* mConnectionManager;
+<a name="l00219"></a>00219 <span class="keyword">static</span> <a class="code" href="classcContentDirectory.html">cContentDirectory</a>* mContentDirectory;
+<a name="l00220"></a>00220 };
+<a name="l00221"></a>00221 <span class="preprocessor">#endif </span><span class="comment">/* _SERVER_H */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structDLNAIconProfile-members.html b/doc/html/structDLNAIconProfile-members.html
new file mode 100644
index 0000000..7e153b4
--- /dev/null
+++ b/doc/html/structDLNAIconProfile-members.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>DLNAIconProfile Member List</h1>This is the complete list of members for <a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3">bitDepth</a></td><td><a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb">height</a></td><td><a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509">mime</a></td><td><a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d">width</a></td><td><a class="el" href="structDLNAIconProfile.html">DLNAIconProfile</a></td><td></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structDLNAIconProfile.html b/doc/html/structDLNAIconProfile.html
new file mode 100644
index 0000000..1097413
--- /dev/null
+++ b/doc/html/structDLNAIconProfile.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: DLNAIconProfile Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>DLNAIconProfile Struct Reference</h1><!-- doxytag: class="DLNAIconProfile" --><code>#include &lt;<a class="el" href="common_8h-source.html">common.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="structDLNAIconProfile-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d5dc566526b37cddf1cfd14fa1efa509"></a><!-- doxytag: member="DLNAIconProfile::mime" ref="d5dc566526b37cddf1cfd14fa1efa509" args="" -->
+const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509">mime</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the mime type of the image <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b570aed93a91d6629a5f14ac28bb474d"></a><!-- doxytag: member="DLNAIconProfile::width" ref="b570aed93a91d6629a5f14ac28bb474d" args="" -->
+unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d">width</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">image width in pixel <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="80d7178a6681bef071a5c8e3598e54fb"></a><!-- doxytag: member="DLNAIconProfile::height" ref="80d7178a6681bef071a5c8e3598e54fb" args="" -->
+unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb">height</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">image height in pixel <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7c3a12a0f4673cd6d9b49895326b99c3"></a><!-- doxytag: member="DLNAIconProfile::bitDepth" ref="7c3a12a0f4673cd6d9b49895326b99c3" args="" -->
+unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3">bitDepth</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">bit depth in bits per pixel <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The DLNA profile for a icon image<p>
+This complies with the DLNA media format guidelines. It contains a valid mime type, the resolution of the image and the corresponding bit depth <hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="common_8h-source.html">common.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structDLNAProfile-members.html b/doc/html/structDLNAProfile-members.html
new file mode 100644
index 0000000..3143e45
--- /dev/null
+++ b/doc/html/structDLNAProfile-members.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>DLNAProfile Member List</h1>This is the complete list of members for <a class="el" href="structDLNAProfile.html">DLNAProfile</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a">ID</a></td><td><a class="el" href="structDLNAProfile.html">DLNAProfile</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41">mime</a></td><td><a class="el" href="structDLNAProfile.html">DLNAProfile</a></td><td></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structDLNAProfile.html b/doc/html/structDLNAProfile.html
new file mode 100644
index 0000000..d1921d2
--- /dev/null
+++ b/doc/html/structDLNAProfile.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: DLNAProfile Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>DLNAProfile Struct Reference</h1><!-- doxytag: class="DLNAProfile" --><code>#include &lt;<a class="el" href="common_8h-source.html">common.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="structDLNAProfile-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4957399cd872c2d843a35a886f9a6a5a"></a><!-- doxytag: member="DLNAProfile::ID" ref="4957399cd872c2d843a35a886f9a6a5a" args="" -->
+const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a">ID</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the DLNA profile ID <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="79dc39f6af5a840901ad09617792cb41"></a><!-- doxytag: member="DLNAProfile::mime" ref="79dc39f6af5a840901ad09617792cb41" args="" -->
+const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41">mime</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the mime type of the resource <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The combination of DLNA profile ID and the corresponding mime type<p>
+This complies with the DLNA media format guidelines. Though this is very similar to the profile structure of libdlna, it comes without the additional label field as it seams to be not needed. <hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="common_8h-source.html">common.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcClass-members.html b/doc/html/structcClass-members.html
new file mode 100644
index 0000000..35d4575
--- /dev/null
+++ b/doc/html/structcClass-members.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cClass Member List</h1>This is the complete list of members for <a class="el" href="structcClass.html">cClass</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd">ID</a></td><td><a class="el" href="structcClass.html">cClass</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8">includeDerived</a></td><td><a class="el" href="structcClass.html">cClass</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcClass.html#1de09f337ef261d363f261f83a3cf7ae">operator!=</a>(const cClass &amp;cmp)</td><td><a class="el" href="structcClass.html">cClass</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcClass.html#22a5df5fd2bfc9e7b58018a6b8d45309">operator==</a>(const cClass &amp;cmp)</td><td><a class="el" href="structcClass.html">cClass</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcClass.html b/doc/html/structcClass.html
new file mode 100644
index 0000000..bf727d7
--- /dev/null
+++ b/doc/html/structcClass.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cClass Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cClass Struct Reference</h1><!-- doxytag: class="cClass" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="structcClass-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcClass.html#22a5df5fd2bfc9e7b58018a6b8d45309">operator==</a> (const <a class="el" href="structcClass.html">cClass</a> &amp;cmp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcClass.html#1de09f337ef261d363f261f83a3cf7ae">operator!=</a> (const <a class="el" href="structcClass.html">cClass</a> &amp;cmp)</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a14fb51e02dc017227b86e3c14b5cbd"></a><!-- doxytag: member="cClass::ID" ref="0a14fb51e02dc017227b86e3c14b5cbd" args="" -->
+cString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcClass.html#0a14fb51e02dc017227b86e3c14b5cbd">ID</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The upnp class ID. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c66f7ea7dc7bfd418ae8c23145ea3c8"></a><!-- doxytag: member="cClass::includeDerived" ref="4c66f7ea7dc7bfd418ae8c23145ea3c8" args="" -->
+bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcClass.html#4c66f7ea7dc7bfd418ae8c23145ea3c8">includeDerived</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">flag, to indicate if derived classes are allowed <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Structure of a UPnP Class<p>
+This represents a UPnP Class <hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="1de09f337ef261d363f261f83a3cf7ae"></a><!-- doxytag: member="cClass::operator!=" ref="1de09f337ef261d363f261f83a3cf7ae" args="(const cClass &amp;cmp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cClass::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structcClass.html">cClass</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>cmp</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compares two classes<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>cmp</em>&nbsp;</td><td>the other class to compare with </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="22a5df5fd2bfc9e7b58018a6b8d45309"></a><!-- doxytag: member="cClass::operator==" ref="22a5df5fd2bfc9e7b58018a6b8d45309" args="(const cClass &amp;cmp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cClass::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structcClass.html">cClass</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>cmp</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compares two classes<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>cmp</em>&nbsp;</td><td>the other class to compare with </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcSortCrit-members.html b/doc/html/structcSortCrit-members.html
new file mode 100644
index 0000000..e8a5f78
--- /dev/null
+++ b/doc/html/structcSortCrit-members.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cSortCrit Member List</h1>This is the complete list of members for <a class="el" href="structcSortCrit.html">cSortCrit</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="structcSortCrit.html#fedfdc7edd9ec85496338f52df0a04d1">Property</a></td><td><a class="el" href="structcSortCrit.html">cSortCrit</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcSortCrit.html#ca3564efa1903ab8b1ba144d43c6715f">SortDescending</a></td><td><a class="el" href="structcSortCrit.html">cSortCrit</a></td><td></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcSortCrit.html b/doc/html/structcSortCrit.html
new file mode 100644
index 0000000..f3b8fb3
--- /dev/null
+++ b/doc/html/structcSortCrit.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cSortCrit Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cSortCrit Struct Reference</h1><!-- doxytag: class="cSortCrit" --><code>#include &lt;<a class="el" href="search_8h-source.html">search.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="structcSortCrit-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fedfdc7edd9ec85496338f52df0a04d1"></a><!-- doxytag: member="cSortCrit::Property" ref="fedfdc7edd9ec85496338f52df0a04d1" args="" -->
+const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcSortCrit.html#fedfdc7edd9ec85496338f52df0a04d1">Property</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the Property, which shall be sorted <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ca3564efa1903ab8b1ba144d43c6715f"></a><!-- doxytag: member="cSortCrit::SortDescending" ref="ca3564efa1903ab8b1ba144d43c6715f" args="" -->
+bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcSortCrit.html#ca3564efa1903ab8b1ba144d43c6715f">SortDescending</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">sort the objects in descending order <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Sort criteria<p>
+This is a structure for sorting objects. It has a certain property and a direction flag. <hr>The documentation for this struct was generated from the following file:<ul>
+<li>misc/<a class="el" href="search_8h-source.html">search.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcUPnPObjectID-members.html b/doc/html/structcUPnPObjectID-members.html
new file mode 100644
index 0000000..7006890
--- /dev/null
+++ b/doc/html/structcUPnPObjectID-members.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjectID Member List</h1>This is the complete list of members for <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c">_ID</a></td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">cUPnPObjectID</a>()</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#baeac468c4117f2fac4e3d93f3de9730">cUPnPObjectID</a>(long ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#f3e044892ae1c1d840d4154ab96a2440">cUPnPObjectID</a>(int ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#73ff8d0e18486552dbfbf828a2e7bc7c">operator int</a>()</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#d5659a7a9f7cfc7dd6ae0911ebd5e03c">operator long</a>()</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#daa4eae524c68f1f85b8d82d16568d10">operator unsigned int</a>()</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">operator!=</a>(long ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#5183bfe859555d90c7bc7abd576d0980">operator!=</a>(int ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#d55b5dc94c58d56762c602de5dd99790">operator!=</a>(const cUPnPObjectID &amp;ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#33e67c6f297892763b5a4a41cd435490">operator*</a>()</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#c347bd50efed28fda02f98da46114786">operator++</a>()</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#d46000a3acdd6f522bf3b86e48d47ddf">operator++</a>(int)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#3e6872234bfd011a720b7847190dfdb9">operator--</a>(int)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#40864616e14e4b5c98ff274098402be7">operator--</a>()</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">operator=</a>(long ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#b83af995ac5e03b6f6402d83a6713960">operator=</a>(int ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#9d2adc7bcee2e5b1d51aa7ffc385296f">operator=</a>(const cUPnPObjectID &amp;ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">operator==</a>(long ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#18cf7d50a8ae1b6d2034e88fef78e23f">operator==</a>(int ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPObjectID.html#54cb3e4ab1b340c9580e915dbf9319a1">operator==</a>(const cUPnPObjectID &amp;ID)</td><td><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcUPnPObjectID.html b/doc/html/structcUPnPObjectID.html
new file mode 100644
index 0000000..f67e6e9
--- /dev/null
+++ b/doc/html/structcUPnPObjectID.html
@@ -0,0 +1,540 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPObjectID Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPObjectID Struct Reference</h1><!-- doxytag: class="cUPnPObjectID" --><code>#include &lt;<a class="el" href="object_8h-source.html">object.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="structcUPnPObjectID-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#c2ee8d12b2b317fa430e9107f1870efe">cUPnPObjectID</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#baeac468c4117f2fac4e3d93f3de9730">cUPnPObjectID</a> (long ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#f3e044892ae1c1d840d4154ab96a2440">cUPnPObjectID</a> (int ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#747dfcfad52baae471cc756bed63a6e8">operator=</a> (long ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#b83af995ac5e03b6f6402d83a6713960">operator=</a> (int ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#9d2adc7bcee2e5b1d51aa7ffc385296f">operator=</a> (const <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#c347bd50efed28fda02f98da46114786">operator++</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#d46000a3acdd6f522bf3b86e48d47ddf">operator++</a> (int)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#3e6872234bfd011a720b7847190dfdb9">operator--</a> (int)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#40864616e14e4b5c98ff274098402be7">operator--</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#25b1f5cd4eb080cc4ab53731e1bd75f1">operator!=</a> (long ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#b612ccd98af29996a4ac15cdbf01320f">operator==</a> (long ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#5183bfe859555d90c7bc7abd576d0980">operator!=</a> (int ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#18cf7d50a8ae1b6d2034e88fef78e23f">operator==</a> (int ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#d55b5dc94c58d56762c602de5dd99790">operator!=</a> (const <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#54cb3e4ab1b340c9580e915dbf9319a1">operator==</a> (const <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;ID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#daa4eae524c68f1f85b8d82d16568d10">operator unsigned int</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#73ff8d0e18486552dbfbf828a2e7bc7c">operator int</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#d5659a7a9f7cfc7dd6ae0911ebd5e03c">operator long</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#33e67c6f297892763b5a4a41cd435490">operator*</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="af52b7865459a66369101b7fba35aa0c"></a><!-- doxytag: member="cUPnPObjectID::_ID" ref="af52b7865459a66369101b7fba35aa0c" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPObjectID.html#af52b7865459a66369101b7fba35aa0c">_ID</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The UPnP Object ID. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+UPnP Object ID<p>
+This is a UPnP Object ID representation. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="c2ee8d12b2b317fa430e9107f1870efe"></a><!-- doxytag: member="cUPnPObjectID::cUPnPObjectID" ref="c2ee8d12b2b317fa430e9107f1870efe" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPObjectID::cUPnPObjectID </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor<p>
+Creates invalid ID
+</div>
+</div><p>
+<a class="anchor" name="baeac468c4117f2fac4e3d93f3de9730"></a><!-- doxytag: member="cUPnPObjectID::cUPnPObjectID" ref="baeac468c4117f2fac4e3d93f3de9730" args="(long ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPObjectID::cUPnPObjectID </td>
+ <td>(</td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor<p>
+Creates from long integer <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>new ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f3e044892ae1c1d840d4154ab96a2440"></a><!-- doxytag: member="cUPnPObjectID::cUPnPObjectID" ref="f3e044892ae1c1d840d4154ab96a2440" args="(int ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPObjectID::cUPnPObjectID </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constructor<p>
+Creates from integer <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>new ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="73ff8d0e18486552dbfbf828a2e7bc7c"></a><!-- doxytag: member="cUPnPObjectID::operator int" ref="73ff8d0e18486552dbfbf828a2e7bc7c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPObjectID::operator int </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Casts to int
+</div>
+</div><p>
+<a class="anchor" name="d5659a7a9f7cfc7dd6ae0911ebd5e03c"></a><!-- doxytag: member="cUPnPObjectID::operator long" ref="d5659a7a9f7cfc7dd6ae0911ebd5e03c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPObjectID::operator long </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Casts to long
+</div>
+</div><p>
+<a class="anchor" name="daa4eae524c68f1f85b8d82d16568d10"></a><!-- doxytag: member="cUPnPObjectID::operator unsigned int" ref="daa4eae524c68f1f85b8d82d16568d10" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">cUPnPObjectID::operator unsigned int </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Casts to unsigned int
+</div>
+</div><p>
+<a class="anchor" name="d55b5dc94c58d56762c602de5dd99790"></a><!-- doxytag: member="cUPnPObjectID::operator!=" ref="d55b5dc94c58d56762c602de5dd99790" args="(const cUPnPObjectID &amp;ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPObjectID::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>compare with this ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5183bfe859555d90c7bc7abd576d0980"></a><!-- doxytag: member="cUPnPObjectID::operator!=" ref="5183bfe859555d90c7bc7abd576d0980" args="(int ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPObjectID::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>compare with this ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="25b1f5cd4eb080cc4ab53731e1bd75f1"></a><!-- doxytag: member="cUPnPObjectID::operator!=" ref="25b1f5cd4eb080cc4ab53731e1bd75f1" args="(long ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPObjectID::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Not equal <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>compare with this ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="33e67c6f297892763b5a4a41cd435490"></a><!-- doxytag: member="cUPnPObjectID::operator*" ref="33e67c6f297892763b5a4a41cd435490" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* cUPnPObjectID::operator* </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Casts to string
+</div>
+</div><p>
+<a class="anchor" name="d46000a3acdd6f522bf3b86e48d47ddf"></a><!-- doxytag: member="cUPnPObjectID::operator++" ref="d46000a3acdd6f522bf3b86e48d47ddf" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> cUPnPObjectID::operator++ </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Post increment the ID
+</div>
+</div><p>
+<a class="anchor" name="c347bd50efed28fda02f98da46114786"></a><!-- doxytag: member="cUPnPObjectID::operator++" ref="c347bd50efed28fda02f98da46114786" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; cUPnPObjectID::operator++ </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Pre increment the ID
+</div>
+</div><p>
+<a class="anchor" name="40864616e14e4b5c98ff274098402be7"></a><!-- doxytag: member="cUPnPObjectID::operator&#45;&#45;" ref="40864616e14e4b5c98ff274098402be7" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; cUPnPObjectID::operator-- </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Pre decrement the ID
+</div>
+</div><p>
+<a class="anchor" name="3e6872234bfd011a720b7847190dfdb9"></a><!-- doxytag: member="cUPnPObjectID::operator&#45;&#45;" ref="3e6872234bfd011a720b7847190dfdb9" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> cUPnPObjectID::operator-- </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Post decrement the ID
+</div>
+</div><p>
+<a class="anchor" name="9d2adc7bcee2e5b1d51aa7ffc385296f"></a><!-- doxytag: member="cUPnPObjectID::operator=" ref="9d2adc7bcee2e5b1d51aa7ffc385296f" args="(const cUPnPObjectID &amp;ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; cUPnPObjectID::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>new ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b83af995ac5e03b6f6402d83a6713960"></a><!-- doxytag: member="cUPnPObjectID::operator=" ref="b83af995ac5e03b6f6402d83a6713960" args="(int ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; cUPnPObjectID::operator= </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>new ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="747dfcfad52baae471cc756bed63a6e8"></a><!-- doxytag: member="cUPnPObjectID::operator=" ref="747dfcfad52baae471cc756bed63a6e8" args="(long ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a>&amp; cUPnPObjectID::operator= </td>
+ <td>(</td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the object ID <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>new ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="54cb3e4ab1b340c9580e915dbf9319a1"></a><!-- doxytag: member="cUPnPObjectID::operator==" ref="54cb3e4ab1b340c9580e915dbf9319a1" args="(const cUPnPObjectID &amp;ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPObjectID::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>compare with this ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="18cf7d50a8ae1b6d2034e88fef78e23f"></a><!-- doxytag: member="cUPnPObjectID::operator==" ref="18cf7d50a8ae1b6d2034e88fef78e23f" args="(int ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPObjectID::operator== </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>compare with this ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b612ccd98af29996a4ac15cdbf01320f"></a><!-- doxytag: member="cUPnPObjectID::operator==" ref="b612ccd98af29996a4ac15cdbf01320f" args="(long ID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool cUPnPObjectID::operator== </td>
+ <td>(</td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>ID</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Equal <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ID</em>&nbsp;</td><td>compare with this ID </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>database/<a class="el" href="object_8h-source.html">object.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcUPnPResultSet-members.html b/doc/html/structcUPnPResultSet-members.html
new file mode 100644
index 0000000..0a6dcf8
--- /dev/null
+++ b/doc/html/structcUPnPResultSet-members.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResultSet Member List</h1>This is the complete list of members for <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="structcUPnPResultSet.html#94b5bc7673773e674a81d0c5adc7f4e7">mNumberReturned</a></td><td><a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPResultSet.html#7e891eca2a37daea6285d2f7a2731c1d">mResult</a></td><td><a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structcUPnPResultSet.html#78bd90b56bfc5804e54df6579cd8e541">mTotalMatches</a></td><td><a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a></td><td></td></tr>
+</table></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/structcUPnPResultSet.html b/doc/html/structcUPnPResultSet.html
new file mode 100644
index 0000000..60917ee
--- /dev/null
+++ b/doc/html/structcUPnPResultSet.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: cUPnPResultSet Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cUPnPResultSet Struct Reference</h1><!-- doxytag: class="cUPnPResultSet" --><code>#include &lt;<a class="el" href="metadata_8h-source.html">metadata.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="structcUPnPResultSet-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="94b5bc7673773e674a81d0c5adc7f4e7"></a><!-- doxytag: member="cUPnPResultSet::mNumberReturned" ref="94b5bc7673773e674a81d0c5adc7f4e7" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPResultSet.html#94b5bc7673773e674a81d0c5adc7f4e7">mNumberReturned</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of returned matches. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78bd90b56bfc5804e54df6579cd8e541"></a><!-- doxytag: member="cUPnPResultSet::mTotalMatches" ref="78bd90b56bfc5804e54df6579cd8e541" args="" -->
+int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPResultSet.html#78bd90b56bfc5804e54df6579cd8e541">mTotalMatches</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The total amount of matches. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e891eca2a37daea6285d2f7a2731c1d"></a><!-- doxytag: member="cUPnPResultSet::mResult" ref="7e891eca2a37daea6285d2f7a2731c1d" args="" -->
+const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcUPnPResultSet.html#7e891eca2a37daea6285d2f7a2731c1d">mResult</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The DIDL-Lite fragment. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The result set of a request<p>
+This contains the results of a previous <em>Browse</em> or <em>Search</em> request. <hr>The documentation for this struct was generated from the following file:<ul>
+<li>database/<a class="el" href="metadata_8h-source.html">metadata.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif
new file mode 100644
index 0000000..0d62348
--- /dev/null
+++ b/doc/html/tab_b.gif
Binary files differ
diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif
new file mode 100644
index 0000000..9b1e633
--- /dev/null
+++ b/doc/html/tab_l.gif
Binary files differ
diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif
new file mode 100644
index 0000000..ce9dd9f
--- /dev/null
+++ b/doc/html/tab_r.gif
Binary files differ
diff --git a/doc/html/tabs.css b/doc/html/tabs.css
new file mode 100644
index 0000000..ab02c62
--- /dev/null
+++ b/doc/html/tabs.css
@@ -0,0 +1,105 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : 80%;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : 80%;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+ text-align : center;
+ margin : 2px;
+ padding : 2px;
+}
diff --git a/doc/html/upnp_8h-source.html b/doc/html/upnp_8h-source.html
new file mode 100644
index 0000000..7cdf339
--- /dev/null
+++ b/doc/html/upnp_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: upnp.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>upnp.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: upnp.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 17. April 2009, 20:53</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _UPNP_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _UPNP_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;vdr/thread.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;vdr/plugin.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "common.h"</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include "server/server.h"</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="keyword">class </span><a class="code" href="classcUPnPServer.html">cUPnPServer</a>;
+<a name="l00017"></a>00017
+<a name="l00024"></a><a class="code" href="classcPluginUpnp.html">00024</a> <span class="keyword">class </span><a class="code" href="classcPluginUpnp.html">cPluginUpnp</a> : <span class="keyword">public</span> cPlugin {
+<a name="l00025"></a>00025 <span class="keyword">private</span>:
+<a name="l00026"></a>00026 <span class="comment">// Add any member variables or functions you may need here.</span>
+<a name="l00027"></a>00027 <a class="code" href="classcUPnPServer.html">cUPnPServer</a>* mUpnpServer;
+<a name="l00028"></a>00028 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* mConfigDirectory;
+<a name="l00029"></a>00029 <span class="keyword">public</span>:
+<a name="l00030"></a>00030 <a class="code" href="classcPluginUpnp.html">cPluginUpnp</a>(<span class="keywordtype">void</span>);
+<a name="l00031"></a>00031 <span class="keyword">virtual</span> ~<a class="code" href="classcPluginUpnp.html">cPluginUpnp</a>();
+<a name="l00039"></a>00039 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classcPluginUpnp.html#584844bf459ec3eb7f6037f9cbb52fd5">Version</a>(<span class="keywordtype">void</span>);
+<a name="l00047"></a>00047 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classcPluginUpnp.html#6fc36c7fdf1f0deed776897725bcda9b">Description</a>(<span class="keywordtype">void</span>);
+<a name="l00056"></a>00056 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classcPluginUpnp.html#e2e63843aab64e06ce9b533f4893f7e0">CommandLineHelp</a>(<span class="keywordtype">void</span>);
+<a name="l00058"></a>00058 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcPluginUpnp.html#acbc8a8b3f67d08ed20ff1c8beaa4fe2">ProcessArgs</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[]);
+<a name="l00068"></a>00068 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcPluginUpnp.html#3f3daf1d0cd8d176cf1a349b9de10df7">Initialize</a>(<span class="keywordtype">void</span>);
+<a name="l00079"></a>00079 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcPluginUpnp.html#4738d8a5d72e56ec8b7b2f4f0b3549fe">Start</a>(<span class="keywordtype">void</span>);
+<a name="l00085"></a>00085 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcPluginUpnp.html#f59cbb0bb2a3872e33461fb46b4f79b4">Stop</a>(<span class="keywordtype">void</span>);
+<a name="l00094"></a>00094 <span class="keyword">virtual</span> cString <a class="code" href="classcPluginUpnp.html#6b220cadefe502e7dfa4d70acea35083">Active</a>(<span class="keywordtype">void</span>);
+<a name="l00103"></a>00103 <span class="keyword">virtual</span> cMenuSetupPage *<a class="code" href="classcPluginUpnp.html#9b1891ed7e2d3aa56dae03b778d616ee">SetupMenu</a>(<span class="keywordtype">void</span>);
+<a name="l00105"></a>00105 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classcPluginUpnp.html#3f8b911f1e452789110e69b11587ebce">SetupParse</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *Name, <span class="keyword">const</span> <span class="keywordtype">char</span> *Value);
+<a name="l00113"></a>00113 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classcPluginUpnp.html#ac2101984519b848cc04370b5527c145">getConfigDirectory</a>();
+<a name="l00114"></a>00114 };
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keyword">extern</span> cCondWait DatabaseLocker;
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="preprocessor">#endif </span><span class="comment">/* _UPNP_H */</span>
+<a name="l00120"></a>00120
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/upnpservice_8h-source.html b/doc/html/upnpservice_8h-source.html
new file mode 100644
index 0000000..b202158
--- /dev/null
+++ b/doc/html/upnpservice_8h-source.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: upnpcomponents/upnpservice.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>upnpcomponents/upnpservice.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: upnpservice.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 21. August 2009, 18:38</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _UPNPSERVICE_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _UPNPSERVICE_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;upnp/upnp.h&gt;</span>
+<a name="l00012"></a>00012
+<a name="l00021"></a><a class="code" href="classcUpnpService.html">00021</a> <span class="keyword">class </span><a class="code" href="classcUpnpService.html">cUpnpService</a> {
+<a name="l00022"></a>00022 <span class="keyword">public</span>:
+<a name="l00029"></a>00029 <a class="code" href="classcUpnpService.html">cUpnpService</a>(
+<a name="l00030"></a>00030 UpnpDevice_Handle DeviceHandle
+<a name="l00031"></a>00031 );
+<a name="l00032"></a>00032 <span class="keyword">virtual</span> ~<a class="code" href="classcUpnpService.html">cUpnpService</a>(){};
+<a name="l00044"></a>00044 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUpnpService.html#e6d3522d580e5975f5a38d5bea88e29d">subscribe</a>(
+<a name="l00045"></a>00045 Upnp_Subscription_Request* Request
+<a name="l00046"></a>00046 ) = 0;
+<a name="l00059"></a>00059 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classcUpnpService.html#bbffca233e6aa193eda223cb7bfc2917">execute</a>(
+<a name="l00060"></a>00060 Upnp_Action_Request* Request
+<a name="l00061"></a>00061 ) = 0;
+<a name="l00062"></a>00062 <span class="keyword">protected</span>:
+<a name="l00072"></a>00072 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcUpnpService.html#f0976057350505eca781aafcaf6b1d14">setError</a>(
+<a name="l00073"></a>00073 Upnp_Action_Request* Request,
+<a name="l00074"></a>00074 <span class="keywordtype">int</span> Error
+<a name="l00075"></a>00075 );
+<a name="l00090"></a>00090 <span class="keywordtype">int</span> <a class="code" href="classcUpnpService.html#846cd44a1c014395278c3af339122656">parseIntegerValue</a>(
+<a name="l00091"></a>00091 IN IXML_Document* Document,
+<a name="l00092"></a>00092 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* Item,
+<a name="l00093"></a>00093 OUT <span class="keywordtype">int</span>* Value
+<a name="l00094"></a>00094 );
+<a name="l00109"></a>00109 <span class="keywordtype">int</span> <a class="code" href="classcUpnpService.html#925b7a9628230ce69b803afb8fee212f">parseStringValue</a>(
+<a name="l00110"></a>00110 IN IXML_Document* Document,
+<a name="l00111"></a>00111 IN <span class="keyword">const</span> <span class="keywordtype">char</span>* Item,
+<a name="l00112"></a>00112 OUT <span class="keywordtype">char</span>** Value
+<a name="l00113"></a>00113 );
+<a name="l00114"></a>00114
+<a name="l00115"></a><a class="code" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea">00115</a> UpnpDevice_Handle <a class="code" href="classcUpnpService.html#359ba19926aab21f7a2e3c77ffc7f7ea" title="the UPnP device handle of the root device">mDeviceHandle</a>;
+<a name="l00116"></a>00116 };
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="preprocessor">#endif </span><span class="comment">/* _UPNPSERVICE_H */</span>
+<a name="l00119"></a>00119
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/upnpwebserver_8h-source.html b/doc/html/upnpwebserver_8h-source.html
new file mode 100644
index 0000000..774cf3f
--- /dev/null
+++ b/doc/html/upnpwebserver_8h-source.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: upnpcomponents/upnpwebserver.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>upnpcomponents/upnpwebserver.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* </span>
+<a name="l00002"></a>00002 <span class="comment"> * File: upnpwebserver.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 30. Mai 2009, 18:13</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _UPNPWEBSERVER_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _UPNPWEBSERVER_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "../common.h"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;upnp/upnp.h&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00021"></a><a class="code" href="classcUPnPWebServer.html">00021</a> <span class="keyword">class </span><a class="code" href="classcUPnPWebServer.html">cUPnPWebServer</a> {
+<a name="l00022"></a>00022 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcUPnPServer.html">cUPnPServer</a>;
+<a name="l00023"></a>00023 <span class="keyword">private</span>:
+<a name="l00024"></a>00024 <span class="keyword">static</span> <a class="code" href="classcUPnPWebServer.html">cUPnPWebServer</a> *mInstance;
+<a name="l00025"></a>00025 <span class="keyword">static</span> UpnpVirtualDirCallbacks mVirtualDirCallbacks;
+<a name="l00026"></a>00026 <span class="keyword">const</span> <span class="keywordtype">char</span>* mRootdir;
+<a name="l00027"></a>00027 <a class="code" href="classcUPnPWebServer.html">cUPnPWebServer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* root = <span class="stringliteral">"/"</span>);
+<a name="l00028"></a>00028 <span class="keyword">protected</span>:
+<a name="l00029"></a>00029 <span class="keyword">public</span>:
+<a name="l00040"></a>00040 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPWebServer.html#a374ec8a84405fb2ee16dc00ba0218f5">init</a>();
+<a name="l00050"></a>00050 <span class="keywordtype">bool</span> <a class="code" href="classcUPnPWebServer.html#cd20b60b929abfb205ec438127caed49">uninit</a>();
+<a name="l00060"></a>00060 <span class="keyword">static</span> <a class="code" href="classcUPnPWebServer.html">cUPnPWebServer</a>* <a class="code" href="classcUPnPWebServer.html#59fb8d378eae0193665b51fdda5a4da0">getInstance</a>(
+<a name="l00061"></a>00061 <span class="keyword">const</span> <span class="keywordtype">char</span>* rootdir = <span class="stringliteral">"/"</span>
+<a name="l00062"></a>00062 );
+<a name="l00063"></a>00063 <span class="keyword">virtual</span> ~<a class="code" href="classcUPnPWebServer.html">cUPnPWebServer</a>();
+<a name="l00064"></a>00064 <span class="comment">//};</span>
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="comment">/****************************************************</span>
+<a name="l00067"></a>00067 <span class="comment"> *</span>
+<a name="l00068"></a>00068 <span class="comment"> * The callback functions for the webserver</span>
+<a name="l00069"></a>00069 <span class="comment"> *</span>
+<a name="l00070"></a>00070 <span class="comment"> ****************************************************/</span>
+<a name="l00071"></a>00071
+<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPWebServer.html#0540de6d9f111756593d202f30102ffb">getInfo</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename, <span class="keyword">struct</span> File_Info* info);
+<a name="l00097"></a>00097 <span class="keyword">static</span> UpnpWebFileHandle <a class="code" href="classcUPnPWebServer.html#5f9d44729464cab3e8bf74e4457dbb24">open</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename, UpnpOpenFileMode mode);
+<a name="l00113"></a>00113 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPWebServer.html#7bdaa921f11a40da60c5fc99f577a017">read</a>(UpnpWebFileHandle fh, <span class="keywordtype">char</span>* buf, <span class="keywordtype">size_t</span> buflen);
+<a name="l00129"></a>00129 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPWebServer.html#46e282288394c8ba37e9d4846944c6a4">write</a>(UpnpWebFileHandle fh, <span class="keywordtype">char</span>* buf, <span class="keywordtype">size_t</span> buflen);
+<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPWebServer.html#2d1ee3a89ea42cb9fd0669937061695f">seek</a>(UpnpWebFileHandle fh, off_t offset, <span class="keywordtype">int</span> origin);
+<a name="l00156"></a>00156 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classcUPnPWebServer.html#79d080eaf445325b7f8759dfb0744c26">close</a>(UpnpWebFileHandle fh);
+<a name="l00157"></a>00157 };
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="preprocessor">#endif </span><span class="comment">/* _UPNPWEBSERVER_H */</span>
+<a name="l00160"></a>00160
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/html/util_8h-source.html b/doc/html/util_8h-source.html
new file mode 100644
index 0000000..a2d6a8c
--- /dev/null
+++ b/doc/html/util_8h-source.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>UPnP/DLNA plugin for VDR: misc/util.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ </ul>
+ </div>
+<h1>misc/util.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * File: util.h</span>
+<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * Created on 21. Mai 2009, 21:25</span>
+<a name="l00006"></a>00006 <span class="comment"> */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _UTIL_H</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _UTIL_H</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;vdr/tools.h&gt;</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;vdr/plugin.h&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;upnp/ixml.h&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00017"></a>00017 <span class="preprocessor">#if 0</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>}
+<a name="l00019"></a>00019 <span class="preprocessor">#endif</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="keyword">struct </span>strCmp {
+<a name="l00035"></a>00035 <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> <span class="keywordtype">char</span>* s1, <span class="keyword">const</span> <span class="keywordtype">char</span>* s2)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (strcmp(s1,s2) &lt; 0); }
+<a name="l00036"></a>00036 };
+<a name="l00046"></a>00046 <span class="keyword">const</span> sockaddr_in* getIPFromInterface(<span class="keyword">const</span> <span class="keywordtype">char</span>* Interface);
+<a name="l00058"></a>00058 <span class="keyword">const</span> <span class="keywordtype">char</span>* getMACFromInterface(<span class="keyword">const</span> <span class="keywordtype">char</span>* Interface);
+<a name="l00068"></a>00068 <span class="keywordtype">char</span>** getNetworkInterfaces(<span class="keywordtype">int</span> *count);
+<a name="l00080"></a>00080 <span class="keywordtype">char</span>* ixmlGetFirstDocumentItem( IN IXML_Document * doc, IN <span class="keyword">const</span> <span class="keywordtype">char</span> *item, <span class="keywordtype">int</span>* error );
+<a name="l00095"></a>00095 <span class="keywordtype">int</span> ixmlAddProperty(IN IXML_Document* document, IN IXML_Element* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* upnpproperty, <span class="keyword">const</span> <span class="keywordtype">char</span>* value );
+<a name="l00107"></a>00107 <span class="keywordtype">char</span>* substr(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);
+<a name="l00108"></a>00108 <span class="preprocessor">#if 0</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span>{
+<a name="l00110"></a>00110 <span class="preprocessor">#endif</span>
+<a name="l00111"></a>00111 <span class="preprocessor"></span>}
+<a name="l00112"></a>00112 <span class="preprocessor">#endif</span>
+<a name="l00113"></a>00113 <span class="preprocessor"></span>
+<a name="l00124"></a>00124 <span class="keyword">const</span> <span class="keywordtype">char</span>* escapeXMLCharacters(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, <span class="keywordtype">char</span>** Buf);
+<a name="l00125"></a>00125
+<a name="l00127"></a>00127 <span class="keyword">class </span>cMenuEditIpItem: <span class="keyword">public</span> cMenuEditItem {
+<a name="l00128"></a>00128 <span class="keyword">private</span>:
+<a name="l00129"></a>00129 <span class="keywordtype">char</span> *value;
+<a name="l00130"></a>00130 <span class="keywordtype">int</span> curNum;
+<a name="l00131"></a>00131 <span class="keywordtype">int</span> pos;
+<a name="l00132"></a>00132 <span class="keywordtype">bool</span> step;
+<a name="l00133"></a>00133 <span class="keyword">protected</span>:
+<a name="l00134"></a>00134 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<span class="keywordtype">void</span>);
+<a name="l00135"></a>00135 <span class="keyword">public</span>:
+<a name="l00136"></a>00136 cMenuEditIpItem(<span class="keyword">const</span> <span class="keywordtype">char</span> *Name, <span class="keywordtype">char</span> *Value); <span class="comment">// Value must be 16 bytes</span>
+<a name="l00137"></a>00137 ~cMenuEditIpItem();
+<a name="l00138"></a>00138 <span class="keyword">virtual</span> eOSState ProcessKey(eKeys Key);
+<a name="l00139"></a>00139 };
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="preprocessor">#endif </span><span class="comment">/* _UTIL_H */</span>
+<a name="l00142"></a>00142
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/doc/latex/FreeSans.ttf b/doc/latex/FreeSans.ttf
new file mode 100644
index 0000000..b550b90
--- /dev/null
+++ b/doc/latex/FreeSans.ttf
Binary files differ
diff --git a/doc/latex/Makefile b/doc/latex/Makefile
new file mode 100644
index 0000000..8b7c89a
--- /dev/null
+++ b/doc/latex/Makefile
@@ -0,0 +1,19 @@
+all: clean refman.pdf
+
+pdf: refman.pdf
+
+refman.pdf: refman.tex
+ pdflatex refman.tex
+ makeindex refman.idx
+ pdflatex refman.tex
+ latex_count=5 ; \
+ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+ do \
+ echo "Rerunning latex...." ;\
+ pdflatex refman.tex ;\
+ latex_count=`expr $$latex_count - 1` ;\
+ done
+
+
+clean:
+ rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf
diff --git a/doc/latex/annotated.tex b/doc/latex/annotated.tex
new file mode 100644
index 0000000..e09727e
--- /dev/null
+++ b/doc/latex/annotated.tex
@@ -0,0 +1,49 @@
+\section{Class List}
+Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList}
+\item\contentsline{section}{\hyperlink{classcAudioVideoDetector}{cAudioVideoDetector} }{\pageref{classcAudioVideoDetector}}{}
+\item\contentsline{section}{\hyperlink{structcClass}{cClass} }{\pageref{structcClass}}{}
+\item\contentsline{section}{\hyperlink{classcConnectionManager}{cConnectionManager} }{\pageref{classcConnectionManager}}{}
+\item\contentsline{section}{\hyperlink{classcContentDirectory}{cContentDirectory} }{\pageref{classcContentDirectory}}{}
+\item\contentsline{section}{\hyperlink{classcDlna}{cDlna} }{\pageref{classcDlna}}{}
+\item\contentsline{section}{\hyperlink{classcFileHandle}{cFileHandle} }{\pageref{classcFileHandle}}{}
+\item\contentsline{section}{\hyperlink{classcFilterCriteria}{cFilterCriteria} }{\pageref{classcFilterCriteria}}{}
+\item\contentsline{section}{\hyperlink{classcLiveReceiver}{cLiveReceiver} }{\pageref{classcLiveReceiver}}{}
+\item\contentsline{section}{\hyperlink{classcMediaDatabase}{cMediaDatabase} }{\pageref{classcMediaDatabase}}{}
+\item\contentsline{section}{\hyperlink{classcMediatorInterface}{cMediatorInterface} }{\pageref{classcMediatorInterface}}{}
+\item\contentsline{section}{\hyperlink{classcMenuSetupUPnP}{cMenuSetupUPnP} }{\pageref{classcMenuSetupUPnP}}{}
+\item\contentsline{section}{\hyperlink{classcPathParser}{cPathParser} }{\pageref{classcPathParser}}{}
+\item\contentsline{section}{\hyperlink{classcPluginUpnp}{cPluginUpnp} }{\pageref{classcPluginUpnp}}{}
+\item\contentsline{section}{\hyperlink{classcRecordingPlayer}{cRecordingPlayer} }{\pageref{classcRecordingPlayer}}{}
+\item\contentsline{section}{\hyperlink{classcRegisteredProfile}{cRegisteredProfile} }{\pageref{classcRegisteredProfile}}{}
+\item\contentsline{section}{\hyperlink{classcRow}{cRow} }{\pageref{classcRow}}{}
+\item\contentsline{section}{\hyperlink{classcRows}{cRows} }{\pageref{classcRows}}{}
+\item\contentsline{section}{\hyperlink{structcSortCrit}{cSortCrit} }{\pageref{structcSortCrit}}{}
+\item\contentsline{section}{\hyperlink{classcSortCriteria}{cSortCriteria} }{\pageref{classcSortCriteria}}{}
+\item\contentsline{section}{\hyperlink{classcSQLiteDatabase}{cSQLiteDatabase} }{\pageref{classcSQLiteDatabase}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPClassContainer}{cUPnPClassContainer} }{\pageref{classcUPnPClassContainer}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPClassItem}{cUPnPClassItem} }{\pageref{classcUPnPClassItem}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPClassMovie}{cUPnPClassMovie} }{\pageref{classcUPnPClassMovie}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPClassObject}{cUPnPClassObject} }{\pageref{classcUPnPClassObject}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPClassVideoBroadcast}{cUPnPClassVideoBroadcast} }{\pageref{classcUPnPClassVideoBroadcast}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPClassVideoItem}{cUPnPClassVideoItem} }{\pageref{classcUPnPClassVideoItem}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPConfig}{cUPnPConfig} }{\pageref{classcUPnPConfig}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPContainerMediator}{cUPnPContainerMediator} }{\pageref{classcUPnPContainerMediator}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPItemMediator}{cUPnPItemMediator} }{\pageref{classcUPnPItemMediator}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPMovieMediator}{cUPnPMovieMediator} }{\pageref{classcUPnPMovieMediator}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPObjectFactory}{cUPnPObjectFactory} }{\pageref{classcUPnPObjectFactory}}{}
+\item\contentsline{section}{\hyperlink{structcUPnPObjectID}{cUPnPObjectID} }{\pageref{structcUPnPObjectID}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPObjectMediator}{cUPnPObjectMediator} }{\pageref{classcUPnPObjectMediator}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPObjects}{cUPnPObjects} }{\pageref{classcUPnPObjects}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPResource}{cUPnPResource} }{\pageref{classcUPnPResource}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPResourceMediator}{cUPnPResourceMediator} }{\pageref{classcUPnPResourceMediator}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPResources}{cUPnPResources} }{\pageref{classcUPnPResources}}{}
+\item\contentsline{section}{\hyperlink{structcUPnPResultSet}{cUPnPResultSet} }{\pageref{structcUPnPResultSet}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPServer}{cUPnPServer} }{\pageref{classcUPnPServer}}{}
+\item\contentsline{section}{\hyperlink{classcUpnpService}{cUpnpService} }{\pageref{classcUpnpService}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPVideoBroadcastMediator}{cUPnPVideoBroadcastMediator} }{\pageref{classcUPnPVideoBroadcastMediator}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPVideoItemMediator}{cUPnPVideoItemMediator} }{\pageref{classcUPnPVideoItemMediator}}{}
+\item\contentsline{section}{\hyperlink{classcUPnPWebServer}{cUPnPWebServer} }{\pageref{classcUPnPWebServer}}{}
+\item\contentsline{section}{\hyperlink{classcVirtualConnection}{cVirtualConnection} }{\pageref{classcVirtualConnection}}{}
+\item\contentsline{section}{\hyperlink{structDLNAIconProfile}{DLNAIconProfile} }{\pageref{structDLNAIconProfile}}{}
+\item\contentsline{section}{\hyperlink{structDLNAProfile}{DLNAProfile} }{\pageref{structDLNAProfile}}{}
+\end{CompactList}
diff --git a/doc/latex/classcAudioVideoDetector.tex b/doc/latex/classcAudioVideoDetector.tex
new file mode 100644
index 0000000..f76f078
--- /dev/null
+++ b/doc/latex/classcAudioVideoDetector.tex
@@ -0,0 +1,45 @@
+\hypertarget{classcAudioVideoDetector}{
+\section{cAudioVideoDetector Class Reference}
+\label{classcAudioVideoDetector}\index{cAudioVideoDetector@{cAudioVideoDetector}}
+}
+{\tt \#include $<$avdetector.h$>$}
+
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+int \hyperlink{classcAudioVideoDetector_0a376b4d1421f0d799189d4e03c4cbcc}{detectVideoProperties} (\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$Resource, const char $\ast$Filename)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The audio/video detector
+
+This is the audio video detector, which analizes the audio and video stream of a file to gather more information about the resource. This is also required for determination of a suitable DLNA profile.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcAudioVideoDetector_0a376b4d1421f0d799189d4e03c4cbcc}{
+\index{cAudioVideoDetector@{cAudioVideoDetector}!detectVideoProperties@{detectVideoProperties}}
+\index{detectVideoProperties@{detectVideoProperties}!cAudioVideoDetector@{cAudioVideoDetector}}
+\subsubsection[{detectVideoProperties}]{\setlength{\rightskip}{0pt plus 5cm}int cAudioVideoDetector::detectVideoProperties ({\bf cUPnPResource} $\ast$ {\em Resource}, \/ const char $\ast$ {\em Filename})}}
+\label{classcAudioVideoDetector_0a376b4d1421f0d799189d4e03c4cbcc}
+
+
+Detect video properties
+
+This detects video properties of a video stream and stores them in the Resource object.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Resource}]the resource, where to save the data \item[{\em Filename}]the file, which shall be read \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if the detection was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+misc/avdetector.h\item
+misc/avdetector.cpp\end{CompactItemize}
diff --git a/doc/latex/classcConnectionManager.tex b/doc/latex/classcConnectionManager.tex
new file mode 100644
index 0000000..81813c0
--- /dev/null
+++ b/doc/latex/classcConnectionManager.tex
@@ -0,0 +1,124 @@
+\hypertarget{classcConnectionManager}{
+\section{cConnectionManager Class Reference}
+\label{classcConnectionManager}\index{cConnectionManager@{cConnectionManager}}
+}
+{\tt \#include $<$connectionmanager.h$>$}
+
+Inheritance diagram for cConnectionManager:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcConnectionManager__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cConnectionManager:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcConnectionManager__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcConnectionManager_2d6d4af3110c40c399a3e4e203283ff1}{cConnectionManager} (UpnpDevice\_\-Handle DeviceHandle)
+\item
+virtual int \hyperlink{classcConnectionManager_7990eba09a100e5e4ee5b01b87bcc16e}{subscribe} (Upnp\_\-Subscription\_\-Request $\ast$Request)
+\item
+virtual int \hyperlink{classcConnectionManager_12fa6b0a9e20c3af663e3ca2b3c97dfb}{execute} (Upnp\_\-Action\_\-Request $\ast$Request)
+\item
+virtual void \hyperlink{classcConnectionManager_02014a637c6cb04cbfe10b3cb4ce6d1d}{setError} (Upnp\_\-Action\_\-Request $\ast$Request, int Error)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The connection manager service
+
+This is the connection manager service which handles all incoming connection, creates and destroys connections to clients.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcConnectionManager_2d6d4af3110c40c399a3e4e203283ff1}{
+\index{cConnectionManager@{cConnectionManager}!cConnectionManager@{cConnectionManager}}
+\index{cConnectionManager@{cConnectionManager}!cConnectionManager@{cConnectionManager}}
+\subsubsection[{cConnectionManager}]{\setlength{\rightskip}{0pt plus 5cm}cConnectionManager::cConnectionManager (UpnpDevice\_\-Handle {\em DeviceHandle})}}
+\label{classcConnectionManager_2d6d4af3110c40c399a3e4e203283ff1}
+
+
+Constructor of a Connection manager
+
+This creates an instance of a {\em Connection Manager Service\/} and provides interfaces for executing actions and subscribing on events. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em DeviceHandle}]the UPnP device handle of this root device \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcConnectionManager_12fa6b0a9e20c3af663e3ca2b3c97dfb}{
+\index{cConnectionManager@{cConnectionManager}!execute@{execute}}
+\index{execute@{execute}!cConnectionManager@{cConnectionManager}}
+\subsubsection[{execute}]{\setlength{\rightskip}{0pt plus 5cm}int cConnectionManager::execute (Upnp\_\-Action\_\-Request $\ast$ {\em Request})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcConnectionManager_12fa6b0a9e20c3af663e3ca2b3c97dfb}
+
+
+Executes an action
+
+This executes an action initialized by a control point. The result is stored in the first parameter.
+
+\begin{Desc}
+\item[Returns:]An integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if subscription was okay\item or any other non null value in case of an error\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Input and output parameters of an action \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcUpnpService_bbffca233e6aa193eda223cb7bfc2917}{cUpnpService}.\hypertarget{classcConnectionManager_02014a637c6cb04cbfe10b3cb4ce6d1d}{
+\index{cConnectionManager@{cConnectionManager}!setError@{setError}}
+\index{setError@{setError}!cConnectionManager@{cConnectionManager}}
+\subsubsection[{setError}]{\setlength{\rightskip}{0pt plus 5cm}void cConnectionManager::setError (Upnp\_\-Action\_\-Request $\ast$ {\em Request}, \/ int {\em Error})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcConnectionManager_02014a637c6cb04cbfe10b3cb4ce6d1d}
+
+
+Sets an error on an action request
+
+This function puts a error message into the action request structure according to its error code
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]the action request, to set the error for \item[{\em Error}]the error code of which the message should be obtained \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUpnpService_f0976057350505eca781aafcaf6b1d14}{cUpnpService}.\hypertarget{classcConnectionManager_7990eba09a100e5e4ee5b01b87bcc16e}{
+\index{cConnectionManager@{cConnectionManager}!subscribe@{subscribe}}
+\index{subscribe@{subscribe}!cConnectionManager@{cConnectionManager}}
+\subsubsection[{subscribe}]{\setlength{\rightskip}{0pt plus 5cm}int cConnectionManager::subscribe (Upnp\_\-Subscription\_\-Request $\ast$ {\em Request})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcConnectionManager_7990eba09a100e5e4ee5b01b87bcc16e}
+
+
+Subscribes to an event
+
+This is a callback function to register a new subscriber for an event.
+
+\begin{Desc}
+\item[Returns:]An integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if subscription was okay\item or any other non null value in case of an error\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Information about the subscription \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcUpnpService_e6d3522d580e5975f5a38d5bea88e29d}{cUpnpService}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+upnpcomponents/connectionmanager.h\item
+upnpcomponents/connectionmanager.cpp\end{CompactItemize}
diff --git a/doc/latex/classcConnectionManager__coll__graph.eps b/doc/latex/classcConnectionManager__coll__graph.eps
new file mode 100644
index 0000000..064c4bf
--- /dev/null
+++ b/doc/latex/classcConnectionManager__coll__graph.eps
@@ -0,0 +1,470 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 320 524
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 284 488 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 58 0 moveto
+58 240 lineto
+196 240 lineto
+196 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 58 0 moveto
+58 240 lineto
+196 240 lineto
+196 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81 227 moveto 92 (cConnectionManager) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 58 220 moveto
+196 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 207 moveto 94 (- mDefaultConnection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 195 moveto 96 (- mVirtualConnections) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 183 moveto 100 (- mSupportedProtocols) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 58 176 moveto
+196 176 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 163 moveto 107 (+ cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 151 moveto 113 (+ ~cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 139 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 127 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 115 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 103 moveto 47 (- setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 91 moveto 78 (- getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 79 moveto 121 (- getCurrentConnectionIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 67 moveto 122 (- getCurrentConnectionInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 55 moveto 107 (- prepareForConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 43 moveto 101 (- connectionComplete\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 31 moveto 116 (- createVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 19 moveto 121 (- destroyVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+66 7 moveto 110 (- getConnectionIDsCVS\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 318 108 450 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUpnpService.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 318 moveto
+0 450 lineto
+108 450 lineto
+108 318 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 318 moveto
+0 450 lineto
+108 450 lineto
+108 318 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23.5 437 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 430 moveto
+108 430 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 417 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 410 moveto
+108 410 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 397 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 385 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 373 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 361 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 349 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 337 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 325 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 75 308 moveto
+81 287 87 263 94 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 71.52 307.42 moveto
+72 318 lineto
+78.23 309.43 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 126 288 276 480 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcVirtualConnection.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 126 288 moveto
+126 480 lineto
+276 480 lineto
+276 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 126 288 moveto
+126 480 lineto
+276 480 lineto
+276 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160 467 moveto 82 (cVirtualConnection) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 126 460 moveto
+276 460 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 447 moveto 101 (- mRemoteProtocolInfo) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 435 moveto 134 (- mRemoteConnectionManager) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 423 moveto 53 (- mDirection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 411 moveto 107 (- mRemoteConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 399 moveto 73 (- mConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 387 moveto 77 (- mAVTransportID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 375 moveto 41 (- mRcsID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 363 moveto 43 (- mStatus) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 126 356 moveto
+276 356 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 343 moveto 94 (- cVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 331 moveto 80 (- getStatusString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 319 moveto 89 (- getDirectionString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 307 moveto 64 (- getDirection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 295 moveto 103 (- getConnectionStatus\(\)) alignedtext
+grestore
+% Node3->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 171 278 moveto
+168 266 164 253 161 240 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 174 288 moveto
+166.82 279.71 lineto
+172.56 283.21 lineto
+171.13 278.42 lineto
+171.13 278.42 lineto
+171.13 278.42 lineto
+172.56 283.21 lineto
+175.44 277.13 lineto
+174 288 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 174 288 moveto
+166.82 279.71 lineto
+172.56 283.21 lineto
+171.13 278.42 lineto
+171.13 278.42 lineto
+171.13 278.42 lineto
+172.56 283.21 lineto
+175.44 277.13 lineto
+174 288 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+168 261 moveto 88 (mDefaultConnection) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 320 524
+end
+restore
+%%EOF
diff --git a/doc/latex/classcConnectionManager__coll__graph.md5 b/doc/latex/classcConnectionManager__coll__graph.md5
new file mode 100644
index 0000000..0cb29f8
--- /dev/null
+++ b/doc/latex/classcConnectionManager__coll__graph.md5
@@ -0,0 +1 @@
+8a14d900002db9aae5ba9e46e07ca6a5 \ No newline at end of file
diff --git a/doc/latex/classcConnectionManager__coll__graph.pdf b/doc/latex/classcConnectionManager__coll__graph.pdf
new file mode 100644
index 0000000..2c1bbb3
--- /dev/null
+++ b/doc/latex/classcConnectionManager__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcConnectionManager__inherit__graph.eps b/doc/latex/classcConnectionManager__inherit__graph.eps
new file mode 100644
index 0000000..a1ec658
--- /dev/null
+++ b/doc/latex/classcConnectionManager__inherit__graph.eps
@@ -0,0 +1,358 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 182 452
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 146 416 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+138 240 lineto
+138 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+138 240 lineto
+138 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 227 moveto 92 (cConnectionManager) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 220 moveto
+138 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 94 (- mDefaultConnection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 96 (- mVirtualConnections) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 100 (- mSupportedProtocols) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 176 moveto
+138 176 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 163 moveto 107 (+ cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 151 moveto 113 (+ ~cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 47 (- setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 78 (- getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 121 (- getCurrentConnectionIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 122 (- getCurrentConnectionInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 107 (- prepareForConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 101 (- connectionComplete\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 116 (- createVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 121 (- destroyVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 110 (- getConnectionIDsCVS\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 15 276 123 408 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUpnpService.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 15 276 moveto
+15 408 lineto
+123 408 lineto
+123 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 276 moveto
+15 408 lineto
+123 408 lineto
+123 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38.5 395 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 388 moveto
+123 388 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 375 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 368 moveto
+123 368 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 355 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 343 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 331 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 319 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 307 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 295 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 283 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 69 266 moveto
+69 258 69 249 69 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 65.5 266 moveto
+69 276 lineto
+72.5 266 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 182 452
+end
+restore
+%%EOF
diff --git a/doc/latex/classcConnectionManager__inherit__graph.md5 b/doc/latex/classcConnectionManager__inherit__graph.md5
new file mode 100644
index 0000000..a50b5b8
--- /dev/null
+++ b/doc/latex/classcConnectionManager__inherit__graph.md5
@@ -0,0 +1 @@
+b8652d9aa90e89790fbf20c36a8fd813 \ No newline at end of file
diff --git a/doc/latex/classcConnectionManager__inherit__graph.pdf b/doc/latex/classcConnectionManager__inherit__graph.pdf
new file mode 100644
index 0000000..5b05619
--- /dev/null
+++ b/doc/latex/classcConnectionManager__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcContentDirectory.tex b/doc/latex/classcContentDirectory.tex
new file mode 100644
index 0000000..02a18cb
--- /dev/null
+++ b/doc/latex/classcContentDirectory.tex
@@ -0,0 +1,124 @@
+\hypertarget{classcContentDirectory}{
+\section{cContentDirectory Class Reference}
+\label{classcContentDirectory}\index{cContentDirectory@{cContentDirectory}}
+}
+{\tt \#include $<$contentdirectory.h$>$}
+
+Inheritance diagram for cContentDirectory:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=166pt]{classcContentDirectory__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cContentDirectory:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcContentDirectory__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcContentDirectory_aca0fe0cffa30b1040719720ff4b82a2}{cContentDirectory} (UpnpDevice\_\-Handle DeviceHandle, \hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$MediaDatabase)
+\item
+virtual int \hyperlink{classcContentDirectory_17acd376a722e6e7de9ec0d4cabb707b}{subscribe} (Upnp\_\-Subscription\_\-Request $\ast$Request)
+\item
+virtual int \hyperlink{classcContentDirectory_a0225df761512819b9c46f45b2a0f0d0}{execute} (Upnp\_\-Action\_\-Request $\ast$Request)
+\item
+virtual void \hyperlink{classcContentDirectory_a3b0df304987a0f2b17733c651d5b5c6}{setError} (Upnp\_\-Action\_\-Request $\ast$Request, int Error)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The content directory service
+
+This is the content directory service which handles all incoming requests for contents managed by the media server.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcContentDirectory_aca0fe0cffa30b1040719720ff4b82a2}{
+\index{cContentDirectory@{cContentDirectory}!cContentDirectory@{cContentDirectory}}
+\index{cContentDirectory@{cContentDirectory}!cContentDirectory@{cContentDirectory}}
+\subsubsection[{cContentDirectory}]{\setlength{\rightskip}{0pt plus 5cm}cContentDirectory::cContentDirectory (UpnpDevice\_\-Handle {\em DeviceHandle}, \/ {\bf cMediaDatabase} $\ast$ {\em MediaDatabase})}}
+\label{classcContentDirectory_aca0fe0cffa30b1040719720ff4b82a2}
+
+
+Constructor of a Content Directory
+
+This creates an instance of a {\em Content Directory Service\/} and provides interfaces for executing actions and subscribing on events. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em DeviceHandle}]The UPnP device handle of the root device \item[{\em MediaDatabase}]the media database where requests are processed \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcContentDirectory_a0225df761512819b9c46f45b2a0f0d0}{
+\index{cContentDirectory@{cContentDirectory}!execute@{execute}}
+\index{execute@{execute}!cContentDirectory@{cContentDirectory}}
+\subsubsection[{execute}]{\setlength{\rightskip}{0pt plus 5cm}int cContentDirectory::execute (Upnp\_\-Action\_\-Request $\ast$ {\em Request})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcContentDirectory_a0225df761512819b9c46f45b2a0f0d0}
+
+
+Executes an action
+
+This executes an action initialized by a control point. The result is stored in the first parameter.
+
+\begin{Desc}
+\item[Returns:]An integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if subscription was okay\item or any other non null value in case of an error\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Input and output parameters of an action \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcUpnpService_bbffca233e6aa193eda223cb7bfc2917}{cUpnpService}.\hypertarget{classcContentDirectory_a3b0df304987a0f2b17733c651d5b5c6}{
+\index{cContentDirectory@{cContentDirectory}!setError@{setError}}
+\index{setError@{setError}!cContentDirectory@{cContentDirectory}}
+\subsubsection[{setError}]{\setlength{\rightskip}{0pt plus 5cm}void cContentDirectory::setError (Upnp\_\-Action\_\-Request $\ast$ {\em Request}, \/ int {\em Error})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcContentDirectory_a3b0df304987a0f2b17733c651d5b5c6}
+
+
+Sets an error on an action request
+
+This function puts a error message into the action request structure according to its error code
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]the action request, to set the error for \item[{\em Error}]the error code of which the message should be obtained \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUpnpService_f0976057350505eca781aafcaf6b1d14}{cUpnpService}.\hypertarget{classcContentDirectory_17acd376a722e6e7de9ec0d4cabb707b}{
+\index{cContentDirectory@{cContentDirectory}!subscribe@{subscribe}}
+\index{subscribe@{subscribe}!cContentDirectory@{cContentDirectory}}
+\subsubsection[{subscribe}]{\setlength{\rightskip}{0pt plus 5cm}int cContentDirectory::subscribe (Upnp\_\-Subscription\_\-Request $\ast$ {\em Request})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcContentDirectory_17acd376a722e6e7de9ec0d4cabb707b}
+
+
+Subscribes to an event
+
+This is a callback function to register a new subscriber for an event.
+
+\begin{Desc}
+\item[Returns:]An integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if subscription was okay\item or any other non null value in case of an error\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Information about the subscription \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcUpnpService_e6d3522d580e5975f5a38d5bea88e29d}{cUpnpService}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+upnpcomponents/contentdirectory.h\item
+upnpcomponents/contentdirectory.cpp\end{CompactItemize}
diff --git a/doc/latex/classcContentDirectory__coll__graph.eps b/doc/latex/classcContentDirectory__coll__graph.eps
new file mode 100644
index 0000000..7129dfa
--- /dev/null
+++ b/doc/latex/classcContentDirectory__coll__graph.eps
@@ -0,0 +1,1213 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 500 1604
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 464 1568 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 35 0 moveto
+35 168 lineto
+158 168 lineto
+158 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 35 0 moveto
+35 168 lineto
+158 168 lineto
+158 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+57 155 moveto 78 (cContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 35 148 moveto
+158 148 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 135 moveto 82 (- mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 35 128 moveto
+158 128 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 115 moveto 93 (+ cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 103 moveto 99 (+ ~cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 91 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 79 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 67 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 55 moveto 40 (- Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 43 moveto 107 (- getSearchCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 31 moveto 94 (- getSortCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 19 moveto 100 (- getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+42.5 7 moveto 43 (- browse\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 312 108 444 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUpnpService.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 312 moveto
+0 444 lineto
+108 444 lineto
+108 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 312 moveto
+0 444 lineto
+108 444 lineto
+108 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23.5 431 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 424 moveto
+108 424 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 411 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 404 moveto
+108 404 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 391 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 379 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 367 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 355 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 343 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 331 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 319 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64 302 moveto
+70 261 78 210 84 168 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 60.51 301.7 moveto
+63 312 lineto
+67.48 302.4 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 126 216 258 540 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 126 216 moveto
+126 540 lineto
+258 540 lineto
+258 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 126 216 moveto
+126 540 lineto
+258 540 lineto
+258 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+155.5 527 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 126 520 moveto
+258 520 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 507 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 495 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 483 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 471 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 459 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 126 452 moveto
+258 452 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 439 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 427 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 415 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 403 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 391 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 379 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 367 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 355 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 343 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 331 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 319 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 307 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 295 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 283 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 271 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 259 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 247 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 235 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+134 223 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node3->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 136 206 moveto
+132 193 127 180 123 168 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 139 216 moveto
+131.82 207.71 lineto
+137.56 211.21 lineto
+136.13 206.42 lineto
+136.13 206.42 lineto
+136.13 206.42 lineto
+137.56 211.21 lineto
+140.44 205.13 lineto
+139 216 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 139 216 moveto
+131.82 207.71 lineto
+137.56 211.21 lineto
+136.13 206.42 lineto
+136.13 206.42 lineto
+136.13 206.42 lineto
+137.56 211.21 lineto
+140.44 205.13 lineto
+139 216 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+134 189 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 132 630 252 834 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 132 630 moveto
+132 834 lineto
+252 834 lineto
+252 630 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 132 630 moveto
+132 834 lineto
+252 834 lineto
+252 630 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+146 821 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 132 814 moveto
+252 814 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 801 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 789 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 777 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 132 770 moveto
+252 770 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 757 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 745 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 733 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 721 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 709 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 697 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 685 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 673 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 661 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 649 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 637 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 192 620 moveto
+192 594 192 567 192 540 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 192 630 moveto
+187.5 620 lineto
+192 625 lineto
+192 620 lineto
+192 620 lineto
+192 620 lineto
+192 625 lineto
+196.5 620 lineto
+192 630 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 192 630 moveto
+187.5 620 lineto
+192 625 lineto
+192 620 lineto
+192 620 lineto
+192 620 lineto
+192 625 lineto
+196.5 620 lineto
+192 630 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+192.5 561 moveto 41 (mFactory) alignedtext
+grestore
+% Node4->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 261 757 moveto
+267 752 270 743 270 732 curveto
+270 716 263 706 252 702 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 252 762 moveto
+258.56 753.21 lineto
+256.37 759.57 lineto
+260.74 757.14 lineto
+260.74 757.14 lineto
+260.74 757.14 lineto
+256.37 759.57 lineto
+262.93 761.08 lineto
+252 762 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 252 762 moveto
+258.56 753.21 lineto
+256.37 759.57 lineto
+260.74 757.14 lineto
+260.74 757.14 lineto
+260.74 757.14 lineto
+256.37 759.57 lineto
+262.93 761.08 lineto
+252 762 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+270 729 moveto 46 (mInstance) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 46 924 162 1236 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 46 924 moveto
+46 1236 lineto
+163 1236 lineto
+163 924 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 924 moveto
+46 1236 lineto
+163 1236 lineto
+163 924 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+65.5 1223 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 1216 moveto
+163 1216 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1203 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1191 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1179 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1167 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1155 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1143 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 1136 moveto
+163 1136 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1123 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1111 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1099 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1087 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1075 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1063 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1051 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1039 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1027 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1015 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 1003 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 991 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 979 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 967 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 955 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 943 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+53.5 931 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node5->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 59 914 moveto
+41 815 33 691 73 588 curveto
+84 561 101 564 117 540 curveto
+120 535 123 531 126 526 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 61 924 moveto
+54.63 915.08 lineto
+60.02 919.1 lineto
+59.04 914.19 lineto
+59.04 914.19 lineto
+59.04 914.19 lineto
+60.02 919.1 lineto
+63.45 913.31 lineto
+61 924 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 61 924 moveto
+54.63 915.08 lineto
+60.02 919.1 lineto
+59.04 914.19 lineto
+59.04 914.19 lineto
+59.04 914.19 lineto
+60.02 919.1 lineto
+63.45 913.31 lineto
+61 924 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+73 729 moveto 50 (mDatabase) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 146 914 moveto
+153 886 160 859 166 834 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 143 924 moveto
+141.56 913.13 lineto
+144.44 919.21 lineto
+145.87 914.42 lineto
+145.87 914.42 lineto
+145.87 914.42 lineto
+144.44 919.21 lineto
+150.18 915.71 lineto
+143 924 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 143 924 moveto
+141.56 913.13 lineto
+144.44 919.21 lineto
+145.87 914.42 lineto
+145.87 914.42 lineto
+145.87 914.42 lineto
+144.44 919.21 lineto
+150.18 915.71 lineto
+143 924 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+151 897 moveto 50 (mDatabase) alignedtext
+grestore
+% Node5->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 171 1105 moveto
+177 1100 180 1092 180 1080 curveto
+180 1063 173 1053 163 1049 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 163 1111 moveto
+168.3 1101.4 lineto
+167 1108 lineto
+171 1105 lineto
+171 1105 lineto
+171 1105 lineto
+167 1108 lineto
+173.7 1108.6 lineto
+163 1111 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 163 1111 moveto
+168.3 1101.4 lineto
+167 1108 lineto
+171 1105 lineto
+171 1105 lineto
+171 1105 lineto
+167 1108 lineto
+173.7 1108.6 lineto
+163 1111 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+180 1077 moveto 46 (mInstance) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 152 1284 224 1368 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 152 1284 moveto
+152 1368 lineto
+224 1368 lineto
+224 1284 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 152 1284 moveto
+152 1368 lineto
+224 1368 lineto
+224 1284 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+173.5 1355 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 152 1348 moveto
+224 1348 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160 1335 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 152 1328 moveto
+224 1328 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160 1315 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160 1303 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160 1291 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 171 1275 moveto
+167 1263 163 1250 158 1236 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 174 1284 moveto
+166.57 1275.94 lineto
+172.42 1279.26 lineto
+170.84 1274.51 lineto
+170.84 1274.51 lineto
+170.84 1274.51 lineto
+172.42 1279.26 lineto
+175.11 1273.09 lineto
+174 1284 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 174 1284 moveto
+166.57 1275.94 lineto
+172.42 1279.26 lineto
+170.84 1274.51 lineto
+170.84 1274.51 lineto
+170.84 1274.51 lineto
+172.42 1279.26 lineto
+175.11 1273.09 lineto
+174 1284 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+169 1257 moveto 32 (mRows) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 78 1416 164 1560 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 78 1416 moveto
+78 1560 lineto
+164 1560 lineto
+164 1416 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 1416 moveto
+78 1560 lineto
+164 1560 lineto
+164 1416 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+109 1547 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 1540 moveto
+164 1540 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1527 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1515 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1503 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1491 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 1484 moveto
+164 1484 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1471 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1459 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1447 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1435 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86 1423 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node7->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 102 1406 moveto
+100 1393 99 1381 97 1368 curveto
+93 1325 92 1279 93 1236 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 104 1416 moveto
+97.63 1407.08 lineto
+103.02 1411.1 lineto
+102.04 1406.19 lineto
+102.04 1406.19 lineto
+102.04 1406.19 lineto
+103.02 1411.1 lineto
+106.45 1405.31 lineto
+104 1416 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 104 1416 moveto
+97.63 1407.08 lineto
+103.02 1411.1 lineto
+102.04 1406.19 lineto
+102.04 1406.19 lineto
+102.04 1406.19 lineto
+103.02 1411.1 lineto
+106.45 1405.31 lineto
+104 1416 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+100 1323 moveto 46 (mLastRow) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 155 1407 moveto
+161 1393 166 1380 171 1368 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 151 1416 moveto
+150.95 1405.03 lineto
+153.03 1411.43 lineto
+155.06 1406.86 lineto
+155.06 1406.86 lineto
+155.06 1406.86 lineto
+153.03 1411.43 lineto
+159.17 1408.69 lineto
+151 1416 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 151 1416 moveto
+150.95 1405.03 lineto
+153.03 1411.43 lineto
+155.06 1406.86 lineto
+155.06 1406.86 lineto
+155.06 1406.86 lineto
+153.03 1411.43 lineto
+159.17 1408.69 lineto
+151 1416 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+164 1389 moveto 46 (mLastRow) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 334 588 456 876 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 334 588 moveto
+334 876 lineto
+456 876 lineto
+456 588 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 334 588 moveto
+334 876 lineto
+456 876 lineto
+456 588 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+360.5 863 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 334 856 moveto
+456 856 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 843 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 334 836 moveto
+456 836 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 823 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 811 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 799 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 787 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 775 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 763 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 751 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 739 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 727 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 715 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 703 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 691 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 679 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 667 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 655 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 643 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 631 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 619 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 607 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+342 595 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node8->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 329 596 moveto
+328 593 326 590 325 588 curveto
+304 551 280 512 258 477 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 334 605 moveto
+325.21 598.44 lineto
+331.57 600.63 lineto
+329.14 596.26 lineto
+329.14 596.26 lineto
+329.14 596.26 lineto
+331.57 600.63 lineto
+333.08 594.07 lineto
+334 605 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 334 605 moveto
+325.21 598.44 lineto
+331.57 600.63 lineto
+329.14 596.26 lineto
+329.14 596.26 lineto
+329.14 596.26 lineto
+331.57 600.63 lineto
+333.08 594.07 lineto
+334 605 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+313 561 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 500 1604
+end
+restore
+%%EOF
diff --git a/doc/latex/classcContentDirectory__coll__graph.md5 b/doc/latex/classcContentDirectory__coll__graph.md5
new file mode 100644
index 0000000..4c5d93b
--- /dev/null
+++ b/doc/latex/classcContentDirectory__coll__graph.md5
@@ -0,0 +1 @@
+41a4a52f56f8d50957a0b7f8f30c65f8 \ No newline at end of file
diff --git a/doc/latex/classcContentDirectory__coll__graph.pdf b/doc/latex/classcContentDirectory__coll__graph.pdf
new file mode 100644
index 0000000..ebd1782
--- /dev/null
+++ b/doc/latex/classcContentDirectory__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcContentDirectory__inherit__graph.eps b/doc/latex/classcContentDirectory__inherit__graph.eps
new file mode 100644
index 0000000..bbd1b5a
--- /dev/null
+++ b/doc/latex/classcContentDirectory__inherit__graph.eps
@@ -0,0 +1,340 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 166 380
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 130 344 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 168 lineto
+123 168 lineto
+123 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 168 lineto
+123 168 lineto
+123 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 155 moveto 78 (cContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 148 moveto
+123 148 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 135 moveto 82 (- mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 128 moveto
+123 128 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 115 moveto 93 (+ cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 103 moveto 99 (+ ~cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 91 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 79 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 40 (- Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 107 (- getSearchCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 31 moveto 94 (- getSortCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 19 moveto 100 (- getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 7 moveto 43 (- browse\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 7 204 115 336 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUpnpService.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 7 204 moveto
+7 336 lineto
+115 336 lineto
+115 204 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 204 moveto
+7 336 lineto
+115 336 lineto
+115 204 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+30.5 323 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 316 moveto
+115 316 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 303 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 296 moveto
+115 296 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 283 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 271 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 259 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 247 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 235 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 223 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 211 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 61 194 moveto
+61 185 61 177 61 168 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 57.5 194 moveto
+61 204 lineto
+64.5 194 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 166 380
+end
+restore
+%%EOF
diff --git a/doc/latex/classcContentDirectory__inherit__graph.md5 b/doc/latex/classcContentDirectory__inherit__graph.md5
new file mode 100644
index 0000000..4145de7
--- /dev/null
+++ b/doc/latex/classcContentDirectory__inherit__graph.md5
@@ -0,0 +1 @@
+5fcc1fbcda0406ed6d97b8ca731c314f \ No newline at end of file
diff --git a/doc/latex/classcContentDirectory__inherit__graph.pdf b/doc/latex/classcContentDirectory__inherit__graph.pdf
new file mode 100644
index 0000000..5bb7a2e
--- /dev/null
+++ b/doc/latex/classcContentDirectory__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcDlna.tex b/doc/latex/classcDlna.tex
new file mode 100644
index 0000000..5828aa6
--- /dev/null
+++ b/doc/latex/classcDlna.tex
@@ -0,0 +1,202 @@
+\hypertarget{classcDlna}{
+\section{cDlna Class Reference}
+\label{classcDlna}\index{cDlna@{cDlna}}
+}
+{\tt \#include $<$dlna.h$>$}
+
+Collaboration diagram for cDlna:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=274pt]{classcDlna__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+const char $\ast$ \hyperlink{classcDlna_a7ae0cc7b651bc6ccd82ef5da527d09a}{getDeviceDescription} (const char $\ast$URLBase)
+\item
+void \hyperlink{classcDlna_0250d3903e7dcbdc8ebadfacd4e6fb50}{registerProfile} (\hyperlink{structDLNAProfile}{DLNAProfile} $\ast$Profile, int Op=-1, const char $\ast$Ps=NULL, int Ci=-1, unsigned int Flags=0)
+\item
+void \hyperlink{classcDlna_e26b723ec63a60f397ce41bd95641dfa}{registerMainProfiles} ()
+\item
+const char $\ast$ \hyperlink{classcDlna_68a9565f022c7037c51ad337274d8c3a}{getSupportedProtocols} ()
+\item
+const char $\ast$ \hyperlink{classcDlna_992777f6c75dadd61bed6a75e03f1dfd}{getProtocolInfo} (\hyperlink{structDLNAProfile}{DLNAProfile} $\ast$Prof)
+\item
+\hyperlink{structDLNAProfile}{DLNAProfile} $\ast$ \hyperlink{classcDlna_4eacc299d19fa20beba98d88d4230388}{getProfileOfChannel} (cChannel $\ast$Channel)
+\item
+\hyperlink{structDLNAProfile}{DLNAProfile} $\ast$ \hyperlink{classcDlna_69dc71fe30130cafa399bb851ef5def8}{getProfileOfRecording} (cRecording $\ast$Recording)
+\item
+\hyperlink{structDLNAProfile}{DLNAProfile} $\ast$ \hyperlink{classcDlna_4b5c30f707060b66c3980af70b7d8d08}{getProfileOfFile} (cString File)
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static \hyperlink{classcDlna}{cDlna} $\ast$ \hyperlink{classcDlna_1e30449831b903d508dae6640039fc25}{getInstance} (void)
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcDlna_02ebb94fd2cdff4bfb2da3267446d62b}{
+class \hyperlink{classcDlna_02ebb94fd2cdff4bfb2da3267446d62b}{cUPnPServer}}
+\label{classcDlna_02ebb94fd2cdff4bfb2da3267446d62b}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Enable DLNA compliant media transfer
+
+This class enables media transmission with DLNA conformity. Its compliant with version 1.5 of the DLNA guidelines.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcDlna_a7ae0cc7b651bc6ccd82ef5da527d09a}{
+\index{cDlna@{cDlna}!getDeviceDescription@{getDeviceDescription}}
+\index{getDeviceDescription@{getDeviceDescription}!cDlna@{cDlna}}
+\subsubsection[{getDeviceDescription}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cDlna::getDeviceDescription (const char $\ast$ {\em URLBase})}}
+\label{classcDlna_a7ae0cc7b651bc6ccd82ef5da527d09a}
+
+
+Device description document
+
+This will return the device description document with service type definitions as well as some DLNA specific information
+
+\begin{Desc}
+\item[Returns:]The description document \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em URLBase}]the URLBase to be set in the document \end{description}
+\end{Desc}
+\hypertarget{classcDlna_1e30449831b903d508dae6640039fc25}{
+\index{cDlna@{cDlna}!getInstance@{getInstance}}
+\index{getInstance@{getInstance}!cDlna@{cDlna}}
+\subsubsection[{getInstance}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cDlna} $\ast$ cDlna::getInstance (void)\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcDlna_1e30449831b903d508dae6640039fc25}
+
+
+Returns the instance of DLNA object
+
+This will create a DLNA object instance. It will return the same instance on subsequent calls.
+
+\begin{Desc}
+\item[Returns:]the DLNA object instance \end{Desc}
+\hypertarget{classcDlna_4eacc299d19fa20beba98d88d4230388}{
+\index{cDlna@{cDlna}!getProfileOfChannel@{getProfileOfChannel}}
+\index{getProfileOfChannel@{getProfileOfChannel}!cDlna@{cDlna}}
+\subsubsection[{getProfileOfChannel}]{\setlength{\rightskip}{0pt plus 5cm}{\bf DLNAProfile} $\ast$ cDlna::getProfileOfChannel (cChannel $\ast$ {\em Channel})}}
+\label{classcDlna_4eacc299d19fa20beba98d88d4230388}
+
+
+Profile of a channel
+
+Returns the DLNA profile of a VDR channel. It checks the video type to determine which profile will match.
+
+\begin{Desc}
+\item[Returns:]the matching DLNA profile \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Channel}]the channel of which the profile should created from \end{description}
+\end{Desc}
+\hypertarget{classcDlna_4b5c30f707060b66c3980af70b7d8d08}{
+\index{cDlna@{cDlna}!getProfileOfFile@{getProfileOfFile}}
+\index{getProfileOfFile@{getProfileOfFile}!cDlna@{cDlna}}
+\subsubsection[{getProfileOfFile}]{\setlength{\rightskip}{0pt plus 5cm}{\bf DLNAProfile} $\ast$ cDlna::getProfileOfFile (cString {\em File})}}
+\label{classcDlna_4b5c30f707060b66c3980af70b7d8d08}
+
+
+Profile of a file
+
+Returns the DLNA profile of a file. It checks the content of the file with {\em ffmpeg\/} to determine which profile will match.
+
+\begin{Desc}
+\item[Returns:]the matching DLNA profile \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em File}]the file of which the profile should be created from \end{description}
+\end{Desc}
+\hypertarget{classcDlna_69dc71fe30130cafa399bb851ef5def8}{
+\index{cDlna@{cDlna}!getProfileOfRecording@{getProfileOfRecording}}
+\index{getProfileOfRecording@{getProfileOfRecording}!cDlna@{cDlna}}
+\subsubsection[{getProfileOfRecording}]{\setlength{\rightskip}{0pt plus 5cm}{\bf DLNAProfile} $\ast$ cDlna::getProfileOfRecording (cRecording $\ast$ {\em Recording})}}
+\label{classcDlna_69dc71fe30130cafa399bb851ef5def8}
+
+
+Profile of a recording
+
+Returns the DLNA profile of a VDR recording. It checks the video file to determine which profile will match.
+
+\begin{Desc}
+\item[Returns:]the matching DLNA profile \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Recording}]the recording of which the profile should be created from \end{description}
+\end{Desc}
+\hypertarget{classcDlna_992777f6c75dadd61bed6a75e03f1dfd}{
+\index{cDlna@{cDlna}!getProtocolInfo@{getProtocolInfo}}
+\index{getProtocolInfo@{getProtocolInfo}!cDlna@{cDlna}}
+\subsubsection[{getProtocolInfo}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cDlna::getProtocolInfo ({\bf DLNAProfile} $\ast$ {\em Prof})}}
+\label{classcDlna_992777f6c75dadd61bed6a75e03f1dfd}
+
+
+Protocol info of a specific DLNA profile
+
+Returns the protocol info string of a specific DLNA profile with its options and flags.
+
+\begin{Desc}
+\item[Returns:]the protocol info string of the profile \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Prof}]the Profile of which the protocol info shall be returned \end{description}
+\end{Desc}
+\hypertarget{classcDlna_68a9565f022c7037c51ad337274d8c3a}{
+\index{cDlna@{cDlna}!getSupportedProtocols@{getSupportedProtocols}}
+\index{getSupportedProtocols@{getSupportedProtocols}!cDlna@{cDlna}}
+\subsubsection[{getSupportedProtocols}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cDlna::getSupportedProtocols ()}}
+\label{classcDlna_68a9565f022c7037c51ad337274d8c3a}
+
+
+CSV list of supported protocols
+
+Returns a comma separated list with all supported protocols. This means, it returns the list of protocols of the registered profiles.
+
+\begin{Desc}
+\item[Returns:]CSV list of registered protocols \end{Desc}
+\hypertarget{classcDlna_e26b723ec63a60f397ce41bd95641dfa}{
+\index{cDlna@{cDlna}!registerMainProfiles@{registerMainProfiles}}
+\index{registerMainProfiles@{registerMainProfiles}!cDlna@{cDlna}}
+\subsubsection[{registerMainProfiles}]{\setlength{\rightskip}{0pt plus 5cm}void cDlna::registerMainProfiles ()}}
+\label{classcDlna_e26b723ec63a60f397ce41bd95641dfa}
+
+
+Registeres all known DLNA profiles
+
+Registeres all well known DLNA profiles with its known options \hypertarget{classcDlna_0250d3903e7dcbdc8ebadfacd4e6fb50}{
+\index{cDlna@{cDlna}!registerProfile@{registerProfile}}
+\index{registerProfile@{registerProfile}!cDlna@{cDlna}}
+\subsubsection[{registerProfile}]{\setlength{\rightskip}{0pt plus 5cm}void cDlna::registerProfile ({\bf DLNAProfile} $\ast$ {\em Profile}, \/ int {\em Op} = {\tt -1}, \/ const char $\ast$ {\em Ps} = {\tt NULL}, \/ int {\em Ci} = {\tt -1}, \/ unsigned int {\em Flags} = {\tt 0})}}
+\label{classcDlna_0250d3903e7dcbdc8ebadfacd4e6fb50}
+
+
+Registeres a DLNA profile
+
+Registeres a DLNA profile with specific optional options
+
+\begin{Desc}
+\item[See also:]\hyperlink{common_8h-source}{common.h} \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Profile}]the DLNA profile \item[{\em Op}]operation mode \item[{\em Ps}]play speed (CSV list) \item[{\em Ci}]conversion indication flag \item[{\em Flags}]DLNA flags \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+upnpcomponents/dlna.h\item
+upnpcomponents/dlna.cpp\end{CompactItemize}
diff --git a/doc/latex/classcDlna__coll__graph.eps b/doc/latex/classcDlna__coll__graph.eps
new file mode 100644
index 0000000..405f7bd
--- /dev/null
+++ b/doc/latex/classcDlna__coll__graph.eps
@@ -0,0 +1,312 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 274 260
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 238 224 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 216 lineto
+166 216 lineto
+166 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 216 lineto
+166 216 lineto
+166 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+70.5 203 moveto 25 (cDlna) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 196 moveto
+166 196 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 94 (- mRegisteredProfiles) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 164 moveto
+166 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 151 moveto 46 (+ ~cDlna\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 107 (+ getDeviceDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 75 (+ registerProfile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 101 (+ registerMainProfiles\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 114 (+ getSupportedProtocols\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 81 (+ getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 102 (+ getProfileOfChannel\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 110 (+ getProfileOfRecording\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 83 (+ getProfileOfFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 150 (- getRegisteredProtocolInfoString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 37 (- cDlna\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 25 (- init\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 174 137 moveto
+180 130 184 121 184 108 curveto
+184 90 177 79 166 73 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 166 143 moveto
+171.3 133.4 lineto
+170 140 lineto
+174 137 lineto
+174 137 lineto
+174 137 lineto
+170 140 lineto
+176.7 140.6 lineto
+166 143 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 166 143 moveto
+171.3 133.4 lineto
+170 140 lineto
+174 137 lineto
+174 137 lineto
+174 137 lineto
+170 140 lineto
+176.7 140.6 lineto
+166 143 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+184 105 moveto 46 (mInstance) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 274 260
+end
+restore
+%%EOF
diff --git a/doc/latex/classcDlna__coll__graph.md5 b/doc/latex/classcDlna__coll__graph.md5
new file mode 100644
index 0000000..dda90dc
--- /dev/null
+++ b/doc/latex/classcDlna__coll__graph.md5
@@ -0,0 +1 @@
+f9e7a97a851da74b0c118baed12165ba \ No newline at end of file
diff --git a/doc/latex/classcDlna__coll__graph.pdf b/doc/latex/classcDlna__coll__graph.pdf
new file mode 100644
index 0000000..7b8c472
--- /dev/null
+++ b/doc/latex/classcDlna__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcFileHandle.eps b/doc/latex/classcFileHandle.eps
new file mode 100644
index 0000000..0f4aba7
--- /dev/null
+++ b/doc/latex/classcFileHandle.eps
@@ -0,0 +1,197 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ClassName
+%%Creator: Doxygen
+%%CreationDate: Time
+%%For:
+%Magnification: 1.00
+%%Orientation: Portrait
+%%BoundingBox: 0 0 500 392.157
+%%Pages: 0
+%%BeginSetup
+%%EndSetup
+%%EndComments
+
+% ----- variables -----
+
+/boxwidth 0 def
+/boxheight 40 def
+/fontheight 24 def
+/marginwidth 10 def
+/distx 20 def
+/disty 40 def
+/boundaspect 1.275 def % aspect ratio of the BoundingBox (width/height)
+/boundx 500 def
+/boundy boundx boundaspect div def
+/xspacing 0 def
+/yspacing 0 def
+/rows 2 def
+/cols 1 def
+/scalefactor 0 def
+/boxfont /Times-Roman findfont fontheight scalefont def
+
+% ----- procedures -----
+
+/dotted { [1 4] 0 setdash } def
+/dashed { [5] 0 setdash } def
+/solid { [] 0 setdash } def
+
+/max % result = MAX(arg1,arg2)
+{
+ /a exch def
+ /b exch def
+ a b gt {a} {b} ifelse
+} def
+
+/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2)
+{
+ 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max
+} def
+
+/cw % boxwidth = MAX(boxwidth, stringwidth(arg1))
+{
+ /str exch def
+ /boxwidth boxwidth str stringwidth pop max def
+} def
+
+/box % draws a box with text `arg1' at grid pos (arg2,arg3)
+{ gsave
+ 2 setlinewidth
+ newpath
+ exch xspacing mul xoffset add
+ exch yspacing mul
+ moveto
+ boxwidth 0 rlineto
+ 0 boxheight rlineto
+ boxwidth neg 0 rlineto
+ 0 boxheight neg rlineto
+ closepath
+ dup stringwidth pop neg boxwidth add 2 div
+ boxheight fontheight 2 div sub 2 div
+ rmoveto show stroke
+ grestore
+} def
+
+/mark
+{ newpath
+ exch xspacing mul xoffset add boxwidth add
+ exch yspacing mul
+ moveto
+ 0 boxheight 4 div rlineto
+ boxheight neg 4 div boxheight neg 4 div rlineto
+ closepath
+ eofill
+ stroke
+} def
+
+/arrow
+{ newpath
+ moveto
+ 3 -8 rlineto
+ -6 0 rlineto
+ 3 8 rlineto
+ closepath
+ eofill
+ stroke
+} def
+
+/out % draws an output connector for the block at (arg1,arg2)
+{
+ newpath
+ exch xspacing mul xoffset add boxwidth 2 div add
+ exch yspacing mul boxheight add
+ /y exch def
+ /x exch def
+ x y moveto
+ 0 disty 2 div rlineto
+ stroke
+ 1 eq { x y disty 2 div add arrow } if
+} def
+
+/in % draws an input connector for the block at (arg1,arg2)
+{
+ newpath
+ exch xspacing mul xoffset add boxwidth 2 div add
+ exch yspacing mul disty 2 div sub
+ /y exch def
+ /x exch def
+ x y moveto
+ 0 disty 2 div rlineto
+ stroke
+ 1 eq { x y disty 2 div add arrow } if
+} def
+
+/hedge
+{
+ exch xspacing mul xoffset add boxwidth 2 div add
+ exch yspacing mul boxheight 2 div sub
+ /y exch def
+ /x exch def
+ newpath
+ x y moveto
+ boxwidth 2 div distx add 0 rlineto
+ stroke
+ 1 eq
+ { newpath x boxwidth 2 div distx add add y moveto
+ -8 3 rlineto
+ 0 -6 rlineto
+ 8 3 rlineto
+ closepath
+ eofill
+ stroke
+ } if
+} def
+
+/vedge
+{
+ /ye exch def
+ /ys exch def
+ /xs exch def
+ newpath
+ xs xspacing mul xoffset add boxwidth 2 div add dup
+ ys yspacing mul boxheight 2 div sub
+ moveto
+ ye yspacing mul boxheight 2 div sub
+ lineto
+ stroke
+} def
+
+/conn % connections the blocks from col `arg1' to `arg2' of row `arg3'
+{
+ /ys exch def
+ /xe exch def
+ /xs exch def
+ newpath
+ xs xspacing mul xoffset add boxwidth 2 div add
+ ys yspacing mul disty 2 div sub
+ moveto
+ xspacing xe xs sub mul 0
+ rlineto
+ stroke
+} def
+
+% ----- main ------
+
+boxfont setfont
+1 boundaspect scale
+(cFileHandle) cw
+(cLiveReceiver) cw
+/boxwidth boxwidth marginwidth 2 mul add def
+/xspacing boxwidth distx add def
+/yspacing boxheight disty add def
+/scalefactor
+ boxwidth cols mul distx cols 1 sub mul add
+ boxheight rows mul disty rows 1 sub mul add boundaspect mul
+ max def
+boundx scalefactor div boundy scalefactor div scale
+
+% ----- classes -----
+
+ (cFileHandle) 0 1 box
+ (cLiveReceiver) 0 0 box
+
+% ----- relations -----
+
+solid
+1 0 0.25 out
+solid
+0 0 0.75 in
diff --git a/doc/latex/classcFileHandle.pdf b/doc/latex/classcFileHandle.pdf
new file mode 100644
index 0000000..265f7d0
--- /dev/null
+++ b/doc/latex/classcFileHandle.pdf
Binary files differ
diff --git a/doc/latex/classcFileHandle.tex b/doc/latex/classcFileHandle.tex
new file mode 100644
index 0000000..45a47a9
--- /dev/null
+++ b/doc/latex/classcFileHandle.tex
@@ -0,0 +1,168 @@
+\hypertarget{classcFileHandle}{
+\section{cFileHandle Class Reference}
+\label{classcFileHandle}\index{cFileHandle@{cFileHandle}}
+}
+{\tt \#include $<$filehandle.h$>$}
+
+Inheritance diagram for cFileHandle:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcFileHandle__inherit__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual void \hyperlink{classcFileHandle_cdf4f4d07382de675b498d85544ea1b6}{open} (UpnpOpenFileMode mode)=0
+\item
+virtual int \hyperlink{classcFileHandle_458f25a4c7f62d528cffc84e66d38e7d}{read} (char $\ast$buf, size\_\-t buflen)=0
+\item
+virtual int \hyperlink{classcFileHandle_e1495303f52f6f2d7ac37a030f78a937}{write} (char $\ast$buf, size\_\-t buflen)=0
+\item
+virtual int \hyperlink{classcFileHandle_d2dde523301abe5e79e6109a93ba705b}{seek} (off\_\-t offset, int whence)=0
+\item
+virtual void \hyperlink{classcFileHandle_d7eaed7d254a64c85a48c3968238b93d}{close} ()=0
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Interface for File Handles
+
+This class is a pure virtual class to act as an interface for file handles used by the webserver.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcFileHandle_d7eaed7d254a64c85a48c3968238b93d}{
+\index{cFileHandle@{cFileHandle}!close@{close}}
+\index{close@{close}!cFileHandle@{cFileHandle}}
+\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}virtual void cFileHandle::close ()\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcFileHandle_d7eaed7d254a64c85a48c3968238b93d}
+
+
+Closes the open file
+
+This will close open file handles and frees the memory obtained by it.
+
+Implemented in \hyperlink{classcLiveReceiver_5b8beb2bc6809aacbdb087e31e836a27}{cLiveReceiver}, and \hyperlink{classcRecordingPlayer_5e81aeecd16f89e432690a9b05d8dd6a}{cRecordingPlayer}.\hypertarget{classcFileHandle_cdf4f4d07382de675b498d85544ea1b6}{
+\index{cFileHandle@{cFileHandle}!open@{open}}
+\index{open@{open}!cFileHandle@{cFileHandle}}
+\subsubsection[{open}]{\setlength{\rightskip}{0pt plus 5cm}virtual void cFileHandle::open (UpnpOpenFileMode {\em mode})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcFileHandle_cdf4f4d07382de675b498d85544ea1b6}
+
+
+Opens the file
+
+Opens the file at the given mode. These can be:\begin{itemize}
+\item {\bf UPNP\_\-READ}, to read from the file\item {\bf UPNP\_\-WRITE}, to write to the file\end{itemize}
+
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em mode}]The file mode, i.e. one of the following\begin{itemize}
+\item {\bf UPNP\_\-READ} \item {\bf UPNP\_\-WRITE} \end{itemize}
+\end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em mode}]The file mode, i.e. one of the following\begin{itemize}
+\item {\bf UPNP\_\-READ} \item {\bf UPNP\_\-WRITE} \end{itemize}
+\end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcLiveReceiver_b8e751f641be1da4a925106e3dd062e9}{cLiveReceiver}, and \hyperlink{classcRecordingPlayer_e7ad4362d821f38db5143c0aeff15d97}{cRecordingPlayer}.\hypertarget{classcFileHandle_458f25a4c7f62d528cffc84e66d38e7d}{
+\index{cFileHandle@{cFileHandle}!read@{read}}
+\index{read@{read}!cFileHandle@{cFileHandle}}
+\subsubsection[{read}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cFileHandle::read (char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcFileHandle_458f25a4c7f62d528cffc84e66d38e7d}
+
+
+Reads from the file
+
+Reads from the file a certain amount of bytes and stores them in a buffer
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcLiveReceiver_4a19e1fd4e1d043fb091bfb01a9cbf08}{cLiveReceiver}, and \hyperlink{classcRecordingPlayer_e0fda8b0be8e47133698f1763e649b3d}{cRecordingPlayer}.\hypertarget{classcFileHandle_d2dde523301abe5e79e6109a93ba705b}{
+\index{cFileHandle@{cFileHandle}!seek@{seek}}
+\index{seek@{seek}!cFileHandle@{cFileHandle}}
+\subsubsection[{seek}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cFileHandle::seek (off\_\-t {\em offset}, \/ int {\em whence})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcFileHandle_d2dde523301abe5e79e6109a93ba705b}
+
+
+Seeks in the file
+
+Seeks in the file where the offset is the relativ position depending on the second parameter. This means, in case of
+
+\begin{itemize}
+\item {\bf SEEK\_\-SET}, the offset is relative to the beginning of the file\item {\bf SEEK\_\-CUR}, it is relative to the current position or\item {\bf SEEK\_\-END}, relative to the end of the file.\end{itemize}
+
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em offset}]The byte offset in the file \item[{\em whence}]one of the following\begin{itemize}
+\item {\bf SEEK\_\-SET},\item {\bf SEEK\_\-CUR},\item {\bf SEEK\_\-END} \end{itemize}
+\end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em offset}]The byte offset in the file \item[{\em whence}]one of the following\begin{itemize}
+\item {\bf SEEK\_\-SET},\item {\bf SEEK\_\-CUR},\item {\bf SEEK\_\-END} \end{itemize}
+\end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcLiveReceiver_efb4156ef247773873dee42053e94edf}{cLiveReceiver}, and \hyperlink{classcRecordingPlayer_43f7ba867374d6be9e78c68c872bf608}{cRecordingPlayer}.\hypertarget{classcFileHandle_e1495303f52f6f2d7ac37a030f78a937}{
+\index{cFileHandle@{cFileHandle}!write@{write}}
+\index{write@{write}!cFileHandle@{cFileHandle}}
+\subsubsection[{write}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cFileHandle::write (char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcFileHandle_e1495303f52f6f2d7ac37a030f78a937}
+
+
+Writes to the file
+
+Writes to the file a certain amount of bytes which are stored in a buffer
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcLiveReceiver_eb56988441b589b6e34ea01825dfb183}{cLiveReceiver}, and \hyperlink{classcRecordingPlayer_7dd0cb78ae8032eb677f01d71187d6e0}{cRecordingPlayer}.
+
+The documentation for this class was generated from the following file:\begin{CompactItemize}
+\item
+receiver/filehandle.h\end{CompactItemize}
diff --git a/doc/latex/classcFileHandle__inherit__graph.eps b/doc/latex/classcFileHandle__inherit__graph.eps
new file mode 100644
index 0000000..faa4693
--- /dev/null
+++ b/doc/latex/classcFileHandle__inherit__graph.eps
@@ -0,0 +1,462 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 282 452
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 246 416 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 73 288 moveto
+73 408 lineto
+161 408 lineto
+161 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 73 288 moveto
+73 408 lineto
+161 408 lineto
+161 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 395 moveto 51 (cFileHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 73 388 moveto
+161 388 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+115.5 375 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 73 368 moveto
+161 368 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81 355 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81 343 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81 331 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81 319 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81 307 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81 295 moveto 72 (+ ~cFileHandle\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 6 106 246 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcLiveReceiver.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 6 moveto
+0 246 lineto
+106 246 lineto
+106 6 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 6 moveto
+0 246 lineto
+106 246 lineto
+106 6 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 233 moveto 62 (cLiveReceiver) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 226 moveto
+106 226 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 213 moveto 44 (- mDevice) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 201 moveto 50 (- mChannel) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 189 moveto 58 (- mLiveBuffer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 177 moveto 69 (- mOutputBuffer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 165 moveto 79 (- mFrameDetector) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 153 moveto 90 (- mPatPmtGenerator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 146 moveto
+106 146 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 133 moveto 83 (+ ~cLiveReceiver\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 121 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 109 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 97 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 85 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 73 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 61 moveto 70 (+ newInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 49 moveto 50 (# Receive\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 37 moveto 50 (# Activate\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 25 moveto 42 (# Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 13 moveto 74 (- cLiveReceiver\(\)) alignedtext
+grestore
+% Node1->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 97 278 moveto
+94 268 91 257 88 246 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 93.77 279.43 moveto
+100 288 lineto
+100.48 277.42 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 124 0 238 252 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRecordingPlayer.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 124 0 moveto
+124 252 lineto
+238 252 lineto
+238 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 124 0 moveto
+124 252 lineto
+238 252 lineto
+238 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+142.5 239 moveto 77 (cRecordingPlayer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 124 232 moveto
+238 232 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 219 moveto 58 (- mRecording) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 207 moveto 46 (- mOffsets) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 195 moveto 41 (- mOffset) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 183 moveto 65 (- mTotalLenght) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 171 moveto 38 (- mIndex) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 159 moveto 30 (- mFile) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 124 152 moveto
+238 152 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 139 moveto 98 (+ ~cRecordingPlayer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 127 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 115 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 103 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 91 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 79 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 67 moveto 70 (+ newInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 55 moveto 35 (- Scan\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 43 moveto 89 (- cRecordingPlayer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 31 moveto 44 (- GetFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 19 moveto 48 (- NextFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+132 7 moveto 59 (- SeekInFile\(\)) alignedtext
+grestore
+% Node1->Node3
+gsave
+1 setlinewidth
+solid
+0.000 0.812 0.545 edgecolor
+newpath 137 278 moveto
+139 270 142 261 144 252 curveto
+stroke
+1 setlinewidth
+solid
+0.000 0.812 0.545 edgecolor
+newpath 133.52 277.42 moveto
+134 288 lineto
+140.23 279.43 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 282 452
+end
+restore
+%%EOF
diff --git a/doc/latex/classcFileHandle__inherit__graph.md5 b/doc/latex/classcFileHandle__inherit__graph.md5
new file mode 100644
index 0000000..34d1eeb
--- /dev/null
+++ b/doc/latex/classcFileHandle__inherit__graph.md5
@@ -0,0 +1 @@
+adddfff4f4a023c276e668f4f33a9497 \ No newline at end of file
diff --git a/doc/latex/classcFileHandle__inherit__graph.pdf b/doc/latex/classcFileHandle__inherit__graph.pdf
new file mode 100644
index 0000000..131f9df
--- /dev/null
+++ b/doc/latex/classcFileHandle__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcFilterCriteria.tex b/doc/latex/classcFilterCriteria.tex
new file mode 100644
index 0000000..13d9216
--- /dev/null
+++ b/doc/latex/classcFilterCriteria.tex
@@ -0,0 +1,43 @@
+\hypertarget{classcFilterCriteria}{
+\section{cFilterCriteria Class Reference}
+\label{classcFilterCriteria}\index{cFilterCriteria@{cFilterCriteria}}
+}
+{\tt \#include $<$search.h$>$}
+
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static cStringList $\ast$ \hyperlink{classcFilterCriteria_e327772fdf9f8db127c7ce1a737f1c7c}{parse} (const char $\ast$Filter)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Parses the filter criteria
+
+This parses the filter criteria which comes from a {\em Browse\/} or {\em Search\/} request.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcFilterCriteria_e327772fdf9f8db127c7ce1a737f1c7c}{
+\index{cFilterCriteria@{cFilterCriteria}!parse@{parse}}
+\index{parse@{parse}!cFilterCriteria@{cFilterCriteria}}
+\subsubsection[{parse}]{\setlength{\rightskip}{0pt plus 5cm}cStringList $\ast$ cFilterCriteria::parse (const char $\ast$ {\em Filter})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcFilterCriteria_e327772fdf9f8db127c7ce1a737f1c7c}
+
+
+Parses the filter criteria
+
+This parses the filter criteria. It may be a empty string list, a {\bf {\tt NULL} pointer} or a list with properties which shall be shown in the {\em DIDL-Lite\/} fragment.
+
+\begin{Desc}
+\item[Returns:]the stringlist containing the filter \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Filter}]the filter string \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+misc/search.h\item
+misc/search.cpp\end{CompactItemize}
diff --git a/doc/latex/classcLiveReceiver.eps b/doc/latex/classcLiveReceiver.eps
new file mode 100644
index 0000000..015ba18
--- /dev/null
+++ b/doc/latex/classcLiveReceiver.eps
@@ -0,0 +1,197 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ClassName
+%%Creator: Doxygen
+%%CreationDate: Time
+%%For:
+%Magnification: 1.00
+%%Orientation: Portrait
+%%BoundingBox: 0 0 500 392.157
+%%Pages: 0
+%%BeginSetup
+%%EndSetup
+%%EndComments
+
+% ----- variables -----
+
+/boxwidth 0 def
+/boxheight 40 def
+/fontheight 24 def
+/marginwidth 10 def
+/distx 20 def
+/disty 40 def
+/boundaspect 1.275 def % aspect ratio of the BoundingBox (width/height)
+/boundx 500 def
+/boundy boundx boundaspect div def
+/xspacing 0 def
+/yspacing 0 def
+/rows 2 def
+/cols 1 def
+/scalefactor 0 def
+/boxfont /Times-Roman findfont fontheight scalefont def
+
+% ----- procedures -----
+
+/dotted { [1 4] 0 setdash } def
+/dashed { [5] 0 setdash } def
+/solid { [] 0 setdash } def
+
+/max % result = MAX(arg1,arg2)
+{
+ /a exch def
+ /b exch def
+ a b gt {a} {b} ifelse
+} def
+
+/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2)
+{
+ 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max
+} def
+
+/cw % boxwidth = MAX(boxwidth, stringwidth(arg1))
+{
+ /str exch def
+ /boxwidth boxwidth str stringwidth pop max def
+} def
+
+/box % draws a box with text `arg1' at grid pos (arg2,arg3)
+{ gsave
+ 2 setlinewidth
+ newpath
+ exch xspacing mul xoffset add
+ exch yspacing mul
+ moveto
+ boxwidth 0 rlineto
+ 0 boxheight rlineto
+ boxwidth neg 0 rlineto
+ 0 boxheight neg rlineto
+ closepath
+ dup stringwidth pop neg boxwidth add 2 div
+ boxheight fontheight 2 div sub 2 div
+ rmoveto show stroke
+ grestore
+} def
+
+/mark
+{ newpath
+ exch xspacing mul xoffset add boxwidth add
+ exch yspacing mul
+ moveto
+ 0 boxheight 4 div rlineto
+ boxheight neg 4 div boxheight neg 4 div rlineto
+ closepath
+ eofill
+ stroke
+} def
+
+/arrow
+{ newpath
+ moveto
+ 3 -8 rlineto
+ -6 0 rlineto
+ 3 8 rlineto
+ closepath
+ eofill
+ stroke
+} def
+
+/out % draws an output connector for the block at (arg1,arg2)
+{
+ newpath
+ exch xspacing mul xoffset add boxwidth 2 div add
+ exch yspacing mul boxheight add
+ /y exch def
+ /x exch def
+ x y moveto
+ 0 disty 2 div rlineto
+ stroke
+ 1 eq { x y disty 2 div add arrow } if
+} def
+
+/in % draws an input connector for the block at (arg1,arg2)
+{
+ newpath
+ exch xspacing mul xoffset add boxwidth 2 div add
+ exch yspacing mul disty 2 div sub
+ /y exch def
+ /x exch def
+ x y moveto
+ 0 disty 2 div rlineto
+ stroke
+ 1 eq { x y disty 2 div add arrow } if
+} def
+
+/hedge
+{
+ exch xspacing mul xoffset add boxwidth 2 div add
+ exch yspacing mul boxheight 2 div sub
+ /y exch def
+ /x exch def
+ newpath
+ x y moveto
+ boxwidth 2 div distx add 0 rlineto
+ stroke
+ 1 eq
+ { newpath x boxwidth 2 div distx add add y moveto
+ -8 3 rlineto
+ 0 -6 rlineto
+ 8 3 rlineto
+ closepath
+ eofill
+ stroke
+ } if
+} def
+
+/vedge
+{
+ /ye exch def
+ /ys exch def
+ /xs exch def
+ newpath
+ xs xspacing mul xoffset add boxwidth 2 div add dup
+ ys yspacing mul boxheight 2 div sub
+ moveto
+ ye yspacing mul boxheight 2 div sub
+ lineto
+ stroke
+} def
+
+/conn % connections the blocks from col `arg1' to `arg2' of row `arg3'
+{
+ /ys exch def
+ /xe exch def
+ /xs exch def
+ newpath
+ xs xspacing mul xoffset add boxwidth 2 div add
+ ys yspacing mul disty 2 div sub
+ moveto
+ xspacing xe xs sub mul 0
+ rlineto
+ stroke
+} def
+
+% ----- main ------
+
+boxfont setfont
+1 boundaspect scale
+(cLiveReceiver) cw
+(cFileHandle) cw
+/boxwidth boxwidth marginwidth 2 mul add def
+/xspacing boxwidth distx add def
+/yspacing boxheight disty add def
+/scalefactor
+ boxwidth cols mul distx cols 1 sub mul add
+ boxheight rows mul disty rows 1 sub mul add boundaspect mul
+ max def
+boundx scalefactor div boundy scalefactor div scale
+
+% ----- classes -----
+
+ (cLiveReceiver) 0 0 box
+ (cFileHandle) 0 1 box
+
+% ----- relations -----
+
+solid
+0 0 0 out
+solid
+1 0 1 in
diff --git a/doc/latex/classcLiveReceiver.pdf b/doc/latex/classcLiveReceiver.pdf
new file mode 100644
index 0000000..5971ba6
--- /dev/null
+++ b/doc/latex/classcLiveReceiver.pdf
Binary files differ
diff --git a/doc/latex/classcLiveReceiver.tex b/doc/latex/classcLiveReceiver.tex
new file mode 100644
index 0000000..53fc497
--- /dev/null
+++ b/doc/latex/classcLiveReceiver.tex
@@ -0,0 +1,229 @@
+\hypertarget{classcLiveReceiver}{
+\section{cLiveReceiver Class Reference}
+\label{classcLiveReceiver}\index{cLiveReceiver@{cLiveReceiver}}
+}
+{\tt \#include $<$livereceiver.h$>$}
+
+Inheritance diagram for cLiveReceiver:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcLiveReceiver__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cLiveReceiver:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcLiveReceiver__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual void \hyperlink{classcLiveReceiver_b8e751f641be1da4a925106e3dd062e9}{open} (UpnpOpenFileMode mode)
+\item
+virtual int \hyperlink{classcLiveReceiver_4a19e1fd4e1d043fb091bfb01a9cbf08}{read} (char $\ast$buf, size\_\-t buflen)
+\item
+virtual int \hyperlink{classcLiveReceiver_eb56988441b589b6e34ea01825dfb183}{write} (char $\ast$buf, size\_\-t buflen)
+\item
+virtual int \hyperlink{classcLiveReceiver_efb4156ef247773873dee42053e94edf}{seek} (off\_\-t offset, int whence)
+\item
+virtual void \hyperlink{classcLiveReceiver_5b8beb2bc6809aacbdb087e31e836a27}{close} ()
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static \hyperlink{classcLiveReceiver}{cLiveReceiver} $\ast$ \hyperlink{classcLiveReceiver_1e28c50bb73404597b2363422e038c12}{newInstance} (cChannel $\ast$Channel, int Priority)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual void \hyperlink{classcLiveReceiver_c8bc191994b0acd3fa2d23b26f996f8a}{Receive} (uchar $\ast$Data, int Length)
+\item
+virtual void \hyperlink{classcLiveReceiver_631c7392c3226b07ba654875580fb26c}{Activate} (bool On)
+\item
+virtual void \hyperlink{classcLiveReceiver_5c1f30f48fdc612c19ff4b9b4c176b07}{Action} (void)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+A receiver for live TV
+
+This is a receiver object which is attached to a VDR tv card device. It is receiving transport stream packages and generates a single MPEG2 transport stream which can be distributed through the network.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcLiveReceiver_5c1f30f48fdc612c19ff4b9b4c176b07}{
+\index{cLiveReceiver@{cLiveReceiver}!Action@{Action}}
+\index{Action@{Action}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{Action}]{\setlength{\rightskip}{0pt plus 5cm}void cLiveReceiver::Action (void)\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcLiveReceiver_5c1f30f48fdc612c19ff4b9b4c176b07}
+
+
+The receiver thread action
+
+This actually is the receiver thread, which runs consequitivelly and buffers any received video data from the interal incoming buffer to the internal outgoing buffer.
+
+While doing so, it tries to syncronize with the stream and creates new MPEG2-TS PATs and PMTs for a single MPEG2-TS stream \hypertarget{classcLiveReceiver_631c7392c3226b07ba654875580fb26c}{
+\index{cLiveReceiver@{cLiveReceiver}!Activate@{Activate}}
+\index{Activate@{Activate}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{Activate}]{\setlength{\rightskip}{0pt plus 5cm}void cLiveReceiver::Activate (bool {\em On})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcLiveReceiver_631c7392c3226b07ba654875580fb26c}
+
+
+Activates the receiver
+
+This activates the receiver which initializes internal data structures to be prepared for receiving data from the VDR
+
+If the parameter is {\bf {\tt true},} the receiver will be activated. If it is {\bf {\tt false},} the receiver will be deactivated and stops its threads. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em On}]Activates the receiver thread \end{description}
+\end{Desc}
+\hypertarget{classcLiveReceiver_5b8beb2bc6809aacbdb087e31e836a27}{
+\index{cLiveReceiver@{cLiveReceiver}!close@{close}}
+\index{close@{close}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}void cLiveReceiver::close ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcLiveReceiver_5b8beb2bc6809aacbdb087e31e836a27}
+
+
+Closes the open file
+
+This will close open file handles and frees the memory obtained by it.
+
+Implements \hyperlink{classcFileHandle_d7eaed7d254a64c85a48c3968238b93d}{cFileHandle}.\hypertarget{classcLiveReceiver_1e28c50bb73404597b2363422e038c12}{
+\index{cLiveReceiver@{cLiveReceiver}!newInstance@{newInstance}}
+\index{newInstance@{newInstance}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{newInstance}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cLiveReceiver} $\ast$ cLiveReceiver::newInstance (cChannel $\ast$ {\em Channel}, \/ int {\em Priority})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcLiveReceiver_1e28c50bb73404597b2363422e038c12}
+
+
+Creates a new receiver instance
+
+This will create a new instance of a live receiver for the specified channel at the specified priority level.
+
+A negativ priority means that the receiver may being detached from a device.
+
+The receiver must be free'd with delete after it is not used anylonger.
+
+\begin{Desc}
+\item[Returns:]returns a new liveReceiver instance \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Channel}]the channel which shall be tuned \item[{\em Priority}]the priority level \end{description}
+\end{Desc}
+\hypertarget{classcLiveReceiver_b8e751f641be1da4a925106e3dd062e9}{
+\index{cLiveReceiver@{cLiveReceiver}!open@{open}}
+\index{open@{open}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{open}]{\setlength{\rightskip}{0pt plus 5cm}void cLiveReceiver::open (UpnpOpenFileMode {\em mode})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcLiveReceiver_b8e751f641be1da4a925106e3dd062e9}
+
+
+Opens the file
+
+Opens the file at the given mode. These can be:\begin{itemize}
+\item {\bf UPNP\_\-READ}, to read from the file\item {\bf UPNP\_\-WRITE}, to write to the file\end{itemize}
+
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em mode}]The file mode, i.e. one of the following\begin{itemize}
+\item {\bf UPNP\_\-READ} \item {\bf UPNP\_\-WRITE} \end{itemize}
+\end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_cdf4f4d07382de675b498d85544ea1b6}{cFileHandle}.\hypertarget{classcLiveReceiver_4a19e1fd4e1d043fb091bfb01a9cbf08}{
+\index{cLiveReceiver@{cLiveReceiver}!read@{read}}
+\index{read@{read}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{read}]{\setlength{\rightskip}{0pt plus 5cm}int cLiveReceiver::read (char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcLiveReceiver_4a19e1fd4e1d043fb091bfb01a9cbf08}
+
+
+Reads from the file
+
+Reads from the file a certain amount of bytes and stores them in a buffer
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_458f25a4c7f62d528cffc84e66d38e7d}{cFileHandle}.\hypertarget{classcLiveReceiver_c8bc191994b0acd3fa2d23b26f996f8a}{
+\index{cLiveReceiver@{cLiveReceiver}!Receive@{Receive}}
+\index{Receive@{Receive}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{Receive}]{\setlength{\rightskip}{0pt plus 5cm}void cLiveReceiver::Receive (uchar $\ast$ {\em Data}, \/ int {\em Length})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcLiveReceiver_c8bc191994b0acd3fa2d23b26f996f8a}
+
+
+Receives data from VDR
+
+This is the interface for receiving packet data from the VDR. It buffers the incoming transport stream packets in a linear ringbuffer and returns immediatelly \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Data}]The data received from VDR \item[{\em Length}]The length of the data packet, usually 188 bytes \end{description}
+\end{Desc}
+\hypertarget{classcLiveReceiver_efb4156ef247773873dee42053e94edf}{
+\index{cLiveReceiver@{cLiveReceiver}!seek@{seek}}
+\index{seek@{seek}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{seek}]{\setlength{\rightskip}{0pt plus 5cm}int cLiveReceiver::seek (off\_\-t {\em offset}, \/ int {\em whence})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcLiveReceiver_efb4156ef247773873dee42053e94edf}
+
+
+Seeks in the file
+
+Seeks in the file where the offset is the relativ position depending on the second parameter. This means, in case of
+
+\begin{itemize}
+\item {\bf SEEK\_\-SET}, the offset is relative to the beginning of the file\item {\bf SEEK\_\-CUR}, it is relative to the current position or\item {\bf SEEK\_\-END}, relative to the end of the file.\end{itemize}
+
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em offset}]The byte offset in the file \item[{\em whence}]one of the following\begin{itemize}
+\item {\bf SEEK\_\-SET},\item {\bf SEEK\_\-CUR},\item {\bf SEEK\_\-END} \end{itemize}
+\end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_d2dde523301abe5e79e6109a93ba705b}{cFileHandle}.\hypertarget{classcLiveReceiver_eb56988441b589b6e34ea01825dfb183}{
+\index{cLiveReceiver@{cLiveReceiver}!write@{write}}
+\index{write@{write}!cLiveReceiver@{cLiveReceiver}}
+\subsubsection[{write}]{\setlength{\rightskip}{0pt plus 5cm}int cLiveReceiver::write (char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcLiveReceiver_eb56988441b589b6e34ea01825dfb183}
+
+
+Writes to the file
+
+Writes to the file a certain amount of bytes which are stored in a buffer
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_e1495303f52f6f2d7ac37a030f78a937}{cFileHandle}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+receiver/livereceiver.h\item
+receiver/livereceiver.cpp\end{CompactItemize}
diff --git a/doc/latex/classcLiveReceiver__coll__graph.eps b/doc/latex/classcLiveReceiver__coll__graph.eps
new file mode 100644
index 0000000..e9f44e7
--- /dev/null
+++ b/doc/latex/classcLiveReceiver__coll__graph.eps
@@ -0,0 +1,355 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 150 440
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 114 404 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+106 240 lineto
+106 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+106 240 lineto
+106 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 227 moveto 62 (cLiveReceiver) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 220 moveto
+106 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 44 (- mDevice) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 50 (- mChannel) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 58 (- mLiveBuffer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 69 (- mOutputBuffer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 159 moveto 79 (- mFrameDetector) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 147 moveto 90 (- mPatPmtGenerator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 140 moveto
+106 140 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 83 (+ ~cLiveReceiver\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 70 (+ newInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 50 (# Receive\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 50 (# Activate\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 42 (# Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 74 (- cLiveReceiver\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 9 276 97 396 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcFileHandle.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 9 276 moveto
+9 396 lineto
+97 396 lineto
+97 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 276 moveto
+9 396 lineto
+97 396 lineto
+97 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+27.5 383 moveto 51 (cFileHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 376 moveto
+97 376 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+51.5 363 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 356 moveto
+97 356 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 343 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 331 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 319 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 307 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 295 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 283 moveto 72 (+ ~cFileHandle\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 53 266 moveto
+53 258 53 249 53 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 49.5 266 moveto
+53 276 lineto
+56.5 266 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 150 440
+end
+restore
+%%EOF
diff --git a/doc/latex/classcLiveReceiver__coll__graph.md5 b/doc/latex/classcLiveReceiver__coll__graph.md5
new file mode 100644
index 0000000..eb7c6c8
--- /dev/null
+++ b/doc/latex/classcLiveReceiver__coll__graph.md5
@@ -0,0 +1 @@
+79e6d45387ad15618ce17cf2646a3159 \ No newline at end of file
diff --git a/doc/latex/classcLiveReceiver__coll__graph.pdf b/doc/latex/classcLiveReceiver__coll__graph.pdf
new file mode 100644
index 0000000..d09cd5e
--- /dev/null
+++ b/doc/latex/classcLiveReceiver__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcLiveReceiver__inherit__graph.eps b/doc/latex/classcLiveReceiver__inherit__graph.eps
new file mode 100644
index 0000000..e9f44e7
--- /dev/null
+++ b/doc/latex/classcLiveReceiver__inherit__graph.eps
@@ -0,0 +1,355 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 150 440
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 114 404 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+106 240 lineto
+106 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+106 240 lineto
+106 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 227 moveto 62 (cLiveReceiver) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 220 moveto
+106 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 44 (- mDevice) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 50 (- mChannel) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 58 (- mLiveBuffer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 69 (- mOutputBuffer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 159 moveto 79 (- mFrameDetector) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 147 moveto 90 (- mPatPmtGenerator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 140 moveto
+106 140 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 83 (+ ~cLiveReceiver\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 70 (+ newInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 50 (# Receive\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 50 (# Activate\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 42 (# Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 74 (- cLiveReceiver\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 9 276 97 396 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcFileHandle.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 9 276 moveto
+9 396 lineto
+97 396 lineto
+97 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 276 moveto
+9 396 lineto
+97 396 lineto
+97 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+27.5 383 moveto 51 (cFileHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 376 moveto
+97 376 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+51.5 363 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 356 moveto
+97 356 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 343 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 331 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 319 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 307 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 295 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 283 moveto 72 (+ ~cFileHandle\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 53 266 moveto
+53 258 53 249 53 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 49.5 266 moveto
+53 276 lineto
+56.5 266 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 150 440
+end
+restore
+%%EOF
diff --git a/doc/latex/classcLiveReceiver__inherit__graph.md5 b/doc/latex/classcLiveReceiver__inherit__graph.md5
new file mode 100644
index 0000000..eb7c6c8
--- /dev/null
+++ b/doc/latex/classcLiveReceiver__inherit__graph.md5
@@ -0,0 +1 @@
+79e6d45387ad15618ce17cf2646a3159 \ No newline at end of file
diff --git a/doc/latex/classcLiveReceiver__inherit__graph.pdf b/doc/latex/classcLiveReceiver__inherit__graph.pdf
new file mode 100644
index 0000000..5e76fb7
--- /dev/null
+++ b/doc/latex/classcLiveReceiver__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcMediaDatabase.tex b/doc/latex/classcMediaDatabase.tex
new file mode 100644
index 0000000..d159721
--- /dev/null
+++ b/doc/latex/classcMediaDatabase.tex
@@ -0,0 +1,205 @@
+\hypertarget{classcMediaDatabase}{
+\section{cMediaDatabase Class Reference}
+\label{classcMediaDatabase}\index{cMediaDatabase@{cMediaDatabase}}
+}
+{\tt \#include $<$metadata.h$>$}
+
+Collaboration diagram for cMediaDatabase:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcMediaDatabase__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+unsigned int \hyperlink{classcMediaDatabase_96232caa30b80d4e3ca667c317101fd0}{getSystemUpdateID} ()
+\item
+const char $\ast$ \hyperlink{classcMediaDatabase_dadd330e273e0f354d51b76cee436198}{getContainerUpdateIDs} ()
+\item
+\hyperlink{classcMediaDatabase_ace0720fbddbdd7f2e4ca5ad16d5acd2}{cMediaDatabase} ()
+\item
+int \hyperlink{classcMediaDatabase_1aec38e63143c7eb26012f1c74fe373d}{addFastFind} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, const char $\ast$FastFind)
+\item
+\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcMediaDatabase_b0fac893d82c29276d68b94569cfef1d}{getObjectByFastFind} (const char $\ast$FastFind)
+\item
+\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcMediaDatabase_b8da7da9612c64de0ddf88db3c316d5a}{getObjectByID} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\item
+int \hyperlink{classcMediaDatabase_25ff666113dbe72598e4ef4e23af5d8f}{browse} (OUT \hyperlink{structcUPnPResultSet}{cUPnPResultSet} $\ast$$\ast$Results, IN const char $\ast$ID, IN bool BrowseMetadata, IN const char $\ast$Filter=\char`\"{}$\ast$\char`\"{}, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char $\ast$SortCriteria=\char`\"{}\char`\"{})
+\item
+int \hyperlink{classcMediaDatabase_36bdc240d3fa11d685440d365d9ab8c9}{search} (OUT \hyperlink{structcUPnPResultSet}{cUPnPResultSet} $\ast$$\ast$Results, IN const char $\ast$ID, IN const char $\ast$Search, IN const char $\ast$Filter=\char`\"{}$\ast$\char`\"{}, IN unsigned int Offset=0, IN unsigned int Count=0, IN const char $\ast$SortCriteria=\char`\"{}\char`\"{})
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcMediaDatabase_02ebb94fd2cdff4bfb2da3267446d62b}{
+class \hyperlink{classcMediaDatabase_02ebb94fd2cdff4bfb2da3267446d62b}{cUPnPServer}}
+\label{classcMediaDatabase_02ebb94fd2cdff4bfb2da3267446d62b}
+
+\item
+\hypertarget{classcMediaDatabase_aefab39434a832c545ac75a79fa81d23}{
+class \hyperlink{classcMediaDatabase_aefab39434a832c545ac75a79fa81d23}{cUPnPObjectMediator}}
+\label{classcMediaDatabase_aefab39434a832c545ac75a79fa81d23}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The media database
+
+This class is the global object manager. It holds every object in a local cache. Only this class is allowed to create new objects.
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcUPnPClassObject}{cUPnPClassObject} \end{Desc}
+
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcMediaDatabase_ace0720fbddbdd7f2e4ca5ad16d5acd2}{
+\index{cMediaDatabase@{cMediaDatabase}!cMediaDatabase@{cMediaDatabase}}
+\index{cMediaDatabase@{cMediaDatabase}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{cMediaDatabase}]{\setlength{\rightskip}{0pt plus 5cm}cMediaDatabase::cMediaDatabase ()}}
+\label{classcMediaDatabase_ace0720fbddbdd7f2e4ca5ad16d5acd2}
+
+
+Constructor
+
+This creates an instance of the media database.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcMediaDatabase_1aec38e63143c7eb26012f1c74fe373d}{
+\index{cMediaDatabase@{cMediaDatabase}!addFastFind@{addFastFind}}
+\index{addFastFind@{addFastFind}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{addFastFind}]{\setlength{\rightskip}{0pt plus 5cm}int cMediaDatabase::addFastFind ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ const char $\ast$ {\em FastFind})}}
+\label{classcMediaDatabase_1aec38e63143c7eb26012f1c74fe373d}
+
+
+Add a Fastfind
+
+This creates a {\em Fastfind\/} entry. It is a string which can be used to relocate a objectID. Usually this is a file name or another ID with which the related object can be found.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt -1},} if the creation was successful\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object, which should be registered \item[{\em FastFind}]the string with which the object shall be relocated \end{description}
+\end{Desc}
+\hypertarget{classcMediaDatabase_25ff666113dbe72598e4ef4e23af5d8f}{
+\index{cMediaDatabase@{cMediaDatabase}!browse@{browse}}
+\index{browse@{browse}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{browse}]{\setlength{\rightskip}{0pt plus 5cm}int cMediaDatabase::browse (OUT {\bf cUPnPResultSet} $\ast$$\ast$ {\em Results}, \/ IN const char $\ast$ {\em ID}, \/ IN bool {\em BrowseMetadata}, \/ IN const char $\ast$ {\em Filter} = {\tt \char`\"{}$\ast$\char`\"{}}, \/ IN unsigned int {\em Offset} = {\tt 0}, \/ IN unsigned int {\em Count} = {\tt 0}, \/ IN const char $\ast$ {\em SortCriteria} = {\tt \char`\"{}\char`\"{}})}}
+\label{classcMediaDatabase_25ff666113dbe72598e4ef4e23af5d8f}
+
+
+Performs a browse on the database
+
+This performs a browse request on the database and returns a structure containing the matching count and DIDL-Lite fragement which is sent to the control point.
+
+\begin{Desc}
+\item[Returns:]returns an integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-CDS\_\-E\_\-INVALID\_\-SORT\_\-CRITERIA},} when the sort criteria is malformed\item {\bf {\tt UPNP\_\-CDS\_\-E\_\-CANT\_\-PROCESS\_\-REQUEST},} when there is an internal error while processing the request\item {\bf {\tt UPNP\_\-CDS\_\-E\_\-NO\_\-SUCH\_\-OBJECT},} when the requested ObjectID does not exist\item {\bf {\tt UPNP\_\-SOAP\_\-E\_\-ACTION\_\-FAILED},} when the action failed due any reasons\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if the request was successful \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Results}]the result of the request \item[{\em ID}]the objectID of the request \item[{\em BrowseMetadata}]{\bf true} to browse metadata, {\bf false} otherwise \item[{\em Filter}]the filter applied to the returned metadata \item[{\em Offset}]the starting offset \item[{\em Count}]maximum count returned \item[{\em SortCriteria}]sorts the results before returning them \end{description}
+\end{Desc}
+\hypertarget{classcMediaDatabase_dadd330e273e0f354d51b76cee436198}{
+\index{cMediaDatabase@{cMediaDatabase}!getContainerUpdateIDs@{getContainerUpdateIDs}}
+\index{getContainerUpdateIDs@{getContainerUpdateIDs}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{getContainerUpdateIDs}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cMediaDatabase::getContainerUpdateIDs ()}}
+\label{classcMediaDatabase_dadd330e273e0f354d51b76cee436198}
+
+
+Returns a CSV list with ContainerUpdateIDs
+
+This list contains an unordered list of ordered pairs of ContainerID and its ContainerUpdateID. It contains only recent changes which are not yet beeing evented. This means that evented updates will be removed from list.
+
+\begin{Desc}
+\item[Returns:]CSV list of ContainerUpdateIDs \end{Desc}
+\hypertarget{classcMediaDatabase_b0fac893d82c29276d68b94569cfef1d}{
+\index{cMediaDatabase@{cMediaDatabase}!getObjectByFastFind@{getObjectByFastFind}}
+\index{getObjectByFastFind@{getObjectByFastFind}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{getObjectByFastFind}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassObject} $\ast$ cMediaDatabase::getObjectByFastFind (const char $\ast$ {\em FastFind})}}
+\label{classcMediaDatabase_b0fac893d82c29276d68b94569cfef1d}
+
+
+Finds a object by Fastfind
+
+This returns the object via the {\em Fastfind\/} string. The object must be previosly registered via {\tt \hyperlink{classcMediaDatabase_1aec38e63143c7eb26012f1c74fe373d}{cMediaDatabase::addFastFind()}}.
+
+It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcMediaDatabase_1aec38e63143c7eb26012f1c74fe373d}{cMediaDatabase::addFastFind} \end{Desc}
+\begin{Desc}
+\item[Returns:]The object associated with FastFind \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em FastFind}]the string with which the object shall be relocated \end{description}
+\end{Desc}
+\hypertarget{classcMediaDatabase_b8da7da9612c64de0ddf88db3c316d5a}{
+\index{cMediaDatabase@{cMediaDatabase}!getObjectByID@{getObjectByID}}
+\index{getObjectByID@{getObjectByID}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{getObjectByID}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassObject} $\ast$ cMediaDatabase::getObjectByID ({\bf cUPnPObjectID} {\em ID})}}
+\label{classcMediaDatabase_b8da7da9612c64de0ddf88db3c316d5a}
+
+
+Finds a object by its ObjectID
+
+This returns the object via its {\em ObjectID\/}.
+
+It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.
+
+\begin{Desc}
+\item[Returns:]The object associated with FastFind \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]The ObjectID of the requested object \end{description}
+\end{Desc}
+\hypertarget{classcMediaDatabase_96232caa30b80d4e3ca667c317101fd0}{
+\index{cMediaDatabase@{cMediaDatabase}!getSystemUpdateID@{getSystemUpdateID}}
+\index{getSystemUpdateID@{getSystemUpdateID}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{getSystemUpdateID}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cMediaDatabase::getSystemUpdateID ()}}
+\label{classcMediaDatabase_96232caa30b80d4e3ca667c317101fd0}
+
+
+Returns the SystemUpdateID
+
+This returns the {\em SystemUpdateID\/}. This changes whenever anything changed within the content directory. This value will be sent through the UPnP network every 2 seconds.
+
+\begin{Desc}
+\item[Returns:]the SystemUpdateID \end{Desc}
+\hypertarget{classcMediaDatabase_36bdc240d3fa11d685440d365d9ab8c9}{
+\index{cMediaDatabase@{cMediaDatabase}!search@{search}}
+\index{search@{search}!cMediaDatabase@{cMediaDatabase}}
+\subsubsection[{search}]{\setlength{\rightskip}{0pt plus 5cm}int cMediaDatabase::search (OUT {\bf cUPnPResultSet} $\ast$$\ast$ {\em Results}, \/ IN const char $\ast$ {\em ID}, \/ IN const char $\ast$ {\em Search}, \/ IN const char $\ast$ {\em Filter} = {\tt \char`\"{}$\ast$\char`\"{}}, \/ IN unsigned int {\em Offset} = {\tt 0}, \/ IN unsigned int {\em Count} = {\tt 0}, \/ IN const char $\ast$ {\em SortCriteria} = {\tt \char`\"{}\char`\"{}})}}
+\label{classcMediaDatabase_36bdc240d3fa11d685440d365d9ab8c9}
+
+
+Performs a search on the database
+
+This performs a search request on the database and returns a structure containing the matching count and DIDL-Lite fragement which is sent to the control point.
+
+\begin{Desc}
+\item[Note:]The submitted ID must be a ContainerID. Searches are performed only in this container.\end{Desc}
+\begin{Desc}
+\item[Returns:]returns an integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-CDS\_\-E\_\-INVALID\_\-SORT\_\-CRITERIA},} when the sort criteria is malformed\item {\bf {\tt UPNP\_\-CDS\_\-E\_\-CANT\_\-PROCESS\_\-REQUEST},} when there is an internal error while processing the request\item {\bf {\tt UPNP\_\-CDS\_\-E\_\-NO\_\-SUCH\_\-OBJECT},} when the requested ObjectID does not exist\item {\bf {\tt UPNP\_\-SOAP\_\-E\_\-ACTION\_\-FAILED},} when the action failed due any reasons\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if the request was successful \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Results}]the result of the request \item[{\em ID}]the ContainerID \item[{\em Search}]the search string \item[{\em Filter}]the filter applied to the returned metadata \item[{\em Offset}]the starting offset \item[{\em Count}]maximum count returned \item[{\em SortCriteria}]sorts the results before returning them \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/metadata.h\item
+database/metadata.cpp\end{CompactItemize}
diff --git a/doc/latex/classcMediaDatabase__coll__graph.eps b/doc/latex/classcMediaDatabase__coll__graph.eps
new file mode 100644
index 0000000..79d0ce1
--- /dev/null
+++ b/doc/latex/classcMediaDatabase__coll__graph.eps
@@ -0,0 +1,1029 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 454 1388
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 418 1352 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 80 0 moveto
+80 324 lineto
+212 324 lineto
+212 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 80 0 moveto
+80 324 lineto
+212 324 lineto
+212 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+109.5 311 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 80 304 moveto
+212 304 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 291 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 279 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 267 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 255 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 243 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 80 236 moveto
+212 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 223 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 211 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 199 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 187 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 175 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 163 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 151 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 139 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 127 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 115 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 103 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 91 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 79 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 67 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 55 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 43 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 31 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 19 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 7 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 86 414 206 618 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 86 414 moveto
+86 618 lineto
+206 618 lineto
+206 414 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 86 414 moveto
+86 618 lineto
+206 618 lineto
+206 414 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 605 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 86 598 moveto
+206 598 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 585 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 573 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 561 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 86 554 moveto
+206 554 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 541 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 529 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 517 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 505 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 493 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 481 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 469 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 457 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 445 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 433 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94 421 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 146 404 moveto
+146 378 146 351 146 324 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 146 414 moveto
+141.5 404 lineto
+146 409 lineto
+146 404 lineto
+146 404 lineto
+146 404 lineto
+146 409 lineto
+150.5 404 lineto
+146 414 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 146 414 moveto
+141.5 404 lineto
+146 409 lineto
+146 404 lineto
+146 404 lineto
+146 404 lineto
+146 409 lineto
+150.5 404 lineto
+146 414 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+146.5 345 moveto 41 (mFactory) alignedtext
+grestore
+% Node2->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 215 541 moveto
+221 536 224 527 224 516 curveto
+224 500 217 490 206 486 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 206 546 moveto
+212.56 537.21 lineto
+210.37 543.57 lineto
+214.74 541.14 lineto
+214.74 541.14 lineto
+214.74 541.14 lineto
+210.37 543.57 lineto
+216.93 545.08 lineto
+206 546 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 206 546 moveto
+212.56 537.21 lineto
+210.37 543.57 lineto
+214.74 541.14 lineto
+214.74 541.14 lineto
+214.74 541.14 lineto
+210.37 543.57 lineto
+216.93 545.08 lineto
+206 546 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+224 513 moveto 46 (mInstance) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 0 708 116 1020 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 708 moveto
+0 1020 lineto
+117 1020 lineto
+117 708 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 708 moveto
+0 1020 lineto
+117 1020 lineto
+117 708 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+19.5 1007 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1000 moveto
+117 1000 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 987 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 975 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 963 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 951 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 939 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 927 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 920 moveto
+117 920 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 907 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 895 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 883 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 871 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 859 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 847 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 835 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 823 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 811 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 799 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 787 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 775 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 763 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 751 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 739 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 727 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 715 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node3->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 22 698 moveto
+7 601 -1 477 27 372 curveto
+38 331 59 290 80 255 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 24 708 moveto
+17.63 699.08 lineto
+23.02 703.1 lineto
+22.04 698.19 lineto
+22.04 698.19 lineto
+22.04 698.19 lineto
+23.02 703.1 lineto
+26.45 697.31 lineto
+24 708 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 24 708 moveto
+17.63 699.08 lineto
+23.02 703.1 lineto
+22.04 698.19 lineto
+22.04 698.19 lineto
+22.04 698.19 lineto
+23.02 703.1 lineto
+26.45 697.31 lineto
+24 708 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+27 513 moveto 50 (mDatabase) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 100 698 moveto
+107 670 114 643 120 618 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 97 708 moveto
+95.56 697.13 lineto
+98.44 703.21 lineto
+99.87 698.42 lineto
+99.87 698.42 lineto
+99.87 698.42 lineto
+98.44 703.21 lineto
+104.18 699.71 lineto
+97 708 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 97 708 moveto
+95.56 697.13 lineto
+98.44 703.21 lineto
+99.87 698.42 lineto
+99.87 698.42 lineto
+99.87 698.42 lineto
+98.44 703.21 lineto
+104.18 699.71 lineto
+97 708 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+105 681 moveto 50 (mDatabase) alignedtext
+grestore
+% Node3->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 125 889 moveto
+131 884 134 876 134 864 curveto
+134 847 127 837 117 833 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 117 895 moveto
+122.3 885.4 lineto
+121 892 lineto
+125 889 lineto
+125 889 lineto
+125 889 lineto
+121 892 lineto
+127.7 892.6 lineto
+117 895 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 117 895 moveto
+122.3 885.4 lineto
+121 892 lineto
+125 889 lineto
+125 889 lineto
+125 889 lineto
+121 892 lineto
+127.7 892.6 lineto
+117 895 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+134 861 moveto 46 (mInstance) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 106 1068 178 1152 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 106 1068 moveto
+106 1152 lineto
+178 1152 lineto
+178 1068 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 106 1068 moveto
+106 1152 lineto
+178 1152 lineto
+178 1068 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+127.5 1139 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 106 1132 moveto
+178 1132 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+114 1119 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 106 1112 moveto
+178 1112 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+114 1099 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+114 1087 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+114 1075 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 125 1059 moveto
+121 1047 117 1034 112 1020 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 128 1068 moveto
+120.57 1059.94 lineto
+126.42 1063.26 lineto
+124.84 1058.51 lineto
+124.84 1058.51 lineto
+124.84 1058.51 lineto
+126.42 1063.26 lineto
+129.11 1057.09 lineto
+128 1068 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 128 1068 moveto
+120.57 1059.94 lineto
+126.42 1063.26 lineto
+124.84 1058.51 lineto
+124.84 1058.51 lineto
+124.84 1058.51 lineto
+126.42 1063.26 lineto
+129.11 1057.09 lineto
+128 1068 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+123 1041 moveto 32 (mRows) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 32 1200 118 1344 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 32 1200 moveto
+32 1344 lineto
+118 1344 lineto
+118 1200 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 32 1200 moveto
+32 1344 lineto
+118 1344 lineto
+118 1200 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+63 1331 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 32 1324 moveto
+118 1324 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1311 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1299 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1287 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1275 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 32 1268 moveto
+118 1268 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1255 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1243 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1231 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1219 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+40 1207 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node5->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 56 1190 moveto
+54 1177 53 1165 51 1152 curveto
+47 1109 46 1063 47 1020 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 58 1200 moveto
+51.63 1191.08 lineto
+57.02 1195.1 lineto
+56.04 1190.19 lineto
+56.04 1190.19 lineto
+56.04 1190.19 lineto
+57.02 1195.1 lineto
+60.45 1189.31 lineto
+58 1200 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 58 1200 moveto
+51.63 1191.08 lineto
+57.02 1195.1 lineto
+56.04 1190.19 lineto
+56.04 1190.19 lineto
+56.04 1190.19 lineto
+57.02 1195.1 lineto
+60.45 1189.31 lineto
+58 1200 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+54 1107 moveto 46 (mLastRow) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 109 1191 moveto
+115 1177 120 1164 125 1152 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 105 1200 moveto
+104.95 1189.03 lineto
+107.03 1195.43 lineto
+109.06 1190.86 lineto
+109.06 1190.86 lineto
+109.06 1190.86 lineto
+107.03 1195.43 lineto
+113.17 1192.69 lineto
+105 1200 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 105 1200 moveto
+104.95 1189.03 lineto
+107.03 1195.43 lineto
+109.06 1190.86 lineto
+109.06 1190.86 lineto
+109.06 1190.86 lineto
+107.03 1195.43 lineto
+113.17 1192.69 lineto
+105 1200 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+118 1173 moveto 46 (mLastRow) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 288 372 410 660 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 288 372 moveto
+288 660 lineto
+410 660 lineto
+410 372 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 288 372 moveto
+288 660 lineto
+410 660 lineto
+410 372 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+314.5 647 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 288 640 moveto
+410 640 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 627 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 288 620 moveto
+410 620 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 607 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 595 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 583 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 571 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 559 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 547 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 535 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 523 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 511 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 499 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 487 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 475 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 463 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 451 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 439 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 427 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 415 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 403 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 391 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+296 379 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node6->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 283 380 moveto
+282 377 280 374 279 372 curveto
+259 335 234 295 212 261 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 288 389 moveto
+279.21 382.44 lineto
+285.57 384.63 lineto
+283.14 380.26 lineto
+283.14 380.26 lineto
+283.14 380.26 lineto
+285.57 384.63 lineto
+287.08 378.07 lineto
+288 389 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 288 389 moveto
+279.21 382.44 lineto
+285.57 384.63 lineto
+283.14 380.26 lineto
+283.14 380.26 lineto
+283.14 380.26 lineto
+285.57 384.63 lineto
+287.08 378.07 lineto
+288 389 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+267 345 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 454 1388
+end
+restore
+%%EOF
diff --git a/doc/latex/classcMediaDatabase__coll__graph.md5 b/doc/latex/classcMediaDatabase__coll__graph.md5
new file mode 100644
index 0000000..07e0ff6
--- /dev/null
+++ b/doc/latex/classcMediaDatabase__coll__graph.md5
@@ -0,0 +1 @@
+ca1d349b85a47228204749487a911f9b \ No newline at end of file
diff --git a/doc/latex/classcMediaDatabase__coll__graph.pdf b/doc/latex/classcMediaDatabase__coll__graph.pdf
new file mode 100644
index 0000000..0d3fa39
--- /dev/null
+++ b/doc/latex/classcMediaDatabase__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcMediatorInterface.tex b/doc/latex/classcMediatorInterface.tex
new file mode 100644
index 0000000..20f7b00
--- /dev/null
+++ b/doc/latex/classcMediatorInterface.tex
@@ -0,0 +1,145 @@
+\hypertarget{classcMediatorInterface}{
+\section{cMediatorInterface Class Reference}
+\label{classcMediatorInterface}\index{cMediatorInterface@{cMediatorInterface}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cMediatorInterface:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcMediatorInterface__inherit__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual \hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcMediatorInterface_68a8350f7ea5ccd2496580035228b1fc}{createObject} (const char $\ast$Title, bool Restricted)=0
+\item
+virtual \hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcMediatorInterface_716ad95bf6ac5a10e9409ced7a63a9d8}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)=0
+\item
+virtual int \hyperlink{classcMediatorInterface_a2f40e697f499c64cfd007aa70e3da7e}{saveObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)=0
+\item
+virtual int \hyperlink{classcMediatorInterface_ffbddb7fe72554b9cde9d02648cf8f0e}{deleteObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)=0
+\item
+virtual int \hyperlink{classcMediatorInterface_cd087c690154d43ac5ef92c5a42f2349}{clearObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)=0
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Mediator interface
+
+This is an interface for mediators used to communicate with the database. A mediator is applied to get, create, save or delete an UPnP object.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcMediatorInterface_cd087c690154d43ac5ef92c5a42f2349}{
+\index{cMediatorInterface@{cMediatorInterface}!clearObject@{clearObject}}
+\index{clearObject@{clearObject}!cMediatorInterface@{cMediatorInterface}}
+\subsubsection[{clearObject}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cMediatorInterface::clearObject ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcMediatorInterface_cd087c690154d43ac5ef92c5a42f2349}
+
+
+Clears the object
+
+This clears the object, i.e. all its children will be removed and deleted from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be cleared \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcUPnPObjectMediator_9ab720e86c6d6cb397799ac5070f70aa}{cUPnPObjectMediator}.\hypertarget{classcMediatorInterface_68a8350f7ea5ccd2496580035228b1fc}{
+\index{cMediatorInterface@{cMediatorInterface}!createObject@{createObject}}
+\index{createObject@{createObject}!cMediatorInterface@{cMediatorInterface}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}virtual {\bf cUPnPClassObject}$\ast$ cMediatorInterface::createObject (const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcMediatorInterface_68a8350f7ea5ccd2496580035228b1fc}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcUPnPObjectMediator_bfbca3f1cbadacee2b21306364750f26}{cUPnPObjectMediator}, \hyperlink{classcUPnPItemMediator_e2fd4cf5e6435f1eeadd11f9a99cd2db}{cUPnPItemMediator}, \hyperlink{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_14fefa90807d40d91a80712729af2beb}{cUPnPVideoBroadcastMediator}, \hyperlink{classcUPnPMovieMediator_29d40a311b7283cc4fba36860ac8c935}{cUPnPMovieMediator}, and \hyperlink{classcUPnPContainerMediator_751177c725da94b1b91f6cda4645844d}{cUPnPContainerMediator}.\hypertarget{classcMediatorInterface_ffbddb7fe72554b9cde9d02648cf8f0e}{
+\index{cMediatorInterface@{cMediatorInterface}!deleteObject@{deleteObject}}
+\index{deleteObject@{deleteObject}!cMediatorInterface@{cMediatorInterface}}
+\subsubsection[{deleteObject}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cMediatorInterface::deleteObject ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcMediatorInterface_ffbddb7fe72554b9cde9d02648cf8f0e}
+
+
+Deletes the object
+
+This deletes the object in the database by removing all its children and then deleting the contents from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be deleted \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcUPnPObjectMediator_0d2f9d72a678002456cbdeccb2c6e5fe}{cUPnPObjectMediator}.\hypertarget{classcMediatorInterface_716ad95bf6ac5a10e9409ced7a63a9d8}{
+\index{cMediatorInterface@{cMediatorInterface}!getObject@{getObject}}
+\index{getObject@{getObject}!cMediatorInterface@{cMediatorInterface}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}virtual {\bf cUPnPClassObject}$\ast$ cMediatorInterface::getObject ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcMediatorInterface_716ad95bf6ac5a10e9409ced7a63a9d8}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcUPnPObjectMediator_5b4fff612476fb51690919f9c59899a5}{cUPnPObjectMediator}, \hyperlink{classcUPnPItemMediator_81411b2a472ade71d73a9c8ddc2a7990}{cUPnPItemMediator}, \hyperlink{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_c13bf0f008f49b0ab499542391998a24}{cUPnPVideoBroadcastMediator}, \hyperlink{classcUPnPMovieMediator_d85b240eb54efd9ab46c440b51c71e83}{cUPnPMovieMediator}, and \hyperlink{classcUPnPContainerMediator_78b71f96fb4289dc78f897d6282078d6}{cUPnPContainerMediator}.\hypertarget{classcMediatorInterface_a2f40e697f499c64cfd007aa70e3da7e}{
+\index{cMediatorInterface@{cMediatorInterface}!saveObject@{saveObject}}
+\index{saveObject@{saveObject}!cMediatorInterface@{cMediatorInterface}}
+\subsubsection[{saveObject}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cMediatorInterface::saveObject ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcMediatorInterface_a2f40e697f499c64cfd007aa70e3da7e}
+
+
+Saves the object
+
+This saves the object in the database by updating the values in the database with those in the object.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcUPnPObjectMediator_c200f88239b8940d9d38cbe04c3e961e}{cUPnPObjectMediator}.
+
+The documentation for this class was generated from the following file:\begin{CompactItemize}
+\item
+database/object.h\end{CompactItemize}
diff --git a/doc/latex/classcMediatorInterface__inherit__graph.eps b/doc/latex/classcMediatorInterface__inherit__graph.eps
new file mode 100644
index 0000000..7c11f18
--- /dev/null
+++ b/doc/latex/classcMediatorInterface__inherit__graph.eps
@@ -0,0 +1,710 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 443 848
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 407 812 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 90 684 moveto
+90 804 lineto
+208 804 lineto
+208 684 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 90 684 moveto
+90 804 lineto
+208 804 lineto
+208 684 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+108.5 791 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 90 784 moveto
+208 784 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+147.5 771 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 90 764 moveto
+208 764 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 751 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 739 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 727 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 715 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 703 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 691 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 82 468 216 648 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 82 468 moveto
+82 648 lineto
+216 648 lineto
+216 468 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 82 468 moveto
+82 648 lineto
+216 648 lineto
+216 468 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100.5 635 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 82 628 moveto
+216 628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 615 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 603 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 82 596 moveto
+216 596 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 583 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 571 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 559 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 547 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 535 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 523 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 511 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 499 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 487 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 475 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node1->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 149 674 moveto
+149 665 149 656 149 648 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 145.5 674 moveto
+149 684 lineto
+152.5 674 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 0 312 146 432 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPContainerMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 312 moveto
+0 432 lineto
+147 432 lineto
+147 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 312 moveto
+0 432 lineto
+147 432 lineto
+147 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 419 moveto 110 (cUPnPContainerMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 412 moveto
+147 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+71.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 392 moveto
+147 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 379 moveto 125 (+ cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 367 moveto 131 (+ ~cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 108 459 moveto
+104 450 101 441 97 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 104.74 460.28 moveto
+112 468 lineto
+111.14 457.44 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 164 312 288 432 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 164 312 moveto
+164 432 lineto
+289 432 lineto
+289 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 164 312 moveto
+164 432 lineto
+289 432 lineto
+289 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+182 419 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 164 412 moveto
+289 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+224.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 164 392 moveto
+289 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 379 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 367 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 190 459 moveto
+194 450 197 441 201 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 186.86 457.44 moveto
+186 468 lineto
+193.26 460.28 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 151 156 301 276 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 151 156 moveto
+151 276 lineto
+301 276 lineto
+301 156 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 151 156 moveto
+151 276 lineto
+301 276 lineto
+301 156 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+169.5 263 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 151 256 moveto
+301 256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+224.5 243 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 151 236 moveto
+301 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 223 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 211 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 199 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 187 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 175 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 163 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node5
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 226 302 moveto
+226 293 226 285 226 276 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 222.5 302 moveto
+226 312 lineto
+229.5 302 lineto
+closepath stroke
+grestore
+% Node6
+gsave
+[ /Rect [ 75 0 207 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPMovieMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 75 0 moveto
+75 120 lineto
+207 120 lineto
+207 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 75 0 moveto
+75 120 lineto
+207 120 lineto
+207 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+93.5 107 moveto 95 (cUPnPMovieMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 75 100 moveto
+207 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+139.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 75 80 moveto
+207 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 67 moveto 110 (+ cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 55 moveto 116 (+ ~cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node5->Node6
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 188 147 moveto
+184 138 178 129 173 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 185.08 148.96 moveto
+193 156 lineto
+191.2 145.56 lineto
+closepath stroke
+grestore
+% Node7
+gsave
+[ /Rect [ 225 0 399 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoBroadcastMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 225 0 moveto
+225 120 lineto
+399 120 lineto
+399 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 225 0 moveto
+225 120 lineto
+399 120 lineto
+399 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+243.5 107 moveto 137 (cUPnPVideoBroadcastMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 225 100 moveto
+399 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+310.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 225 80 moveto
+399 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 67 moveto 152 (+ cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 55 moveto 158 (+ ~cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node5->Node7
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 264 147 moveto
+269 138 274 129 279 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 260.8 145.56 moveto
+259 156 lineto
+266.92 148.96 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 443 848
+end
+restore
+%%EOF
diff --git a/doc/latex/classcMediatorInterface__inherit__graph.md5 b/doc/latex/classcMediatorInterface__inherit__graph.md5
new file mode 100644
index 0000000..a120bc8
--- /dev/null
+++ b/doc/latex/classcMediatorInterface__inherit__graph.md5
@@ -0,0 +1 @@
+2e30e73ad0488be630d20ae228f8772a \ No newline at end of file
diff --git a/doc/latex/classcMediatorInterface__inherit__graph.pdf b/doc/latex/classcMediatorInterface__inherit__graph.pdf
new file mode 100644
index 0000000..0ea5687
--- /dev/null
+++ b/doc/latex/classcMediatorInterface__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcMenuSetupUPnP.tex b/doc/latex/classcMenuSetupUPnP.tex
new file mode 100644
index 0000000..858d8ad
--- /dev/null
+++ b/doc/latex/classcMenuSetupUPnP.tex
@@ -0,0 +1,88 @@
+\hypertarget{classcMenuSetupUPnP}{
+\section{cMenuSetupUPnP Class Reference}
+\label{classcMenuSetupUPnP}\index{cMenuSetupUPnP@{cMenuSetupUPnP}}
+}
+{\tt \#include $<$menusetup.h$>$}
+
+Collaboration diagram for cMenuSetupUPnP:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcMenuSetupUPnP__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual eOSState \hyperlink{classcMenuSetupUPnP_5a6d78afea79d330e710d09b808d5240}{ProcessKey} (eKeys Key)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual void \hyperlink{classcMenuSetupUPnP_e90738a7757dcc01e64e8ccad2f8a0e6}{Store} (void)
+\item
+void \hyperlink{classcMenuSetupUPnP_ed45944671b8974f7639aefee11e8f50}{Update} (void)
+\item
+void \hyperlink{classcMenuSetupUPnP_6f3e5ab68db53ce74ec81af07671d00e}{Load} (void)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The VDR setup page
+
+This class shows and manages the settings within the VDR setup OSD
+
+\subsection{Member Function Documentation}
+\hypertarget{classcMenuSetupUPnP_6f3e5ab68db53ce74ec81af07671d00e}{
+\index{cMenuSetupUPnP@{cMenuSetupUPnP}!Load@{Load}}
+\index{Load@{Load}!cMenuSetupUPnP@{cMenuSetupUPnP}}
+\subsubsection[{Load}]{\setlength{\rightskip}{0pt plus 5cm}void cMenuSetupUPnP::Load (void)\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcMenuSetupUPnP_6f3e5ab68db53ce74ec81af07671d00e}
+
+
+Loads the setup information
+
+This loads the setup information from the configuration file \hypertarget{classcMenuSetupUPnP_5a6d78afea79d330e710d09b808d5240}{
+\index{cMenuSetupUPnP@{cMenuSetupUPnP}!ProcessKey@{ProcessKey}}
+\index{ProcessKey@{ProcessKey}!cMenuSetupUPnP@{cMenuSetupUPnP}}
+\subsubsection[{ProcessKey}]{\setlength{\rightskip}{0pt plus 5cm}eOSState cMenuSetupUPnP::ProcessKey (eKeys {\em Key})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcMenuSetupUPnP_5a6d78afea79d330e710d09b808d5240}
+
+
+Processes a keystroke
+
+This processes a keystroke which is done by the user and updates the menu accordingly
+
+It returns the current state of the VDR after pressing a key
+
+\begin{Desc}
+\item[Returns:]The current state of the VDR \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Key}]Key, pressed by the user \end{description}
+\end{Desc}
+\hypertarget{classcMenuSetupUPnP_e90738a7757dcc01e64e8ccad2f8a0e6}{
+\index{cMenuSetupUPnP@{cMenuSetupUPnP}!Store@{Store}}
+\index{Store@{Store}!cMenuSetupUPnP@{cMenuSetupUPnP}}
+\subsubsection[{Store}]{\setlength{\rightskip}{0pt plus 5cm}void cMenuSetupUPnP::Store (void)\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcMenuSetupUPnP_e90738a7757dcc01e64e8ccad2f8a0e6}
+
+
+Stores the setup information
+
+This stores the setup information in the configuration file \hypertarget{classcMenuSetupUPnP_ed45944671b8974f7639aefee11e8f50}{
+\index{cMenuSetupUPnP@{cMenuSetupUPnP}!Update@{Update}}
+\index{Update@{Update}!cMenuSetupUPnP@{cMenuSetupUPnP}}
+\subsubsection[{Update}]{\setlength{\rightskip}{0pt plus 5cm}void cMenuSetupUPnP::Update (void)\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcMenuSetupUPnP_ed45944671b8974f7639aefee11e8f50}
+
+
+Update the menu
+
+This updates the menu osd and refreshes the screen.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+misc/menusetup.h\item
+misc/menusetup.cpp\end{CompactItemize}
diff --git a/doc/latex/classcMenuSetupUPnP__coll__graph.eps b/doc/latex/classcMenuSetupUPnP__coll__graph.eps
new file mode 100644
index 0000000..b3371df
--- /dev/null
+++ b/doc/latex/classcMenuSetupUPnP__coll__graph.eps
@@ -0,0 +1,1954 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 678 2432
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 642 2396 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 256 0 moveto
+256 264 lineto
+367 264 lineto
+367 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 256 0 moveto
+256 264 lineto
+367 264 lineto
+367 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+271 251 moveto 80 (cMenuSetupUPnP) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 256 244 moveto
+367 244 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 231 moveto 49 (- mCtrlBind) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 219 moveto 65 (- mCtrlEnabled) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 207 moveto 47 (- mCtrlPort) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 195 moveto 74 (- mCtrlAutoMode) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 183 moveto 65 (- mUpnpServer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 171 moveto 44 (- mEnable) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 159 moveto 60 (- mAutoSetup) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 147 moveto 32 (- mPort) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 135 moveto 61 (- mDetectPort) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 123 moveto 77 (- mInterfaceIndex) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 111 moveto 50 (- mAddress) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 256 104 moveto
+367 104 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 91 moveto 95 (+ cMenuSetupUPnP\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 79 moveto 68 (+ ProcessKey\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 67 moveto 38 (# Store\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 55 moveto 45 (# Update\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 43 moveto 35 (# Load\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 31 moveto 80 (- getInterfaceList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 19 moveto 88 (- getInterfaceIndex\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+263.5 7 moveto 64 (- getInterface\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 244 312 378 708 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPServer.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 244 312 moveto
+244 708 lineto
+379 708 lineto
+379 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 312 moveto
+244 708 lineto
+379 708 lineto
+379 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+281.5 695 moveto 59 (cUPnPServer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 688 moveto
+379 688 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 675 moveto 58 (- mIsRunning) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 663 moveto 58 (- mIsEnabled) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 651 moveto 63 (- mServerAddr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 639 moveto 53 (- mInterface) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 627 moveto 119 (- mIsAutoDetectionEnabled) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 615 moveto 93 (- mDeviceDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 603 moveto 62 (- mWebServer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 591 moveto 82 (- mMediaDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 579 moveto 74 (- mDeviceHandle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 567 moveto 101 (- mConnectionManager) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 555 moveto 87 (- mContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 548 moveto
+379 548 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 535 moveto 74 (+ cUPnPServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 523 moveto 80 (+ ~cUPnPServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 511 moveto 44 (+ enable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 499 moveto 35 (+ start\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 487 moveto 43 (+ restart\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 475 moveto 34 (+ stop\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 463 moveto 98 (+ autoDetectSettings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 451 moveto 93 (+ getServerAddress\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 439 moveto 67 (+ getInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 427 moveto 75 (+ setServerPort\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 415 moveto 67 (+ setInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 403 moveto 65 (+ setAddress\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 391 moveto 90 (+ setAutoDetection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 379 moveto 58 (+ isEnabled\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 367 moveto 58 (+ isRunning\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 355 moveto 119 (+ isAutoDetectionEnabled\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 343 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 331 moveto 35 (- uninit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 319 moveto 98 (- upnpActionCallback\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 311 302 moveto
+311 289 311 277 311 264 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 311 312 moveto
+306.5 302 lineto
+311 307 lineto
+311 302 lineto
+311 302 lineto
+311 302 lineto
+311 307 lineto
+315.5 302 lineto
+311 312 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 311 312 moveto
+306.5 302 lineto
+311 307 lineto
+311 302 lineto
+311 302 lineto
+311 302 lineto
+311 307 lineto
+315.5 302 lineto
+311 312 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+311.5 285 moveto 59 (mUpnpServer) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 202 792 324 960 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcContentDirectory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 202 792 moveto
+202 960 lineto
+325 960 lineto
+325 792 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 792 moveto
+202 960 lineto
+325 960 lineto
+325 792 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+224 947 moveto 78 (cContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 940 moveto
+325 940 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 927 moveto 82 (- mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 920 moveto
+325 920 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 907 moveto 93 (+ cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 895 moveto 99 (+ ~cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 883 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 871 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 859 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 847 moveto 40 (- Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 835 moveto 107 (- getSearchCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 823 moveto 94 (- getSortCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 811 moveto 100 (- getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 799 moveto 43 (- browse\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 261 782 moveto
+262 763 263 744 265 726 curveto
+266 720 266 714 267 708 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 261 792 moveto
+256.5 782 lineto
+261 787 lineto
+261 782 lineto
+261 782 lineto
+261 782 lineto
+261 787 lineto
+265.5 782 lineto
+261 792 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 261 792 moveto
+256.5 782 lineto
+261 787 lineto
+261 782 lineto
+261 782 lineto
+261 782 lineto
+261 787 lineto
+265.5 782 lineto
+261 792 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+265.5 729 moveto 81 (mContentDirectory) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 168 1140 276 1272 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUpnpService.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 168 1140 moveto
+168 1272 lineto
+276 1272 lineto
+276 1140 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 1140 moveto
+168 1272 lineto
+276 1272 lineto
+276 1140 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+191.5 1259 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 1252 moveto
+276 1252 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1239 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 1232 moveto
+276 1232 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1219 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1207 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1195 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1183 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1171 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1159 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1147 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 231 1130 moveto
+235 1095 239 1052 244 1014 curveto
+246 997 249 978 251 960 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 227.51 1129.7 moveto
+230 1140 lineto
+234.48 1130.4 lineto
+closepath stroke
+grestore
+% Node12
+gsave
+[ /Rect [ 46 756 184 996 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcConnectionManager.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 46 756 moveto
+46 996 lineto
+184 996 lineto
+184 756 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 756 moveto
+46 996 lineto
+184 996 lineto
+184 756 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+69 983 moveto 92 (cConnectionManager) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 976 moveto
+184 976 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 963 moveto 94 (- mDefaultConnection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 951 moveto 96 (- mVirtualConnections) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 939 moveto 100 (- mSupportedProtocols) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 932 moveto
+184 932 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 919 moveto 107 (+ cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 907 moveto 113 (+ ~cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 895 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 883 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 871 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 859 moveto 47 (- setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 847 moveto 78 (- getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 835 moveto 121 (- getCurrentConnectionIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 823 moveto 122 (- getCurrentConnectionInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 811 moveto 107 (- prepareForConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 799 moveto 101 (- connectionComplete\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 787 moveto 116 (- createVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 775 moveto 121 (- destroyVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 763 moveto 110 (- getConnectionIDsCVS\(\)) alignedtext
+grestore
+% Node4->Node12
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 209 1130 moveto
+202 1094 192 1051 179 1014 curveto
+177 1008 175 1002 173 996 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 205.61 1130.88 moveto
+211 1140 lineto
+212.47 1129.51 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 294 1044 426 1368 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 294 1044 moveto
+294 1368 lineto
+426 1368 lineto
+426 1044 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 1044 moveto
+294 1368 lineto
+426 1368 lineto
+426 1044 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+323.5 1355 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 1348 moveto
+426 1348 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1335 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1323 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1311 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1299 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1287 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 1280 moveto
+426 1280 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1267 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1255 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1243 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1231 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1219 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1207 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1195 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1183 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1171 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1159 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1147 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1135 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1123 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1111 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1099 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1087 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1075 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1063 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1051 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node5->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 361 1034 moveto
+360 942 356 827 346 726 curveto
+345 720 345 714 344 708 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 361 1044 moveto
+356.5 1034 lineto
+361 1039 lineto
+361 1034 lineto
+361 1034 lineto
+361 1034 lineto
+361 1039 lineto
+365.5 1034 lineto
+361 1044 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 361 1044 moveto
+356.5 1034 lineto
+361 1039 lineto
+361 1034 lineto
+361 1034 lineto
+361 1034 lineto
+361 1039 lineto
+365.5 1034 lineto
+361 1044 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+362 873 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node5->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 289 1050 moveto
+287 1048 286 1046 285 1044 curveto
+280 1035 274 1035 270 1026 curveto
+262 1005 259 982 258 960 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 294 1059 moveto
+285.21 1052.44 lineto
+291.57 1054.63 lineto
+289.14 1050.26 lineto
+289.14 1050.26 lineto
+289.14 1050.26 lineto
+291.57 1054.63 lineto
+293.08 1048.07 lineto
+294 1059 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 294 1059 moveto
+285.21 1052.44 lineto
+291.57 1054.63 lineto
+289.14 1050.26 lineto
+289.14 1050.26 lineto
+289.14 1050.26 lineto
+291.57 1054.63 lineto
+293.08 1048.07 lineto
+294 1059 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+273 1017 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 300 1458 420 1662 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 300 1458 moveto
+300 1662 lineto
+420 1662 lineto
+420 1458 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1458 moveto
+300 1662 lineto
+420 1662 lineto
+420 1458 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+314 1649 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1642 moveto
+420 1642 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1629 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1617 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1605 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1598 moveto
+420 1598 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1585 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1573 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1561 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1549 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1537 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1525 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1513 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1501 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1489 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1477 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1465 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 360 1448 moveto
+360 1422 360 1395 360 1368 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 360 1458 moveto
+355.5 1448 lineto
+360 1453 lineto
+360 1448 lineto
+360 1448 lineto
+360 1448 lineto
+360 1453 lineto
+364.5 1448 lineto
+360 1458 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 360 1458 moveto
+355.5 1448 lineto
+360 1453 lineto
+360 1448 lineto
+360 1448 lineto
+360 1448 lineto
+360 1453 lineto
+364.5 1448 lineto
+360 1458 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+360.5 1389 moveto 41 (mFactory) alignedtext
+grestore
+% Node6->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 429 1585 moveto
+435 1580 438 1571 438 1560 curveto
+438 1544 431 1534 420 1530 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 420 1590 moveto
+426.56 1581.21 lineto
+424.37 1587.57 lineto
+428.74 1585.14 lineto
+428.74 1585.14 lineto
+428.74 1585.14 lineto
+424.37 1587.57 lineto
+430.93 1589.08 lineto
+420 1590 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 420 1590 moveto
+426.56 1581.21 lineto
+424.37 1587.57 lineto
+428.74 1585.14 lineto
+428.74 1585.14 lineto
+428.74 1585.14 lineto
+424.37 1587.57 lineto
+430.93 1589.08 lineto
+420 1590 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+438 1557 moveto 46 (mInstance) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 214 1752 330 2064 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 214 1752 moveto
+214 2064 lineto
+331 2064 lineto
+331 1752 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1752 moveto
+214 2064 lineto
+331 2064 lineto
+331 1752 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233.5 2051 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 2044 moveto
+331 2044 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 2031 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 2019 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 2007 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1995 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1983 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1971 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1964 moveto
+331 1964 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1951 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1939 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1927 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1915 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1903 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1891 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1879 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1867 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1855 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1843 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1831 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1819 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1807 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1795 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1783 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1771 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1759 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node7->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 227 1742 moveto
+209 1643 201 1519 241 1416 curveto
+252 1389 269 1392 285 1368 curveto
+288 1363 291 1359 294 1354 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 229 1752 moveto
+222.63 1743.08 lineto
+228.02 1747.1 lineto
+227.04 1742.19 lineto
+227.04 1742.19 lineto
+227.04 1742.19 lineto
+228.02 1747.1 lineto
+231.45 1741.31 lineto
+229 1752 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 229 1752 moveto
+222.63 1743.08 lineto
+228.02 1747.1 lineto
+227.04 1742.19 lineto
+227.04 1742.19 lineto
+227.04 1742.19 lineto
+228.02 1747.1 lineto
+231.45 1741.31 lineto
+229 1752 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+241 1557 moveto 50 (mDatabase) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 314 1742 moveto
+321 1714 328 1687 334 1662 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 311 1752 moveto
+309.56 1741.13 lineto
+312.44 1747.21 lineto
+313.87 1742.42 lineto
+313.87 1742.42 lineto
+313.87 1742.42 lineto
+312.44 1747.21 lineto
+318.18 1743.71 lineto
+311 1752 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 311 1752 moveto
+309.56 1741.13 lineto
+312.44 1747.21 lineto
+313.87 1742.42 lineto
+313.87 1742.42 lineto
+313.87 1742.42 lineto
+312.44 1747.21 lineto
+318.18 1743.71 lineto
+311 1752 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+319 1725 moveto 50 (mDatabase) alignedtext
+grestore
+% Node7->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 339 1933 moveto
+345 1928 348 1920 348 1908 curveto
+348 1891 341 1881 331 1877 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 331 1939 moveto
+336.3 1929.4 lineto
+335 1936 lineto
+339 1933 lineto
+339 1933 lineto
+339 1933 lineto
+335 1936 lineto
+341.7 1936.6 lineto
+331 1939 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 331 1939 moveto
+336.3 1929.4 lineto
+335 1936 lineto
+339 1933 lineto
+339 1933 lineto
+339 1933 lineto
+335 1936 lineto
+341.7 1936.6 lineto
+331 1939 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+348 1905 moveto 46 (mInstance) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 320 2112 392 2196 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 320 2112 moveto
+320 2196 lineto
+392 2196 lineto
+392 2112 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 2112 moveto
+320 2196 lineto
+392 2196 lineto
+392 2112 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+341.5 2183 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 2176 moveto
+392 2176 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2163 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 2156 moveto
+392 2156 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2143 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2131 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2119 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 339 2103 moveto
+335 2091 331 2078 326 2064 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 342 2112 moveto
+334.57 2103.94 lineto
+340.42 2107.26 lineto
+338.84 2102.51 lineto
+338.84 2102.51 lineto
+338.84 2102.51 lineto
+340.42 2107.26 lineto
+343.11 2101.09 lineto
+342 2112 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 342 2112 moveto
+334.57 2103.94 lineto
+340.42 2107.26 lineto
+338.84 2102.51 lineto
+338.84 2102.51 lineto
+338.84 2102.51 lineto
+340.42 2107.26 lineto
+343.11 2101.09 lineto
+342 2112 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+337 2085 moveto 32 (mRows) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 246 2244 332 2388 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 246 2244 moveto
+246 2388 lineto
+332 2388 lineto
+332 2244 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2244 moveto
+246 2388 lineto
+332 2388 lineto
+332 2244 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+277 2375 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2368 moveto
+332 2368 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2355 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2343 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2331 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2319 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2312 moveto
+332 2312 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2299 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2287 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2275 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2263 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2251 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node9->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 270 2234 moveto
+268 2221 267 2209 265 2196 curveto
+261 2153 260 2107 261 2064 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 272 2244 moveto
+265.63 2235.08 lineto
+271.02 2239.1 lineto
+270.04 2234.19 lineto
+270.04 2234.19 lineto
+270.04 2234.19 lineto
+271.02 2239.1 lineto
+274.45 2233.31 lineto
+272 2244 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 272 2244 moveto
+265.63 2235.08 lineto
+271.02 2239.1 lineto
+270.04 2234.19 lineto
+270.04 2234.19 lineto
+270.04 2234.19 lineto
+271.02 2239.1 lineto
+274.45 2233.31 lineto
+272 2244 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+268 2151 moveto 46 (mLastRow) alignedtext
+grestore
+% Node9->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 323 2235 moveto
+329 2221 334 2208 339 2196 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 319 2244 moveto
+318.95 2233.03 lineto
+321.03 2239.43 lineto
+323.06 2234.86 lineto
+323.06 2234.86 lineto
+323.06 2234.86 lineto
+321.03 2239.43 lineto
+327.17 2236.69 lineto
+319 2244 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 319 2244 moveto
+318.95 2233.03 lineto
+321.03 2239.43 lineto
+323.06 2234.86 lineto
+323.06 2234.86 lineto
+323.06 2234.86 lineto
+321.03 2239.43 lineto
+327.17 2236.69 lineto
+319 2244 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+332 2217 moveto 46 (mLastRow) alignedtext
+grestore
+% Node10
+gsave
+[ /Rect [ 502 1416 624 1704 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 502 1416 moveto
+502 1704 lineto
+624 1704 lineto
+624 1416 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1416 moveto
+502 1704 lineto
+624 1704 lineto
+624 1416 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+528.5 1691 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1684 moveto
+624 1684 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1671 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1664 moveto
+624 1664 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1651 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1639 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1627 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1615 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1603 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1591 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1579 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1567 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1555 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1543 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1531 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1519 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1507 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1495 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1483 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1471 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1459 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1447 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1435 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1423 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node10->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 497 1424 moveto
+496 1421 494 1418 493 1416 curveto
+472 1379 448 1340 426 1305 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 502 1433 moveto
+493.21 1426.44 lineto
+499.57 1428.63 lineto
+497.14 1424.26 lineto
+497.14 1424.26 lineto
+497.14 1424.26 lineto
+499.57 1428.63 lineto
+501.08 1422.07 lineto
+502 1433 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 502 1433 moveto
+493.21 1426.44 lineto
+499.57 1428.63 lineto
+497.14 1424.26 lineto
+497.14 1424.26 lineto
+497.14 1424.26 lineto
+499.57 1428.63 lineto
+501.08 1422.07 lineto
+502 1433 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+481 1389 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+% Node11
+gsave
+[ /Rect [ 454 774 570 978 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPWebServer.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 454 774 moveto
+454 978 lineto
+570 978 lineto
+570 774 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 774 moveto
+454 978 lineto
+570 978 lineto
+570 774 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+472.5 965 moveto 79 (cUPnPWebServer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 958 moveto
+570 958 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 945 moveto 45 (- mRootdir) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 933 moveto 52 (- mInstance) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 921 moveto 97 (- mVirtualDirCallbacks) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 914 moveto
+570 914 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 901 moveto 28 (+ init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 889 moveto 38 (+ uninit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 877 moveto 100 (+ ~cUPnPWebServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 865 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 853 moveto 45 (+ getInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 841 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 829 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 817 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 805 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 793 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 781 moveto 91 (- cUPnPWebServer\(\)) alignedtext
+grestore
+% Node11->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 451 765 moveto
+428 723 402 677 379 634 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 456 774 moveto
+447.21 767.44 lineto
+453.57 769.63 lineto
+451.14 765.26 lineto
+451.14 765.26 lineto
+451.14 765.26 lineto
+453.57 769.63 lineto
+455.08 763.07 lineto
+456 774 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 456 774 moveto
+447.21 767.44 lineto
+453.57 769.63 lineto
+451.14 765.26 lineto
+451.14 765.26 lineto
+451.14 765.26 lineto
+453.57 769.63 lineto
+455.08 763.07 lineto
+456 774 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+435 729 moveto 56 (mWebServer) alignedtext
+grestore
+% Node11->Node11
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 579 897 moveto
+585 892 588 886 588 876 curveto
+588 862 581 854 570 851 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 570 901 moveto
+577.31 892.83 lineto
+574.57 898.97 lineto
+579.14 896.94 lineto
+579.14 896.94 lineto
+579.14 896.94 lineto
+574.57 898.97 lineto
+580.97 901.05 lineto
+570 901 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 570 901 moveto
+577.31 892.83 lineto
+574.57 898.97 lineto
+579.14 896.94 lineto
+579.14 896.94 lineto
+579.14 896.94 lineto
+574.57 898.97 lineto
+580.97 901.05 lineto
+570 901 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+588 873 moveto 46 (mInstance) alignedtext
+grestore
+% Node12->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 157 746 moveto
+159 739 162 732 166 726 curveto
+188 682 217 637 244 599 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 153 756 moveto
+152.54 745.04 lineto
+154.86 751.36 lineto
+156.71 746.72 lineto
+156.71 746.72 lineto
+156.71 746.72 lineto
+154.86 751.36 lineto
+160.89 748.39 lineto
+153 756 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 153 756 moveto
+152.54 745.04 lineto
+154.86 751.36 lineto
+156.71 746.72 lineto
+156.71 746.72 lineto
+156.71 746.72 lineto
+154.86 751.36 lineto
+160.89 748.39 lineto
+153 756 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+166.5 729 moveto 95 (mConnectionManager) alignedtext
+grestore
+% Node13
+gsave
+[ /Rect [ 0 1110 150 1302 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcVirtualConnection.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 1110 moveto
+0 1302 lineto
+150 1302 lineto
+150 1110 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1110 moveto
+0 1302 lineto
+150 1302 lineto
+150 1110 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+34 1289 moveto 82 (cVirtualConnection) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1282 moveto
+150 1282 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1269 moveto 101 (- mRemoteProtocolInfo) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1257 moveto 134 (- mRemoteConnectionManager) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1245 moveto 53 (- mDirection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1233 moveto 107 (- mRemoteConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1221 moveto 73 (- mConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1209 moveto 77 (- mAVTransportID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1197 moveto 41 (- mRcsID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1185 moveto 43 (- mStatus) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1178 moveto
+150 1178 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1165 moveto 94 (- cVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1153 moveto 80 (- getStatusString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1141 moveto 89 (- getDirectionString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1129 moveto 64 (- getDirection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1117 moveto 103 (- getConnectionStatus\(\)) alignedtext
+grestore
+% Node13->Node12
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 83 1100 moveto
+85 1072 87 1042 91 1014 curveto
+92 1008 93 1002 93 996 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 82 1110 moveto
+78.52 1099.6 lineto
+82.5 1105.02 lineto
+83 1100.05 lineto
+83 1100.05 lineto
+83 1100.05 lineto
+82.5 1105.02 lineto
+87.47 1100.5 lineto
+82 1110 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 82 1110 moveto
+78.52 1099.6 lineto
+82.5 1105.02 lineto
+83 1100.05 lineto
+83 1100.05 lineto
+83 1100.05 lineto
+82.5 1105.02 lineto
+87.47 1100.5 lineto
+82 1110 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+91 1017 moveto 88 (mDefaultConnection) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 678 2432
+end
+restore
+%%EOF
diff --git a/doc/latex/classcMenuSetupUPnP__coll__graph.md5 b/doc/latex/classcMenuSetupUPnP__coll__graph.md5
new file mode 100644
index 0000000..49f5a96
--- /dev/null
+++ b/doc/latex/classcMenuSetupUPnP__coll__graph.md5
@@ -0,0 +1 @@
+08c222cc27eabcddc938424d60520520 \ No newline at end of file
diff --git a/doc/latex/classcMenuSetupUPnP__coll__graph.pdf b/doc/latex/classcMenuSetupUPnP__coll__graph.pdf
new file mode 100644
index 0000000..e6d69d6
--- /dev/null
+++ b/doc/latex/classcMenuSetupUPnP__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcPathParser.tex b/doc/latex/classcPathParser.tex
new file mode 100644
index 0000000..b7768d6
--- /dev/null
+++ b/doc/latex/classcPathParser.tex
@@ -0,0 +1,47 @@
+\hypertarget{classcPathParser}{
+\section{cPathParser Class Reference}
+\label{classcPathParser}\index{cPathParser@{cPathParser}}
+}
+{\tt \#include $<$search.h$>$}
+
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static bool \hyperlink{classcPathParser_83229f6ecd4254d7ed145573eae7967a}{parse} (const char $\ast$Path, int $\ast$Section, int $\ast$Method, propertyMap $\ast$Properties)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Web path parser
+
+Parses paths which came from the webserver. It splits the path into a section, a certain method and its properties.
+
+This can be used to easily determine which file was requested by a client
+
+\subsection{Member Function Documentation}
+\hypertarget{classcPathParser_83229f6ecd4254d7ed145573eae7967a}{
+\index{cPathParser@{cPathParser}!parse@{parse}}
+\index{parse@{parse}!cPathParser@{cPathParser}}
+\subsubsection[{parse}]{\setlength{\rightskip}{0pt plus 5cm}bool cPathParser::parse (const char $\ast$ {\em Path}, \/ int $\ast$ {\em Section}, \/ int $\ast$ {\em Method}, \/ propertyMap $\ast$ {\em Properties})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcPathParser_83229f6ecd4254d7ed145573eae7967a}
+
+
+Parses the path
+
+This will parse the path and stores the result in the pointers given.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the parsing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Path}]the path which is parsed \item[{\em Section}]the number of the registered section \item[{\em Method}]the number of the registered method \item[{\em Properties}]the properties found in the path \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+misc/search.h\item
+misc/search.cpp\end{CompactItemize}
diff --git a/doc/latex/classcPluginUpnp.tex b/doc/latex/classcPluginUpnp.tex
new file mode 100644
index 0000000..4f4deb0
--- /dev/null
+++ b/doc/latex/classcPluginUpnp.tex
@@ -0,0 +1,212 @@
+\hypertarget{classcPluginUpnp}{
+\section{cPluginUpnp Class Reference}
+\label{classcPluginUpnp}\index{cPluginUpnp@{cPluginUpnp}}
+}
+{\tt \#include $<$upnp.h$>$}
+
+Collaboration diagram for cPluginUpnp:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcPluginUpnp__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual const char $\ast$ \hyperlink{classcPluginUpnp_584844bf459ec3eb7f6037f9cbb52fd5}{Version} (void)
+\item
+virtual const char $\ast$ \hyperlink{classcPluginUpnp_6fc36c7fdf1f0deed776897725bcda9b}{Description} (void)
+\item
+virtual const char $\ast$ \hyperlink{classcPluginUpnp_e2e63843aab64e06ce9b533f4893f7e0}{CommandLineHelp} (void)
+\item
+virtual bool \hyperlink{classcPluginUpnp_acbc8a8b3f67d08ed20ff1c8beaa4fe2}{ProcessArgs} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
+\item
+virtual bool \hyperlink{classcPluginUpnp_3f3daf1d0cd8d176cf1a349b9de10df7}{Initialize} (void)
+\item
+virtual bool \hyperlink{classcPluginUpnp_4738d8a5d72e56ec8b7b2f4f0b3549fe}{Start} (void)
+\item
+virtual void \hyperlink{classcPluginUpnp_f59cbb0bb2a3872e33461fb46b4f79b4}{Stop} (void)
+\item
+virtual cString \hyperlink{classcPluginUpnp_6b220cadefe502e7dfa4d70acea35083}{Active} (void)
+\item
+virtual cMenuSetupPage $\ast$ \hyperlink{classcPluginUpnp_9b1891ed7e2d3aa56dae03b778d616ee}{SetupMenu} (void)
+\item
+virtual bool \hyperlink{classcPluginUpnp_3f8b911f1e452789110e69b11587ebce}{SetupParse} (const char $\ast$Name, const char $\ast$Value)
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static const char $\ast$ \hyperlink{classcPluginUpnp_ac2101984519b848cc04370b5527c145}{getConfigDirectory} ()
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP/DLNA plugin
+
+This is a UPnP/DLNA media server plugin. It supports live-TV and recordings of the VDR as well as custom video files.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcPluginUpnp_6b220cadefe502e7dfa4d70acea35083}{
+\index{cPluginUpnp@{cPluginUpnp}!Active@{Active}}
+\index{Active@{Active}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{Active}]{\setlength{\rightskip}{0pt plus 5cm}cString cPluginUpnp::Active (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_6b220cadefe502e7dfa4d70acea35083}
+
+
+Message if still active
+
+This returns a message if the plugin is still active when a user attempts to shut down the VDR.
+
+\begin{Desc}
+\item[Returns:]the message shown on the screen. \end{Desc}
+\hypertarget{classcPluginUpnp_e2e63843aab64e06ce9b533f4893f7e0}{
+\index{cPluginUpnp@{cPluginUpnp}!CommandLineHelp@{CommandLineHelp}}
+\index{CommandLineHelp@{CommandLineHelp}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{CommandLineHelp}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cPluginUpnp::CommandLineHelp (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_e2e63843aab64e06ce9b533f4893f7e0}
+
+
+Get the command line help
+
+This returns the command line help output, which comes, when the user types {\tt --help} into the command line.
+
+\begin{Desc}
+\item[Returns:]the command line help \end{Desc}
+\hypertarget{classcPluginUpnp_6fc36c7fdf1f0deed776897725bcda9b}{
+\index{cPluginUpnp@{cPluginUpnp}!Description@{Description}}
+\index{Description@{Description}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{Description}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cPluginUpnp::Description (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_6fc36c7fdf1f0deed776897725bcda9b}
+
+
+Get the description
+
+This returns a brief description of the plugin and what it does.
+
+\begin{Desc}
+\item[Returns:]the description of the plugin \end{Desc}
+\hypertarget{classcPluginUpnp_ac2101984519b848cc04370b5527c145}{
+\index{cPluginUpnp@{cPluginUpnp}!getConfigDirectory@{getConfigDirectory}}
+\index{getConfigDirectory@{getConfigDirectory}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{getConfigDirectory}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cPluginUpnp::getConfigDirectory ()\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcPluginUpnp_ac2101984519b848cc04370b5527c145}
+
+
+Get the configuration directory
+
+This returns the directory, where configuration files are stored.
+
+\begin{Desc}
+\item[Returns:]the directory of the configuration files. \end{Desc}
+\hypertarget{classcPluginUpnp_3f3daf1d0cd8d176cf1a349b9de10df7}{
+\index{cPluginUpnp@{cPluginUpnp}!Initialize@{Initialize}}
+\index{Initialize@{Initialize}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{Initialize}]{\setlength{\rightskip}{0pt plus 5cm}bool cPluginUpnp::Initialize (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_3f3daf1d0cd8d176cf1a349b9de10df7}
+
+
+Initializes the plugin
+
+This initializes any background activities of the plugin.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if initializing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcPluginUpnp_acbc8a8b3f67d08ed20ff1c8beaa4fe2}{
+\index{cPluginUpnp@{cPluginUpnp}!ProcessArgs@{ProcessArgs}}
+\index{ProcessArgs@{ProcessArgs}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{ProcessArgs}]{\setlength{\rightskip}{0pt plus 5cm}bool cPluginUpnp::ProcessArgs (int {\em argc}, \/ char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_acbc8a8b3f67d08ed20ff1c8beaa4fe2}
+
+
+Processes the commandline arguments
+
+This processes the commandline arguments which the user specified at the start of the plugin.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if processing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em argc}]the number of arguments in the list \item[{\em argv}]the arguments as a char array \end{description}
+\end{Desc}
+ \hypertarget{classcPluginUpnp_9b1891ed7e2d3aa56dae03b778d616ee}{
+\index{cPluginUpnp@{cPluginUpnp}!SetupMenu@{SetupMenu}}
+\index{SetupMenu@{SetupMenu}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{SetupMenu}]{\setlength{\rightskip}{0pt plus 5cm}cMenuSetupPage $\ast$ cPluginUpnp::SetupMenu (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_9b1891ed7e2d3aa56dae03b778d616ee}
+
+
+Setup menu
+
+This creates a new instance of the setup menu, which is shown to the user when he enters the VDR plugin setup menu
+
+\begin{Desc}
+\item[Returns:]the menu of the plugin \end{Desc}
+\hypertarget{classcPluginUpnp_3f8b911f1e452789110e69b11587ebce}{
+\index{cPluginUpnp@{cPluginUpnp}!SetupParse@{SetupParse}}
+\index{SetupParse@{SetupParse}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{SetupParse}]{\setlength{\rightskip}{0pt plus 5cm}bool cPluginUpnp::SetupParse (const char $\ast$ {\em Name}, \/ const char $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_3f8b911f1e452789110e69b11587ebce}
+
+
+Parse setup variable
+
+This parses the setup variable with the according value. The value is a string representation and must be converted into the according data type.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if parsing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Name}]the name of the variable \item[{\em Value}]the according value of the variable \end{description}
+\end{Desc}
+ \hypertarget{classcPluginUpnp_4738d8a5d72e56ec8b7b2f4f0b3549fe}{
+\index{cPluginUpnp@{cPluginUpnp}!Start@{Start}}
+\index{Start@{Start}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{Start}]{\setlength{\rightskip}{0pt plus 5cm}bool cPluginUpnp::Start (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_4738d8a5d72e56ec8b7b2f4f0b3549fe}
+
+
+Starts the plugin
+
+This starts the plugin. It starts additional threads, which are required by the plugin.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if starting was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcPluginUpnp_f59cbb0bb2a3872e33461fb46b4f79b4}{
+\index{cPluginUpnp@{cPluginUpnp}!Stop@{Stop}}
+\index{Stop@{Stop}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{Stop}]{\setlength{\rightskip}{0pt plus 5cm}void cPluginUpnp::Stop (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_f59cbb0bb2a3872e33461fb46b4f79b4}
+
+
+Stops the plugin
+
+This stops the plugin and all its components \hypertarget{classcPluginUpnp_584844bf459ec3eb7f6037f9cbb52fd5}{
+\index{cPluginUpnp@{cPluginUpnp}!Version@{Version}}
+\index{Version@{Version}!cPluginUpnp@{cPluginUpnp}}
+\subsubsection[{Version}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cPluginUpnp::Version (void)\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcPluginUpnp_584844bf459ec3eb7f6037f9cbb52fd5}
+
+
+Get the version of the plugin
+
+Returns the version string of the plugin
+
+\begin{Desc}
+\item[Returns:]a string representation of the plugin version \end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+upnp.h\item
+upnp.cpp\end{CompactItemize}
diff --git a/doc/latex/classcPluginUpnp__coll__graph.eps b/doc/latex/classcPluginUpnp__coll__graph.eps
new file mode 100644
index 0000000..ceccf0c
--- /dev/null
+++ b/doc/latex/classcPluginUpnp__coll__graph.eps
@@ -0,0 +1,1942 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 678 2384
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 642 2348 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 255 0 moveto
+255 216 lineto
+368 216 lineto
+368 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 255 0 moveto
+255 216 lineto
+368 216 lineto
+368 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+283.5 203 moveto 55 (cPluginUpnp) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 255 196 moveto
+368 196 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 183 moveto 65 (- mUpnpServer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 171 moveto 81 (- mConfigDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 255 164 moveto
+368 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 151 moveto 70 (+ cPluginUpnp\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 139 moveto 76 (+ ~cPluginUpnp\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 127 moveto 47 (+ Version\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 115 moveto 64 (+ Description\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 103 moveto 97 (+ CommandLineHelp\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 91 moveto 71 (+ ProcessArgs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 79 moveto 51 (+ Initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 67 moveto 36 (+ Start\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 55 moveto 35 (+ Stop\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 43 moveto 43 (+ Active\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 31 moveto 65 (+ SetupMenu\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 19 moveto 66 (+ SetupParse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+262.5 7 moveto 95 (+ getConfigDirectory\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 244 264 378 660 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPServer.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 244 264 moveto
+244 660 lineto
+379 660 lineto
+379 264 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 264 moveto
+244 660 lineto
+379 660 lineto
+379 264 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+281.5 647 moveto 59 (cUPnPServer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 640 moveto
+379 640 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 627 moveto 58 (- mIsRunning) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 615 moveto 58 (- mIsEnabled) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 603 moveto 63 (- mServerAddr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 591 moveto 53 (- mInterface) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 579 moveto 119 (- mIsAutoDetectionEnabled) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 567 moveto 93 (- mDeviceDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 555 moveto 62 (- mWebServer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 543 moveto 82 (- mMediaDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 531 moveto 74 (- mDeviceHandle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 519 moveto 101 (- mConnectionManager) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 507 moveto 87 (- mContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 500 moveto
+379 500 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 487 moveto 74 (+ cUPnPServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 475 moveto 80 (+ ~cUPnPServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 463 moveto 44 (+ enable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 451 moveto 35 (+ start\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 439 moveto 43 (+ restart\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 427 moveto 34 (+ stop\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 415 moveto 98 (+ autoDetectSettings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 403 moveto 93 (+ getServerAddress\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 391 moveto 67 (+ getInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 379 moveto 75 (+ setServerPort\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 367 moveto 67 (+ setInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 355 moveto 65 (+ setAddress\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 343 moveto 90 (+ setAutoDetection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 331 moveto 58 (+ isEnabled\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 319 moveto 58 (+ isRunning\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 307 moveto 119 (+ isAutoDetectionEnabled\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 295 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 283 moveto 35 (- uninit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 271 moveto 98 (- upnpActionCallback\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 311 254 moveto
+311 241 311 229 311 216 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 311 264 moveto
+306.5 254 lineto
+311 259 lineto
+311 254 lineto
+311 254 lineto
+311 254 lineto
+311 259 lineto
+315.5 254 lineto
+311 264 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 311 264 moveto
+306.5 254 lineto
+311 259 lineto
+311 254 lineto
+311 254 lineto
+311 254 lineto
+311 259 lineto
+315.5 254 lineto
+311 264 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+311.5 237 moveto 59 (mUpnpServer) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 202 744 324 912 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcContentDirectory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 202 744 moveto
+202 912 lineto
+325 912 lineto
+325 744 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 744 moveto
+202 912 lineto
+325 912 lineto
+325 744 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+224 899 moveto 78 (cContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 892 moveto
+325 892 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 879 moveto 82 (- mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 872 moveto
+325 872 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 859 moveto 93 (+ cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 847 moveto 99 (+ ~cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 835 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 823 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 811 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 799 moveto 40 (- Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 787 moveto 107 (- getSearchCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 775 moveto 94 (- getSortCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 763 moveto 100 (- getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 751 moveto 43 (- browse\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 261 734 moveto
+262 715 263 696 265 678 curveto
+266 672 266 666 267 660 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 261 744 moveto
+256.5 734 lineto
+261 739 lineto
+261 734 lineto
+261 734 lineto
+261 734 lineto
+261 739 lineto
+265.5 734 lineto
+261 744 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 261 744 moveto
+256.5 734 lineto
+261 739 lineto
+261 734 lineto
+261 734 lineto
+261 734 lineto
+261 739 lineto
+265.5 734 lineto
+261 744 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+265.5 681 moveto 81 (mContentDirectory) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 168 1092 276 1224 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUpnpService.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 168 1092 moveto
+168 1224 lineto
+276 1224 lineto
+276 1092 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 1092 moveto
+168 1224 lineto
+276 1224 lineto
+276 1092 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+191.5 1211 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 1204 moveto
+276 1204 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1191 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 1184 moveto
+276 1184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1171 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1159 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1147 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1135 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1123 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1111 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 1099 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 231 1082 moveto
+235 1047 239 1004 244 966 curveto
+246 949 249 930 251 912 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 227.51 1081.7 moveto
+230 1092 lineto
+234.48 1082.4 lineto
+closepath stroke
+grestore
+% Node12
+gsave
+[ /Rect [ 46 708 184 948 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcConnectionManager.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 46 708 moveto
+46 948 lineto
+184 948 lineto
+184 708 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 708 moveto
+46 948 lineto
+184 948 lineto
+184 708 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+69 935 moveto 92 (cConnectionManager) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 928 moveto
+184 928 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 915 moveto 94 (- mDefaultConnection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 903 moveto 96 (- mVirtualConnections) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 891 moveto 100 (- mSupportedProtocols) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 884 moveto
+184 884 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 871 moveto 107 (+ cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 859 moveto 113 (+ ~cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 847 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 835 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 823 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 811 moveto 47 (- setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 799 moveto 78 (- getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 787 moveto 121 (- getCurrentConnectionIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 775 moveto 122 (- getCurrentConnectionInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 763 moveto 107 (- prepareForConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 751 moveto 101 (- connectionComplete\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 739 moveto 116 (- createVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 727 moveto 121 (- destroyVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 715 moveto 110 (- getConnectionIDsCVS\(\)) alignedtext
+grestore
+% Node4->Node12
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 209 1082 moveto
+202 1046 192 1003 179 966 curveto
+177 960 175 954 173 948 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 205.61 1082.88 moveto
+211 1092 lineto
+212.47 1081.51 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 294 996 426 1320 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 294 996 moveto
+294 1320 lineto
+426 1320 lineto
+426 996 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 996 moveto
+294 1320 lineto
+426 1320 lineto
+426 996 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+323.5 1307 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 1300 moveto
+426 1300 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1287 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1275 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1263 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1251 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1239 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 1232 moveto
+426 1232 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1219 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1207 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1195 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1183 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1171 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1159 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1147 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1135 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1123 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1111 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1099 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1087 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1075 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1063 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1051 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1039 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1027 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1015 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1003 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node5->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 361 986 moveto
+360 894 356 779 346 678 curveto
+345 672 345 666 344 660 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 361 996 moveto
+356.5 986 lineto
+361 991 lineto
+361 986 lineto
+361 986 lineto
+361 986 lineto
+361 991 lineto
+365.5 986 lineto
+361 996 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 361 996 moveto
+356.5 986 lineto
+361 991 lineto
+361 986 lineto
+361 986 lineto
+361 986 lineto
+361 991 lineto
+365.5 986 lineto
+361 996 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+362 825 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node5->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 289 1002 moveto
+287 1000 286 998 285 996 curveto
+280 987 274 987 270 978 curveto
+262 957 259 934 258 912 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 294 1011 moveto
+285.21 1004.44 lineto
+291.57 1006.63 lineto
+289.14 1002.26 lineto
+289.14 1002.26 lineto
+289.14 1002.26 lineto
+291.57 1006.63 lineto
+293.08 1000.07 lineto
+294 1011 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 294 1011 moveto
+285.21 1004.44 lineto
+291.57 1006.63 lineto
+289.14 1002.26 lineto
+289.14 1002.26 lineto
+289.14 1002.26 lineto
+291.57 1006.63 lineto
+293.08 1000.07 lineto
+294 1011 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+273 969 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 300 1410 420 1614 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 300 1410 moveto
+300 1614 lineto
+420 1614 lineto
+420 1410 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1410 moveto
+300 1614 lineto
+420 1614 lineto
+420 1410 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+314 1601 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1594 moveto
+420 1594 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1581 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1569 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1557 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1550 moveto
+420 1550 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1537 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1525 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1513 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1501 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1489 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1477 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1465 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1453 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1441 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1429 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1417 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 360 1400 moveto
+360 1374 360 1347 360 1320 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 360 1410 moveto
+355.5 1400 lineto
+360 1405 lineto
+360 1400 lineto
+360 1400 lineto
+360 1400 lineto
+360 1405 lineto
+364.5 1400 lineto
+360 1410 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 360 1410 moveto
+355.5 1400 lineto
+360 1405 lineto
+360 1400 lineto
+360 1400 lineto
+360 1400 lineto
+360 1405 lineto
+364.5 1400 lineto
+360 1410 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+360.5 1341 moveto 41 (mFactory) alignedtext
+grestore
+% Node6->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 429 1537 moveto
+435 1532 438 1523 438 1512 curveto
+438 1496 431 1486 420 1482 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 420 1542 moveto
+426.56 1533.21 lineto
+424.37 1539.57 lineto
+428.74 1537.14 lineto
+428.74 1537.14 lineto
+428.74 1537.14 lineto
+424.37 1539.57 lineto
+430.93 1541.08 lineto
+420 1542 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 420 1542 moveto
+426.56 1533.21 lineto
+424.37 1539.57 lineto
+428.74 1537.14 lineto
+428.74 1537.14 lineto
+428.74 1537.14 lineto
+424.37 1539.57 lineto
+430.93 1541.08 lineto
+420 1542 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+438 1509 moveto 46 (mInstance) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 214 1704 330 2016 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 214 1704 moveto
+214 2016 lineto
+331 2016 lineto
+331 1704 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1704 moveto
+214 2016 lineto
+331 2016 lineto
+331 1704 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233.5 2003 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1996 moveto
+331 1996 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1983 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1971 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1959 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1947 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1935 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1923 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1916 moveto
+331 1916 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1903 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1891 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1879 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1867 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1855 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1843 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1831 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1819 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1807 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1795 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1783 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1771 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1759 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1747 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1735 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1723 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1711 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node7->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 227 1694 moveto
+209 1595 201 1471 241 1368 curveto
+252 1341 269 1344 285 1320 curveto
+288 1315 291 1311 294 1306 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 229 1704 moveto
+222.63 1695.08 lineto
+228.02 1699.1 lineto
+227.04 1694.19 lineto
+227.04 1694.19 lineto
+227.04 1694.19 lineto
+228.02 1699.1 lineto
+231.45 1693.31 lineto
+229 1704 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 229 1704 moveto
+222.63 1695.08 lineto
+228.02 1699.1 lineto
+227.04 1694.19 lineto
+227.04 1694.19 lineto
+227.04 1694.19 lineto
+228.02 1699.1 lineto
+231.45 1693.31 lineto
+229 1704 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+241 1509 moveto 50 (mDatabase) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 314 1694 moveto
+321 1666 328 1639 334 1614 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 311 1704 moveto
+309.56 1693.13 lineto
+312.44 1699.21 lineto
+313.87 1694.42 lineto
+313.87 1694.42 lineto
+313.87 1694.42 lineto
+312.44 1699.21 lineto
+318.18 1695.71 lineto
+311 1704 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 311 1704 moveto
+309.56 1693.13 lineto
+312.44 1699.21 lineto
+313.87 1694.42 lineto
+313.87 1694.42 lineto
+313.87 1694.42 lineto
+312.44 1699.21 lineto
+318.18 1695.71 lineto
+311 1704 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+319 1677 moveto 50 (mDatabase) alignedtext
+grestore
+% Node7->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 339 1885 moveto
+345 1880 348 1872 348 1860 curveto
+348 1843 341 1833 331 1829 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 331 1891 moveto
+336.3 1881.4 lineto
+335 1888 lineto
+339 1885 lineto
+339 1885 lineto
+339 1885 lineto
+335 1888 lineto
+341.7 1888.6 lineto
+331 1891 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 331 1891 moveto
+336.3 1881.4 lineto
+335 1888 lineto
+339 1885 lineto
+339 1885 lineto
+339 1885 lineto
+335 1888 lineto
+341.7 1888.6 lineto
+331 1891 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+348 1857 moveto 46 (mInstance) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 320 2064 392 2148 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 320 2064 moveto
+320 2148 lineto
+392 2148 lineto
+392 2064 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 2064 moveto
+320 2148 lineto
+392 2148 lineto
+392 2064 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+341.5 2135 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 2128 moveto
+392 2128 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2115 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 2108 moveto
+392 2108 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2095 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2083 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 2071 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 339 2055 moveto
+335 2043 331 2030 326 2016 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 342 2064 moveto
+334.57 2055.94 lineto
+340.42 2059.26 lineto
+338.84 2054.51 lineto
+338.84 2054.51 lineto
+338.84 2054.51 lineto
+340.42 2059.26 lineto
+343.11 2053.09 lineto
+342 2064 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 342 2064 moveto
+334.57 2055.94 lineto
+340.42 2059.26 lineto
+338.84 2054.51 lineto
+338.84 2054.51 lineto
+338.84 2054.51 lineto
+340.42 2059.26 lineto
+343.11 2053.09 lineto
+342 2064 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+337 2037 moveto 32 (mRows) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 246 2196 332 2340 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 246 2196 moveto
+246 2340 lineto
+332 2340 lineto
+332 2196 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2196 moveto
+246 2340 lineto
+332 2340 lineto
+332 2196 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+277 2327 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2320 moveto
+332 2320 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2307 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2295 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2283 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2271 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2264 moveto
+332 2264 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2251 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2239 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2227 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2215 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2203 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node9->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 270 2186 moveto
+268 2173 267 2161 265 2148 curveto
+261 2105 260 2059 261 2016 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 272 2196 moveto
+265.63 2187.08 lineto
+271.02 2191.1 lineto
+270.04 2186.19 lineto
+270.04 2186.19 lineto
+270.04 2186.19 lineto
+271.02 2191.1 lineto
+274.45 2185.31 lineto
+272 2196 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 272 2196 moveto
+265.63 2187.08 lineto
+271.02 2191.1 lineto
+270.04 2186.19 lineto
+270.04 2186.19 lineto
+270.04 2186.19 lineto
+271.02 2191.1 lineto
+274.45 2185.31 lineto
+272 2196 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+268 2103 moveto 46 (mLastRow) alignedtext
+grestore
+% Node9->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 323 2187 moveto
+329 2173 334 2160 339 2148 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 319 2196 moveto
+318.95 2185.03 lineto
+321.03 2191.43 lineto
+323.06 2186.86 lineto
+323.06 2186.86 lineto
+323.06 2186.86 lineto
+321.03 2191.43 lineto
+327.17 2188.69 lineto
+319 2196 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 319 2196 moveto
+318.95 2185.03 lineto
+321.03 2191.43 lineto
+323.06 2186.86 lineto
+323.06 2186.86 lineto
+323.06 2186.86 lineto
+321.03 2191.43 lineto
+327.17 2188.69 lineto
+319 2196 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+332 2169 moveto 46 (mLastRow) alignedtext
+grestore
+% Node10
+gsave
+[ /Rect [ 502 1368 624 1656 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 502 1368 moveto
+502 1656 lineto
+624 1656 lineto
+624 1368 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1368 moveto
+502 1656 lineto
+624 1656 lineto
+624 1368 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+528.5 1643 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1636 moveto
+624 1636 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1623 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1616 moveto
+624 1616 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1603 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1591 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1579 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1567 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1555 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1543 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1531 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1519 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1507 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1495 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1483 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1471 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1459 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1447 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1435 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1423 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1411 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1399 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1387 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1375 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node10->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 497 1376 moveto
+496 1373 494 1370 493 1368 curveto
+472 1331 448 1292 426 1257 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 502 1385 moveto
+493.21 1378.44 lineto
+499.57 1380.63 lineto
+497.14 1376.26 lineto
+497.14 1376.26 lineto
+497.14 1376.26 lineto
+499.57 1380.63 lineto
+501.08 1374.07 lineto
+502 1385 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 502 1385 moveto
+493.21 1378.44 lineto
+499.57 1380.63 lineto
+497.14 1376.26 lineto
+497.14 1376.26 lineto
+497.14 1376.26 lineto
+499.57 1380.63 lineto
+501.08 1374.07 lineto
+502 1385 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+481 1341 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+% Node11
+gsave
+[ /Rect [ 454 726 570 930 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPWebServer.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 454 726 moveto
+454 930 lineto
+570 930 lineto
+570 726 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 726 moveto
+454 930 lineto
+570 930 lineto
+570 726 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+472.5 917 moveto 79 (cUPnPWebServer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 910 moveto
+570 910 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 897 moveto 45 (- mRootdir) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 885 moveto 52 (- mInstance) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 873 moveto 97 (- mVirtualDirCallbacks) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 866 moveto
+570 866 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 853 moveto 28 (+ init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 841 moveto 38 (+ uninit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 829 moveto 100 (+ ~cUPnPWebServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 817 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 805 moveto 45 (+ getInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 793 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 781 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 769 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 757 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 745 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 733 moveto 91 (- cUPnPWebServer\(\)) alignedtext
+grestore
+% Node11->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 451 717 moveto
+428 675 402 629 379 586 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 456 726 moveto
+447.21 719.44 lineto
+453.57 721.63 lineto
+451.14 717.26 lineto
+451.14 717.26 lineto
+451.14 717.26 lineto
+453.57 721.63 lineto
+455.08 715.07 lineto
+456 726 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 456 726 moveto
+447.21 719.44 lineto
+453.57 721.63 lineto
+451.14 717.26 lineto
+451.14 717.26 lineto
+451.14 717.26 lineto
+453.57 721.63 lineto
+455.08 715.07 lineto
+456 726 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+435 681 moveto 56 (mWebServer) alignedtext
+grestore
+% Node11->Node11
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 579 849 moveto
+585 844 588 838 588 828 curveto
+588 814 581 806 570 803 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 570 853 moveto
+577.31 844.83 lineto
+574.57 850.97 lineto
+579.14 848.94 lineto
+579.14 848.94 lineto
+579.14 848.94 lineto
+574.57 850.97 lineto
+580.97 853.05 lineto
+570 853 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 570 853 moveto
+577.31 844.83 lineto
+574.57 850.97 lineto
+579.14 848.94 lineto
+579.14 848.94 lineto
+579.14 848.94 lineto
+574.57 850.97 lineto
+580.97 853.05 lineto
+570 853 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+588 825 moveto 46 (mInstance) alignedtext
+grestore
+% Node12->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 157 698 moveto
+159 691 162 684 166 678 curveto
+188 634 217 589 244 551 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 153 708 moveto
+152.54 697.04 lineto
+154.86 703.36 lineto
+156.71 698.72 lineto
+156.71 698.72 lineto
+156.71 698.72 lineto
+154.86 703.36 lineto
+160.89 700.39 lineto
+153 708 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 153 708 moveto
+152.54 697.04 lineto
+154.86 703.36 lineto
+156.71 698.72 lineto
+156.71 698.72 lineto
+156.71 698.72 lineto
+154.86 703.36 lineto
+160.89 700.39 lineto
+153 708 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+166.5 681 moveto 95 (mConnectionManager) alignedtext
+grestore
+% Node13
+gsave
+[ /Rect [ 0 1062 150 1254 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcVirtualConnection.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 1062 moveto
+0 1254 lineto
+150 1254 lineto
+150 1062 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1062 moveto
+0 1254 lineto
+150 1254 lineto
+150 1062 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+34 1241 moveto 82 (cVirtualConnection) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1234 moveto
+150 1234 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1221 moveto 101 (- mRemoteProtocolInfo) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1209 moveto 134 (- mRemoteConnectionManager) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1197 moveto 53 (- mDirection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1185 moveto 107 (- mRemoteConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1173 moveto 73 (- mConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1161 moveto 77 (- mAVTransportID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1149 moveto 41 (- mRcsID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1137 moveto 43 (- mStatus) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1130 moveto
+150 1130 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1117 moveto 94 (- cVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1105 moveto 80 (- getStatusString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1093 moveto 89 (- getDirectionString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1081 moveto 64 (- getDirection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1069 moveto 103 (- getConnectionStatus\(\)) alignedtext
+grestore
+% Node13->Node12
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 83 1052 moveto
+85 1024 87 994 91 966 curveto
+92 960 93 954 93 948 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 82 1062 moveto
+78.52 1051.6 lineto
+82.5 1057.02 lineto
+83 1052.05 lineto
+83 1052.05 lineto
+83 1052.05 lineto
+82.5 1057.02 lineto
+87.47 1052.5 lineto
+82 1062 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 82 1062 moveto
+78.52 1051.6 lineto
+82.5 1057.02 lineto
+83 1052.05 lineto
+83 1052.05 lineto
+83 1052.05 lineto
+82.5 1057.02 lineto
+87.47 1052.5 lineto
+82 1062 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+91 969 moveto 88 (mDefaultConnection) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 678 2384
+end
+restore
+%%EOF
diff --git a/doc/latex/classcPluginUpnp__coll__graph.md5 b/doc/latex/classcPluginUpnp__coll__graph.md5
new file mode 100644
index 0000000..3a3d2c8
--- /dev/null
+++ b/doc/latex/classcPluginUpnp__coll__graph.md5
@@ -0,0 +1 @@
+f738b9bddda4749b550c92286f91f17c \ No newline at end of file
diff --git a/doc/latex/classcPluginUpnp__coll__graph.pdf b/doc/latex/classcPluginUpnp__coll__graph.pdf
new file mode 100644
index 0000000..fe2660e
--- /dev/null
+++ b/doc/latex/classcPluginUpnp__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcRecordingPlayer.tex b/doc/latex/classcRecordingPlayer.tex
new file mode 100644
index 0000000..2077d1a
--- /dev/null
+++ b/doc/latex/classcRecordingPlayer.tex
@@ -0,0 +1,175 @@
+\hypertarget{classcRecordingPlayer}{
+\section{cRecordingPlayer Class Reference}
+\label{classcRecordingPlayer}\index{cRecordingPlayer@{cRecordingPlayer}}
+}
+{\tt \#include $<$recplayer.h$>$}
+
+Inheritance diagram for cRecordingPlayer:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcRecordingPlayer__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cRecordingPlayer:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcRecordingPlayer__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual void \hyperlink{classcRecordingPlayer_e7ad4362d821f38db5143c0aeff15d97}{open} (UpnpOpenFileMode mode)
+\item
+virtual int \hyperlink{classcRecordingPlayer_e0fda8b0be8e47133698f1763e649b3d}{read} (char $\ast$buf, size\_\-t buflen)
+\item
+virtual int \hyperlink{classcRecordingPlayer_7dd0cb78ae8032eb677f01d71187d6e0}{write} (char $\ast$buf, size\_\-t buflen)
+\item
+virtual int \hyperlink{classcRecordingPlayer_43f7ba867374d6be9e78c68c872bf608}{seek} (off\_\-t offset, int origin)
+\item
+virtual void \hyperlink{classcRecordingPlayer_5e81aeecd16f89e432690a9b05d8dd6a}{close} ()
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static \hyperlink{classcRecordingPlayer}{cRecordingPlayer} $\ast$ \hyperlink{classcRecordingPlayer_59abdfe4e4339943afbd713d2fb35e40}{newInstance} (cRecording $\ast$Recording)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The recording player
+
+This class provides the ability to play VDR records. The difference between usual files and VDR recording files is, that recordings are possibly splitted into multiple files. The class will scan those files and tries to dynamically navigate in them like it would do, if it is a single file.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcRecordingPlayer_5e81aeecd16f89e432690a9b05d8dd6a}{
+\index{cRecordingPlayer@{cRecordingPlayer}!close@{close}}
+\index{close@{close}!cRecordingPlayer@{cRecordingPlayer}}
+\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}void cRecordingPlayer::close ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcRecordingPlayer_5e81aeecd16f89e432690a9b05d8dd6a}
+
+
+Closes the open file
+
+This will close open file handles and frees the memory obtained by it.
+
+Implements \hyperlink{classcFileHandle_d7eaed7d254a64c85a48c3968238b93d}{cFileHandle}.\hypertarget{classcRecordingPlayer_59abdfe4e4339943afbd713d2fb35e40}{
+\index{cRecordingPlayer@{cRecordingPlayer}!newInstance@{newInstance}}
+\index{newInstance@{newInstance}!cRecordingPlayer@{cRecordingPlayer}}
+\subsubsection[{newInstance}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cRecordingPlayer} $\ast$ cRecordingPlayer::newInstance (cRecording $\ast$ {\em Recording})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcRecordingPlayer_59abdfe4e4339943afbd713d2fb35e40}
+
+
+Get a new instance of a recording player
+
+This returns a new instance of a recording player which plays the specified VDR recording.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Recording}]the recording to play \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]the new instance of the recording player \end{Desc}
+\hypertarget{classcRecordingPlayer_e7ad4362d821f38db5143c0aeff15d97}{
+\index{cRecordingPlayer@{cRecordingPlayer}!open@{open}}
+\index{open@{open}!cRecordingPlayer@{cRecordingPlayer}}
+\subsubsection[{open}]{\setlength{\rightskip}{0pt plus 5cm}void cRecordingPlayer::open (UpnpOpenFileMode {\em mode})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcRecordingPlayer_e7ad4362d821f38db5143c0aeff15d97}
+
+
+Opens the file
+
+Opens the file at the given mode. These can be:\begin{itemize}
+\item {\bf UPNP\_\-READ}, to read from the file\item {\bf UPNP\_\-WRITE}, to write to the file\end{itemize}
+
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em mode}]The file mode, i.e. one of the following\begin{itemize}
+\item {\bf UPNP\_\-READ} \item {\bf UPNP\_\-WRITE} \end{itemize}
+\end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_cdf4f4d07382de675b498d85544ea1b6}{cFileHandle}.\hypertarget{classcRecordingPlayer_e0fda8b0be8e47133698f1763e649b3d}{
+\index{cRecordingPlayer@{cRecordingPlayer}!read@{read}}
+\index{read@{read}!cRecordingPlayer@{cRecordingPlayer}}
+\subsubsection[{read}]{\setlength{\rightskip}{0pt plus 5cm}int cRecordingPlayer::read (char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcRecordingPlayer_e0fda8b0be8e47133698f1763e649b3d}
+
+
+Reads from the file
+
+Reads from the file a certain amount of bytes and stores them in a buffer
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_458f25a4c7f62d528cffc84e66d38e7d}{cFileHandle}.\hypertarget{classcRecordingPlayer_43f7ba867374d6be9e78c68c872bf608}{
+\index{cRecordingPlayer@{cRecordingPlayer}!seek@{seek}}
+\index{seek@{seek}!cRecordingPlayer@{cRecordingPlayer}}
+\subsubsection[{seek}]{\setlength{\rightskip}{0pt plus 5cm}int cRecordingPlayer::seek (off\_\-t {\em offset}, \/ int {\em whence})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcRecordingPlayer_43f7ba867374d6be9e78c68c872bf608}
+
+
+Seeks in the file
+
+Seeks in the file where the offset is the relativ position depending on the second parameter. This means, in case of
+
+\begin{itemize}
+\item {\bf SEEK\_\-SET}, the offset is relative to the beginning of the file\item {\bf SEEK\_\-CUR}, it is relative to the current position or\item {\bf SEEK\_\-END}, relative to the end of the file.\end{itemize}
+
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em offset}]The byte offset in the file \item[{\em whence}]one of the following\begin{itemize}
+\item {\bf SEEK\_\-SET},\item {\bf SEEK\_\-CUR},\item {\bf SEEK\_\-END} \end{itemize}
+\end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_d2dde523301abe5e79e6109a93ba705b}{cFileHandle}.\hypertarget{classcRecordingPlayer_7dd0cb78ae8032eb677f01d71187d6e0}{
+\index{cRecordingPlayer@{cRecordingPlayer}!write@{write}}
+\index{write@{write}!cRecordingPlayer@{cRecordingPlayer}}
+\subsubsection[{write}]{\setlength{\rightskip}{0pt plus 5cm}int cRecordingPlayer::write (char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcRecordingPlayer_7dd0cb78ae8032eb677f01d71187d6e0}
+
+
+Writes to the file
+
+Writes to the file a certain amount of bytes which are stored in a buffer
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf $<$0}, in case of an error\item {\bf 0}, when reading was successful\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em buf}]The char buffer \item[{\em buflen}]The size of the buffer \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcFileHandle_e1495303f52f6f2d7ac37a030f78a937}{cFileHandle}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+receiver/recplayer.h\item
+receiver/recplayer.cpp\end{CompactItemize}
diff --git a/doc/latex/classcRecordingPlayer__coll__graph.eps b/doc/latex/classcRecordingPlayer__coll__graph.eps
new file mode 100644
index 0000000..2b938e9
--- /dev/null
+++ b/doc/latex/classcRecordingPlayer__coll__graph.eps
@@ -0,0 +1,358 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 158 452
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 122 416 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 252 lineto
+114 252 lineto
+114 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 252 lineto
+114 252 lineto
+114 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 239 moveto 77 (cRecordingPlayer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 232 moveto
+114 232 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 219 moveto 58 (- mRecording) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 46 (- mOffsets) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 41 (- mOffset) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 65 (- mTotalLenght) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 38 (- mIndex) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 159 moveto 30 (- mFile) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 152 moveto
+114 152 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 98 (+ ~cRecordingPlayer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 70 (+ newInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 35 (- Scan\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 89 (- cRecordingPlayer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 44 (- GetFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 48 (- NextFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 59 (- SeekInFile\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 13 288 101 408 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcFileHandle.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 13 288 moveto
+13 408 lineto
+101 408 lineto
+101 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 288 moveto
+13 408 lineto
+101 408 lineto
+101 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31.5 395 moveto 51 (cFileHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 388 moveto
+101 388 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+55.5 375 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 368 moveto
+101 368 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 355 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 343 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 331 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 319 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 307 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 295 moveto 72 (+ ~cFileHandle\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.000 0.812 0.545 edgecolor
+newpath 57 278 moveto
+57 270 57 261 57 252 curveto
+stroke
+1 setlinewidth
+solid
+0.000 0.812 0.545 edgecolor
+newpath 53.5 278 moveto
+57 288 lineto
+60.5 278 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 158 452
+end
+restore
+%%EOF
diff --git a/doc/latex/classcRecordingPlayer__coll__graph.md5 b/doc/latex/classcRecordingPlayer__coll__graph.md5
new file mode 100644
index 0000000..cc3ce9b
--- /dev/null
+++ b/doc/latex/classcRecordingPlayer__coll__graph.md5
@@ -0,0 +1 @@
+68610d6975719ba0b04bace8c3b2ba13 \ No newline at end of file
diff --git a/doc/latex/classcRecordingPlayer__coll__graph.pdf b/doc/latex/classcRecordingPlayer__coll__graph.pdf
new file mode 100644
index 0000000..69a65fa
--- /dev/null
+++ b/doc/latex/classcRecordingPlayer__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcRecordingPlayer__inherit__graph.eps b/doc/latex/classcRecordingPlayer__inherit__graph.eps
new file mode 100644
index 0000000..2b938e9
--- /dev/null
+++ b/doc/latex/classcRecordingPlayer__inherit__graph.eps
@@ -0,0 +1,358 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 158 452
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 122 416 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 252 lineto
+114 252 lineto
+114 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 252 lineto
+114 252 lineto
+114 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 239 moveto 77 (cRecordingPlayer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 232 moveto
+114 232 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 219 moveto 58 (- mRecording) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 46 (- mOffsets) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 41 (- mOffset) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 65 (- mTotalLenght) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 38 (- mIndex) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 159 moveto 30 (- mFile) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 152 moveto
+114 152 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 98 (+ ~cRecordingPlayer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 70 (+ newInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 35 (- Scan\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 89 (- cRecordingPlayer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 44 (- GetFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 48 (- NextFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 59 (- SeekInFile\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 13 288 101 408 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcFileHandle.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 13 288 moveto
+13 408 lineto
+101 408 lineto
+101 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 288 moveto
+13 408 lineto
+101 408 lineto
+101 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31.5 395 moveto 51 (cFileHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 388 moveto
+101 388 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+55.5 375 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 368 moveto
+101 368 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 355 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 343 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 331 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 319 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 307 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21 295 moveto 72 (+ ~cFileHandle\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.000 0.812 0.545 edgecolor
+newpath 57 278 moveto
+57 270 57 261 57 252 curveto
+stroke
+1 setlinewidth
+solid
+0.000 0.812 0.545 edgecolor
+newpath 53.5 278 moveto
+57 288 lineto
+60.5 278 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 158 452
+end
+restore
+%%EOF
diff --git a/doc/latex/classcRecordingPlayer__inherit__graph.md5 b/doc/latex/classcRecordingPlayer__inherit__graph.md5
new file mode 100644
index 0000000..cc3ce9b
--- /dev/null
+++ b/doc/latex/classcRecordingPlayer__inherit__graph.md5
@@ -0,0 +1 @@
+68610d6975719ba0b04bace8c3b2ba13 \ No newline at end of file
diff --git a/doc/latex/classcRecordingPlayer__inherit__graph.pdf b/doc/latex/classcRecordingPlayer__inherit__graph.pdf
new file mode 100644
index 0000000..51f0e80
--- /dev/null
+++ b/doc/latex/classcRecordingPlayer__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcRegisteredProfile.tex b/doc/latex/classcRegisteredProfile.tex
new file mode 100644
index 0000000..40a54b6
--- /dev/null
+++ b/doc/latex/classcRegisteredProfile.tex
@@ -0,0 +1,31 @@
+\hypertarget{classcRegisteredProfile}{
+\section{cRegisteredProfile Class Reference}
+\label{classcRegisteredProfile}\index{cRegisteredProfile@{cRegisteredProfile}}
+}
+{\tt \#include $<$dlna.h$>$}
+
+Collaboration diagram for cRegisteredProfile:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=160pt]{classcRegisteredProfile__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcRegisteredProfile_b201121ee660bd628a4844e8e50690db}{
+class \hyperlink{classcRegisteredProfile_b201121ee660bd628a4844e8e50690db}{cDlna}}
+\label{classcRegisteredProfile_b201121ee660bd628a4844e8e50690db}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Registered DLNA profile
+
+This class contains information about a certain registered profile like play speeds or flags
+
+The documentation for this class was generated from the following file:\begin{CompactItemize}
+\item
+upnpcomponents/dlna.h\end{CompactItemize}
diff --git a/doc/latex/classcRegisteredProfile__coll__graph.eps b/doc/latex/classcRegisteredProfile__coll__graph.eps
new file mode 100644
index 0000000..38219da
--- /dev/null
+++ b/doc/latex/classcRegisteredProfile__coll__graph.eps
@@ -0,0 +1,333 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 160 284
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 124 248 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+117 120 lineto
+117 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+117 120 lineto
+117 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 107 moveto 80 (cRegisteredProfile) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 100 moveto
+117 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 87 moveto 34 (- Profile) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 75 moveto 48 (- Operation) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 63 moveto 59 (- PlaySpeeds) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 51 moveto 55 (- Conversion) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 39 moveto 64 (- PrimaryFlags) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 32 moveto
+117 32 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 19 moveto 95 (+ cRegisteredProfile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 7 moveto 101 (+ ~cRegisteredProfile\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 24 168 92 240 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structDLNAProfile.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 24 168 moveto
+24 240 lineto
+93 240 lineto
+93 168 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 24 168 moveto
+24 240 lineto
+93 240 lineto
+93 168 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31.5 227 moveto 53 (DLNAProfile) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 24 220 moveto
+93 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31.5 207 moveto 19 (+ ID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31.5 195 moveto 33 (+ mime) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 24 188 moveto
+93 188 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+56.5 175 moveto 3 ( ) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 58 158 moveto
+58 146 58 133 58 120 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 58 168 moveto
+53.5 158 lineto
+58 163 lineto
+58 158 lineto
+58 158 lineto
+58 158 lineto
+58 163 lineto
+62.5 158 lineto
+58 168 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 58 168 moveto
+53.5 158 lineto
+58 163 lineto
+58 158 lineto
+58 158 lineto
+58 158 lineto
+58 163 lineto
+62.5 158 lineto
+58 168 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+58 141 moveto 28 (Profile) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 160 284
+end
+restore
+%%EOF
diff --git a/doc/latex/classcRegisteredProfile__coll__graph.md5 b/doc/latex/classcRegisteredProfile__coll__graph.md5
new file mode 100644
index 0000000..302aefd
--- /dev/null
+++ b/doc/latex/classcRegisteredProfile__coll__graph.md5
@@ -0,0 +1 @@
+afb1190dc1af76bc45e437388b7c2723 \ No newline at end of file
diff --git a/doc/latex/classcRegisteredProfile__coll__graph.pdf b/doc/latex/classcRegisteredProfile__coll__graph.pdf
new file mode 100644
index 0000000..6f84619
--- /dev/null
+++ b/doc/latex/classcRegisteredProfile__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcRow.tex b/doc/latex/classcRow.tex
new file mode 100644
index 0000000..91661ff
--- /dev/null
+++ b/doc/latex/classcRow.tex
@@ -0,0 +1,92 @@
+\hypertarget{classcRow}{
+\section{cRow Class Reference}
+\label{classcRow}\index{cRow@{cRow}}
+}
+{\tt \#include $<$database.h$>$}
+
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+int \hyperlink{classcRow_88b64cc4fcf8f0974f2cf11e875fbaf4}{Count} ()
+\item
+bool \hyperlink{classcRow_4b1e1e5ffe36d35c61476bc2e4ef4eb1}{fetchColumn} (cString $\ast$Column, cString $\ast$Value)
+\item
+bool \hyperlink{classcRow_a2dcc3d44451c793483493502ef72eb1}{fetchColumn} (char $\ast$$\ast$Column, char $\ast$$\ast$Value)
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcRow_224b94ad297724d01a0ad06388446137}{
+class \hyperlink{classcRow_224b94ad297724d01a0ad06388446137}{cSQLiteDatabase}}
+\label{classcRow_224b94ad297724d01a0ad06388446137}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Result row of a SQL SELECT request
+
+This is a single row of a \{{\tt SQL} SELECT\} request.
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcRows}{cRows} \end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcRow_88b64cc4fcf8f0974f2cf11e875fbaf4}{
+\index{cRow@{cRow}!Count@{Count}}
+\index{Count@{Count}!cRow@{cRow}}
+\subsubsection[{Count}]{\setlength{\rightskip}{0pt plus 5cm}int cRow::Count ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcRow_88b64cc4fcf8f0974f2cf11e875fbaf4}
+
+
+Number of columns in this row
+
+\begin{Desc}
+\item[Returns:]the number of rows \end{Desc}
+\hypertarget{classcRow_a2dcc3d44451c793483493502ef72eb1}{
+\index{cRow@{cRow}!fetchColumn@{fetchColumn}}
+\index{fetchColumn@{fetchColumn}!cRow@{cRow}}
+\subsubsection[{fetchColumn}]{\setlength{\rightskip}{0pt plus 5cm}bool cRow::fetchColumn (char $\ast$$\ast$ {\em Column}, \/ char $\ast$$\ast$ {\em Value})}}
+\label{classcRow_a2dcc3d44451c793483493502ef72eb1}
+
+
+Fetches a Column
+
+This will fetch a column of this row and stores the name of the column in the first parameter and the value in the second parameter.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if more columns to come\item {\bf {\tt false},} if the column is its last in this row. \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Column}]The name of the current column \item[{\em Value}]The value of the current column \end{description}
+\end{Desc}
+\hypertarget{classcRow_4b1e1e5ffe36d35c61476bc2e4ef4eb1}{
+\index{cRow@{cRow}!fetchColumn@{fetchColumn}}
+\index{fetchColumn@{fetchColumn}!cRow@{cRow}}
+\subsubsection[{fetchColumn}]{\setlength{\rightskip}{0pt plus 5cm}bool cRow::fetchColumn (cString $\ast$ {\em Column}, \/ cString $\ast$ {\em Value})}}
+\label{classcRow_4b1e1e5ffe36d35c61476bc2e4ef4eb1}
+
+
+Fetches a Column
+
+This will fetch a column of this row and stores the name of the column in the first parameter and the value in the second parameter.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if more columns to come\item {\bf {\tt false},} if the column is its last in this row. \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Column}]The name of the current column \item[{\em Value}]The value of the current value \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/database.h\item
+database/database.cpp\end{CompactItemize}
diff --git a/doc/latex/classcRows.tex b/doc/latex/classcRows.tex
new file mode 100644
index 0000000..0d83296
--- /dev/null
+++ b/doc/latex/classcRows.tex
@@ -0,0 +1,64 @@
+\hypertarget{classcRows}{
+\section{cRows Class Reference}
+\label{classcRows}\index{cRows@{cRows}}
+}
+{\tt \#include $<$database.h$>$}
+
+Collaboration diagram for cRows:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=133pt]{classcRows__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+bool \hyperlink{classcRows_03a454862807c81280fd7b87b35ba19e}{fetchRow} (\hyperlink{classcRow}{cRow} $\ast$$\ast$Row)
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcRows_224b94ad297724d01a0ad06388446137}{
+class \hyperlink{classcRows_224b94ad297724d01a0ad06388446137}{cSQLiteDatabase}}
+\label{classcRows_224b94ad297724d01a0ad06388446137}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Result rows of a SQL SELECT request
+
+Contains the rows of a SQL SELECT request
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcRow}{cRow} \end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcRows_03a454862807c81280fd7b87b35ba19e}{
+\index{cRows@{cRows}!fetchRow@{fetchRow}}
+\index{fetchRow@{fetchRow}!cRows@{cRows}}
+\subsubsection[{fetchRow}]{\setlength{\rightskip}{0pt plus 5cm}bool cRows::fetchRow ({\bf cRow} $\ast$$\ast$ {\em Row})}}
+\label{classcRows_03a454862807c81280fd7b87b35ba19e}
+
+
+Fetches a row from the result
+
+This fetches the next row in the resultset by storing the contents of that row in the first parameter.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if more rows to come\item {\bf {\tt false},} if the row is its last in this resultset. \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Row}]The Pointer of the row \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/database.h\item
+database/database.cpp\end{CompactItemize}
diff --git a/doc/latex/classcRows__coll__graph.eps b/doc/latex/classcRows__coll__graph.eps
new file mode 100644
index 0000000..9b1b4aa
--- /dev/null
+++ b/doc/latex/classcRows__coll__graph.eps
@@ -0,0 +1,342 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 133 320
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 97 284 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 7 0 moveto
+7 84 lineto
+79 84 lineto
+79 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 0 moveto
+7 84 lineto
+79 84 lineto
+79 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 71 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 64 moveto
+79 64 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 51 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 44 moveto
+79 44 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 31 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 19 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 7 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 132 86 276 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 132 moveto
+0 276 lineto
+86 276 lineto
+86 132 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 132 moveto
+0 276 lineto
+86 276 lineto
+86 132 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31 263 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 256 moveto
+86 256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 243 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 231 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 219 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 200 moveto
+86 200 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 187 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 175 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 163 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 151 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 43 122 moveto
+43 109 43 96 43 84 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 43 132 moveto
+38.5 122 lineto
+43 127 lineto
+43 122 lineto
+43 122 lineto
+43 122 lineto
+43 127 lineto
+47.5 122 lineto
+43 132 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 43 132 moveto
+38.5 122 lineto
+43 127 lineto
+43 122 lineto
+43 122 lineto
+43 122 lineto
+43 127 lineto
+47.5 122 lineto
+43 132 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+43 105 moveto 46 (mLastRow) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 133 320
+end
+restore
+%%EOF
diff --git a/doc/latex/classcRows__coll__graph.md5 b/doc/latex/classcRows__coll__graph.md5
new file mode 100644
index 0000000..1c1a46b
--- /dev/null
+++ b/doc/latex/classcRows__coll__graph.md5
@@ -0,0 +1 @@
+63fb3682c98623486997b45e8f41d1ce \ No newline at end of file
diff --git a/doc/latex/classcRows__coll__graph.pdf b/doc/latex/classcRows__coll__graph.pdf
new file mode 100644
index 0000000..a65da19
--- /dev/null
+++ b/doc/latex/classcRows__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcSQLiteDatabase.tex b/doc/latex/classcSQLiteDatabase.tex
new file mode 100644
index 0000000..78bb93d
--- /dev/null
+++ b/doc/latex/classcSQLiteDatabase.tex
@@ -0,0 +1,224 @@
+\hypertarget{classcSQLiteDatabase}{
+\section{cSQLiteDatabase Class Reference}
+\label{classcSQLiteDatabase}\index{cSQLiteDatabase@{cSQLiteDatabase}}
+}
+{\tt \#include $<$database.h$>$}
+
+Collaboration diagram for cSQLiteDatabase:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcSQLiteDatabase__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+int \hyperlink{classcSQLiteDatabase_2119fbbf7a02c9c627038ddc14c9eb48}{getResultCount} () const
+\item
+long \hyperlink{classcSQLiteDatabase_408e5de345a74f2540ee1cea3c97cd51}{getLastInsertRowID} () const
+\item
+\hyperlink{classcRows}{cRows} $\ast$ \hyperlink{classcSQLiteDatabase_4cd24d9d63173c54b63aadc7ada86e7e}{getResultRows} () const
+\item
+int \hyperlink{classcSQLiteDatabase_33ac864ee86fe3f08f66f1c14fcfc331}{execStatement} (const char $\ast$Statement,...)
+\item
+void \hyperlink{classcSQLiteDatabase_5c481c06d73cff4f1192409bfc23a15a}{startTransaction} ()
+\item
+void \hyperlink{classcSQLiteDatabase_f11b7090ae824f7f3fc094dc7112323a}{commitTransaction} ()
+\item
+void \hyperlink{classcSQLiteDatabase_e20eff598832e1da41a8e915ee807548}{rollbackTransaction} ()
+\item
+void \hyperlink{classcSQLiteDatabase_b1749baadeb733ea3efdbbd9ffe83253}{setAutoCommit} (bool Commit=true)
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static const char $\ast$ \hyperlink{classcSQLiteDatabase_cdc42326657aea81fd26da6500642381}{sprintf} (const char $\ast$Format,...)
+\item
+static \hyperlink{classcSQLiteDatabase}{cSQLiteDatabase} $\ast$ \hyperlink{classcSQLiteDatabase_a39756509bd68fd8e335cc9cc40c6f26}{getInstance} ()
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcSQLiteDatabase_e652fe93205a32a144bf764782bea797}{
+class \textbf{cStatement}}
+\label{classcSQLiteDatabase_e652fe93205a32a144bf764782bea797}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+SQLite Database
+
+This is a wrapper class for a SQLite3 database connection It supports simple execution functions.
+
+On requests with returns any results a instance of {\tt cRows$\ast$} will be created.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcSQLiteDatabase_f11b7090ae824f7f3fc094dc7112323a}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!commitTransaction@{commitTransaction}}
+\index{commitTransaction@{commitTransaction}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{commitTransaction}]{\setlength{\rightskip}{0pt plus 5cm}void cSQLiteDatabase::commitTransaction ()}}
+\label{classcSQLiteDatabase_f11b7090ae824f7f3fc094dc7112323a}
+
+
+Commits a transaction
+
+This function commits the transaction and writes all changes to the database
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcSQLiteDatabase_5c481c06d73cff4f1192409bfc23a15a}{cSQLiteDatabase::startTransaction} \end{Desc}
+\hypertarget{classcSQLiteDatabase_33ac864ee86fe3f08f66f1c14fcfc331}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!execStatement@{execStatement}}
+\index{execStatement@{execStatement}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{execStatement}]{\setlength{\rightskip}{0pt plus 5cm}int cSQLiteDatabase::execStatement (const char $\ast$ {\em Statement}, \/ {\em ...})}}
+\label{classcSQLiteDatabase_33ac864ee86fe3f08f66f1c14fcfc331}
+
+
+Executes a SQL statement
+
+This will execute the statement in the first parameter. If it is followed by any optional parameters it will be formated using the same function as in {\tt \hyperlink{classcSQLiteDatabase_cdc42326657aea81fd26da6500642381}{cSQLiteDatabase::sprintf()}}.
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcSQLiteDatabase_cdc42326657aea81fd26da6500642381}{cSQLiteDatabase::sprintf()}.\end{Desc}
+\begin{Desc}
+\item[Returns:]returns an integer representing\begin{itemize}
+\item {\bf {\tt -1},} in case of an error\item {\bf {\tt 0},} when the statement was executed successfuly \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Statement}]Statement to be executed \end{description}
+\end{Desc}
+\hypertarget{classcSQLiteDatabase_a39756509bd68fd8e335cc9cc40c6f26}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!getInstance@{getInstance}}
+\index{getInstance@{getInstance}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{getInstance}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cSQLiteDatabase} $\ast$ cSQLiteDatabase::getInstance ()\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcSQLiteDatabase_a39756509bd68fd8e335cc9cc40c6f26}
+
+
+Returns the instance of the database
+
+Returns the instance of the SQLite database. This will create a single instance of none is existing on the very first call. A subsequent call will return the same instance.
+
+\begin{Desc}
+\item[Returns:]the database instance \end{Desc}
+\hypertarget{classcSQLiteDatabase_408e5de345a74f2540ee1cea3c97cd51}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!getLastInsertRowID@{getLastInsertRowID}}
+\index{getLastInsertRowID@{getLastInsertRowID}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{getLastInsertRowID}]{\setlength{\rightskip}{0pt plus 5cm}long cSQLiteDatabase::getLastInsertRowID () const}}
+\label{classcSQLiteDatabase_408e5de345a74f2540ee1cea3c97cd51}
+
+
+The last {\tt INSERT} RowID
+
+Returns the primary key of the last inserted row. This will only work if there are no successive calls to the database.
+
+\begin{Desc}
+\item[Returns:]the last insert RowID \end{Desc}
+\hypertarget{classcSQLiteDatabase_2119fbbf7a02c9c627038ddc14c9eb48}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!getResultCount@{getResultCount}}
+\index{getResultCount@{getResultCount}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{getResultCount}]{\setlength{\rightskip}{0pt plus 5cm}int cSQLiteDatabase::getResultCount () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcSQLiteDatabase_2119fbbf7a02c9c627038ddc14c9eb48}
+
+
+Row count of the last result
+
+Returns the row count of the last \{{\tt SQL} SELECT\} request.
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcRows}{cRows} \end{Desc}
+\begin{Desc}
+\item[Returns:]the result row count \end{Desc}
+\hypertarget{classcSQLiteDatabase_4cd24d9d63173c54b63aadc7ada86e7e}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!getResultRows@{getResultRows}}
+\index{getResultRows@{getResultRows}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{getResultRows}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cRows}$\ast$ cSQLiteDatabase::getResultRows () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcSQLiteDatabase_4cd24d9d63173c54b63aadc7ada86e7e}
+
+
+Result set of the last request
+
+Returns the result rows of the SQL SELECT request. This might be NULL, if the last statement was not a SELECT.
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcRows}{cRows} \end{Desc}
+\begin{Desc}
+\item[Returns:]the result rows of the last {\tt SELECT} statement. \end{Desc}
+\hypertarget{classcSQLiteDatabase_e20eff598832e1da41a8e915ee807548}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!rollbackTransaction@{rollbackTransaction}}
+\index{rollbackTransaction@{rollbackTransaction}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{rollbackTransaction}]{\setlength{\rightskip}{0pt plus 5cm}void cSQLiteDatabase::rollbackTransaction ()}}
+\label{classcSQLiteDatabase_e20eff598832e1da41a8e915ee807548}
+
+
+Performs a rollback on a transaction
+
+This function performs a rollback. No changes will be made to the database
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcSQLiteDatabase_e20eff598832e1da41a8e915ee807548}{cSQLiteDatabase::rollbackTransaction} \end{Desc}
+\hypertarget{classcSQLiteDatabase_b1749baadeb733ea3efdbbd9ffe83253}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!setAutoCommit@{setAutoCommit}}
+\index{setAutoCommit@{setAutoCommit}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{setAutoCommit}]{\setlength{\rightskip}{0pt plus 5cm}void cSQLiteDatabase::setAutoCommit (bool {\em Commit} = {\tt true})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcSQLiteDatabase_b1749baadeb733ea3efdbbd9ffe83253}
+
+
+Set the commit behavior
+
+This function sets the auto commit behavior on new transactions with \begin{Desc}
+\item[See also:]\hyperlink{classcSQLiteDatabase_5c481c06d73cff4f1192409bfc23a15a}{cSQLiteDatabase::startTransaction}.\end{Desc}
+\begin{itemize}
+\item {\bf {\tt true},} commits the last transaction before starting a new one\item {\bf {\tt false},} performs a rollback on the old transaction \end{itemize}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Commit}]Switches the behavior of auto commit \end{description}
+\end{Desc}
+\hypertarget{classcSQLiteDatabase_cdc42326657aea81fd26da6500642381}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!sprintf@{sprintf}}
+\index{sprintf@{sprintf}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{sprintf}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ cSQLiteDatabase::sprintf (const char $\ast$ {\em Format}, \/ {\em ...})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcSQLiteDatabase_cdc42326657aea81fd26da6500642381}
+
+
+Prints a SQLite escaped text
+
+Returns a formated text with special characters to escape SQLite special characters like \char`\"{}'\char`\"{}. Additionally to the well known characters of {\em printf\/} the following are allowed:
+
+\begin{itemize}
+\item {\bf {\tt q},} like s, escapes single quotes in strings\item {\bf {\tt Q},} like q, surrounds the escaped string with additional single quotes\item {\bf {\tt z},} frees the string after reading and coping it\end{itemize}
+
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcSQLiteDatabase_cdc42326657aea81fd26da6500642381}{sprintf()} \end{Desc}
+\begin{Desc}
+\item[Returns:]the formated string \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Format}]The format string \end{description}
+\end{Desc}
+\hypertarget{classcSQLiteDatabase_5c481c06d73cff4f1192409bfc23a15a}{
+\index{cSQLiteDatabase@{cSQLiteDatabase}!startTransaction@{startTransaction}}
+\index{startTransaction@{startTransaction}!cSQLiteDatabase@{cSQLiteDatabase}}
+\subsubsection[{startTransaction}]{\setlength{\rightskip}{0pt plus 5cm}void cSQLiteDatabase::startTransaction ()}}
+\label{classcSQLiteDatabase_5c481c06d73cff4f1192409bfc23a15a}
+
+
+Starts a transaction
+
+This starts a new transaction and commits or rolls back a previous.
+
+\begin{Desc}
+\item[See also:]\hyperlink{classcSQLiteDatabase_b1749baadeb733ea3efdbbd9ffe83253}{cSQLiteDatabase::setAutoCommit}
+
+\hyperlink{classcSQLiteDatabase_f11b7090ae824f7f3fc094dc7112323a}{cSQLiteDatabase::commitTransaction} \end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/database.h\item
+database/database.cpp\end{CompactItemize}
diff --git a/doc/latex/classcSQLiteDatabase__coll__graph.eps b/doc/latex/classcSQLiteDatabase__coll__graph.eps
new file mode 100644
index 0000000..217d343
--- /dev/null
+++ b/doc/latex/classcSQLiteDatabase__coll__graph.eps
@@ -0,0 +1,558 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 224 680
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 188 644 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 312 lineto
+117 312 lineto
+117 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 312 lineto
+117 312 lineto
+117 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+19.5 299 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 292 moveto
+117 292 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 279 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 267 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 255 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 243 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 231 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 219 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 212 moveto
+117 212 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 199 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 187 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 175 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 163 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 151 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 139 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 127 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 115 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 103 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 91 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 79 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 31 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 19 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 7 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 125 181 moveto
+131 176 134 168 134 156 curveto
+134 139 127 129 117 125 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 117 187 moveto
+122.3 177.4 lineto
+121 184 lineto
+125 181 lineto
+125 181 lineto
+125 181 lineto
+121 184 lineto
+127.7 184.6 lineto
+117 187 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 117 187 moveto
+122.3 177.4 lineto
+121 184 lineto
+125 181 lineto
+125 181 lineto
+125 181 lineto
+121 184 lineto
+127.7 184.6 lineto
+117 187 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+134 153 moveto 46 (mInstance) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 89 360 161 444 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 89 360 moveto
+89 444 lineto
+161 444 lineto
+161 360 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 360 moveto
+89 444 lineto
+161 444 lineto
+161 360 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+110.5 431 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 424 moveto
+161 424 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 411 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 404 moveto
+161 404 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 391 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 379 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 367 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 111 350 moveto
+108 339 104 326 101 312 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 114 360 moveto
+106.82 351.71 lineto
+112.56 355.21 lineto
+111.13 350.42 lineto
+111.13 350.42 lineto
+111.13 350.42 lineto
+112.56 355.21 lineto
+115.44 349.13 lineto
+114 360 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 114 360 moveto
+106.82 351.71 lineto
+112.56 355.21 lineto
+111.13 350.42 lineto
+111.13 350.42 lineto
+111.13 350.42 lineto
+112.56 355.21 lineto
+115.44 349.13 lineto
+114 360 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+107 333 moveto 32 (mRows) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 15 492 101 636 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 15 492 moveto
+15 636 lineto
+101 636 lineto
+101 492 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 492 moveto
+15 636 lineto
+101 636 lineto
+101 492 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+46 623 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 616 moveto
+101 616 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 603 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 591 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 579 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 567 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 560 moveto
+101 560 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 547 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 535 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 523 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 511 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 499 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node3->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 39 482 moveto
+37 469 35 457 34 444 curveto
+30 401 31 355 35 312 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 41 492 moveto
+34.63 483.08 lineto
+40.02 487.1 lineto
+39.04 482.19 lineto
+39.04 482.19 lineto
+39.04 482.19 lineto
+40.02 487.1 lineto
+43.45 481.31 lineto
+41 492 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 41 492 moveto
+34.63 483.08 lineto
+40.02 487.1 lineto
+39.04 482.19 lineto
+39.04 482.19 lineto
+39.04 482.19 lineto
+40.02 487.1 lineto
+43.45 481.31 lineto
+41 492 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+34 399 moveto 46 (mLastRow) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 92 483 moveto
+98 469 103 456 108 444 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 88 492 moveto
+87.95 481.03 lineto
+90.03 487.43 lineto
+92.06 482.86 lineto
+92.06 482.86 lineto
+92.06 482.86 lineto
+90.03 487.43 lineto
+96.17 484.69 lineto
+88 492 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 88 492 moveto
+87.95 481.03 lineto
+90.03 487.43 lineto
+92.06 482.86 lineto
+92.06 482.86 lineto
+92.06 482.86 lineto
+90.03 487.43 lineto
+96.17 484.69 lineto
+88 492 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+98 465 moveto 46 (mLastRow) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 224 680
+end
+restore
+%%EOF
diff --git a/doc/latex/classcSQLiteDatabase__coll__graph.md5 b/doc/latex/classcSQLiteDatabase__coll__graph.md5
new file mode 100644
index 0000000..a747508
--- /dev/null
+++ b/doc/latex/classcSQLiteDatabase__coll__graph.md5
@@ -0,0 +1 @@
+2a59a42580c66e69e970d4e804e12ff6 \ No newline at end of file
diff --git a/doc/latex/classcSQLiteDatabase__coll__graph.pdf b/doc/latex/classcSQLiteDatabase__coll__graph.pdf
new file mode 100644
index 0000000..4e81ac0
--- /dev/null
+++ b/doc/latex/classcSQLiteDatabase__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcSortCriteria.tex b/doc/latex/classcSortCriteria.tex
new file mode 100644
index 0000000..8f6e461
--- /dev/null
+++ b/doc/latex/classcSortCriteria.tex
@@ -0,0 +1,52 @@
+\hypertarget{classcSortCriteria}{
+\section{cSortCriteria Class Reference}
+\label{classcSortCriteria}\index{cSortCriteria@{cSortCriteria}}
+}
+{\tt \#include $<$search.h$>$}
+
+Collaboration diagram for cSortCriteria:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=145pt]{classcSortCriteria__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static cList$<$ \hyperlink{structcSortCrit}{cSortCrit} $>$ $\ast$ \hyperlink{classcSortCriteria_818579ec634d8b6f670a55545970b9e7}{parse} (const char $\ast$Sort)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Creates a list with sort criteria
+
+This parser creates a list of sort criteria. It parses the sort criteria string from a {\em Browse\/} or {\em Search\/} request and stores the information in a {\tt \hyperlink{structcSortCrit}{cSortCrit}} structure.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcSortCriteria_818579ec634d8b6f670a55545970b9e7}{
+\index{cSortCriteria@{cSortCriteria}!parse@{parse}}
+\index{parse@{parse}!cSortCriteria@{cSortCriteria}}
+\subsubsection[{parse}]{\setlength{\rightskip}{0pt plus 5cm}cList$<$ {\bf cSortCrit} $>$ $\ast$ cSortCriteria::parse (const char $\ast$ {\em Sort})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcSortCriteria_818579ec634d8b6f670a55545970b9e7}
+
+
+Parses the sort criteria
+
+This parses the sort criteria and returns a list with valid criterias
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item a list with valid sort criterias\item {\bf {\tt null},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Sort}]the string container the sort criteria \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+misc/search.h\item
+misc/search.cpp\end{CompactItemize}
diff --git a/doc/latex/classcSortCriteria__coll__graph.eps b/doc/latex/classcSortCriteria__coll__graph.eps
new file mode 100644
index 0000000..ca19245
--- /dev/null
+++ b/doc/latex/classcSortCriteria__coll__graph.eps
@@ -0,0 +1,339 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 145 308
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 109 272 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 2 0 moveto
+2 144 lineto
+93 144 lineto
+93 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 2 0 moveto
+2 144 lineto
+93 144 lineto
+93 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20 131 moveto 54 (cSortCriteria) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 2 124 moveto
+93 124 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 111 moveto 61 (- mCurrentCrit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 99 moveto 61 (- mCriteriaList) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 2 92 moveto
+93 92 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 79 moveto 75 (+ ~cSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 67 moveto 39 (+ parse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 55 moveto 54 (- parseSort\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 43 moveto 70 (- pushProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 31 moveto 71 (- pushDirection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 19 moveto 59 (- getSortList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 7 moveto 66 (- cSortCriteria\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 192 94 264 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcSortCrit.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 192 moveto
+0 264 lineto
+94 264 lineto
+94 192 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 192 moveto
+0 264 lineto
+94 264 lineto
+94 192 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 251 moveto 38 (cSortCrit) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 244 moveto
+94 244 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 231 moveto 46 (+ Property) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 219 moveto 78 (+ SortDescending) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 212 moveto
+94 212 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+45.5 199 moveto 3 ( ) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 47 182 moveto
+47 170 47 157 47 144 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 47 192 moveto
+42.5 182 lineto
+47 187 lineto
+47 182 lineto
+47 182 lineto
+47 182 lineto
+47 187 lineto
+51.5 182 lineto
+47 192 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 47 192 moveto
+42.5 182 lineto
+47 187 lineto
+47 182 lineto
+47 182 lineto
+47 182 lineto
+47 187 lineto
+51.5 182 lineto
+47 192 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+46.5 165 moveto 55 (mCurrentCrit) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 145 308
+end
+restore
+%%EOF
diff --git a/doc/latex/classcSortCriteria__coll__graph.md5 b/doc/latex/classcSortCriteria__coll__graph.md5
new file mode 100644
index 0000000..4c7af3b
--- /dev/null
+++ b/doc/latex/classcSortCriteria__coll__graph.md5
@@ -0,0 +1 @@
+32c7bed7fc4fe5597e8997678b6f053a \ No newline at end of file
diff --git a/doc/latex/classcSortCriteria__coll__graph.pdf b/doc/latex/classcSortCriteria__coll__graph.pdf
new file mode 100644
index 0000000..92032c5
--- /dev/null
+++ b/doc/latex/classcSortCriteria__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassContainer.tex b/doc/latex/classcUPnPClassContainer.tex
new file mode 100644
index 0000000..1dd99cd
--- /dev/null
+++ b/doc/latex/classcUPnPClassContainer.tex
@@ -0,0 +1,603 @@
+\hypertarget{classcUPnPClassContainer}{
+\section{cUPnPClassContainer Class Reference}
+\label{classcUPnPClassContainer}\index{cUPnPClassContainer@{cUPnPClassContainer}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPClassContainer:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassContainer__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPClassContainer:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassContainer__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual cStringList $\ast$ \hyperlink{classcUPnPClassContainer_d952c993314a9352d13f644bb95fbdc2}{getPropertyList} ()
+\item
+virtual IXML\_\-Node $\ast$ \hyperlink{classcUPnPClassContainer_fec5b0bae4ed2d194bfc9973f14a3926}{createDIDLFragment} (IXML\_\-Document $\ast$Document, cStringList $\ast$Filter)
+\item
+virtual bool \hyperlink{classcUPnPClassContainer_488761ebb4f074ded0d5374f862a1b54}{setProperty} (const char $\ast$Property, const char $\ast$Value)
+\item
+virtual bool \hyperlink{classcUPnPClassContainer_f70297d2275e083f05024524d21118d7}{getProperty} (const char $\ast$Property, char $\ast$$\ast$Value) const
+\item
+virtual \hyperlink{classcUPnPClassContainer}{cUPnPClassContainer} $\ast$ \hyperlink{classcUPnPClassContainer_32eb7f1d0b3821f0d9573fe59befdf10}{getContainer} ()
+\item
+void \hyperlink{classcUPnPClassContainer_589392682fb7c8e698d09b2eeca83887}{addObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+void \hyperlink{classcUPnPClassContainer_2e3110bd01c17df34cd60302d9330e72}{removeObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcUPnPClassContainer_b2d43f5d5b6ad40d444b7e353979451d}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID) const
+\item
+\hyperlink{classcUPnPObjects}{cUPnPObjects} $\ast$ \hyperlink{classcUPnPClassContainer_ba09b831bbb533d1dbcb6cff4f4b9c23}{getObjectList} () const
+\item
+int \hyperlink{classcUPnPClassContainer_d177af2487ff337fe79ef11fe1e07dd1}{addSearchClass} (\hyperlink{structcClass}{cClass} SearchClass)
+\item
+int \hyperlink{classcUPnPClassContainer_3cfb0c2035e678cde990631b804d4ab2}{delSearchClass} (\hyperlink{structcClass}{cClass} SearchClass)
+\item
+int \hyperlink{classcUPnPClassContainer_55613e5fa7019137aa818036e91a0811}{addCreateClass} (\hyperlink{structcClass}{cClass} CreateClass)
+\item
+int \hyperlink{classcUPnPClassContainer_23c2949d1cb925423a6b113cf0021a5f}{delCreateClass} (\hyperlink{structcClass}{cClass} CreateClass)
+\item
+int \hyperlink{classcUPnPClassContainer_495f4218ec9566ede534a96daf387462}{setContainerType} (const char $\ast$Type)
+\item
+int \hyperlink{classcUPnPClassContainer_aa34f20a75725837af2168a192687a51}{setSearchClasses} (std::vector$<$ \hyperlink{structcClass}{cClass} $>$ SearchClasses)
+\item
+int \hyperlink{classcUPnPClassContainer_633b1e47657d9039d0919ce9b139f9b2}{setCreateClasses} (std::vector$<$ \hyperlink{structcClass}{cClass} $>$ CreateClasses)
+\item
+int \hyperlink{classcUPnPClassContainer_d32e937984f39806a15a22d13a644703}{setSearchable} (bool Searchable)
+\item
+const char $\ast$ \hyperlink{classcUPnPClassContainer_b4977eba812c34a4201935f31be0f5c9}{getContainerType} () const
+\item
+const std::vector$<$ \hyperlink{structcClass}{cClass} $>$ $\ast$ \hyperlink{classcUPnPClassContainer_735327b72c023d3048db0d4fd2a608cc}{getSearchClasses} () const
+\item
+const std::vector$<$ \hyperlink{structcClass}{cClass} $>$ $\ast$ \hyperlink{classcUPnPClassContainer_d9a875daad1093311723262f5f6c1f7c}{getCreateClasses} () const
+\item
+bool \hyperlink{classcUPnPClassContainer_c6d1de26df91d64379a9a2db1f5a7301}{isSearchable} () const
+\item
+unsigned int \hyperlink{classcUPnPClassContainer_b23a80cebe626e0b2b6c3b1a83b039c6}{getChildCount} () const
+\item
+unsigned int \hyperlink{classcUPnPClassContainer_475ad1a2003cc9b169685f825a9d790d}{getUpdateID} () const
+\item
+bool \hyperlink{classcUPnPClassContainer_a8ae4e790074d3a34bc7ec173a02595a}{isUpdated} ()
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+void \hyperlink{classcUPnPClassContainer_6f89b0043d19349efbc52caf7b7dbb3a}{update} ()
+\item
+int \hyperlink{classcUPnPClassContainer_9d3b9dd6388dd2021889a56a4fccfed3}{setUpdateID} (unsigned int UID)
+\item
+\hyperlink{classcUPnPClassContainer_e485882089f12f383ddbea26e186d851}{cUPnPClassContainer} ()
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassContainer_0e4678ea867811f9c5e70e018992c8c8}{
+cString \hyperlink{classcUPnPClassContainer_0e4678ea867811f9c5e70e018992c8c8}{mContainerType}}
+\label{classcUPnPClassContainer_0e4678ea867811f9c5e70e018992c8c8}
+
+\begin{CompactList}\small\item\em DLNA container type. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassContainer_5b66ce95c06498c6166b856d015139b5}{
+tClassVector \hyperlink{classcUPnPClassContainer_5b66ce95c06498c6166b856d015139b5}{mSearchClasses}}
+\label{classcUPnPClassContainer_5b66ce95c06498c6166b856d015139b5}
+
+\begin{CompactList}\small\item\em Classes which are searchable. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassContainer_aa82cb4dae2c818609e60468e2ea6de4}{
+tClassVector \hyperlink{classcUPnPClassContainer_aa82cb4dae2c818609e60468e2ea6de4}{mCreateClasses}}
+\label{classcUPnPClassContainer_aa82cb4dae2c818609e60468e2ea6de4}
+
+\begin{CompactList}\small\item\em Classes which are creatable. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassContainer_640da8763c5ce432b46125faa3be01da}{
+bool \hyperlink{classcUPnPClassContainer_640da8763c5ce432b46125faa3be01da}{mSearchable}}
+\label{classcUPnPClassContainer_640da8763c5ce432b46125faa3be01da}
+
+\begin{CompactList}\small\item\em Is the Container searchable? \item\end{CompactList}\item
+\hypertarget{classcUPnPClassContainer_8cdeed9b80cae365174680dd4196664f}{
+unsigned int \hyperlink{classcUPnPClassContainer_8cdeed9b80cae365174680dd4196664f}{mUpdateID}}
+\label{classcUPnPClassContainer_8cdeed9b80cae365174680dd4196664f}
+
+\begin{CompactList}\small\item\em The containerUpdateID. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassContainer_ec00054069266b3da9212e09b107a7d7}{
+\hyperlink{classcUPnPObjects}{cUPnPObjects} $\ast$ \hyperlink{classcUPnPClassContainer_ec00054069266b3da9212e09b107a7d7}{mChildren}}
+\label{classcUPnPClassContainer_ec00054069266b3da9212e09b107a7d7}
+
+\begin{CompactList}\small\item\em List of children. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassContainer_df514e47f80f94f957ec451e566107a5}{
+cHash$<$ \hyperlink{classcUPnPClassObject}{cUPnPClassObject} $>$ $\ast$ \hyperlink{classcUPnPClassContainer_df514e47f80f94f957ec451e566107a5}{mChildrenID}}
+\label{classcUPnPClassContainer_df514e47f80f94f957ec451e566107a5}
+
+\begin{CompactList}\small\item\em List of children as hash map. \item\end{CompactList}\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassContainer_3d0d0aedce8b1c661ea360b9a6d616f6}{
+class \hyperlink{classcUPnPClassContainer_3d0d0aedce8b1c661ea360b9a6d616f6}{cMediaDatabase}}
+\label{classcUPnPClassContainer_3d0d0aedce8b1c661ea360b9a6d616f6}
+
+\item
+\hypertarget{classcUPnPClassContainer_aefab39434a832c545ac75a79fa81d23}{
+class \hyperlink{classcUPnPClassContainer_aefab39434a832c545ac75a79fa81d23}{cUPnPObjectMediator}}
+\label{classcUPnPClassContainer_aefab39434a832c545ac75a79fa81d23}
+
+\item
+\hypertarget{classcUPnPClassContainer_16cc2f01a45dc16bd9ad186b3be2cfc8}{
+class \hyperlink{classcUPnPClassContainer_16cc2f01a45dc16bd9ad186b3be2cfc8}{cUPnPContainerMediator}}
+\label{classcUPnPClassContainer_16cc2f01a45dc16bd9ad186b3be2cfc8}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP class Container
+
+This is a UPnP class Container representation with all its properties.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPClassContainer_e485882089f12f383ddbea26e186d851}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!cUPnPClassContainer@{cUPnPClassContainer}}
+\index{cUPnPClassContainer@{cUPnPClassContainer}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{cUPnPClassContainer}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPClassContainer::cUPnPClassContainer ()\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassContainer_e485882089f12f383ddbea26e186d851}
+
+
+Constructor of a container
+
+This creates a new instance of a container
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPClassContainer_55613e5fa7019137aa818036e91a0811}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!addCreateClass@{addCreateClass}}
+\index{addCreateClass@{addCreateClass}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{addCreateClass}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::addCreateClass ({\bf cClass} {\em CreateClass})}}
+\label{classcUPnPClassContainer_55613e5fa7019137aa818036e91a0811}
+
+
+Add a create class
+
+This adds a create class to the create classes vector
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if adding was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em CreateClass}]the new class to be added \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_589392682fb7c8e698d09b2eeca83887}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!addObject@{addObject}}
+\index{addObject@{addObject}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{addObject}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPClassContainer::addObject ({\bf cUPnPClassObject} $\ast$ {\em Object})}}
+\label{classcUPnPClassContainer_589392682fb7c8e698d09b2eeca83887}
+
+
+Add a child
+
+This adds the specified child to this container. The parent container of the child will be set to this container.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the child to be added \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_d177af2487ff337fe79ef11fe1e07dd1}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!addSearchClass@{addSearchClass}}
+\index{addSearchClass@{addSearchClass}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{addSearchClass}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::addSearchClass ({\bf cClass} {\em SearchClass})}}
+\label{classcUPnPClassContainer_d177af2487ff337fe79ef11fe1e07dd1}
+
+
+Add a search class
+
+This adds a search class to the search classes vector
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if adding was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em SearchClass}]the new class to be added \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_fec5b0bae4ed2d194bfc9973f14a3926}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!createDIDLFragment@{createDIDLFragment}}
+\index{createDIDLFragment@{createDIDLFragment}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{createDIDLFragment}]{\setlength{\rightskip}{0pt plus 5cm}IXML\_\-Node $\ast$ cUPnPClassContainer::createDIDLFragment (IXML\_\-Document $\ast$ {\em Document}, \/ cStringList $\ast$ {\em Filter})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassContainer_fec5b0bae4ed2d194bfc9973f14a3926}
+
+
+Create the DIDL fragment
+
+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified {\em IXML\/} document. The details of the output can be controlled via the filter stringlist
+
+\begin{Desc}
+\item[Returns:]the DIDL fragment of the object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Document}]the IXML document where to write the contents \item[{\em Filter}]the string list with the filter criteria \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcUPnPClassObject_9090f5982129bc5aa15c6e19db627445}{cUPnPClassObject}.\hypertarget{classcUPnPClassContainer_23c2949d1cb925423a6b113cf0021a5f}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!delCreateClass@{delCreateClass}}
+\index{delCreateClass@{delCreateClass}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{delCreateClass}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::delCreateClass ({\bf cClass} {\em CreateClass})}}
+\label{classcUPnPClassContainer_23c2949d1cb925423a6b113cf0021a5f}
+
+
+Remove a create class
+
+This removes a create class from the create classes vector
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if deleting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em CreateClass}]the class to be deleted \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_3cfb0c2035e678cde990631b804d4ab2}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!delSearchClass@{delSearchClass}}
+\index{delSearchClass@{delSearchClass}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{delSearchClass}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::delSearchClass ({\bf cClass} {\em SearchClass})}}
+\label{classcUPnPClassContainer_3cfb0c2035e678cde990631b804d4ab2}
+
+
+Remove a search class
+
+This removes a search class from the search classes vector
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if deleting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em SearchClass}]the class to be deleted \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_b23a80cebe626e0b2b6c3b1a83b039c6}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getChildCount@{getChildCount}}
+\index{getChildCount@{getChildCount}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getChildCount}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPClassContainer::getChildCount () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassContainer_b23a80cebe626e0b2b6c3b1a83b039c6}
+
+
+Get the number of children
+
+This returns the total number of children of this container
+
+\begin{Desc}
+\item[Returns:]the number of childen \end{Desc}
+\hypertarget{classcUPnPClassContainer_32eb7f1d0b3821f0d9573fe59befdf10}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getContainer@{getContainer}}
+\index{getContainer@{getContainer}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getContainer}]{\setlength{\rightskip}{0pt plus 5cm}virtual {\bf cUPnPClassContainer}$\ast$ cUPnPClassContainer::getContainer ()\hspace{0.3cm}{\tt \mbox{[}inline, virtual\mbox{]}}}}
+\label{classcUPnPClassContainer_32eb7f1d0b3821f0d9573fe59befdf10}
+
+
+Converts to container
+
+This will convert the object into a container if it is one. If not, it returns {\bf {\tt NULL}.}
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt NULL},} if it is not a container\item a container representation of this object \end{itemize}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassObject_ce6f39a8484ae48ea9801b11046cd2a6}{cUPnPClassObject}.\hypertarget{classcUPnPClassContainer_b4977eba812c34a4201935f31be0f5c9}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getContainerType@{getContainerType}}
+\index{getContainerType@{getContainerType}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getContainerType}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassContainer::getContainerType () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassContainer_b4977eba812c34a4201935f31be0f5c9}
+
+
+Get the DLNA container type
+
+This returns the DLNA container type. Currently there are only these possible values beside {\bf {\tt NULL:} } {\bf {\tt TUNER\_\-1\_\-0} } \begin{Desc}
+\item[Returns:]the DLNA container type \end{Desc}
+\hypertarget{classcUPnPClassContainer_d9a875daad1093311723262f5f6c1f7c}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getCreateClasses@{getCreateClasses}}
+\index{getCreateClasses@{getCreateClasses}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getCreateClasses}]{\setlength{\rightskip}{0pt plus 5cm}const std::vector$<${\bf cClass}$>$$\ast$ cUPnPClassContainer::getCreateClasses () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassContainer_d9a875daad1093311723262f5f6c1f7c}
+
+
+Get the create classes
+
+This returns a vector containing all possible create classes. This are classes, which can be created in this container. For instance a TV container can only create items of the class VideoBroadcast. The vector is empty when creation of new items by the user is not allowed.
+
+\begin{Desc}
+\item[Returns:]a vector with create classes \end{Desc}
+\hypertarget{classcUPnPClassContainer_b2d43f5d5b6ad40d444b7e353979451d}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassObject} $\ast$ cUPnPClassContainer::getObject ({\bf cUPnPObjectID} {\em ID}) const}}
+\label{classcUPnPClassContainer_b2d43f5d5b6ad40d444b7e353979451d}
+
+
+Get a child by ID
+
+Returns the child, which is specified by the {\tt ObjectID}.
+
+\begin{Desc}
+\item[Returns:]the child with the specified ID \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the {\tt ObjectID} of the child \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_ba09b831bbb533d1dbcb6cff4f4b9c23}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getObjectList@{getObjectList}}
+\index{getObjectList@{getObjectList}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getObjectList}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjects}$\ast$ cUPnPClassContainer::getObjectList () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassContainer_ba09b831bbb533d1dbcb6cff4f4b9c23}
+
+
+Get the list of children
+
+This returns a list of the children of the container.
+
+\begin{Desc}
+\item[Returns:]the list of children \end{Desc}
+\hypertarget{classcUPnPClassContainer_f70297d2275e083f05024524d21118d7}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getProperty@{getProperty}}
+\index{getProperty@{getProperty}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassContainer::getProperty (const char $\ast$ {\em Property}, \/ char $\ast$$\ast$ {\em Value}) const\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassContainer_f70297d2275e083f05024524d21118d7}
+
+
+Gets a property
+
+Returns the value of a specified property. The value is converted into a string.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be returned \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassObject_539cf36abc96b95bc8437601fed8a0f6}{cUPnPClassObject}.\hypertarget{classcUPnPClassContainer_d952c993314a9352d13f644bb95fbdc2}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getPropertyList@{getPropertyList}}
+\index{getPropertyList@{getPropertyList}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getPropertyList}]{\setlength{\rightskip}{0pt plus 5cm}cStringList $\ast$ cUPnPClassContainer::getPropertyList ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassContainer_d952c993314a9352d13f644bb95fbdc2}
+
+
+Get the properties of the object
+
+This returns a property list with all the properties which can be obtained or set with {\tt getProperty} or {\tt setProperty}.
+
+\begin{Desc}
+\item[Returns:]a stringlist with the properties \end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassObject_4a4d2cd2e59d364050bb64a3d9dced6e}{cUPnPClassObject}.\hypertarget{classcUPnPClassContainer_735327b72c023d3048db0d4fd2a608cc}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getSearchClasses@{getSearchClasses}}
+\index{getSearchClasses@{getSearchClasses}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getSearchClasses}]{\setlength{\rightskip}{0pt plus 5cm}const std::vector$<${\bf cClass}$>$$\ast$ cUPnPClassContainer::getSearchClasses () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassContainer_735327b72c023d3048db0d4fd2a608cc}
+
+
+Get the search classes
+
+This returns a vector container all possible search classes. This are classes, which can be used for searching in this container.
+
+\begin{Desc}
+\item[Returns:]a vector with all search classes \end{Desc}
+\hypertarget{classcUPnPClassContainer_475ad1a2003cc9b169685f825a9d790d}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!getUpdateID@{getUpdateID}}
+\index{getUpdateID@{getUpdateID}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{getUpdateID}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPClassContainer::getUpdateID () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassContainer_475ad1a2003cc9b169685f825a9d790d}
+
+
+Get the containerUpdateID
+
+This returns the containerUpdateID
+
+\begin{Desc}
+\item[Returns:]the containerUpdateID of this container \end{Desc}
+\hypertarget{classcUPnPClassContainer_c6d1de26df91d64379a9a2db1f5a7301}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!isSearchable@{isSearchable}}
+\index{isSearchable@{isSearchable}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{isSearchable}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassContainer::isSearchable () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassContainer_c6d1de26df91d64379a9a2db1f5a7301}
+
+
+Is this container searchable
+
+This returns {\bf {\tt true},} if the container can be search via {\em Search\/} or {\bf {\tt false},} otherwise.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the container is searchable\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_a8ae4e790074d3a34bc7ec173a02595a}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!isUpdated@{isUpdated}}
+\index{isUpdated@{isUpdated}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{isUpdated}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassContainer::isUpdated ()}}
+\label{classcUPnPClassContainer_a8ae4e790074d3a34bc7ec173a02595a}
+
+
+Has the container been updated?
+
+This returns {\bf {\tt true},} if the container was recently updated or {\bf {\tt false},} otherwise
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the container was updated\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_2e3110bd01c17df34cd60302d9330e72}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!removeObject@{removeObject}}
+\index{removeObject@{removeObject}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{removeObject}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPClassContainer::removeObject ({\bf cUPnPClassObject} $\ast$ {\em Object})}}
+\label{classcUPnPClassContainer_2e3110bd01c17df34cd60302d9330e72}
+
+
+Remove a child
+
+This removes the specified child from the list of children. The child will also loose its parent container, so that there is no link between left.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the child to be removed \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_495f4218ec9566ede534a96daf387462}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!setContainerType@{setContainerType}}
+\index{setContainerType@{setContainerType}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{setContainerType}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::setContainerType (const char $\ast$ {\em Type})}}
+\label{classcUPnPClassContainer_495f4218ec9566ede534a96daf387462}
+
+
+Set the DLNA container type
+
+This sets the DLNA container type. It must be a valid container type value.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Type}]the DLNA container type \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_633b1e47657d9039d0919ce9b139f9b2}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!setCreateClasses@{setCreateClasses}}
+\index{setCreateClasses@{setCreateClasses}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{setCreateClasses}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::setCreateClasses (std::vector$<$ {\bf cClass} $>$ {\em CreateClasses})}}
+\label{classcUPnPClassContainer_633b1e47657d9039d0919ce9b139f9b2}
+
+
+Sets the create classes
+
+This sets the create classes, which allows the user to create new objects in this container, if {\em restricted\/} is {\bf {\tt false}.}
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em CreateClasses}]a vector containing the create classes \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_488761ebb4f074ded0d5374f862a1b54}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!setProperty@{setProperty}}
+\index{setProperty@{setProperty}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{setProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassContainer::setProperty (const char $\ast$ {\em Property}, \/ const char $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassContainer_488761ebb4f074ded0d5374f862a1b54}
+
+
+Sets a property
+
+Sets the value of a specified property. The value is converted from string into the propper data type
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be set \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassObject_6f2a803a0d0e148133edce23ed6c0e7c}{cUPnPClassObject}.\hypertarget{classcUPnPClassContainer_d32e937984f39806a15a22d13a644703}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!setSearchable@{setSearchable}}
+\index{setSearchable@{setSearchable}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{setSearchable}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::setSearchable (bool {\em Searchable})}}
+\label{classcUPnPClassContainer_d32e937984f39806a15a22d13a644703}
+
+
+Sets the searchable flag
+
+This sets the searchable flag, which allows or disallows search on this container.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Searchable}]{\bf {\tt true},} to enable or {\bf {\tt false},} to disable searching \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_aa34f20a75725837af2168a192687a51}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!setSearchClasses@{setSearchClasses}}
+\index{setSearchClasses@{setSearchClasses}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{setSearchClasses}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::setSearchClasses (std::vector$<$ {\bf cClass} $>$ {\em SearchClasses})}}
+\label{classcUPnPClassContainer_aa34f20a75725837af2168a192687a51}
+
+
+Sets the search classes
+
+This sets the search classes, which allows the user to search only for these classes in the current container and its children. If the vector is empty the search can return any match. If the additional flag {\bf {\tt derived} is} set, then also any derived classes are matched.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em SearchClasses}]a vector container the allowed search classes \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_9d3b9dd6388dd2021889a56a4fccfed3}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!setUpdateID@{setUpdateID}}
+\index{setUpdateID@{setUpdateID}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{setUpdateID}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassContainer::setUpdateID (unsigned int {\em UID})\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassContainer_9d3b9dd6388dd2021889a56a4fccfed3}
+
+
+Sets the containerUpdateID
+
+This method should only be used when the containerUpdateID is loaded from the database.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em UID}]the containerUpdateID \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassContainer_6f89b0043d19349efbc52caf7b7dbb3a}{
+\index{cUPnPClassContainer@{cUPnPClassContainer}!update@{update}}
+\index{update@{update}!cUPnPClassContainer@{cUPnPClassContainer}}
+\subsubsection[{update}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPClassContainer::update ()\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassContainer_6f89b0043d19349efbc52caf7b7dbb3a}
+
+
+Update the container
+
+This performs an update, which acutally increases the containerUpdateID.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPClassContainer__coll__graph.eps b/doc/latex/classcUPnPClassContainer__coll__graph.eps
new file mode 100644
index 0000000..1e243b4
--- /dev/null
+++ b/doc/latex/classcUPnPClassContainer__coll__graph.eps
@@ -0,0 +1,793 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 340 1508
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 304 1472 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 132 0 moveto
+132 456 lineto
+266 456 lineto
+266 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 132 0 moveto
+132 456 lineto
+266 456 lineto
+266 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+150.5 443 moveto 97 (cUPnPClassContainer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 132 436 moveto
+266 436 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 423 moveto 79 (# mContainerType) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 411 moveto 83 (# mSearchClasses) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 399 moveto 80 (# mCreateClasses) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 387 moveto 65 (# mSearchable) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 375 moveto 57 (# mUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 363 moveto 52 (# mChildren) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 351 moveto 62 (# mChildrenID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 132 344 moveto
+266 344 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 331 moveto 118 (+ ~cUPnPClassContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 319 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 307 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 295 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 283 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 271 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 259 moveto 59 (+ addObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 247 moveto 76 (+ removeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 235 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 223 moveto 73 (+ getObjectList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 211 moveto 86 (+ addSearchClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 199 moveto 83 (+ delSearchClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 187 moveto 84 (+ addCreateClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 175 moveto 81 (+ delCreateClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 163 moveto 91 (+ setContainerType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 151 moveto 95 (+ setSearchClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 139 moveto 92 (+ setCreateClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 127 moveto 77 (+ setSearchable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 115 moveto 91 (+ getContainerType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 103 moveto 95 (+ getSearchClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 91 moveto 92 (+ getCreateClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 79 moveto 71 (+ isSearchable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 67 moveto 76 (+ getChildCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 55 moveto 69 (+ getUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 43 moveto 59 (+ isUpdated\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 31 moveto 44 (# update\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 19 moveto 68 (# setUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+140 7 moveto 111 (# cUPnPClassContainer\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 1 504 121 1116 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 1 504 moveto
+1 1116 lineto
+122 1116 lineto
+122 504 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 504 moveto
+1 1116 lineto
+122 1116 lineto
+122 504 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+19 1103 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 1096 moveto
+122 1096 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 1083 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 1071 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 1059 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 1047 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 1035 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 1023 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 1011 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 999 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 987 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 975 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 963 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 951 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 939 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 927 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 915 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 908 moveto
+122 908 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 895 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 883 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 871 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 859 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 847 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 835 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 823 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 811 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 799 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 787 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 775 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 763 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 751 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 739 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 727 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 715 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 703 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 691 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 679 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 667 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 655 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 643 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 631 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 619 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 607 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 595 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 583 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 571 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 559 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 547 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 535 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 523 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 511 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 124 543 moveto
+131 514 138 485 145 456 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 120.53 542.51 moveto
+122 553 lineto
+127.39 543.88 lineto
+closepath stroke
+grestore
+% Node2->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 129 859 moveto
+135 849 139 833 139 810 curveto
+139 780 132 761 122 753 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 122 867 moveto
+125.2 856.51 lineto
+125.29 863.24 lineto
+128.59 859.47 lineto
+128.59 859.47 lineto
+128.59 859.47 lineto
+125.29 863.24 lineto
+131.97 862.44 lineto
+122 867 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 122 867 moveto
+125.2 856.51 lineto
+125.29 863.24 lineto
+128.59 859.47 lineto
+128.59 859.47 lineto
+128.59 859.47 lineto
+125.29 863.24 lineto
+131.97 862.44 lineto
+122 867 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+139.5 807 moveto 37 (mParent) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 0 1176 122 1464 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 1176 moveto
+0 1464 lineto
+122 1464 lineto
+122 1176 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1176 moveto
+0 1464 lineto
+122 1464 lineto
+122 1176 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26.5 1451 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1444 moveto
+122 1444 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1431 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1424 moveto
+122 1424 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1411 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1399 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1387 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1375 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1363 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1351 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1339 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1327 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1315 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1303 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1291 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1279 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1267 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1255 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1243 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1231 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1219 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1207 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1195 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1183 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 61 1166 moveto
+61 1150 61 1133 61 1116 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 61 1176 moveto
+56.5 1166 lineto
+61 1171 lineto
+61 1166 lineto
+61 1166 lineto
+61 1166 lineto
+61 1171 lineto
+65.5 1166 lineto
+61 1176 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 61 1176 moveto
+56.5 1166 lineto
+61 1171 lineto
+61 1166 lineto
+61 1166 lineto
+61 1166 lineto
+61 1171 lineto
+65.5 1166 lineto
+61 1176 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+61.5 1149 moveto 37 (mLastID) alignedtext
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+71 1137 moveto 18 (mID) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 194 768 296 852 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjects.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 194 768 moveto
+194 852 lineto
+296 852 lineto
+296 768 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 194 768 moveto
+194 852 lineto
+296 852 lineto
+296 768 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+212.5 839 moveto 65 (cUPnPObjects) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 194 832 moveto
+296 832 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+243.5 819 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 194 812 moveto
+296 812 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+202 799 moveto 80 (+ cUPnPObjects\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+202 787 moveto 86 (+ ~cUPnPObjects\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+202 775 moveto 45 (+ SortBy\(\)) alignedtext
+grestore
+% Node4->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 241 758 moveto
+236 690 226 566 217 456 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 242 768 moveto
+236.53 758.5 lineto
+241.5 763.02 lineto
+241 758.05 lineto
+241 758.05 lineto
+241 758.05 lineto
+241.5 763.02 lineto
+245.48 757.6 lineto
+242 768 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 242 768 moveto
+236.53 758.5 lineto
+241.5 763.02 lineto
+241 758.05 lineto
+241 758.05 lineto
+241 758.05 lineto
+241.5 763.02 lineto
+245.48 757.6 lineto
+242 768 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+219 477 moveto 44 (mChildren) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 340 1508
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassContainer__coll__graph.md5 b/doc/latex/classcUPnPClassContainer__coll__graph.md5
new file mode 100644
index 0000000..35cd354
--- /dev/null
+++ b/doc/latex/classcUPnPClassContainer__coll__graph.md5
@@ -0,0 +1 @@
+a7c0642935564d658a0cf77fc7ddaf6d \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassContainer__coll__graph.pdf b/doc/latex/classcUPnPClassContainer__coll__graph.pdf
new file mode 100644
index 0000000..ca2639b
--- /dev/null
+++ b/doc/latex/classcUPnPClassContainer__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassContainer__inherit__graph.eps b/doc/latex/classcUPnPClassContainer__inherit__graph.eps
new file mode 100644
index 0000000..886ca64
--- /dev/null
+++ b/doc/latex/classcUPnPClassContainer__inherit__graph.eps
@@ -0,0 +1,532 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 178 1148
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 142 1112 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 456 lineto
+134 456 lineto
+134 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 456 lineto
+134 456 lineto
+134 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 443 moveto 97 (cUPnPClassContainer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 436 moveto
+134 436 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 423 moveto 79 (# mContainerType) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 411 moveto 83 (# mSearchClasses) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 399 moveto 80 (# mCreateClasses) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 387 moveto 65 (# mSearchable) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 375 moveto 57 (# mUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 363 moveto 52 (# mChildren) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 351 moveto 62 (# mChildrenID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 344 moveto
+134 344 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 331 moveto 118 (+ ~cUPnPClassContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 319 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 307 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 295 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 283 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 271 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 259 moveto 59 (+ addObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 247 moveto 76 (+ removeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 235 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 223 moveto 73 (+ getObjectList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 211 moveto 86 (+ addSearchClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 199 moveto 83 (+ delSearchClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 187 moveto 84 (+ addCreateClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 175 moveto 81 (+ delCreateClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 163 moveto 91 (+ setContainerType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 151 moveto 95 (+ setSearchClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 92 (+ setCreateClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 77 (+ setSearchable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 91 (+ getContainerType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 95 (+ getSearchClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 92 (+ getCreateClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 71 (+ isSearchable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 76 (+ getChildCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 69 (+ getUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 59 (+ isUpdated\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 44 (# update\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 68 (# setUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 111 (# cUPnPClassContainer\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 7 492 127 1104 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 7 492 moveto
+7 1104 lineto
+128 1104 lineto
+128 492 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 492 moveto
+7 1104 lineto
+128 1104 lineto
+128 492 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 1091 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 1084 moveto
+128 1084 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 1071 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 1059 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 1047 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 1035 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 1023 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 1011 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 999 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 987 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 975 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 963 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 951 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 939 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 927 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 915 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 903 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 896 moveto
+128 896 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 883 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 871 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 859 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 847 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 835 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 823 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 811 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 799 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 787 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 775 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 763 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 751 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 739 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 727 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 715 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 703 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 691 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 679 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 667 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 655 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 643 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 631 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 619 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 607 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 595 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 583 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 571 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 559 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 547 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 535 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 523 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 511 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14.5 499 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 67 482 moveto
+67 473 67 465 67 456 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 63.5 482 moveto
+67 492 lineto
+70.5 482 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 178 1148
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassContainer__inherit__graph.md5 b/doc/latex/classcUPnPClassContainer__inherit__graph.md5
new file mode 100644
index 0000000..1d1dfab
--- /dev/null
+++ b/doc/latex/classcUPnPClassContainer__inherit__graph.md5
@@ -0,0 +1 @@
+88df770daffc310468c44ed53ff385e5 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassContainer__inherit__graph.pdf b/doc/latex/classcUPnPClassContainer__inherit__graph.pdf
new file mode 100644
index 0000000..a1a222a
--- /dev/null
+++ b/doc/latex/classcUPnPClassContainer__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassItem.tex b/doc/latex/classcUPnPClassItem.tex
new file mode 100644
index 0000000..684a58e
--- /dev/null
+++ b/doc/latex/classcUPnPClassItem.tex
@@ -0,0 +1,223 @@
+\hypertarget{classcUPnPClassItem}{
+\section{cUPnPClassItem Class Reference}
+\label{classcUPnPClassItem}\index{cUPnPClassItem@{cUPnPClassItem}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPClassItem:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassItem__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPClassItem:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassItem__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual cStringList $\ast$ \hyperlink{classcUPnPClassItem_add0c9d378036e270e6f99d8d1409e3b}{getPropertyList} ()
+\item
+virtual IXML\_\-Node $\ast$ \hyperlink{classcUPnPClassItem_5385975d79cd8e8b78429ecfe11b30a7}{createDIDLFragment} (IXML\_\-Document $\ast$Document, cStringList $\ast$Filter)
+\item
+virtual bool \hyperlink{classcUPnPClassItem_ab17057659c17792a5b67f4297ade642}{setProperty} (const char $\ast$Property, const char $\ast$Value)
+\item
+virtual bool \hyperlink{classcUPnPClassItem_31f7010baa65cc25b95a864f05eb4e62}{getProperty} (const char $\ast$Property, char $\ast$$\ast$Value) const
+\item
+int \hyperlink{classcUPnPClassItem_79153d8d7b4ac30af0af0146d69c8e83}{setReference} (\hyperlink{classcUPnPClassItem}{cUPnPClassItem} $\ast$Reference)
+\item
+\hyperlink{classcUPnPClassItem}{cUPnPClassItem} $\ast$ \hyperlink{classcUPnPClassItem_153dcb71951d47891d1e066f97e6cd29}{getReference} () const
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \hyperlink{classcUPnPClassItem_c269fe6cfe8846722b90810a21e42bfc}{getReferenceID} () const
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPClassItem_c7d477be76ca83891c990441b539935d}{cUPnPClassItem} ()
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassItem_86a22ee98384003e3c09c43f15b3a58a}{
+\hyperlink{classcUPnPClassItem}{cUPnPClassItem} $\ast$ \hyperlink{classcUPnPClassItem_86a22ee98384003e3c09c43f15b3a58a}{mReference}}
+\label{classcUPnPClassItem_86a22ee98384003e3c09c43f15b3a58a}
+
+\begin{CompactList}\small\item\em The reference item. \item\end{CompactList}\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassItem_3d0d0aedce8b1c661ea360b9a6d616f6}{
+class \hyperlink{classcUPnPClassItem_3d0d0aedce8b1c661ea360b9a6d616f6}{cMediaDatabase}}
+\label{classcUPnPClassItem_3d0d0aedce8b1c661ea360b9a6d616f6}
+
+\item
+\hypertarget{classcUPnPClassItem_aefab39434a832c545ac75a79fa81d23}{
+class \hyperlink{classcUPnPClassItem_aefab39434a832c545ac75a79fa81d23}{cUPnPObjectMediator}}
+\label{classcUPnPClassItem_aefab39434a832c545ac75a79fa81d23}
+
+\item
+\hypertarget{classcUPnPClassItem_9b56ac88275693464968ee30d903286a}{
+class \hyperlink{classcUPnPClassItem_9b56ac88275693464968ee30d903286a}{cUPnPItemMediator}}
+\label{classcUPnPClassItem_9b56ac88275693464968ee30d903286a}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP class Item
+
+This is a UPnP class Item representation with all its properties.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPClassItem_c7d477be76ca83891c990441b539935d}{
+\index{cUPnPClassItem@{cUPnPClassItem}!cUPnPClassItem@{cUPnPClassItem}}
+\index{cUPnPClassItem@{cUPnPClassItem}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{cUPnPClassItem}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPClassItem::cUPnPClassItem ()\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassItem_c7d477be76ca83891c990441b539935d}
+
+
+Constructor of an item
+
+This creates a new instance of an item
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPClassItem_5385975d79cd8e8b78429ecfe11b30a7}{
+\index{cUPnPClassItem@{cUPnPClassItem}!createDIDLFragment@{createDIDLFragment}}
+\index{createDIDLFragment@{createDIDLFragment}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{createDIDLFragment}]{\setlength{\rightskip}{0pt plus 5cm}IXML\_\-Node $\ast$ cUPnPClassItem::createDIDLFragment (IXML\_\-Document $\ast$ {\em Document}, \/ cStringList $\ast$ {\em Filter})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassItem_5385975d79cd8e8b78429ecfe11b30a7}
+
+
+Create the DIDL fragment
+
+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified {\em IXML\/} document. The details of the output can be controlled via the filter stringlist
+
+\begin{Desc}
+\item[Returns:]the DIDL fragment of the object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Document}]the IXML document where to write the contents \item[{\em Filter}]the string list with the filter criteria \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcUPnPClassObject_9090f5982129bc5aa15c6e19db627445}{cUPnPClassObject}.\hypertarget{classcUPnPClassItem_31f7010baa65cc25b95a864f05eb4e62}{
+\index{cUPnPClassItem@{cUPnPClassItem}!getProperty@{getProperty}}
+\index{getProperty@{getProperty}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{getProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassItem::getProperty (const char $\ast$ {\em Property}, \/ char $\ast$$\ast$ {\em Value}) const\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassItem_31f7010baa65cc25b95a864f05eb4e62}
+
+
+Gets a property
+
+Returns the value of a specified property. The value is converted into a string.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be returned \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassObject_539cf36abc96b95bc8437601fed8a0f6}{cUPnPClassObject}.
+
+Reimplemented in \hyperlink{classcUPnPClassVideoItem_94ab2ffcbe14abb63c680e6748e70ef1}{cUPnPClassVideoItem}, \hyperlink{classcUPnPClassMovie_b4c1d5a973856469b93d2033b65d7ba2}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_e1d13a13de094337cea6be214c4da0f0}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassItem_add0c9d378036e270e6f99d8d1409e3b}{
+\index{cUPnPClassItem@{cUPnPClassItem}!getPropertyList@{getPropertyList}}
+\index{getPropertyList@{getPropertyList}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{getPropertyList}]{\setlength{\rightskip}{0pt plus 5cm}cStringList $\ast$ cUPnPClassItem::getPropertyList ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassItem_add0c9d378036e270e6f99d8d1409e3b}
+
+
+Get the properties of the object
+
+This returns a property list with all the properties which can be obtained or set with {\tt getProperty} or {\tt setProperty}.
+
+\begin{Desc}
+\item[Returns:]a stringlist with the properties \end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassObject_4a4d2cd2e59d364050bb64a3d9dced6e}{cUPnPClassObject}.
+
+Reimplemented in \hyperlink{classcUPnPClassVideoItem_9dc397419b45535a3e6a676667b619a4}{cUPnPClassVideoItem}, \hyperlink{classcUPnPClassMovie_b62e6dac175090b82c47f955e29c146c}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_192f6a04c87fe8d56f99c71337cf0f68}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassItem_153dcb71951d47891d1e066f97e6cd29}{
+\index{cUPnPClassItem@{cUPnPClassItem}!getReference@{getReference}}
+\index{getReference@{getReference}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{getReference}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassItem}$\ast$ cUPnPClassItem::getReference () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassItem_153dcb71951d47891d1e066f97e6cd29}
+
+
+Get the referenced item
+
+This returns the referenced item of this item
+
+\begin{Desc}
+\item[Returns:]the referenced item \end{Desc}
+\hypertarget{classcUPnPClassItem_c269fe6cfe8846722b90810a21e42bfc}{
+\index{cUPnPClassItem@{cUPnPClassItem}!getReferenceID@{getReferenceID}}
+\index{getReferenceID@{getReferenceID}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{getReferenceID}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID} cUPnPClassItem::getReferenceID () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassItem_c269fe6cfe8846722b90810a21e42bfc}
+
+
+Get the reference ID
+
+This returns the object ID of the referenced item or {\bf -1}, if no reference exists.
+
+\begin{Desc}
+\item[Returns:]the reference ID \end{Desc}
+\hypertarget{classcUPnPClassItem_ab17057659c17792a5b67f4297ade642}{
+\index{cUPnPClassItem@{cUPnPClassItem}!setProperty@{setProperty}}
+\index{setProperty@{setProperty}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{setProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassItem::setProperty (const char $\ast$ {\em Property}, \/ const char $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassItem_ab17057659c17792a5b67f4297ade642}
+
+
+Sets a property
+
+Sets the value of a specified property. The value is converted from string into the propper data type
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be set \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassObject_6f2a803a0d0e148133edce23ed6c0e7c}{cUPnPClassObject}.
+
+Reimplemented in \hyperlink{classcUPnPClassVideoItem_3cbda6d87f5a9ff0475a75e76ba19924}{cUPnPClassVideoItem}, \hyperlink{classcUPnPClassMovie_d7f990edda85f2caabe822d2ceeb2b0d}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_ce7a341834e448479d3c8f4f0254ce43}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassItem_79153d8d7b4ac30af0af0146d69c8e83}{
+\index{cUPnPClassItem@{cUPnPClassItem}!setReference@{setReference}}
+\index{setReference@{setReference}!cUPnPClassItem@{cUPnPClassItem}}
+\subsubsection[{setReference}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassItem::setReference ({\bf cUPnPClassItem} $\ast$ {\em Reference})}}
+\label{classcUPnPClassItem_79153d8d7b4ac30af0af0146d69c8e83}
+
+
+Set a reference item
+
+This sets a reference item. Its comparable with symlinks in $\ast$nix systems \begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Reference}]the reference item \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPClassItem__coll__graph.eps b/doc/latex/classcUPnPClassItem__coll__graph.eps
new file mode 100644
index 0000000..65bf127
--- /dev/null
+++ b/doc/latex/classcUPnPClassItem__coll__graph.eps
@@ -0,0 +1,670 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 236 1198
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 200 1162 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 1 0 moveto
+1 156 lineto
+122 156 lineto
+122 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 0 moveto
+1 156 lineto
+122 156 lineto
+122 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23.5 143 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 136 moveto
+122 136 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 123 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 116 moveto
+122 116 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 103 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 91 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 79 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 67 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 55 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 43 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 31 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 19 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 7 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 131 91 moveto
+136 88 139 84 139 78 curveto
+139 69 132 64 122 61 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 122 95 moveto
+129.31 86.83 lineto
+126.57 92.97 lineto
+131.14 90.94 lineto
+131.14 90.94 lineto
+131.14 90.94 lineto
+126.57 92.97 lineto
+132.97 95.05 lineto
+122 95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 122 95 moveto
+129.31 86.83 lineto
+126.57 92.97 lineto
+131.14 90.94 lineto
+131.14 90.94 lineto
+131.14 90.94 lineto
+126.57 92.97 lineto
+132.97 95.05 lineto
+122 95 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+138.5 75 moveto 53 (mReference) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 1 194 121 806 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 1 194 moveto
+1 806 lineto
+122 806 lineto
+122 194 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 194 moveto
+1 806 lineto
+122 806 lineto
+122 194 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+19 793 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 786 moveto
+122 786 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 773 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 761 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 749 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 737 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 725 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 713 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 701 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 689 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 677 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 665 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 653 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 641 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 629 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 617 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 605 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 598 moveto
+122 598 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 585 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 573 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 561 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 549 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 537 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 525 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 513 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 501 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 489 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 477 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 465 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 453 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 441 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 429 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 417 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 405 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 393 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 381 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 369 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 357 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 345 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 333 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 321 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 309 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 297 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 285 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 273 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 261 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 249 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 237 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 225 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 213 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 201 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 61 184 moveto
+61 174 61 165 61 156 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 57.5 184 moveto
+61 194 lineto
+64.5 184 lineto
+closepath stroke
+grestore
+% Node2->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 129 548 moveto
+135 538 139 522 139 500 curveto
+139 471 132 452 122 444 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 122 556 moveto
+125.2 545.51 lineto
+125.29 552.24 lineto
+128.59 548.47 lineto
+128.59 548.47 lineto
+128.59 548.47 lineto
+125.29 552.24 lineto
+131.97 551.44 lineto
+122 556 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 122 556 moveto
+125.2 545.51 lineto
+125.29 552.24 lineto
+128.59 548.47 lineto
+128.59 548.47 lineto
+128.59 548.47 lineto
+125.29 552.24 lineto
+131.97 551.44 lineto
+122 556 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+138.5 497 moveto 37 (mParent) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 0 866 122 1154 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 866 moveto
+0 1154 lineto
+122 1154 lineto
+122 866 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 866 moveto
+0 1154 lineto
+122 1154 lineto
+122 866 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26.5 1141 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1134 moveto
+122 1134 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1121 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1114 moveto
+122 1114 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1101 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1089 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1077 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1065 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1053 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1041 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1029 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1017 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1005 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 993 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 981 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 969 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 957 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 945 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 933 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 921 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 909 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 897 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 885 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 873 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 61 856 moveto
+61 840 61 823 61 806 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 61 866 moveto
+56.5 856 lineto
+61 861 lineto
+61 856 lineto
+61 856 lineto
+61 856 lineto
+61 861 lineto
+65.5 856 lineto
+61 866 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 61 866 moveto
+56.5 856 lineto
+61 861 lineto
+61 856 lineto
+61 856 lineto
+61 856 lineto
+61 861 lineto
+65.5 856 lineto
+61 866 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+60.5 839 moveto 37 (mLastID) alignedtext
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+70 827 moveto 18 (mID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 236 1198
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassItem__coll__graph.md5 b/doc/latex/classcUPnPClassItem__coll__graph.md5
new file mode 100644
index 0000000..fd466b2
--- /dev/null
+++ b/doc/latex/classcUPnPClassItem__coll__graph.md5
@@ -0,0 +1 @@
+bc72a9d0eb50d57f765237b821162355 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassItem__coll__graph.pdf b/doc/latex/classcUPnPClassItem__coll__graph.pdf
new file mode 100644
index 0000000..3b4ea44
--- /dev/null
+++ b/doc/latex/classcUPnPClassItem__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassItem__inherit__graph.eps b/doc/latex/classcUPnPClassItem__inherit__graph.eps
new file mode 100644
index 0000000..3443dc3
--- /dev/null
+++ b/doc/latex/classcUPnPClassItem__inherit__graph.eps
@@ -0,0 +1,805 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 342 1616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 306 1580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 78 768 moveto
+78 924 lineto
+199 924 lineto
+199 768 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 768 moveto
+78 924 lineto
+199 924 lineto
+199 768 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100.5 911 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 904 moveto
+199 904 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 891 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 884 moveto
+199 884 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 871 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 859 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 847 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 835 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 823 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 811 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 799 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 787 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 775 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 70 276 206 732 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 70 276 moveto
+70 732 lineto
+207 732 lineto
+207 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 70 276 moveto
+70 732 lineto
+207 732 lineto
+207 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 719 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 70 712 moveto
+207 712 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 699 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 687 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 675 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 663 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 651 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 639 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 627 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 615 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 603 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 591 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 70 584 moveto
+207 584 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 571 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 559 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 547 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 535 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 523 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 511 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 499 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 487 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 475 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 463 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 451 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 439 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 427 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 415 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 403 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 391 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 379 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 367 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 355 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 343 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 331 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 319 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 307 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 295 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 283 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node1->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 138 758 moveto
+138 750 138 741 138 732 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 134.5 758 moveto
+138 768 lineto
+141.5 758 lineto
+closepath stroke
+grestore
+% Node2
+gsave
+[ /Rect [ 78 960 198 1572 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 78 960 moveto
+78 1572 lineto
+199 1572 lineto
+199 960 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 960 moveto
+78 1572 lineto
+199 1572 lineto
+199 960 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96 1559 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 1552 moveto
+199 1552 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1539 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1527 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1515 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1503 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1491 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1479 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1467 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1455 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1443 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1431 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1419 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1407 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1395 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1383 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1371 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 1364 moveto
+199 1364 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1351 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1339 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1327 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1315 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1303 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1291 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1279 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1267 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1255 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1243 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1231 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1219 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1207 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1195 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1183 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1171 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1159 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1147 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1135 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1123 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1111 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1099 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1087 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1075 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1063 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1051 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1039 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1027 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1015 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1003 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 991 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 979 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 967 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 138 950 moveto
+138 941 138 932 138 924 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 134.5 950 moveto
+138 960 lineto
+141.5 950 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 0 36 118 204 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassMovie.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 36 moveto
+0 204 lineto
+119 204 lineto
+119 36 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 36 moveto
+0 204 lineto
+119 204 lineto
+119 36 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 191 moveto 82 (cUPnPClassMovie) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 184 moveto
+119 184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 171 moveto 89 (# mDVDRegionCode) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 159 moveto 85 (# mStorageMedium) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 152 moveto
+119 152 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 139 moveto 103 (+ ~cUPnPClassMovie\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 127 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 115 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 103 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 91 moveto 101 (+ setDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 79 moveto 97 (+ setStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 101 (+ getDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 97 (+ getStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 96 (# cUPnPClassMovie\(\)) alignedtext
+grestore
+% Node3->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 89 266 moveto
+85 244 80 223 76 204 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 85.61 266.88 moveto
+91 276 lineto
+92.47 265.51 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 136 0 298 240 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoBroadcast.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 136 0 moveto
+136 240 lineto
+298 240 lineto
+298 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 136 0 moveto
+136 240 lineto
+298 240 lineto
+298 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+154.5 227 moveto 125 (cUPnPClassVideoBroadcast) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 136 220 moveto
+298 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 207 moveto 35 (# mIcon) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 195 moveto 47 (# mRegion) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 183 moveto 62 (# mChannelNr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 171 moveto 77 (# mChannelName) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 136 164 moveto
+298 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 151 moveto 146 (+ ~cUPnPClassVideoBroadcast\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 139 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 127 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 115 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 103 moveto 47 (+ setIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 91 moveto 59 (+ setRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 79 moveto 74 (+ setChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 67 moveto 89 (+ setChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 55 moveto 47 (+ getIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 43 moveto 59 (+ getRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 31 moveto 74 (+ getChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 19 moveto 89 (+ getChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 7 moveto 139 (# cUPnPClassVideoBroadcast\(\)) alignedtext
+grestore
+% Node3->Node5
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 187 266 moveto
+189 257 191 249 192 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 183.53 265.51 moveto
+185 276 lineto
+190.39 266.88 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 342 1616
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassItem__inherit__graph.md5 b/doc/latex/classcUPnPClassItem__inherit__graph.md5
new file mode 100644
index 0000000..0c56d0c
--- /dev/null
+++ b/doc/latex/classcUPnPClassItem__inherit__graph.md5
@@ -0,0 +1 @@
+cc1bfa94328c0135f781577c41fcf983 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassItem__inherit__graph.pdf b/doc/latex/classcUPnPClassItem__inherit__graph.pdf
new file mode 100644
index 0000000..2c61078
--- /dev/null
+++ b/doc/latex/classcUPnPClassItem__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassMovie.tex b/doc/latex/classcUPnPClassMovie.tex
new file mode 100644
index 0000000..b4fe81a
--- /dev/null
+++ b/doc/latex/classcUPnPClassMovie.tex
@@ -0,0 +1,234 @@
+\hypertarget{classcUPnPClassMovie}{
+\section{cUPnPClassMovie Class Reference}
+\label{classcUPnPClassMovie}\index{cUPnPClassMovie@{cUPnPClassMovie}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPClassMovie:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassMovie__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPClassMovie:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassMovie__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual cStringList $\ast$ \hyperlink{classcUPnPClassMovie_b62e6dac175090b82c47f955e29c146c}{getPropertyList} ()
+\item
+virtual bool \hyperlink{classcUPnPClassMovie_d7f990edda85f2caabe822d2ceeb2b0d}{setProperty} (const char $\ast$Property, const char $\ast$Value)
+\item
+virtual bool \hyperlink{classcUPnPClassMovie_b4c1d5a973856469b93d2033b65d7ba2}{getProperty} (const char $\ast$Property, char $\ast$$\ast$Value) const
+\item
+int \hyperlink{classcUPnPClassMovie_3df7d1a4d798fddde1b379a2302a128c}{setDVDRegionCode} (int RegionCode)
+\item
+int \hyperlink{classcUPnPClassMovie_136a1daa4c14c2d7397624eb288c463e}{setStorageMedium} (const char $\ast$StorageMedium)
+\item
+int \hyperlink{classcUPnPClassMovie_80a41ba769974e80635b80aa3c41f66d}{getDVDRegionCode} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassMovie_9fc36c7e0a1a465ec720b219a1710cc6}{getStorageMedium} () const
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPClassMovie_7343932df4e5bfd9821e16026cb7c66d}{cUPnPClassMovie} ()
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassMovie_90cc86f3eb248bbea4b3bf845862455f}{
+int \hyperlink{classcUPnPClassMovie_90cc86f3eb248bbea4b3bf845862455f}{mDVDRegionCode}}
+\label{classcUPnPClassMovie_90cc86f3eb248bbea4b3bf845862455f}
+
+\begin{CompactList}\small\item\em The Region code of the movie (0 - 8). \item\end{CompactList}\item
+\hypertarget{classcUPnPClassMovie_a9bcda545b8ce19e3b613757b3759127}{
+cString \hyperlink{classcUPnPClassMovie_a9bcda545b8ce19e3b613757b3759127}{mStorageMedium}}
+\label{classcUPnPClassMovie_a9bcda545b8ce19e3b613757b3759127}
+
+\begin{CompactList}\small\item\em The storage medium where the movie is stored. \item\end{CompactList}\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassMovie_3d0d0aedce8b1c661ea360b9a6d616f6}{
+class \hyperlink{classcUPnPClassMovie_3d0d0aedce8b1c661ea360b9a6d616f6}{cMediaDatabase}}
+\label{classcUPnPClassMovie_3d0d0aedce8b1c661ea360b9a6d616f6}
+
+\item
+\hypertarget{classcUPnPClassMovie_aefab39434a832c545ac75a79fa81d23}{
+class \hyperlink{classcUPnPClassMovie_aefab39434a832c545ac75a79fa81d23}{cUPnPObjectMediator}}
+\label{classcUPnPClassMovie_aefab39434a832c545ac75a79fa81d23}
+
+\item
+\hypertarget{classcUPnPClassMovie_d1fb2eb621f67f9aa7abf2e67e1a5305}{
+class \hyperlink{classcUPnPClassMovie_d1fb2eb621f67f9aa7abf2e67e1a5305}{cUPnPMovieMediator}}
+\label{classcUPnPClassMovie_d1fb2eb621f67f9aa7abf2e67e1a5305}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP class Movie
+
+This is a UPnP class Movie representation with all its properties.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPClassMovie_7343932df4e5bfd9821e16026cb7c66d}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!cUPnPClassMovie@{cUPnPClassMovie}}
+\index{cUPnPClassMovie@{cUPnPClassMovie}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{cUPnPClassMovie}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPClassMovie::cUPnPClassMovie ()\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassMovie_7343932df4e5bfd9821e16026cb7c66d}
+
+
+Constructor of a movie
+
+This creates a new instance of a movie
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPClassMovie_80a41ba769974e80635b80aa3c41f66d}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!getDVDRegionCode@{getDVDRegionCode}}
+\index{getDVDRegionCode@{getDVDRegionCode}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{getDVDRegionCode}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassMovie::getDVDRegionCode () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassMovie_80a41ba769974e80635b80aa3c41f66d}
+
+
+Get the DVD region code
+
+This returns the DVD region code. For more information, see \href{http://en.wikipedia.org/wiki/DVD_region_code}{\tt http://en.wikipedia.org/wiki/DVD\_\-region\_\-code}
+
+The integer representation for {\em ALL\/} is 9.
+
+\begin{Desc}
+\item[See also:]\href{http://en.wikipedia.org/wiki/DVD_region_code}{\tt http://en.wikipedia.org/wiki/DVD\_\-region\_\-code} \end{Desc}
+\begin{Desc}
+\item[Returns:]the DVD region code \end{Desc}
+\hypertarget{classcUPnPClassMovie_b4c1d5a973856469b93d2033b65d7ba2}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!getProperty@{getProperty}}
+\index{getProperty@{getProperty}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{getProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassMovie::getProperty (const char $\ast$ {\em Property}, \/ char $\ast$$\ast$ {\em Value}) const\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassMovie_b4c1d5a973856469b93d2033b65d7ba2}
+
+
+Gets a property
+
+Returns the value of a specified property. The value is converted into a string.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be returned \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassVideoItem_94ab2ffcbe14abb63c680e6748e70ef1}{cUPnPClassVideoItem}.\hypertarget{classcUPnPClassMovie_b62e6dac175090b82c47f955e29c146c}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!getPropertyList@{getPropertyList}}
+\index{getPropertyList@{getPropertyList}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{getPropertyList}]{\setlength{\rightskip}{0pt plus 5cm}cStringList $\ast$ cUPnPClassMovie::getPropertyList ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassMovie_b62e6dac175090b82c47f955e29c146c}
+
+
+Get the properties of the object
+
+This returns a property list with all the properties which can be obtained or set with {\tt getProperty} or {\tt setProperty}.
+
+\begin{Desc}
+\item[Returns:]a stringlist with the properties \end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassVideoItem_9dc397419b45535a3e6a676667b619a4}{cUPnPClassVideoItem}.\hypertarget{classcUPnPClassMovie_9fc36c7e0a1a465ec720b219a1710cc6}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!getStorageMedium@{getStorageMedium}}
+\index{getStorageMedium@{getStorageMedium}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{getStorageMedium}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassMovie::getStorageMedium () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassMovie_9fc36c7e0a1a465ec720b219a1710cc6}
+
+
+Get the storage medium
+
+This returns the storage medium, where the movie resides.
+
+\begin{Desc}
+\item[Returns:]the storage medium \end{Desc}
+\hypertarget{classcUPnPClassMovie_3df7d1a4d798fddde1b379a2302a128c}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!setDVDRegionCode@{setDVDRegionCode}}
+\index{setDVDRegionCode@{setDVDRegionCode}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{setDVDRegionCode}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassMovie::setDVDRegionCode (int {\em RegionCode})}}
+\label{classcUPnPClassMovie_3df7d1a4d798fddde1b379a2302a128c}
+
+
+Sets the DVD region code
+
+For more information on this, see \href{http://en.wikipedia.org/wiki/DVD_region_code}{\tt http://en.wikipedia.org/wiki/DVD\_\-region\_\-code}
+
+The integer representation for {\em ALL\/} is 9.
+
+\begin{Desc}
+\item[See also:]\href{http://en.wikipedia.org/wiki/DVD_region_code}{\tt http://en.wikipedia.org/wiki/DVD\_\-region\_\-code} \end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em RegionCode}]the region code of this movie \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassMovie_d7f990edda85f2caabe822d2ceeb2b0d}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!setProperty@{setProperty}}
+\index{setProperty@{setProperty}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{setProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassMovie::setProperty (const char $\ast$ {\em Property}, \/ const char $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassMovie_d7f990edda85f2caabe822d2ceeb2b0d}
+
+
+Sets a property
+
+Sets the value of a specified property. The value is converted from string into the propper data type
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be set \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassVideoItem_3cbda6d87f5a9ff0475a75e76ba19924}{cUPnPClassVideoItem}.\hypertarget{classcUPnPClassMovie_136a1daa4c14c2d7397624eb288c463e}{
+\index{cUPnPClassMovie@{cUPnPClassMovie}!setStorageMedium@{setStorageMedium}}
+\index{setStorageMedium@{setStorageMedium}!cUPnPClassMovie@{cUPnPClassMovie}}
+\subsubsection[{setStorageMedium}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassMovie::setStorageMedium (const char $\ast$ {\em StorageMedium})}}
+\label{classcUPnPClassMovie_136a1daa4c14c2d7397624eb288c463e}
+
+
+Sets the storage medium
+
+This will set the storage medium, where the movie resides. Valid media are defined in \hyperlink{common_8h-source}{common.h}
+
+\begin{Desc}
+\item[See also:]\hyperlink{common_8h-source}{common.h} \end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em StorageMedium}]the medium where the movie is located \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPClassMovie__coll__graph.eps b/doc/latex/classcUPnPClassMovie__coll__graph.eps
new file mode 100644
index 0000000..65a1be4
--- /dev/null
+++ b/doc/latex/classcUPnPClassMovie__coll__graph.eps
@@ -0,0 +1,914 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 243 1898
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 207 1862 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 9 0 moveto
+9 168 lineto
+128 168 lineto
+128 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 0 moveto
+9 168 lineto
+128 168 lineto
+128 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+27 155 moveto 82 (cUPnPClassMovie) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 148 moveto
+128 148 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 135 moveto 89 (# mDVDRegionCode) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 123 moveto 85 (# mStorageMedium) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 116 moveto
+128 116 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 103 moveto 103 (+ ~cUPnPClassMovie\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 91 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 79 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 67 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 55 moveto 101 (+ setDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 43 moveto 97 (+ setStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 31 moveto 101 (+ getDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 19 moveto 97 (+ getStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 7 moveto 96 (# cUPnPClassMovie\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 206 136 662 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 206 moveto
+0 662 lineto
+137 662 lineto
+137 206 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 206 moveto
+0 662 lineto
+137 662 lineto
+137 206 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 649 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 642 moveto
+137 642 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 629 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 617 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 605 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 593 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 581 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 569 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 557 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 545 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 533 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 521 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 514 moveto
+137 514 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 501 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 489 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 477 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 465 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 453 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 441 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 429 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 417 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 405 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 393 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 381 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 369 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 357 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 345 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 333 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 321 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 309 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 297 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 285 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 273 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 261 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 249 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 237 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 225 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 213 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 196 moveto
+68 186 68 177 68 168 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 196 moveto
+68 206 lineto
+71.5 196 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 8 700 128 856 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 8 700 moveto
+8 856 lineto
+129 856 lineto
+129 700 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 700 moveto
+8 856 lineto
+129 856 lineto
+129 700 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+30.5 843 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 836 moveto
+129 836 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 823 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 816 moveto
+129 816 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 803 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 791 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 779 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 767 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 755 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 743 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 731 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 719 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 707 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 690 moveto
+68 681 68 671 68 662 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 690 moveto
+68 700 lineto
+71.5 690 lineto
+closepath stroke
+grestore
+% Node3->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 138 791 moveto
+143 788 146 784 146 778 curveto
+146 769 139 764 129 761 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 129 795 moveto
+136.31 786.83 lineto
+133.57 792.97 lineto
+138.14 790.94 lineto
+138.14 790.94 lineto
+138.14 790.94 lineto
+133.57 792.97 lineto
+139.97 795.05 lineto
+129 795 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 129 795 moveto
+136.31 786.83 lineto
+133.57 792.97 lineto
+138.14 790.94 lineto
+138.14 790.94 lineto
+138.14 790.94 lineto
+133.57 792.97 lineto
+139.97 795.05 lineto
+129 795 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+145.5 775 moveto 53 (mReference) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 8 894 128 1506 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 8 894 moveto
+8 1506 lineto
+129 1506 lineto
+129 894 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 894 moveto
+8 1506 lineto
+129 1506 lineto
+129 894 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26 1493 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 1486 moveto
+129 1486 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1473 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1461 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1449 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1437 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1425 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1413 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1401 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1389 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1377 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1365 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1353 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1341 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1329 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1317 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1305 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 1298 moveto
+129 1298 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1285 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1273 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1261 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1249 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1237 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1225 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1213 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1201 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1189 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1177 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1165 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1153 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1141 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1129 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1117 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1105 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1093 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1081 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1069 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1057 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1045 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1033 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1021 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1009 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 997 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 985 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 973 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 961 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 949 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 937 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 925 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 913 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 901 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 884 moveto
+68 874 68 865 68 856 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 884 moveto
+68 894 lineto
+71.5 884 lineto
+closepath stroke
+grestore
+% Node4->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 136 1248 moveto
+142 1238 146 1222 146 1200 curveto
+146 1171 139 1152 129 1144 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 129 1256 moveto
+132.2 1245.51 lineto
+132.29 1252.24 lineto
+135.59 1248.47 lineto
+135.59 1248.47 lineto
+135.59 1248.47 lineto
+132.29 1252.24 lineto
+138.97 1251.44 lineto
+129 1256 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 129 1256 moveto
+132.2 1245.51 lineto
+132.29 1252.24 lineto
+135.59 1248.47 lineto
+135.59 1248.47 lineto
+135.59 1248.47 lineto
+132.29 1252.24 lineto
+138.97 1251.44 lineto
+129 1256 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+145.5 1197 moveto 37 (mParent) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 7 1566 129 1854 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 7 1566 moveto
+7 1854 lineto
+129 1854 lineto
+129 1566 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 1566 moveto
+7 1854 lineto
+129 1854 lineto
+129 1566 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+33.5 1841 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 1834 moveto
+129 1834 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1821 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 1814 moveto
+129 1814 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1801 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1789 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1777 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1765 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1753 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1741 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1729 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1717 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1705 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1693 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1681 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1669 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1657 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1645 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1633 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1621 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1609 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1597 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1585 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1573 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 68 1556 moveto
+68 1540 68 1523 68 1506 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 68 1566 moveto
+63.5 1556 lineto
+68 1561 lineto
+68 1556 lineto
+68 1556 lineto
+68 1556 lineto
+68 1561 lineto
+72.5 1556 lineto
+68 1566 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 68 1566 moveto
+63.5 1556 lineto
+68 1561 lineto
+68 1556 lineto
+68 1556 lineto
+68 1556 lineto
+68 1561 lineto
+72.5 1556 lineto
+68 1566 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+67.5 1539 moveto 37 (mLastID) alignedtext
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+77 1527 moveto 18 (mID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 243 1898
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassMovie__coll__graph.md5 b/doc/latex/classcUPnPClassMovie__coll__graph.md5
new file mode 100644
index 0000000..b036bb4
--- /dev/null
+++ b/doc/latex/classcUPnPClassMovie__coll__graph.md5
@@ -0,0 +1 @@
+a747d9c456282a36b85fece806f6a322 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassMovie__coll__graph.pdf b/doc/latex/classcUPnPClassMovie__coll__graph.pdf
new file mode 100644
index 0000000..2a27229
--- /dev/null
+++ b/doc/latex/classcUPnPClassMovie__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassMovie__inherit__graph.eps b/doc/latex/classcUPnPClassMovie__inherit__graph.eps
new file mode 100644
index 0000000..cba13f7
--- /dev/null
+++ b/doc/latex/classcUPnPClassMovie__inherit__graph.eps
@@ -0,0 +1,701 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 180 1544
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 144 1508 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 9 0 moveto
+9 168 lineto
+128 168 lineto
+128 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 0 moveto
+9 168 lineto
+128 168 lineto
+128 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+27 155 moveto 82 (cUPnPClassMovie) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 148 moveto
+128 148 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 135 moveto 89 (# mDVDRegionCode) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 123 moveto 85 (# mStorageMedium) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 116 moveto
+128 116 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 103 moveto 103 (+ ~cUPnPClassMovie\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 91 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 79 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 67 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 55 moveto 101 (+ setDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 43 moveto 97 (+ setStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 31 moveto 101 (+ getDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 19 moveto 97 (+ getStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16.5 7 moveto 96 (# cUPnPClassMovie\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 204 136 660 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 204 moveto
+0 660 lineto
+137 660 lineto
+137 204 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 204 moveto
+0 660 lineto
+137 660 lineto
+137 204 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 647 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 640 moveto
+137 640 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 627 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 615 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 603 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 591 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 579 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 567 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 555 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 543 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 531 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 519 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 512 moveto
+137 512 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 499 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 487 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 475 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 463 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 451 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 439 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 427 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 415 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 403 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 391 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 379 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 367 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 355 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 343 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 331 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 319 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 307 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 295 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 283 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 271 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 259 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 247 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 235 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 223 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 211 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 194 moveto
+68 185 68 176 68 168 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 194 moveto
+68 204 lineto
+71.5 194 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 8 696 128 852 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 8 696 moveto
+8 852 lineto
+129 852 lineto
+129 696 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 696 moveto
+8 852 lineto
+129 852 lineto
+129 696 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+30.5 839 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 832 moveto
+129 832 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 819 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 812 moveto
+129 812 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 799 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 787 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 775 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 763 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 751 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 739 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 727 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 715 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 703 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 686 moveto
+68 678 68 669 68 660 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 686 moveto
+68 696 lineto
+71.5 686 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 8 888 128 1500 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 8 888 moveto
+8 1500 lineto
+129 1500 lineto
+129 888 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 888 moveto
+8 1500 lineto
+129 1500 lineto
+129 888 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26 1487 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 1480 moveto
+129 1480 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1467 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1455 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1443 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1431 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1419 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1407 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1395 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1383 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1371 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1359 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1347 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1335 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1323 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1311 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1299 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 1292 moveto
+129 1292 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1279 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1267 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1255 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1243 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1231 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1219 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1207 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1195 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1183 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1171 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1159 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1147 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1135 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1123 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1111 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1099 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1087 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1075 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1063 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1051 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1039 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1027 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1015 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1003 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 991 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 979 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 967 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 955 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 943 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 931 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 919 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 907 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 895 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 878 moveto
+68 869 68 860 68 852 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 878 moveto
+68 888 lineto
+71.5 878 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 180 1544
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassMovie__inherit__graph.md5 b/doc/latex/classcUPnPClassMovie__inherit__graph.md5
new file mode 100644
index 0000000..1fbaf25
--- /dev/null
+++ b/doc/latex/classcUPnPClassMovie__inherit__graph.md5
@@ -0,0 +1 @@
+c38fca23577f1912f80686eaf6e8e661 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassMovie__inherit__graph.pdf b/doc/latex/classcUPnPClassMovie__inherit__graph.pdf
new file mode 100644
index 0000000..bc5346a
--- /dev/null
+++ b/doc/latex/classcUPnPClassMovie__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassObject.tex b/doc/latex/classcUPnPClassObject.tex
new file mode 100644
index 0000000..499b2ec
--- /dev/null
+++ b/doc/latex/classcUPnPClassObject.tex
@@ -0,0 +1,703 @@
+\hypertarget{classcUPnPClassObject}{
+\section{cUPnPClassObject Class Reference}
+\label{classcUPnPClassObject}\index{cUPnPClassObject@{cUPnPClassObject}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPClassObject:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPClassObject__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPClassObject:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassObject__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+time\_\-t \hyperlink{classcUPnPClassObject_18c91d90256db85d1356db17b27f69c3}{modified} () const
+\item
+virtual int \hyperlink{classcUPnPClassObject_7297d228db4033bf8968eaee502131dd}{Compare} (const cListObject \&ListObject) const
+\item
+virtual cStringList $\ast$ \hyperlink{classcUPnPClassObject_4a4d2cd2e59d364050bb64a3d9dced6e}{getPropertyList} ()
+\item
+virtual bool \hyperlink{classcUPnPClassObject_539cf36abc96b95bc8437601fed8a0f6}{getProperty} (const char $\ast$Property, char $\ast$$\ast$Value) const
+\item
+virtual bool \hyperlink{classcUPnPClassObject_6f2a803a0d0e148133edce23ed6c0e7c}{setProperty} (const char $\ast$Property, const char $\ast$Value)
+\item
+virtual \hyperlink{classcUPnPClassContainer}{cUPnPClassContainer} $\ast$ \hyperlink{classcUPnPClassObject_ce6f39a8484ae48ea9801b11046cd2a6}{getContainer} ()
+\item
+virtual IXML\_\-Node $\ast$ \hyperlink{classcUPnPClassObject_9090f5982129bc5aa15c6e19db627445}{createDIDLFragment} (IXML\_\-Document $\ast$Document, cStringList $\ast$Filter)=0
+\item
+bool \hyperlink{classcUPnPClassObject_44f963ff6d731daca5b163ddbb1cf50f}{isContainer} ()
+\item
+void \hyperlink{classcUPnPClassObject_6bf77953db1fd098a0ec5bc8795e6c6b}{setSortCriteria} (const char $\ast$Property, bool Descending=false)
+\item
+void \hyperlink{classcUPnPClassObject_19295252a40ad5fd1a4870a473ac90ea}{clearSortCriteria} ()
+\item
+int \hyperlink{classcUPnPClassObject_717c3efc5b21fc0c92ef19f1925b24c5}{setTitle} (const char $\ast$Title)
+\item
+int \hyperlink{classcUPnPClassObject_b59e3528eda8c223f5336bd8a7d47527}{setCreator} (const char $\ast$Creator)
+\item
+int \hyperlink{classcUPnPClassObject_40819ea39a75fc93e8c8a2ffde43732d}{setRestricted} (bool Restricted)
+\item
+int \hyperlink{classcUPnPClassObject_4731b6c591544342da067f5abef5b661}{setWriteStatus} (int Status)
+\item
+int \hyperlink{classcUPnPClassObject_18856f1b0320713a754a87f66b62396e}{setResources} (cList$<$ \hyperlink{classcUPnPResource}{cUPnPResource} $>$ $\ast$Resources)
+\item
+int \hyperlink{classcUPnPClassObject_3132df806f003bde133e6724125366f2}{addResource} (\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$Resource)
+\item
+int \hyperlink{classcUPnPClassObject_5df5b5c205aaaeea44a1e5d03b7cba23}{removeResource} (\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$Resource)
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \hyperlink{classcUPnPClassObject_8ae04f4f645c764c0179be1cbf99941a}{getID} () const
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \hyperlink{classcUPnPClassObject_9eb008855499fc1afcd807cb019d7abe}{getParentID} () const
+\item
+\hyperlink{classcUPnPClassContainer}{cUPnPClassContainer} $\ast$ \hyperlink{classcUPnPClassObject_4787df89382fc962598fe4008a3eefd9}{getParent} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassObject_12312c25d2a926f4d4fe5c4e0eb46f6a}{getTitle} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassObject_39c9bb75681ce4517c4eff6a6bdffad7}{getClass} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassObject_2069a6b6653c5dcbbaa582fbc9ea3075}{getCreator} () const
+\item
+bool \hyperlink{classcUPnPClassObject_a5498dca2bf917a16f2a8d78f34b6516}{isRestricted} () const
+\item
+int \hyperlink{classcUPnPClassObject_c3ac47d3b60823e7efd31f5b58b9d331}{getWriteStatus} () const
+\item
+\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$ \hyperlink{classcUPnPClassObject_7bce9528b984a9f943d9a1892bb592ad}{getResource} (unsigned int ResourceID) const
+\item
+cList$<$ \hyperlink{classcUPnPResource}{cUPnPResource} $>$ $\ast$ \hyperlink{classcUPnPClassObject_24136f55324f724bfe7129eb424f4597}{getResources} () const
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+int \hyperlink{classcUPnPClassObject_1e00f20de14c17cfebd4f6670d5e548d}{setID} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\item
+int \hyperlink{classcUPnPClassObject_d092a68523a7e3a8bd8d1b6f79888eff}{setParent} (\hyperlink{classcUPnPClassContainer}{cUPnPClassContainer} $\ast$Parent)
+\item
+int \hyperlink{classcUPnPClassObject_980233a73fe6b3286313f992909602ae}{setClass} (const char $\ast$Class)
+\item
+void \hyperlink{classcUPnPClassObject_f5c5ca8dd663fe6c59ee2d29dba870e5}{setModified} (void)
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassObject_3196f065470aac0fd027ff81225f18e1}{
+time\_\-t \hyperlink{classcUPnPClassObject_3196f065470aac0fd027ff81225f18e1}{mLastModified}}
+\label{classcUPnPClassObject_3196f065470aac0fd027ff81225f18e1}
+
+\begin{CompactList}\small\item\em The last modification of this property. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_96ccf6ef7924ae0d440a87cc88221e08}{
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \hyperlink{classcUPnPClassObject_96ccf6ef7924ae0d440a87cc88221e08}{mID}}
+\label{classcUPnPClassObject_96ccf6ef7924ae0d440a87cc88221e08}
+
+\begin{CompactList}\small\item\em The object ID. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_bccecf0a80934f907c3ede2dfe5fc27d}{
+\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcUPnPClassObject_bccecf0a80934f907c3ede2dfe5fc27d}{mParent}}
+\label{classcUPnPClassObject_bccecf0a80934f907c3ede2dfe5fc27d}
+
+\begin{CompactList}\small\item\em The parent object. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_60875cd885a2ac83b5c8eba2f4b98c20}{
+cString \hyperlink{classcUPnPClassObject_60875cd885a2ac83b5c8eba2f4b98c20}{mClass}}
+\label{classcUPnPClassObject_60875cd885a2ac83b5c8eba2f4b98c20}
+
+\begin{CompactList}\small\item\em Class (Who am I?). \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_b31f0c0cb2d9761c90713a1744634ec6}{
+cString \hyperlink{classcUPnPClassObject_b31f0c0cb2d9761c90713a1744634ec6}{mTitle}}
+\label{classcUPnPClassObject_b31f0c0cb2d9761c90713a1744634ec6}
+
+\begin{CompactList}\small\item\em Object title. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_a5e80e4679babeaaee989b0591046137}{
+cString \hyperlink{classcUPnPClassObject_a5e80e4679babeaaee989b0591046137}{mCreator}}
+\label{classcUPnPClassObject_a5e80e4679babeaaee989b0591046137}
+
+\begin{CompactList}\small\item\em Creator of this object. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_d3709ce6e3c60a3cea616e437408d9b5}{
+bool \hyperlink{classcUPnPClassObject_d3709ce6e3c60a3cea616e437408d9b5}{mRestricted}}
+\label{classcUPnPClassObject_d3709ce6e3c60a3cea616e437408d9b5}
+
+\begin{CompactList}\small\item\em Ability of changing metadata? \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_63ae3b00533846717e40fdf4729d50c9}{
+int \hyperlink{classcUPnPClassObject_63ae3b00533846717e40fdf4729d50c9}{mWriteStatus}}
+\label{classcUPnPClassObject_63ae3b00533846717e40fdf4729d50c9}
+
+\begin{CompactList}\small\item\em Ability of writing resources? \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_3da123add3d4de3c6d9a6fe76c666253}{
+cList$<$ \hyperlink{classcUPnPResource}{cUPnPResource} $>$ $\ast$ \hyperlink{classcUPnPClassObject_3da123add3d4de3c6d9a6fe76c666253}{mResources}}
+\label{classcUPnPClassObject_3da123add3d4de3c6d9a6fe76c666253}
+
+\begin{CompactList}\small\item\em The resources of this object. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_36028ece195b24fa9ff01c2713a8a291}{
+cHash$<$ \hyperlink{classcUPnPResource}{cUPnPResource} $>$ $\ast$ \hyperlink{classcUPnPClassObject_36028ece195b24fa9ff01c2713a8a291}{mResourcesID}}
+\label{classcUPnPClassObject_36028ece195b24fa9ff01c2713a8a291}
+
+\begin{CompactList}\small\item\em The resources of this object as hashmap. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_21b48ab17d1d7379943aa9d4c026046a}{
+IXML\_\-Document $\ast$ \hyperlink{classcUPnPClassObject_21b48ab17d1d7379943aa9d4c026046a}{mDIDLFragment}}
+\label{classcUPnPClassObject_21b48ab17d1d7379943aa9d4c026046a}
+
+\begin{CompactList}\small\item\em The DIDL fragment of the object. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_f7156d07778825170844d35fda5959eb}{
+cString \hyperlink{classcUPnPClassObject_f7156d07778825170844d35fda5959eb}{mSortCriteria}}
+\label{classcUPnPClassObject_f7156d07778825170844d35fda5959eb}
+
+\begin{CompactList}\small\item\em The sort criteria to sort with. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassObject_0bcc859a9bb114ebf93c474137bf157c}{
+bool \hyperlink{classcUPnPClassObject_0bcc859a9bb114ebf93c474137bf157c}{mSortDescending}}
+\label{classcUPnPClassObject_0bcc859a9bb114ebf93c474137bf157c}
+
+\begin{CompactList}\small\item\em The direction of the sort. \item\end{CompactList}\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassObject_3d0d0aedce8b1c661ea360b9a6d616f6}{
+class \hyperlink{classcUPnPClassObject_3d0d0aedce8b1c661ea360b9a6d616f6}{cMediaDatabase}}
+\label{classcUPnPClassObject_3d0d0aedce8b1c661ea360b9a6d616f6}
+
+\item
+\hypertarget{classcUPnPClassObject_aefab39434a832c545ac75a79fa81d23}{
+class \hyperlink{classcUPnPClassObject_aefab39434a832c545ac75a79fa81d23}{cUPnPObjectMediator}}
+\label{classcUPnPClassObject_aefab39434a832c545ac75a79fa81d23}
+
+\item
+\hypertarget{classcUPnPClassObject_cb2ebde5758d6dc066be77d5a94d9f27}{
+class \hyperlink{classcUPnPClassObject_cb2ebde5758d6dc066be77d5a94d9f27}{cUPnPClassContainer}}
+\label{classcUPnPClassObject_cb2ebde5758d6dc066be77d5a94d9f27}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP class Object
+
+This is a UPnP class Object representation with all its properties.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPClassObject_3132df806f003bde133e6724125366f2}{
+\index{cUPnPClassObject@{cUPnPClassObject}!addResource@{addResource}}
+\index{addResource@{addResource}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{addResource}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::addResource ({\bf cUPnPResource} $\ast$ {\em Resource})}}
+\label{classcUPnPClassObject_3132df806f003bde133e6724125366f2}
+
+
+Add resource to list
+
+This adds the specified resource to the resource list of the object
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Resource}]the resource to be added \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_19295252a40ad5fd1a4870a473ac90ea}{
+\index{cUPnPClassObject@{cUPnPClassObject}!clearSortCriteria@{clearSortCriteria}}
+\index{clearSortCriteria@{clearSortCriteria}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{clearSortCriteria}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPClassObject::clearSortCriteria ()}}
+\label{classcUPnPClassObject_19295252a40ad5fd1a4870a473ac90ea}
+
+
+Clears the sort criteria
+
+Clears the property of the sort criteria and sets the descending flag to false. \hypertarget{classcUPnPClassObject_7297d228db4033bf8968eaee502131dd}{
+\index{cUPnPClassObject@{cUPnPClassObject}!Compare@{Compare}}
+\index{Compare@{Compare}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{Compare}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::Compare (const cListObject \& {\em ListObject}) const\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassObject_7297d228db4033bf8968eaee502131dd}
+
+
+Compares a object
+
+This compares a given object with this object It uses the SortCriteria to compare them.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $>$0},} if the object comes after this one\item {\bf {\tt 0},} if the objects have the same property\item {\bf {\tt $<$0},} if the object comes before this one \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ListObject}]the object to compare with \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_9090f5982129bc5aa15c6e19db627445}{
+\index{cUPnPClassObject@{cUPnPClassObject}!createDIDLFragment@{createDIDLFragment}}
+\index{createDIDLFragment@{createDIDLFragment}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{createDIDLFragment}]{\setlength{\rightskip}{0pt plus 5cm}virtual IXML\_\-Node$\ast$ cUPnPClassObject::createDIDLFragment (IXML\_\-Document $\ast$ {\em Document}, \/ cStringList $\ast$ {\em Filter})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcUPnPClassObject_9090f5982129bc5aa15c6e19db627445}
+
+
+Create the DIDL fragment
+
+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified {\em IXML\/} document. The details of the output can be controlled via the filter stringlist
+
+\begin{Desc}
+\item[Returns:]the DIDL fragment of the object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Document}]the IXML document where to write the contents \item[{\em Filter}]the string list with the filter criteria \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcUPnPClassItem_5385975d79cd8e8b78429ecfe11b30a7}{cUPnPClassItem}, and \hyperlink{classcUPnPClassContainer_fec5b0bae4ed2d194bfc9973f14a3926}{cUPnPClassContainer}.\hypertarget{classcUPnPClassObject_39c9bb75681ce4517c4eff6a6bdffad7}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getClass@{getClass}}
+\index{getClass@{getClass}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getClass}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassObject::getClass () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_39c9bb75681ce4517c4eff6a6bdffad7}
+
+
+Get the object class
+
+This returns the object class of the object. The classes are defined by the UPnP Working Committee. However, custom classes which are derived from a standardized class are also possible.
+
+\begin{Desc}
+\item[Returns:]the class of the object \end{Desc}
+\hypertarget{classcUPnPClassObject_ce6f39a8484ae48ea9801b11046cd2a6}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getContainer@{getContainer}}
+\index{getContainer@{getContainer}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getContainer}]{\setlength{\rightskip}{0pt plus 5cm}virtual {\bf cUPnPClassContainer}$\ast$ cUPnPClassObject::getContainer ()\hspace{0.3cm}{\tt \mbox{[}inline, virtual\mbox{]}}}}
+\label{classcUPnPClassObject_ce6f39a8484ae48ea9801b11046cd2a6}
+
+
+Converts to container
+
+This will convert the object into a container if it is one. If not, it returns {\bf {\tt NULL}.}
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt NULL},} if it is not a container\item a container representation of this object \end{itemize}
+\end{Desc}
+
+
+Reimplemented in \hyperlink{classcUPnPClassContainer_32eb7f1d0b3821f0d9573fe59befdf10}{cUPnPClassContainer}.\hypertarget{classcUPnPClassObject_2069a6b6653c5dcbbaa582fbc9ea3075}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getCreator@{getCreator}}
+\index{getCreator@{getCreator}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getCreator}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassObject::getCreator () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_2069a6b6653c5dcbbaa582fbc9ea3075}
+
+
+Get the creator
+
+This returns the creator of the object. Usually, this is the primary content creator or the owner of the object
+
+\begin{Desc}
+\item[Returns:]the creator of the object \end{Desc}
+\hypertarget{classcUPnPClassObject_8ae04f4f645c764c0179be1cbf99941a}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getID@{getID}}
+\index{getID@{getID}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getID}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID} cUPnPClassObject::getID () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_8ae04f4f645c764c0179be1cbf99941a}
+
+
+Get the object ID
+
+This returns the object ID of the object.
+
+\begin{Desc}
+\item[Returns:]the object ID \end{Desc}
+\hypertarget{classcUPnPClassObject_4787df89382fc962598fe4008a3eefd9}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getParent@{getParent}}
+\index{getParent@{getParent}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getParent}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassContainer}$\ast$ cUPnPClassObject::getParent () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_4787df89382fc962598fe4008a3eefd9}
+
+
+Get the parent object
+
+This returns the parent container object, associated with this object. It is {\bf {\tt NULL},} if the object is the root object.
+
+\begin{Desc}
+\item[Returns:]the parent object \end{Desc}
+\hypertarget{classcUPnPClassObject_9eb008855499fc1afcd807cb019d7abe}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getParentID@{getParentID}}
+\index{getParentID@{getParentID}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getParentID}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID} cUPnPClassObject::getParentID () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_9eb008855499fc1afcd807cb019d7abe}
+
+
+Get the parent ID
+
+This returns the ID of the parent container object, associated with this object. It is {\bf {\tt -1},} if the object is the root object.
+
+\begin{Desc}
+\item[Returns:]the parent ID \end{Desc}
+\hypertarget{classcUPnPClassObject_539cf36abc96b95bc8437601fed8a0f6}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getProperty@{getProperty}}
+\index{getProperty@{getProperty}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassObject::getProperty (const char $\ast$ {\em Property}, \/ char $\ast$$\ast$ {\em Value}) const\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassObject_539cf36abc96b95bc8437601fed8a0f6}
+
+
+Gets a property
+
+Returns the value of a specified property. The value is converted into a string.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be returned \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented in \hyperlink{classcUPnPClassItem_31f7010baa65cc25b95a864f05eb4e62}{cUPnPClassItem}, \hyperlink{classcUPnPClassContainer_f70297d2275e083f05024524d21118d7}{cUPnPClassContainer}, \hyperlink{classcUPnPClassVideoItem_94ab2ffcbe14abb63c680e6748e70ef1}{cUPnPClassVideoItem}, \hyperlink{classcUPnPClassMovie_b4c1d5a973856469b93d2033b65d7ba2}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_e1d13a13de094337cea6be214c4da0f0}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassObject_4a4d2cd2e59d364050bb64a3d9dced6e}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getPropertyList@{getPropertyList}}
+\index{getPropertyList@{getPropertyList}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getPropertyList}]{\setlength{\rightskip}{0pt plus 5cm}cStringList $\ast$ cUPnPClassObject::getPropertyList ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassObject_4a4d2cd2e59d364050bb64a3d9dced6e}
+
+
+Get the properties of the object
+
+This returns a property list with all the properties which can be obtained or set with {\tt getProperty} or {\tt setProperty}.
+
+\begin{Desc}
+\item[Returns:]a stringlist with the properties \end{Desc}
+
+
+Reimplemented in \hyperlink{classcUPnPClassItem_add0c9d378036e270e6f99d8d1409e3b}{cUPnPClassItem}, \hyperlink{classcUPnPClassContainer_d952c993314a9352d13f644bb95fbdc2}{cUPnPClassContainer}, \hyperlink{classcUPnPClassVideoItem_9dc397419b45535a3e6a676667b619a4}{cUPnPClassVideoItem}, \hyperlink{classcUPnPClassMovie_b62e6dac175090b82c47f955e29c146c}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_192f6a04c87fe8d56f99c71337cf0f68}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassObject_7bce9528b984a9f943d9a1892bb592ad}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getResource@{getResource}}
+\index{getResource@{getResource}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getResource}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPResource}$\ast$ cUPnPClassObject::getResource (unsigned int {\em ResourceID}) const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_7bce9528b984a9f943d9a1892bb592ad}
+
+
+Get a resource by its ID
+
+Returns the resource with the specified resource ID.
+
+\begin{Desc}
+\item[Returns:]the resource by ID \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ResourceID}]the resource ID of the demanded resource \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_24136f55324f724bfe7129eb424f4597}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getResources@{getResources}}
+\index{getResources@{getResources}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getResources}]{\setlength{\rightskip}{0pt plus 5cm}cList$<${\bf cUPnPResource}$>$$\ast$ cUPnPClassObject::getResources () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_24136f55324f724bfe7129eb424f4597}
+
+
+Get the resources
+
+This returns a list with resources associated with this object.
+
+\begin{Desc}
+\item[Returns:]the resources of this object \end{Desc}
+\hypertarget{classcUPnPClassObject_12312c25d2a926f4d4fe5c4e0eb46f6a}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getTitle@{getTitle}}
+\index{getTitle@{getTitle}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getTitle}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassObject::getTitle () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_12312c25d2a926f4d4fe5c4e0eb46f6a}
+
+
+Get the title
+
+This returns the title of the object. This may be the title of an item or the folder name in case of a container.
+
+\begin{Desc}
+\item[Returns:]the title of the object \end{Desc}
+\hypertarget{classcUPnPClassObject_c3ac47d3b60823e7efd31f5b58b9d331}{
+\index{cUPnPClassObject@{cUPnPClassObject}!getWriteStatus@{getWriteStatus}}
+\index{getWriteStatus@{getWriteStatus}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{getWriteStatus}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::getWriteStatus () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_c3ac47d3b60823e7efd31f5b58b9d331}
+
+
+Get write status
+
+This returns the write status of the object. It gives information, if the resource is modifiable.
+
+\begin{Desc}
+\item[Returns:]the write status \end{Desc}
+\hypertarget{classcUPnPClassObject_44f963ff6d731daca5b163ddbb1cf50f}{
+\index{cUPnPClassObject@{cUPnPClassObject}!isContainer@{isContainer}}
+\index{isContainer@{isContainer}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{isContainer}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassObject::isContainer ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_44f963ff6d731daca5b163ddbb1cf50f}
+
+
+Is this a container?
+
+Returns if this object is a container or not
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if it is a container\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_a5498dca2bf917a16f2a8d78f34b6516}{
+\index{cUPnPClassObject@{cUPnPClassObject}!isRestricted@{isRestricted}}
+\index{isRestricted@{isRestricted}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{isRestricted}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassObject::isRestricted () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_a5498dca2bf917a16f2a8d78f34b6516}
+
+
+Is the resource restricted?
+
+Returns {\bf {\tt true},} if the object is restricted or {\bf {\tt false},} otherwise. When the object is restricted, then modifications to the metadata of the object are disallowed.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the object is restricted\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_18c91d90256db85d1356db17b27f69c3}{
+\index{cUPnPClassObject@{cUPnPClassObject}!modified@{modified}}
+\index{modified@{modified}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{modified}]{\setlength{\rightskip}{0pt plus 5cm}time\_\-t cUPnPClassObject::modified () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassObject_18c91d90256db85d1356db17b27f69c3}
+
+
+Last modified
+
+Returns when the object was modified the last time.
+
+\begin{Desc}
+\item[Returns:]last modification timestamp \end{Desc}
+\hypertarget{classcUPnPClassObject_5df5b5c205aaaeea44a1e5d03b7cba23}{
+\index{cUPnPClassObject@{cUPnPClassObject}!removeResource@{removeResource}}
+\index{removeResource@{removeResource}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{removeResource}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::removeResource ({\bf cUPnPResource} $\ast$ {\em Resource})}}
+\label{classcUPnPClassObject_5df5b5c205aaaeea44a1e5d03b7cba23}
+
+
+Remove resource from list
+
+This removes the specified resource from the resource list of the object
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Resource}]the resource to be removed \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_980233a73fe6b3286313f992909602ae}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setClass@{setClass}}
+\index{setClass@{setClass}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setClass}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setClass (const char $\ast$ {\em Class})\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassObject_980233a73fe6b3286313f992909602ae}
+
+
+Set the object class
+
+This is only allowed by mediators and the media database. Manually editing the object class may result in unpredictable behavior.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Class}]the class of this object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_b59e3528eda8c223f5336bd8a7d47527}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setCreator@{setCreator}}
+\index{setCreator@{setCreator}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setCreator}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setCreator (const char $\ast$ {\em Creator})}}
+\label{classcUPnPClassObject_b59e3528eda8c223f5336bd8a7d47527}
+
+
+Set the creator
+
+The creator of an object is primarily the creator or owner of the object
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Creator}]the creator of the object \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_1e00f20de14c17cfebd4f6670d5e548d}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setID@{setID}}
+\index{setID@{setID}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setID}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setID ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassObject_1e00f20de14c17cfebd4f6670d5e548d}
+
+
+Set the Object ID
+
+This is only allowed by mediators and the media database. Manually editing the object ID may result in unpredictable behavior.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the ObjectID of this object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_f5c5ca8dd663fe6c59ee2d29dba870e5}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setModified@{setModified}}
+\index{setModified@{setModified}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setModified}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPClassObject::setModified (void)\hspace{0.3cm}{\tt \mbox{[}inline, protected\mbox{]}}}}
+\label{classcUPnPClassObject_f5c5ca8dd663fe6c59ee2d29dba870e5}
+
+
+Set the modification time
+
+This sets the last modification time to the current timestamp. This is used to indicate when the object was updated the last time. \hypertarget{classcUPnPClassObject_d092a68523a7e3a8bd8d1b6f79888eff}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setParent@{setParent}}
+\index{setParent@{setParent}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setParent}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setParent ({\bf cUPnPClassContainer} $\ast$ {\em Parent})\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassObject_d092a68523a7e3a8bd8d1b6f79888eff}
+
+
+Set the Parent Object
+
+This is only allowed by mediators and the media database. Manually editing the parent may result in unpredictable behavior.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Parent}]the parent of this object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_6f2a803a0d0e148133edce23ed6c0e7c}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setProperty@{setProperty}}
+\index{setProperty@{setProperty}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassObject::setProperty (const char $\ast$ {\em Property}, \/ const char $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassObject_6f2a803a0d0e148133edce23ed6c0e7c}
+
+
+Sets a property
+
+Sets the value of a specified property. The value is converted from string into the propper data type
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be set \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented in \hyperlink{classcUPnPClassItem_ab17057659c17792a5b67f4297ade642}{cUPnPClassItem}, \hyperlink{classcUPnPClassContainer_488761ebb4f074ded0d5374f862a1b54}{cUPnPClassContainer}, \hyperlink{classcUPnPClassVideoItem_3cbda6d87f5a9ff0475a75e76ba19924}{cUPnPClassVideoItem}, \hyperlink{classcUPnPClassMovie_d7f990edda85f2caabe822d2ceeb2b0d}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_ce7a341834e448479d3c8f4f0254ce43}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassObject_18856f1b0320713a754a87f66b62396e}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setResources@{setResources}}
+\index{setResources@{setResources}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setResources}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setResources (cList$<$ {\bf cUPnPResource} $>$ $\ast$ {\em Resources})}}
+\label{classcUPnPClassObject_18856f1b0320713a754a87f66b62396e}
+
+
+Set the resources
+
+This sets the list of resources of an object. The list usally contain a single resource. However, multiple resources a also very common.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Resources}]the resource list of this object \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_40819ea39a75fc93e8c8a2ffde43732d}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setRestricted@{setRestricted}}
+\index{setRestricted@{setRestricted}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setRestricted}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setRestricted (bool {\em Restricted})}}
+\label{classcUPnPClassObject_40819ea39a75fc93e8c8a2ffde43732d}
+
+
+Set the restriction
+
+This sets the restriction flag. If the object is restricted, no modifications to its metadata by the user are allowed.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Restricted}]{\bf {\tt true},} to disallow modification, {\bf {\tt false} to} allow it \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_6bf77953db1fd098a0ec5bc8795e6c6b}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setSortCriteria@{setSortCriteria}}
+\index{setSortCriteria@{setSortCriteria}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setSortCriteria}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPClassObject::setSortCriteria (const char $\ast$ {\em Property}, \/ bool {\em Descending} = {\tt false})}}
+\label{classcUPnPClassObject_6bf77953db1fd098a0ec5bc8795e6c6b}
+
+
+Set the sort criteria
+
+This sets a certain criteria which the object can be compared with.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property to sort after \item[{\em Descending}]sort the objects in descending order \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_717c3efc5b21fc0c92ef19f1925b24c5}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setTitle@{setTitle}}
+\index{setTitle@{setTitle}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setTitle}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setTitle (const char $\ast$ {\em Title})}}
+\label{classcUPnPClassObject_717c3efc5b21fc0c92ef19f1925b24c5}
+
+
+Set the title
+
+This sets the title of the object. It is a required metadata information. It must not be {\bf {\tt NULL} or} an empty string.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of the object \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassObject_4731b6c591544342da067f5abef5b661}{
+\index{cUPnPClassObject@{cUPnPClassObject}!setWriteStatus@{setWriteStatus}}
+\index{setWriteStatus@{setWriteStatus}!cUPnPClassObject@{cUPnPClassObject}}
+\subsubsection[{setWriteStatus}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassObject::setWriteStatus (int {\em Status})}}
+\label{classcUPnPClassObject_4731b6c591544342da067f5abef5b661}
+
+
+Set the write status
+
+This sets the write status of a resource. With this indicator, you can set the modifiabilty of resources by a control point.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Status}]the write status \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPClassObject__coll__graph.eps b/doc/latex/classcUPnPClassObject__coll__graph.eps
new file mode 100644
index 0000000..53b093f
--- /dev/null
+++ b/doc/latex/classcUPnPClassObject__coll__graph.eps
@@ -0,0 +1,550 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 220 1004
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 184 968 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 1 0 moveto
+1 612 lineto
+122 612 lineto
+122 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 0 moveto
+1 612 lineto
+122 612 lineto
+122 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+19 599 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 592 moveto
+122 592 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 579 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 567 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 555 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 543 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 531 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 519 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 507 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 495 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 483 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 471 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 459 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 447 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 435 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 423 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 411 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 1 404 moveto
+122 404 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 391 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 379 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 367 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 355 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 343 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 331 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 319 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 307 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 295 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 283 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 271 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 259 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 247 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 235 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 223 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 211 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 199 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 187 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 175 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 163 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 151 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 139 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 127 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 115 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 103 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 91 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 79 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 67 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 55 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 43 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 31 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 19 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8.5 7 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 129 356 moveto
+135 346 139 329 139 306 curveto
+139 275 132 256 122 248 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 122 364 moveto
+125.2 353.51 lineto
+125.29 360.24 lineto
+128.59 356.47 lineto
+128.59 356.47 lineto
+128.59 356.47 lineto
+125.29 360.24 lineto
+131.97 359.44 lineto
+122 364 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 122 364 moveto
+125.2 353.51 lineto
+125.29 360.24 lineto
+128.59 356.47 lineto
+128.59 356.47 lineto
+128.59 356.47 lineto
+125.29 360.24 lineto
+131.97 359.44 lineto
+122 364 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+138.5 303 moveto 37 (mParent) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 672 122 960 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 672 moveto
+0 960 lineto
+122 960 lineto
+122 672 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 672 moveto
+0 960 lineto
+122 960 lineto
+122 672 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26.5 947 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 940 moveto
+122 940 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 927 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 920 moveto
+122 920 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 907 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 895 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 883 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 871 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 859 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 847 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 835 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 823 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 811 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 799 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 787 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 775 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 763 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 751 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 739 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 727 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 715 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 703 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 691 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 679 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 61 662 moveto
+61 646 61 629 61 612 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 61 672 moveto
+56.5 662 lineto
+61 667 lineto
+61 662 lineto
+61 662 lineto
+61 662 lineto
+61 667 lineto
+65.5 662 lineto
+61 672 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 61 672 moveto
+56.5 662 lineto
+61 667 lineto
+61 662 lineto
+61 662 lineto
+61 662 lineto
+61 667 lineto
+65.5 662 lineto
+61 672 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+60.5 645 moveto 37 (mLastID) alignedtext
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+70 633 moveto 18 (mID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 220 1004
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassObject__coll__graph.md5 b/doc/latex/classcUPnPClassObject__coll__graph.md5
new file mode 100644
index 0000000..84a4723
--- /dev/null
+++ b/doc/latex/classcUPnPClassObject__coll__graph.md5
@@ -0,0 +1 @@
+e9c936d9185c37f0b06a260624d12ef2 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassObject__coll__graph.pdf b/doc/latex/classcUPnPClassObject__coll__graph.pdf
new file mode 100644
index 0000000..689888e
--- /dev/null
+++ b/doc/latex/classcUPnPClassObject__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassObject__inherit__graph.eps b/doc/latex/classcUPnPClassObject__inherit__graph.eps
new file mode 100644
index 0000000..d870129
--- /dev/null
+++ b/doc/latex/classcUPnPClassObject__inherit__graph.eps
@@ -0,0 +1,963 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 416 1916
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 380 1880 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 79 1260 moveto
+79 1872 lineto
+200 1872 lineto
+200 1260 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 1260 moveto
+79 1872 lineto
+200 1872 lineto
+200 1260 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 1859 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 1852 moveto
+200 1852 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1839 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1827 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1815 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1803 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1791 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1779 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1767 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1755 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1743 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1731 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1719 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1707 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1695 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1683 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1671 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 1664 moveto
+200 1664 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1651 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1639 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1627 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1615 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1603 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1591 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1579 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1567 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1555 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1543 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1531 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1519 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1507 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1495 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1483 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1471 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1459 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1447 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1435 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1423 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1411 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1399 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1387 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1375 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1363 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1351 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1339 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1327 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1315 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1303 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1291 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1279 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+86.5 1267 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 768 134 1224 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassContainer.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 768 moveto
+0 1224 lineto
+134 1224 lineto
+134 768 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 768 moveto
+0 1224 lineto
+134 1224 lineto
+134 768 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 1211 moveto 97 (cUPnPClassContainer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1204 moveto
+134 1204 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1191 moveto 79 (# mContainerType) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1179 moveto 83 (# mSearchClasses) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1167 moveto 80 (# mCreateClasses) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1155 moveto 65 (# mSearchable) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1143 moveto 57 (# mUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1131 moveto 52 (# mChildren) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1119 moveto 62 (# mChildrenID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 1112 moveto
+134 1112 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1099 moveto 118 (+ ~cUPnPClassContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1087 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1075 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1063 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1051 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1039 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1027 moveto 59 (+ addObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1015 moveto 76 (+ removeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 1003 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 991 moveto 73 (+ getObjectList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 979 moveto 86 (+ addSearchClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 967 moveto 83 (+ delSearchClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 955 moveto 84 (+ addCreateClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 943 moveto 81 (+ delCreateClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 931 moveto 91 (+ setContainerType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 919 moveto 95 (+ setSearchClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 907 moveto 92 (+ setCreateClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 895 moveto 77 (+ setSearchable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 883 moveto 91 (+ getContainerType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 871 moveto 95 (+ getSearchClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 859 moveto 92 (+ getCreateClasses\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 847 moveto 71 (+ isSearchable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 835 moveto 76 (+ getChildCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 823 moveto 69 (+ getUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 811 moveto 59 (+ isUpdated\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 799 moveto 44 (# update\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 787 moveto 68 (# setUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 775 moveto 111 (# cUPnPClassContainer\(\)) alignedtext
+grestore
+% Node1->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 99 1250 moveto
+97 1241 97 1233 96 1224 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 95.52 1250.4 moveto
+100 1260 lineto
+102.49 1249.7 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 152 918 272 1074 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 152 918 moveto
+152 1074 lineto
+273 1074 lineto
+273 918 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 152 918 moveto
+152 1074 lineto
+273 1074 lineto
+273 918 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+174.5 1061 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 152 1054 moveto
+273 1054 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 1041 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 152 1034 moveto
+273 1034 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 1021 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 1009 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 997 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 985 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 973 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 961 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 949 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 937 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159.5 925 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node1->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 179 1250 moveto
+188 1184 196 1122 202 1074 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 175.51 1249.7 moveto
+178 1260 lineto
+182.48 1250.4 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 144 276 280 732 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 144 276 moveto
+144 732 lineto
+281 732 lineto
+281 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 144 276 moveto
+144 732 lineto
+281 732 lineto
+281 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+162 719 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 144 712 moveto
+281 712 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 699 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 687 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 675 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 663 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 651 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 639 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 627 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 615 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 603 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 591 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 144 584 moveto
+281 584 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 571 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 559 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 547 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 535 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 523 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 511 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 499 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 487 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 475 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 463 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 451 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 439 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 427 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 415 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 403 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 391 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 379 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 367 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 355 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 343 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 331 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 319 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 307 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 295 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+151.5 283 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node3->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 212 908 moveto
+212 858 212 795 212 732 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 208.5 908 moveto
+212 918 lineto
+215.5 908 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 74 36 192 204 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassMovie.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 74 36 moveto
+74 204 lineto
+193 204 lineto
+193 36 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 74 36 moveto
+74 204 lineto
+193 204 lineto
+193 36 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 191 moveto 82 (cUPnPClassMovie) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 74 184 moveto
+193 184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 171 moveto 89 (# mDVDRegionCode) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 159 moveto 85 (# mStorageMedium) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 74 152 moveto
+193 152 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 139 moveto 103 (+ ~cUPnPClassMovie\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 127 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 115 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 103 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 91 moveto 101 (+ setDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 79 moveto 97 (+ setStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 67 moveto 101 (+ getDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 55 moveto 97 (+ getStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+81.5 43 moveto 96 (# cUPnPClassMovie\(\)) alignedtext
+grestore
+% Node4->Node5
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 163 266 moveto
+159 244 154 223 150 204 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 159.61 266.88 moveto
+165 276 lineto
+166.47 265.51 lineto
+closepath stroke
+grestore
+% Node6
+gsave
+[ /Rect [ 210 0 372 240 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoBroadcast.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 210 0 moveto
+210 240 lineto
+372 240 lineto
+372 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 210 0 moveto
+210 240 lineto
+372 240 lineto
+372 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+228.5 227 moveto 125 (cUPnPClassVideoBroadcast) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 210 220 moveto
+372 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 207 moveto 35 (# mIcon) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 195 moveto 47 (# mRegion) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 183 moveto 62 (# mChannelNr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 171 moveto 77 (# mChannelName) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 210 164 moveto
+372 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 151 moveto 146 (+ ~cUPnPClassVideoBroadcast\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 139 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 127 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 115 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 103 moveto 47 (+ setIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 91 moveto 59 (+ setRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 79 moveto 74 (+ setChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 67 moveto 89 (+ setChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 55 moveto 47 (+ getIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 43 moveto 59 (+ getRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 31 moveto 74 (+ getChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 19 moveto 89 (+ getChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+218 7 moveto 139 (# cUPnPClassVideoBroadcast\(\)) alignedtext
+grestore
+% Node4->Node6
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 261 266 moveto
+263 257 265 249 266 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 257.53 265.51 moveto
+259 276 lineto
+264.39 266.88 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 416 1916
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassObject__inherit__graph.md5 b/doc/latex/classcUPnPClassObject__inherit__graph.md5
new file mode 100644
index 0000000..12512da
--- /dev/null
+++ b/doc/latex/classcUPnPClassObject__inherit__graph.md5
@@ -0,0 +1 @@
+467ce70c6b3ae8b69351ecd7ef1c5dd7 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassObject__inherit__graph.pdf b/doc/latex/classcUPnPClassObject__inherit__graph.pdf
new file mode 100644
index 0000000..85fa79a
--- /dev/null
+++ b/doc/latex/classcUPnPClassObject__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassVideoBroadcast.tex b/doc/latex/classcUPnPClassVideoBroadcast.tex
new file mode 100644
index 0000000..608c360
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoBroadcast.tex
@@ -0,0 +1,308 @@
+\hypertarget{classcUPnPClassVideoBroadcast}{
+\section{cUPnPClassVideoBroadcast Class Reference}
+\label{classcUPnPClassVideoBroadcast}\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPClassVideoBroadcast:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassVideoBroadcast__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPClassVideoBroadcast:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassVideoBroadcast__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual cStringList $\ast$ \hyperlink{classcUPnPClassVideoBroadcast_192f6a04c87fe8d56f99c71337cf0f68}{getPropertyList} ()
+\item
+virtual bool \hyperlink{classcUPnPClassVideoBroadcast_ce7a341834e448479d3c8f4f0254ce43}{setProperty} (const char $\ast$Property, const char $\ast$Value)
+\item
+virtual bool \hyperlink{classcUPnPClassVideoBroadcast_e1d13a13de094337cea6be214c4da0f0}{getProperty} (const char $\ast$Property, char $\ast$$\ast$Value) const
+\item
+int \hyperlink{classcUPnPClassVideoBroadcast_13e432f8a97072f3b45b1d199b82ae02}{setIcon} (const char $\ast$IconURI)
+\item
+int \hyperlink{classcUPnPClassVideoBroadcast_228fcc06291dc3989917bbfa5ce3153f}{setRegion} (const char $\ast$Region)
+\item
+int \hyperlink{classcUPnPClassVideoBroadcast_4a7804c6c86531d7e23cbc714daa6077}{setChannelNr} (int ChannelNr)
+\item
+int \hyperlink{classcUPnPClassVideoBroadcast_b3d1740f8ad67cec1c82c23078b03189}{setChannelName} (const char $\ast$ChannelName)
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoBroadcast_f4c2a9f5d62e41d853385b7b7685d536}{getIcon} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoBroadcast_f4582c82588879c110947fdfc50b7895}{getRegion} () const
+\item
+int \hyperlink{classcUPnPClassVideoBroadcast_6065509557e13176878098861fcfeb9d}{getChannelNr} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoBroadcast_b63ea63a4ab8ac3cb654b0bab4df620a}{getChannelName} () const
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPClassVideoBroadcast_a8d1e73bc9cbb20da6727f3c2e823d79}{cUPnPClassVideoBroadcast} ()
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassVideoBroadcast_24aa59d4c90d705f651cddf4ed90ad73}{
+cString \hyperlink{classcUPnPClassVideoBroadcast_24aa59d4c90d705f651cddf4ed90ad73}{mIcon}}
+\label{classcUPnPClassVideoBroadcast_24aa59d4c90d705f651cddf4ed90ad73}
+
+\begin{CompactList}\small\item\em The channel icon of the channel. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoBroadcast_9a9420e700fd45afd24beba8ae261909}{
+cString \hyperlink{classcUPnPClassVideoBroadcast_9a9420e700fd45afd24beba8ae261909}{mRegion}}
+\label{classcUPnPClassVideoBroadcast_9a9420e700fd45afd24beba8ae261909}
+
+\begin{CompactList}\small\item\em The region where the channel can be received. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoBroadcast_8ad5b61bf9e88e1b30a132ca72b0d905}{
+int \hyperlink{classcUPnPClassVideoBroadcast_8ad5b61bf9e88e1b30a132ca72b0d905}{mChannelNr}}
+\label{classcUPnPClassVideoBroadcast_8ad5b61bf9e88e1b30a132ca72b0d905}
+
+\begin{CompactList}\small\item\em The channel number. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoBroadcast_aae072a7d7a21b699561a62700971c26}{
+cString \hyperlink{classcUPnPClassVideoBroadcast_aae072a7d7a21b699561a62700971c26}{mChannelName}}
+\label{classcUPnPClassVideoBroadcast_aae072a7d7a21b699561a62700971c26}
+
+\begin{CompactList}\small\item\em The channel name or provider name. \item\end{CompactList}\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassVideoBroadcast_3d0d0aedce8b1c661ea360b9a6d616f6}{
+class \hyperlink{classcUPnPClassVideoBroadcast_3d0d0aedce8b1c661ea360b9a6d616f6}{cMediaDatabase}}
+\label{classcUPnPClassVideoBroadcast_3d0d0aedce8b1c661ea360b9a6d616f6}
+
+\item
+\hypertarget{classcUPnPClassVideoBroadcast_aefab39434a832c545ac75a79fa81d23}{
+class \hyperlink{classcUPnPClassVideoBroadcast_aefab39434a832c545ac75a79fa81d23}{cUPnPObjectMediator}}
+\label{classcUPnPClassVideoBroadcast_aefab39434a832c545ac75a79fa81d23}
+
+\item
+\hypertarget{classcUPnPClassVideoBroadcast_23986410a02651ff37a4699efbb7f209}{
+class \hyperlink{classcUPnPClassVideoBroadcast_23986410a02651ff37a4699efbb7f209}{cUPnPVideoBroadcastMediator}}
+\label{classcUPnPClassVideoBroadcast_23986410a02651ff37a4699efbb7f209}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP class VideoBroadcast
+
+This is a UPnP class VideoBroadcast representation with all its properties.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPClassVideoBroadcast_a8d1e73bc9cbb20da6727f3c2e823d79}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{cUPnPClassVideoBroadcast}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast ()\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_a8d1e73bc9cbb20da6727f3c2e823d79}
+
+
+Constructor of a video broadcast
+
+This creates a new instance of a video broadcast
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPClassVideoBroadcast_b63ea63a4ab8ac3cb654b0bab4df620a}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!getChannelName@{getChannelName}}
+\index{getChannelName@{getChannelName}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{getChannelName}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoBroadcast::getChannelName () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_b63ea63a4ab8ac3cb654b0bab4df620a}
+
+
+Get the channel name
+
+This returns the channel name or provider name respectively
+
+\begin{Desc}
+\item[Returns:]the channel name \end{Desc}
+\hypertarget{classcUPnPClassVideoBroadcast_6065509557e13176878098861fcfeb9d}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!getChannelNr@{getChannelNr}}
+\index{getChannelNr@{getChannelNr}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{getChannelNr}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoBroadcast::getChannelNr () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_6065509557e13176878098861fcfeb9d}
+
+
+Get the channel number
+
+This returns the channel number
+
+\begin{Desc}
+\item[Returns:]the channel number \end{Desc}
+\hypertarget{classcUPnPClassVideoBroadcast_f4c2a9f5d62e41d853385b7b7685d536}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!getIcon@{getIcon}}
+\index{getIcon@{getIcon}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{getIcon}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoBroadcast::getIcon () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_f4c2a9f5d62e41d853385b7b7685d536}
+
+
+Get the channel icon
+
+This returns the channel icon of the channel.
+
+\begin{Desc}
+\item[Returns:]the channel icon \end{Desc}
+\hypertarget{classcUPnPClassVideoBroadcast_e1d13a13de094337cea6be214c4da0f0}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!getProperty@{getProperty}}
+\index{getProperty@{getProperty}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{getProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassVideoBroadcast::getProperty (const char $\ast$ {\em Property}, \/ char $\ast$$\ast$ {\em Value}) const\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_e1d13a13de094337cea6be214c4da0f0}
+
+
+Gets a property
+
+Returns the value of a specified property. The value is converted into a string.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be returned \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassVideoItem_94ab2ffcbe14abb63c680e6748e70ef1}{cUPnPClassVideoItem}.\hypertarget{classcUPnPClassVideoBroadcast_192f6a04c87fe8d56f99c71337cf0f68}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!getPropertyList@{getPropertyList}}
+\index{getPropertyList@{getPropertyList}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{getPropertyList}]{\setlength{\rightskip}{0pt plus 5cm}cStringList $\ast$ cUPnPClassVideoBroadcast::getPropertyList ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_192f6a04c87fe8d56f99c71337cf0f68}
+
+
+Get the properties of the object
+
+This returns a property list with all the properties which can be obtained or set with {\tt getProperty} or {\tt setProperty}.
+
+\begin{Desc}
+\item[Returns:]a stringlist with the properties \end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassVideoItem_9dc397419b45535a3e6a676667b619a4}{cUPnPClassVideoItem}.\hypertarget{classcUPnPClassVideoBroadcast_f4582c82588879c110947fdfc50b7895}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!getRegion@{getRegion}}
+\index{getRegion@{getRegion}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{getRegion}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoBroadcast::getRegion () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_f4582c82588879c110947fdfc50b7895}
+
+
+Get the region
+
+This returns the region, where the channel can be received
+
+\begin{Desc}
+\item[Returns:]the channel region \end{Desc}
+\hypertarget{classcUPnPClassVideoBroadcast_b3d1740f8ad67cec1c82c23078b03189}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!setChannelName@{setChannelName}}
+\index{setChannelName@{setChannelName}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{setChannelName}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoBroadcast::setChannelName (const char $\ast$ {\em ChannelName})}}
+\label{classcUPnPClassVideoBroadcast_b3d1740f8ad67cec1c82c23078b03189}
+
+
+Set the channel name
+
+This sets the channel name or the provider of the channel.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ChannelName}]the channel name \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoBroadcast_4a7804c6c86531d7e23cbc714daa6077}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!setChannelNr@{setChannelNr}}
+\index{setChannelNr@{setChannelNr}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{setChannelNr}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoBroadcast::setChannelNr (int {\em ChannelNr})}}
+\label{classcUPnPClassVideoBroadcast_4a7804c6c86531d7e23cbc714daa6077}
+
+
+Set channel number
+
+This sets the channel number, so that it can be used for directly navigation or channel up and down navigation respectively.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ChannelNr}]the channel number \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoBroadcast_13e432f8a97072f3b45b1d199b82ae02}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!setIcon@{setIcon}}
+\index{setIcon@{setIcon}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{setIcon}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoBroadcast::setIcon (const char $\ast$ {\em IconURI})}}
+\label{classcUPnPClassVideoBroadcast_13e432f8a97072f3b45b1d199b82ae02}
+
+
+Set the channel icon
+
+This sets the channel icon of this channel. The resource must be a valid URI which can be obtained via the internal webserver
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em IconURI}]the URI to the icon file \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoBroadcast_ce7a341834e448479d3c8f4f0254ce43}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!setProperty@{setProperty}}
+\index{setProperty@{setProperty}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{setProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassVideoBroadcast::setProperty (const char $\ast$ {\em Property}, \/ const char $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassVideoBroadcast_ce7a341834e448479d3c8f4f0254ce43}
+
+
+Sets a property
+
+Sets the value of a specified property. The value is converted from string into the propper data type
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be set \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassVideoItem_3cbda6d87f5a9ff0475a75e76ba19924}{cUPnPClassVideoItem}.\hypertarget{classcUPnPClassVideoBroadcast_228fcc06291dc3989917bbfa5ce3153f}{
+\index{cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}!setRegion@{setRegion}}
+\index{setRegion@{setRegion}!cUPnPClassVideoBroadcast@{cUPnPClassVideoBroadcast}}
+\subsubsection[{setRegion}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoBroadcast::setRegion (const char $\ast$ {\em Region})}}
+\label{classcUPnPClassVideoBroadcast_228fcc06291dc3989917bbfa5ce3153f}
+
+
+Set the channel region
+
+This sets the region of a channel, where it can be received
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Region}]the location where the channel can be received \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.eps b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.eps
new file mode 100644
index 0000000..364bbc5
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.eps
@@ -0,0 +1,932 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 256 1970
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 220 1934 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+162 240 lineto
+162 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+162 240 lineto
+162 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 227 moveto 125 (cUPnPClassVideoBroadcast) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 220 moveto
+162 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 35 (# mIcon) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 47 (# mRegion) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 62 (# mChannelNr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 77 (# mChannelName) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 164 moveto
+162 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 151 moveto 146 (+ ~cUPnPClassVideoBroadcast\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 47 (+ setIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 59 (+ setRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 74 (+ setChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 89 (+ setChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 47 (+ getIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 59 (+ getRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 74 (+ getChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 89 (+ getChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 139 (# cUPnPClassVideoBroadcast\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 13 278 149 734 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 13 278 moveto
+13 734 lineto
+150 734 lineto
+150 278 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 278 moveto
+13 734 lineto
+150 734 lineto
+150 278 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31 721 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 714 moveto
+150 714 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 701 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 689 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 677 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 665 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 653 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 641 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 629 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 617 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 605 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 593 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 586 moveto
+150 586 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 573 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 561 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 549 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 537 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 525 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 513 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 501 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 489 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 477 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 465 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 453 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 441 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 429 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 417 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 405 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 393 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 381 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 369 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 357 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 345 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 333 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 321 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 309 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 297 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 285 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 81 268 moveto
+81 258 81 249 81 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 77.5 268 moveto
+81 278 lineto
+84.5 268 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 21 772 141 928 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 21 772 moveto
+21 928 lineto
+142 928 lineto
+142 772 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 772 moveto
+21 928 lineto
+142 928 lineto
+142 772 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+43.5 915 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 908 moveto
+142 908 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 895 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 888 moveto
+142 888 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 875 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 863 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 851 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 839 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 827 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 815 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 803 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 791 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 779 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 81 762 moveto
+81 753 81 743 81 734 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 77.5 762 moveto
+81 772 lineto
+84.5 762 lineto
+closepath stroke
+grestore
+% Node3->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 151 863 moveto
+156 860 159 856 159 850 curveto
+159 841 152 836 142 833 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 142 867 moveto
+149.31 858.83 lineto
+146.57 864.97 lineto
+151.14 862.94 lineto
+151.14 862.94 lineto
+151.14 862.94 lineto
+146.57 864.97 lineto
+152.97 867.05 lineto
+142 867 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 142 867 moveto
+149.31 858.83 lineto
+146.57 864.97 lineto
+151.14 862.94 lineto
+151.14 862.94 lineto
+151.14 862.94 lineto
+146.57 864.97 lineto
+152.97 867.05 lineto
+142 867 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+158.5 847 moveto 53 (mReference) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 21 966 141 1578 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 21 966 moveto
+21 1578 lineto
+142 1578 lineto
+142 966 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 966 moveto
+21 1578 lineto
+142 1578 lineto
+142 966 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+39 1565 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 1558 moveto
+142 1558 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1545 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1533 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1521 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1509 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1497 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1485 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1473 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1461 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1449 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1437 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1425 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1413 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1401 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1389 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1377 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 1370 moveto
+142 1370 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1357 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1345 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1333 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1321 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1309 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1297 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1285 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1273 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1261 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1249 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1237 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1225 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1213 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1201 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1189 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1177 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1165 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1153 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1141 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1129 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1117 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1105 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1093 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1081 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1069 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1057 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1045 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1033 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1021 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1009 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 997 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 985 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 973 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 81 956 moveto
+81 946 81 937 81 928 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 77.5 956 moveto
+81 966 lineto
+84.5 956 lineto
+closepath stroke
+grestore
+% Node4->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 149 1320 moveto
+155 1310 159 1294 159 1272 curveto
+159 1243 152 1224 142 1216 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 142 1328 moveto
+145.2 1317.51 lineto
+145.29 1324.24 lineto
+148.59 1320.47 lineto
+148.59 1320.47 lineto
+148.59 1320.47 lineto
+145.29 1324.24 lineto
+151.97 1323.44 lineto
+142 1328 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 142 1328 moveto
+145.2 1317.51 lineto
+145.29 1324.24 lineto
+148.59 1320.47 lineto
+148.59 1320.47 lineto
+148.59 1320.47 lineto
+145.29 1324.24 lineto
+151.97 1323.44 lineto
+142 1328 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+158.5 1269 moveto 37 (mParent) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 20 1638 142 1926 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 20 1638 moveto
+20 1926 lineto
+142 1926 lineto
+142 1638 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 1638 moveto
+20 1926 lineto
+142 1926 lineto
+142 1638 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+46.5 1913 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 1906 moveto
+142 1906 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1893 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 1886 moveto
+142 1886 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1873 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1861 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1849 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1837 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1825 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1813 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1801 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1789 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1777 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1765 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1753 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1741 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1729 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1717 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1705 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1693 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1681 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1669 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1657 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 1645 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 81 1628 moveto
+81 1612 81 1595 81 1578 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 81 1638 moveto
+76.5 1628 lineto
+81 1633 lineto
+81 1628 lineto
+81 1628 lineto
+81 1628 lineto
+81 1633 lineto
+85.5 1628 lineto
+81 1638 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 81 1638 moveto
+76.5 1628 lineto
+81 1633 lineto
+81 1628 lineto
+81 1628 lineto
+81 1628 lineto
+81 1633 lineto
+85.5 1628 lineto
+81 1638 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+80.5 1611 moveto 37 (mLastID) alignedtext
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+90 1599 moveto 18 (mID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 256 1970
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.md5 b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.md5
new file mode 100644
index 0000000..aeb2413
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.md5
@@ -0,0 +1 @@
+3401dfefa7c9887d221b193a70544bd6 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf
new file mode 100644
index 0000000..087b604
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps
new file mode 100644
index 0000000..0b76999
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps
@@ -0,0 +1,719 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 206 1616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 170 1580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+162 240 lineto
+162 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+162 240 lineto
+162 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 227 moveto 125 (cUPnPClassVideoBroadcast) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 220 moveto
+162 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 35 (# mIcon) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 47 (# mRegion) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 62 (# mChannelNr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 77 (# mChannelName) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 164 moveto
+162 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 151 moveto 146 (+ ~cUPnPClassVideoBroadcast\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 47 (+ setIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 59 (+ setRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 74 (+ setChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 89 (+ setChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 47 (+ getIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 59 (+ getRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 74 (+ getChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 89 (+ getChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 139 (# cUPnPClassVideoBroadcast\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 13 276 149 732 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 13 276 moveto
+13 732 lineto
+150 732 lineto
+150 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 276 moveto
+13 732 lineto
+150 732 lineto
+150 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31 719 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 712 moveto
+150 712 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 699 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 687 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 675 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 663 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 651 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 639 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 627 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 615 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 603 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 591 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 584 moveto
+150 584 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 571 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 559 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 547 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 535 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 523 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 511 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 499 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 487 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 475 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 463 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 451 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 439 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 427 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 415 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 403 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 391 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 379 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 367 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 355 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 343 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 331 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 319 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 307 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 295 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 283 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 81 266 moveto
+81 257 81 249 81 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 77.5 266 moveto
+81 276 lineto
+84.5 266 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 21 768 141 924 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 21 768 moveto
+21 924 lineto
+142 924 lineto
+142 768 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 768 moveto
+21 924 lineto
+142 924 lineto
+142 768 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+43.5 911 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 904 moveto
+142 904 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 891 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 884 moveto
+142 884 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 871 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 859 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 847 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 835 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 823 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 811 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 799 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 787 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 775 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 81 758 moveto
+81 750 81 741 81 732 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 77.5 758 moveto
+81 768 lineto
+84.5 758 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 21 960 141 1572 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 21 960 moveto
+21 1572 lineto
+142 1572 lineto
+142 960 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 960 moveto
+21 1572 lineto
+142 1572 lineto
+142 960 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+39 1559 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 1552 moveto
+142 1552 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1539 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1527 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1515 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1503 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1491 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1479 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1467 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1455 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1443 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1431 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1419 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1407 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1395 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1383 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1371 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 21 1364 moveto
+142 1364 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1351 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1339 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1327 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1315 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1303 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1291 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1279 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1267 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1255 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1243 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1231 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1219 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1207 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1195 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1183 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1171 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1159 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1147 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1135 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1123 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1111 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1099 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1087 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1075 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1063 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1051 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1039 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1027 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1015 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 1003 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 991 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 979 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28.5 967 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 81 950 moveto
+81 941 81 932 81 924 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 77.5 950 moveto
+81 960 lineto
+84.5 950 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 206 1616
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.md5 b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.md5
new file mode 100644
index 0000000..2856db7
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.md5
@@ -0,0 +1 @@
+7b743fdb2399dbeedeb6c5ac33cb36b6 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf
new file mode 100644
index 0000000..b2b61a1
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassVideoItem.tex b/doc/latex/classcUPnPClassVideoItem.tex
new file mode 100644
index 0000000..efa4d8e
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoItem.tex
@@ -0,0 +1,572 @@
+\hypertarget{classcUPnPClassVideoItem}{
+\section{cUPnPClassVideoItem Class Reference}
+\label{classcUPnPClassVideoItem}\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPClassVideoItem:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassVideoItem__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPClassVideoItem:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPClassVideoItem__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual cStringList $\ast$ \hyperlink{classcUPnPClassVideoItem_9dc397419b45535a3e6a676667b619a4}{getPropertyList} ()
+\item
+virtual bool \hyperlink{classcUPnPClassVideoItem_3cbda6d87f5a9ff0475a75e76ba19924}{setProperty} (const char $\ast$Property, const char $\ast$Value)
+\item
+virtual bool \hyperlink{classcUPnPClassVideoItem_94ab2ffcbe14abb63c680e6748e70ef1}{getProperty} (const char $\ast$Property, char $\ast$$\ast$Value) const
+\item
+int \hyperlink{classcUPnPClassVideoItem_05c5b8394cbfcaeffe5f99c885496e3d}{setLongDescription} (const char $\ast$LongDescription)
+\item
+int \hyperlink{classcUPnPClassVideoItem_f5a642732c66b6920f5b4646a4c34a92}{setDescription} (const char $\ast$Description)
+\item
+int \hyperlink{classcUPnPClassVideoItem_db14c0944a89f179832a4f4914caa4ca}{setPublishers} (const char $\ast$Publishers)
+\item
+int \hyperlink{classcUPnPClassVideoItem_1be14ea33f9bbf53e636fea3658cc6f8}{setGenre} (const char $\ast$Genre)
+\item
+int \hyperlink{classcUPnPClassVideoItem_89c24d198ce7bdc31aac727e65b02a84}{setLanguage} (const char $\ast$Language)
+\item
+int \hyperlink{classcUPnPClassVideoItem_844385c5fb4f55c95a2994c7aaf120ef}{setRelations} (const char $\ast$Relations)
+\item
+int \hyperlink{classcUPnPClassVideoItem_a5fc1a420bfd307bbd026c0681162e0a}{setDirectors} (const char $\ast$Directors)
+\item
+int \hyperlink{classcUPnPClassVideoItem_33b104046098dbf66d894143181678c4}{setActors} (const char $\ast$Actors)
+\item
+int \hyperlink{classcUPnPClassVideoItem_3812b8056c9d2c7d13a7734e4219b27b}{setProducers} (const char $\ast$Producers)
+\item
+int \hyperlink{classcUPnPClassVideoItem_6d4143016fc91fcbb0db4e9f8a8a0047}{setRating} (const char $\ast$Rating)
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_b3ca922f5605d81bd8d3457fa19e228d}{getGenre} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_29f6f76f4ac21d6c15dbe2eb95a7d0c6}{getLongDescription} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_364180a89479d6143cfbe146d337a7dc}{getDescription} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_797dc99dd12b77af641b266ada7cb1dc}{getPublishers} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_4d134ac251a6c9b67a002d6fa831bf1c}{getLanguage} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_755e9710173d62fc2c9b98076391c916}{getRelations} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_61bca560d8469a441894896fe950adf3}{getActors} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_bd72ad944de96ddc8795cfe531adfef1}{getProducers} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_5b24963eb2d6d5d8e1547ba73863e13c}{getDirectors} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPClassVideoItem_2d8b94809b1207a14831e095c2b598a6}{getRating} () const
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPClassVideoItem_38ce1c18cc9d474791255fdcb43824d2}{cUPnPClassVideoItem} ()
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassVideoItem_b7fa79ab14701142597088b0a73515c3}{
+cString \hyperlink{classcUPnPClassVideoItem_b7fa79ab14701142597088b0a73515c3}{mGenre}}
+\label{classcUPnPClassVideoItem_b7fa79ab14701142597088b0a73515c3}
+
+\begin{CompactList}\small\item\em Genre of the video. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_bdf0f85f02d43ef32d8aab1daecddd7e}{
+cString \hyperlink{classcUPnPClassVideoItem_bdf0f85f02d43ef32d8aab1daecddd7e}{mDescription}}
+\label{classcUPnPClassVideoItem_bdf0f85f02d43ef32d8aab1daecddd7e}
+
+\begin{CompactList}\small\item\em Description. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_577abd61e96e6a7a17acd48eb7854a59}{
+cString \hyperlink{classcUPnPClassVideoItem_577abd61e96e6a7a17acd48eb7854a59}{mLongDescription}}
+\label{classcUPnPClassVideoItem_577abd61e96e6a7a17acd48eb7854a59}
+
+\begin{CompactList}\small\item\em a longer description \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_f6bcbeb08f86a8e8c133e0904c07e89e}{
+cString \hyperlink{classcUPnPClassVideoItem_f6bcbeb08f86a8e8c133e0904c07e89e}{mPublishers}}
+\label{classcUPnPClassVideoItem_f6bcbeb08f86a8e8c133e0904c07e89e}
+
+\begin{CompactList}\small\item\em CSV of Publishers. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_9d1d5e4f5058e4ca6a9e011b6eb97471}{
+cString \hyperlink{classcUPnPClassVideoItem_9d1d5e4f5058e4ca6a9e011b6eb97471}{mLanguage}}
+\label{classcUPnPClassVideoItem_9d1d5e4f5058e4ca6a9e011b6eb97471}
+
+\begin{CompactList}\small\item\em RFC 1766 Language code. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_dc03dd27283de69640cea28783459d97}{
+cString \hyperlink{classcUPnPClassVideoItem_dc03dd27283de69640cea28783459d97}{mRelations}}
+\label{classcUPnPClassVideoItem_dc03dd27283de69640cea28783459d97}
+
+\begin{CompactList}\small\item\em Relation to other contents. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_fa8cca909e9bde4fdff684bfdd4d8ac0}{
+cString \hyperlink{classcUPnPClassVideoItem_fa8cca909e9bde4fdff684bfdd4d8ac0}{mProducers}}
+\label{classcUPnPClassVideoItem_fa8cca909e9bde4fdff684bfdd4d8ac0}
+
+\begin{CompactList}\small\item\em CSV of Producers. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_73540adc3263ddbabc10018ba9a52cf9}{
+cString \hyperlink{classcUPnPClassVideoItem_73540adc3263ddbabc10018ba9a52cf9}{mRating}}
+\label{classcUPnPClassVideoItem_73540adc3263ddbabc10018ba9a52cf9}
+
+\begin{CompactList}\small\item\em Rating (for parential control). \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_2f22a58a30b8baf53a3dd76e6bc679a8}{
+cString \hyperlink{classcUPnPClassVideoItem_2f22a58a30b8baf53a3dd76e6bc679a8}{mActors}}
+\label{classcUPnPClassVideoItem_2f22a58a30b8baf53a3dd76e6bc679a8}
+
+\begin{CompactList}\small\item\em CSV of Actors. \item\end{CompactList}\item
+\hypertarget{classcUPnPClassVideoItem_79ace4a5927eaf082628ee8120e988ad}{
+cString \hyperlink{classcUPnPClassVideoItem_79ace4a5927eaf082628ee8120e988ad}{mDirectors}}
+\label{classcUPnPClassVideoItem_79ace4a5927eaf082628ee8120e988ad}
+
+\begin{CompactList}\small\item\em CSV of Directors. \item\end{CompactList}\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPClassVideoItem_3d0d0aedce8b1c661ea360b9a6d616f6}{
+class \hyperlink{classcUPnPClassVideoItem_3d0d0aedce8b1c661ea360b9a6d616f6}{cMediaDatabase}}
+\label{classcUPnPClassVideoItem_3d0d0aedce8b1c661ea360b9a6d616f6}
+
+\item
+\hypertarget{classcUPnPClassVideoItem_aefab39434a832c545ac75a79fa81d23}{
+class \hyperlink{classcUPnPClassVideoItem_aefab39434a832c545ac75a79fa81d23}{cUPnPObjectMediator}}
+\label{classcUPnPClassVideoItem_aefab39434a832c545ac75a79fa81d23}
+
+\item
+\hypertarget{classcUPnPClassVideoItem_e0d1a617e075a78abffc13ad3a3d341e}{
+class \hyperlink{classcUPnPClassVideoItem_e0d1a617e075a78abffc13ad3a3d341e}{cUPnPVideoItemMediator}}
+\label{classcUPnPClassVideoItem_e0d1a617e075a78abffc13ad3a3d341e}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP class VideoItem
+
+This is a UPnP class VideoItem representation with all its properties.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPClassVideoItem_38ce1c18cc9d474791255fdcb43824d2}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{cUPnPClassVideoItem}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPClassVideoItem::cUPnPClassVideoItem ()\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPClassVideoItem_38ce1c18cc9d474791255fdcb43824d2}
+
+
+Constructor of a video item
+
+This creates a new instance of a video item
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPClassVideoItem_61bca560d8469a441894896fe950adf3}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getActors@{getActors}}
+\index{getActors@{getActors}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getActors}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getActors () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_61bca560d8469a441894896fe950adf3}
+
+
+Get the actors
+
+This returns a CSV list of actors in the video
+
+\begin{Desc}
+\item[Returns:]a CSV list of actors \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_364180a89479d6143cfbe146d337a7dc}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getDescription@{getDescription}}
+\index{getDescription@{getDescription}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getDescription}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getDescription () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_364180a89479d6143cfbe146d337a7dc}
+
+
+Get the description
+
+This returns the description of a video
+
+\begin{Desc}
+\item[Returns:]the description of a video \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_5b24963eb2d6d5d8e1547ba73863e13c}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getDirectors@{getDirectors}}
+\index{getDirectors@{getDirectors}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getDirectors}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getDirectors () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_5b24963eb2d6d5d8e1547ba73863e13c}
+
+
+Get the directors
+
+This returns a CSV list of directors
+
+\begin{Desc}
+\item[Returns:]a CSV list of directors \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_b3ca922f5605d81bd8d3457fa19e228d}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getGenre@{getGenre}}
+\index{getGenre@{getGenre}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getGenre}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getGenre () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_b3ca922f5605d81bd8d3457fa19e228d}
+
+
+Get the genres
+
+This returns a CSV list of genre
+
+\begin{Desc}
+\item[Returns:]the genre of a video \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_4d134ac251a6c9b67a002d6fa831bf1c}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getLanguage@{getLanguage}}
+\index{getLanguage@{getLanguage}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getLanguage}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getLanguage () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_4d134ac251a6c9b67a002d6fa831bf1c}
+
+
+Get the language
+
+This returns the language of the video
+
+\begin{Desc}
+\item[Returns:]the language \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_29f6f76f4ac21d6c15dbe2eb95a7d0c6}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getLongDescription@{getLongDescription}}
+\index{getLongDescription@{getLongDescription}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getLongDescription}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getLongDescription () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_29f6f76f4ac21d6c15dbe2eb95a7d0c6}
+
+
+Get the long description
+
+This returns the long description of a video
+
+\begin{Desc}
+\item[Returns:]the long description of a video \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_bd72ad944de96ddc8795cfe531adfef1}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getProducers@{getProducers}}
+\index{getProducers@{getProducers}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getProducers}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getProducers () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_bd72ad944de96ddc8795cfe531adfef1}
+
+
+Get the producers
+
+This returns a CSV list of producers of a video
+
+\begin{Desc}
+\item[Returns:]a CSV list of producers \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_94ab2ffcbe14abb63c680e6748e70ef1}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getProperty@{getProperty}}
+\index{getProperty@{getProperty}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassVideoItem::getProperty (const char $\ast$ {\em Property}, \/ char $\ast$$\ast$ {\em Value}) const\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassVideoItem_94ab2ffcbe14abb63c680e6748e70ef1}
+
+
+Gets a property
+
+Returns the value of a specified property. The value is converted into a string.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be returned \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassItem_31f7010baa65cc25b95a864f05eb4e62}{cUPnPClassItem}.
+
+Reimplemented in \hyperlink{classcUPnPClassMovie_b4c1d5a973856469b93d2033b65d7ba2}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_e1d13a13de094337cea6be214c4da0f0}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassVideoItem_9dc397419b45535a3e6a676667b619a4}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getPropertyList@{getPropertyList}}
+\index{getPropertyList@{getPropertyList}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getPropertyList}]{\setlength{\rightskip}{0pt plus 5cm}cStringList $\ast$ cUPnPClassVideoItem::getPropertyList ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassVideoItem_9dc397419b45535a3e6a676667b619a4}
+
+
+Get the properties of the object
+
+This returns a property list with all the properties which can be obtained or set with {\tt getProperty} or {\tt setProperty}.
+
+\begin{Desc}
+\item[Returns:]a stringlist with the properties \end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassItem_add0c9d378036e270e6f99d8d1409e3b}{cUPnPClassItem}.
+
+Reimplemented in \hyperlink{classcUPnPClassMovie_b62e6dac175090b82c47f955e29c146c}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_192f6a04c87fe8d56f99c71337cf0f68}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassVideoItem_797dc99dd12b77af641b266ada7cb1dc}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getPublishers@{getPublishers}}
+\index{getPublishers@{getPublishers}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getPublishers}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getPublishers () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_797dc99dd12b77af641b266ada7cb1dc}
+
+
+Get the publishers
+
+This returns a CSV list of publishers of the video
+
+\begin{Desc}
+\item[Returns:]a CSV list of publishers \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_2d8b94809b1207a14831e095c2b598a6}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getRating@{getRating}}
+\index{getRating@{getRating}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getRating}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getRating () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_2d8b94809b1207a14831e095c2b598a6}
+
+
+Get the rating
+
+This returns the rating used for parental control.
+
+\begin{Desc}
+\item[Returns:]the rating of a video \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_755e9710173d62fc2c9b98076391c916}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!getRelations@{getRelations}}
+\index{getRelations@{getRelations}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{getRelations}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPClassVideoItem::getRelations () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPClassVideoItem_755e9710173d62fc2c9b98076391c916}
+
+
+Get the relations
+
+This returns a CSV list of relation URLs.
+
+\begin{Desc}
+\item[Returns:]a CSV list of relation URLs \end{Desc}
+\hypertarget{classcUPnPClassVideoItem_33b104046098dbf66d894143181678c4}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setActors@{setActors}}
+\index{setActors@{setActors}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setActors}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setActors (const char $\ast$ {\em Actors})}}
+\label{classcUPnPClassVideoItem_33b104046098dbf66d894143181678c4}
+
+
+Sets the actors
+
+This sets a CSV list of actors in a video. This usually contain the main actors. However, also other actors appearing in the video can be mentioned here.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Actors}]a CSV list of actors \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_f5a642732c66b6920f5b4646a4c34a92}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setDescription@{setDescription}}
+\index{setDescription@{setDescription}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setDescription}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setDescription (const char $\ast$ {\em Description})}}
+\label{classcUPnPClassVideoItem_f5a642732c66b6920f5b4646a4c34a92}
+
+
+Set a description
+
+A description may hold short information about the content or the story of a video. Unlike a long description, this contains just a very short brief like a subtitle or the episode title.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Description}]the description of a video \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_a5fc1a420bfd307bbd026c0681162e0a}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setDirectors@{setDirectors}}
+\index{setDirectors@{setDirectors}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setDirectors}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setDirectors (const char $\ast$ {\em Directors})}}
+\label{classcUPnPClassVideoItem_a5fc1a420bfd307bbd026c0681162e0a}
+
+
+Sets the directors
+
+This sets a CSV list of directors.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Directors}]a CSV list of directors \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_1be14ea33f9bbf53e636fea3658cc6f8}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setGenre@{setGenre}}
+\index{setGenre@{setGenre}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setGenre}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setGenre (const char $\ast$ {\em Genre})}}
+\label{classcUPnPClassVideoItem_1be14ea33f9bbf53e636fea3658cc6f8}
+
+
+Set a genre
+
+This is a CSV list of genre of a video. This may be something like \char`\"{}Western\char`\"{} or \char`\"{}SciFi\char`\"{}. Actually, there is no standardized rule for a genre name, which results in an ambiguous definition of certain genre, like Thriller and Horror.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Genre}]a CSV list of genre \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_89c24d198ce7bdc31aac727e65b02a84}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setLanguage@{setLanguage}}
+\index{setLanguage@{setLanguage}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setLanguage}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setLanguage (const char $\ast$ {\em Language})}}
+\label{classcUPnPClassVideoItem_89c24d198ce7bdc31aac727e65b02a84}
+
+
+Set the language
+
+This sets the language of a video. It is defined by RFC 1766. A valid language definition is {\em \char`\"{}de-DE\char`\"{}\/} or {\em \char`\"{}en-US\char`\"{}\/}.
+
+\begin{Desc}
+\item[See also:]\href{http://www.ietf.org/rfc/rfc1766.txt}{\tt http://www.ietf.org/rfc/rfc1766.txt} \end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Language}]the language (RFC 1766) \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_05c5b8394cbfcaeffe5f99c885496e3d}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setLongDescription@{setLongDescription}}
+\index{setLongDescription@{setLongDescription}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setLongDescription}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setLongDescription (const char $\ast$ {\em LongDescription})}}
+\label{classcUPnPClassVideoItem_05c5b8394cbfcaeffe5f99c885496e3d}
+
+
+Set a long description
+
+A long description may hold information about the content or the story of a video
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em LongDescription}]the content or story of a video \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_3812b8056c9d2c7d13a7734e4219b27b}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setProducers@{setProducers}}
+\index{setProducers@{setProducers}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setProducers}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setProducers (const char $\ast$ {\em Producers})}}
+\label{classcUPnPClassVideoItem_3812b8056c9d2c7d13a7734e4219b27b}
+
+
+Sets the producers
+
+This sets a CSV list of producers of a video. These are the people who are involed in the production of a video
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Producers}]a CSV list of producers \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_3cbda6d87f5a9ff0475a75e76ba19924}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setProperty@{setProperty}}
+\index{setProperty@{setProperty}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setProperty}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPClassVideoItem::setProperty (const char $\ast$ {\em Property}, \/ const char $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPClassVideoItem_3cbda6d87f5a9ff0475a75e76ba19924}
+
+
+Sets a property
+
+Sets the value of a specified property. The value is converted from string into the propper data type
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the property exists\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property which should be set \item[{\em Value}]the value of that property \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPClassItem_ab17057659c17792a5b67f4297ade642}{cUPnPClassItem}.
+
+Reimplemented in \hyperlink{classcUPnPClassMovie_d7f990edda85f2caabe822d2ceeb2b0d}{cUPnPClassMovie}, and \hyperlink{classcUPnPClassVideoBroadcast_ce7a341834e448479d3c8f4f0254ce43}{cUPnPClassVideoBroadcast}.\hypertarget{classcUPnPClassVideoItem_db14c0944a89f179832a4f4914caa4ca}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setPublishers@{setPublishers}}
+\index{setPublishers@{setPublishers}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setPublishers}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setPublishers (const char $\ast$ {\em Publishers})}}
+\label{classcUPnPClassVideoItem_db14c0944a89f179832a4f4914caa4ca}
+
+
+Set the publishers
+
+This is a CSV list of publishers, who distributes the video.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Publishers}]a CSV list of publishers \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_6d4143016fc91fcbb0db4e9f8a8a0047}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setRating@{setRating}}
+\index{setRating@{setRating}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setRating}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setRating (const char $\ast$ {\em Rating})}}
+\label{classcUPnPClassVideoItem_6d4143016fc91fcbb0db4e9f8a8a0047}
+
+
+Sets the rating
+
+This is a rating, which can be used for parential control issues.
+
+\begin{Desc}
+\item[See also:]\href{http://en.wikipedia.org/wiki/Motion_picture_rating_system}{\tt http://en.wikipedia.org/wiki/Motion\_\-picture\_\-rating\_\-system} \end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Rating}]the rating of a video \end{description}
+\end{Desc}
+\hypertarget{classcUPnPClassVideoItem_844385c5fb4f55c95a2994c7aaf120ef}{
+\index{cUPnPClassVideoItem@{cUPnPClassVideoItem}!setRelations@{setRelations}}
+\index{setRelations@{setRelations}!cUPnPClassVideoItem@{cUPnPClassVideoItem}}
+\subsubsection[{setRelations}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPClassVideoItem::setRelations (const char $\ast$ {\em Relations})}}
+\label{classcUPnPClassVideoItem_844385c5fb4f55c95a2994c7aaf120ef}
+
+
+Sets a relation URL
+
+This sets a CSV list of relation URLs, where to find additional information about the movie. The URLs may not contain commas and they must be properly escaped as in RFC 2396
+
+\begin{Desc}
+\item[See also:]\href{http://www.ietf.org/rfc/rfc2396.txt}{\tt http://www.ietf.org/rfc/rfc2396.txt} \end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if setting was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Relations}]a CSV list with relations \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPClassVideoItem__coll__graph.eps b/doc/latex/classcUPnPClassVideoItem__coll__graph.eps
new file mode 100644
index 0000000..28e6fbc
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoItem__coll__graph.eps
@@ -0,0 +1,828 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 243 1692
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 207 1656 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 456 lineto
+137 456 lineto
+137 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 456 lineto
+137 456 lineto
+137 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 443 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 436 moveto
+137 436 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 423 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 411 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 399 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 387 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 375 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 363 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 351 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 339 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 327 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 315 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 308 moveto
+137 308 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 295 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 283 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 271 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 259 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 247 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 235 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 223 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 211 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 199 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 187 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 175 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 163 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 151 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 139 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 127 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 115 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 103 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 91 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 79 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 31 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 19 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 7 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 8 494 128 650 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 8 494 moveto
+8 650 lineto
+129 650 lineto
+129 494 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 494 moveto
+8 650 lineto
+129 650 lineto
+129 494 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+30.5 637 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 630 moveto
+129 630 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 617 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 610 moveto
+129 610 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 597 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 585 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 573 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 561 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 549 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 537 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 525 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 513 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 501 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 484 moveto
+68 475 68 465 68 456 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 484 moveto
+68 494 lineto
+71.5 484 lineto
+closepath stroke
+grestore
+% Node2->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 138 585 moveto
+143 582 146 578 146 572 curveto
+146 563 139 558 129 555 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 129 589 moveto
+136.31 580.83 lineto
+133.57 586.97 lineto
+138.14 584.94 lineto
+138.14 584.94 lineto
+138.14 584.94 lineto
+133.57 586.97 lineto
+139.97 589.05 lineto
+129 589 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 129 589 moveto
+136.31 580.83 lineto
+133.57 586.97 lineto
+138.14 584.94 lineto
+138.14 584.94 lineto
+138.14 584.94 lineto
+133.57 586.97 lineto
+139.97 589.05 lineto
+129 589 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+145.5 569 moveto 53 (mReference) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 8 688 128 1300 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 8 688 moveto
+8 1300 lineto
+129 1300 lineto
+129 688 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 688 moveto
+8 1300 lineto
+129 1300 lineto
+129 688 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26 1287 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 1280 moveto
+129 1280 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1267 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1255 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1243 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1231 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1219 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1207 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1195 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1183 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1171 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1159 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1147 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1135 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1123 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1111 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1099 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 1092 moveto
+129 1092 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1079 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1067 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1055 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1043 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1031 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1019 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 1007 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 995 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 983 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 971 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 959 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 947 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 935 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 923 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 911 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 899 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 887 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 875 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 863 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 851 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 839 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 827 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 815 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 803 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 791 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 779 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 767 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 755 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 743 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 731 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 719 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 707 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15.5 695 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 68 678 moveto
+68 668 68 659 68 650 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 64.5 678 moveto
+68 688 lineto
+71.5 678 lineto
+closepath stroke
+grestore
+% Node3->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 136 1042 moveto
+142 1032 146 1016 146 994 curveto
+146 965 139 946 129 938 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 129 1050 moveto
+132.2 1039.51 lineto
+132.29 1046.24 lineto
+135.59 1042.47 lineto
+135.59 1042.47 lineto
+135.59 1042.47 lineto
+132.29 1046.24 lineto
+138.97 1045.44 lineto
+129 1050 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 129 1050 moveto
+132.2 1039.51 lineto
+132.29 1046.24 lineto
+135.59 1042.47 lineto
+135.59 1042.47 lineto
+135.59 1042.47 lineto
+132.29 1046.24 lineto
+138.97 1045.44 lineto
+129 1050 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+145.5 991 moveto 37 (mParent) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 7 1360 129 1648 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 7 1360 moveto
+7 1648 lineto
+129 1648 lineto
+129 1360 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 1360 moveto
+7 1648 lineto
+129 1648 lineto
+129 1360 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+33.5 1635 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 1628 moveto
+129 1628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1615 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 7 1608 moveto
+129 1608 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1595 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1583 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1571 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1559 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1547 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1535 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1523 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1511 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1499 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1487 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1475 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1463 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1451 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1439 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1427 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1415 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1403 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1391 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1379 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+15 1367 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 68 1350 moveto
+68 1334 68 1317 68 1300 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 68 1360 moveto
+63.5 1350 lineto
+68 1355 lineto
+68 1350 lineto
+68 1350 lineto
+68 1350 lineto
+68 1355 lineto
+72.5 1350 lineto
+68 1360 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 68 1360 moveto
+63.5 1350 lineto
+68 1355 lineto
+68 1350 lineto
+68 1350 lineto
+68 1350 lineto
+68 1355 lineto
+72.5 1350 lineto
+68 1360 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+67.5 1333 moveto 37 (mLastID) alignedtext
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+77 1321 moveto 18 (mID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 243 1692
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassVideoItem__coll__graph.md5 b/doc/latex/classcUPnPClassVideoItem__coll__graph.md5
new file mode 100644
index 0000000..f7176bd
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoItem__coll__graph.md5
@@ -0,0 +1 @@
+218316306bc023ce2926ccb0b9ed3de6 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassVideoItem__coll__graph.pdf b/doc/latex/classcUPnPClassVideoItem__coll__graph.pdf
new file mode 100644
index 0000000..611fc9f
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoItem__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPClassVideoItem__inherit__graph.eps b/doc/latex/classcUPnPClassVideoItem__inherit__graph.eps
new file mode 100644
index 0000000..618c53e
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoItem__inherit__graph.eps
@@ -0,0 +1,805 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 342 1616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 306 1580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 70 276 moveto
+70 732 lineto
+207 732 lineto
+207 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 70 276 moveto
+70 732 lineto
+207 732 lineto
+207 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 719 moveto 100 (cUPnPClassVideoItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 70 712 moveto
+207 712 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 699 moveto 43 (# mGenre) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 687 moveto 65 (# mDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 675 moveto 86 (# mLongDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 663 moveto 62 (# mPublishers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 651 moveto 59 (# mLanguage) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 639 moveto 57 (# mRelations) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 627 moveto 61 (# mProducers) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 615 moveto 44 (# mRating) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 603 moveto 45 (# mActors) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 591 moveto 56 (# mDirectors) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 70 584 moveto
+207 584 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 571 moveto 121 (+ ~cUPnPClassVideoItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 559 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 547 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 535 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 523 moveto 98 (+ setLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 511 moveto 77 (+ setDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 499 moveto 74 (+ setPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 487 moveto 55 (+ setGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 475 moveto 71 (+ setLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 463 moveto 69 (+ setRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 451 moveto 68 (+ setDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 439 moveto 57 (+ setActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 427 moveto 73 (+ setProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 415 moveto 56 (+ setRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 403 moveto 55 (+ getGenre\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 391 moveto 98 (+ getLongDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 379 moveto 77 (+ getDescription\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 367 moveto 74 (+ getPublishers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 355 moveto 71 (+ getLanguage\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 343 moveto 69 (+ getRelations\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 331 moveto 57 (+ getActors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 319 moveto 73 (+ getProducers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 307 moveto 68 (+ getDirectors\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 295 moveto 56 (+ getRating\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 283 moveto 114 (# cUPnPClassVideoItem\(\)) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 0 36 118 204 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassMovie.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 36 moveto
+0 204 lineto
+119 204 lineto
+119 36 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 36 moveto
+0 204 lineto
+119 204 lineto
+119 36 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 191 moveto 82 (cUPnPClassMovie) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 184 moveto
+119 184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 171 moveto 89 (# mDVDRegionCode) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 159 moveto 85 (# mStorageMedium) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 152 moveto
+119 152 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 139 moveto 103 (+ ~cUPnPClassMovie\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 127 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 115 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 103 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 91 moveto 101 (+ setDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 79 moveto 97 (+ setStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 101 (+ getDVDRegionCode\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 97 (+ getStorageMedium\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 96 (# cUPnPClassMovie\(\)) alignedtext
+grestore
+% Node1->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 89 266 moveto
+85 244 80 223 76 204 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 85.61 266.88 moveto
+91 276 lineto
+92.47 265.51 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 136 0 298 240 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassVideoBroadcast.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 136 0 moveto
+136 240 lineto
+298 240 lineto
+298 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 136 0 moveto
+136 240 lineto
+298 240 lineto
+298 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+154.5 227 moveto 125 (cUPnPClassVideoBroadcast) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 136 220 moveto
+298 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 207 moveto 35 (# mIcon) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 195 moveto 47 (# mRegion) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 183 moveto 62 (# mChannelNr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 171 moveto 77 (# mChannelName) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 136 164 moveto
+298 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 151 moveto 146 (+ ~cUPnPClassVideoBroadcast\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 139 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 127 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 115 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 103 moveto 47 (+ setIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 91 moveto 59 (+ setRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 79 moveto 74 (+ setChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 67 moveto 89 (+ setChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 55 moveto 47 (+ getIcon\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 43 moveto 59 (+ getRegion\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 31 moveto 74 (+ getChannelNr\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 19 moveto 89 (+ getChannelName\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144 7 moveto 139 (# cUPnPClassVideoBroadcast\(\)) alignedtext
+grestore
+% Node1->Node5
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 187 266 moveto
+189 257 191 249 192 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 183.53 265.51 moveto
+185 276 lineto
+190.39 266.88 lineto
+closepath stroke
+grestore
+% Node2
+gsave
+[ /Rect [ 78 768 198 924 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassItem.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 78 768 moveto
+78 924 lineto
+199 924 lineto
+199 768 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 768 moveto
+78 924 lineto
+199 924 lineto
+199 768 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100.5 911 moveto 75 (cUPnPClassItem) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 904 moveto
+199 904 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 891 moveto 61 (# mReference) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 884 moveto
+199 884 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 871 moveto 96 (+ ~cUPnPClassItem\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 859 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 847 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 835 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 823 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 811 moveto 73 (+ setReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 799 moveto 73 (+ getReference\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 787 moveto 83 (+ getReferenceID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 775 moveto 89 (# cUPnPClassItem\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 138 758 moveto
+138 750 138 741 138 732 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 134.5 758 moveto
+138 768 lineto
+141.5 758 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 78 960 198 1572 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPClassObject.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 78 960 moveto
+78 1572 lineto
+199 1572 lineto
+199 960 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 960 moveto
+78 1572 lineto
+199 1572 lineto
+199 960 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96 1559 moveto 84 (cUPnPClassObject) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 1552 moveto
+199 1552 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1539 moveto 72 (# mLastModified) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1527 moveto 26 (# mID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1515 moveto 45 (# mParent) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1503 moveto 41 (# mClass) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1491 moveto 35 (# mTitle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1479 moveto 48 (# mCreator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1467 moveto 61 (# mRestricted) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1455 moveto 68 (# mWriteStatus) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1443 moveto 63 (# mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1431 moveto 73 (# mResourcesID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1419 moveto 80 (# mDIDLFragment) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1407 moveto 65 (# mSortCriteria) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1395 moveto 86 (# mSortDescending) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1383 moveto 43 (- mLastID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1371 moveto 47 (- mDeleted) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 78 1364 moveto
+199 1364 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1351 moveto 52 (+ modified\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1339 moveto 105 (+ ~cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1327 moveto 54 (+ Compare\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1315 moveto 81 (+ getPropertyList\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1303 moveto 65 (+ getProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1291 moveto 65 (+ setProperty\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1279 moveto 70 (+ getContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1267 moveto 105 (+ createDIDLFragment\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1255 moveto 64 (+ isContainer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1243 moveto 77 (+ setSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1231 moveto 85 (+ clearSortCriteria\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1219 moveto 47 (+ setTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1207 moveto 60 (+ setCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1195 moveto 73 (+ setRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1183 moveto 80 (+ setWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1171 moveto 75 (+ setResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1159 moveto 72 (+ addResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1147 moveto 89 (+ removeResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1135 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1123 moveto 67 (+ getParentID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1111 moveto 57 (+ getParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1099 moveto 47 (+ getTitle\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1087 moveto 53 (+ getClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1075 moveto 60 (+ getCreator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1063 moveto 67 (+ isRestricted\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1051 moveto 80 (+ getWriteStatus\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1039 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1027 moveto 75 (+ getResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1015 moveto 98 (# cUPnPClassObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 1003 moveto 38 (# setID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 991 moveto 56 (# setParent\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 979 moveto 53 (# setClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 967 moveto 65 (# setModified\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 138 950 moveto
+138 941 138 932 138 924 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 134.5 950 moveto
+138 960 lineto
+141.5 950 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 342 1616
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPClassVideoItem__inherit__graph.md5 b/doc/latex/classcUPnPClassVideoItem__inherit__graph.md5
new file mode 100644
index 0000000..91f4e66
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoItem__inherit__graph.md5
@@ -0,0 +1 @@
+35e3a6bd8714a7cfdc39bbcf22c2a310 \ No newline at end of file
diff --git a/doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf b/doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf
new file mode 100644
index 0000000..86be572
--- /dev/null
+++ b/doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPConfig.tex b/doc/latex/classcUPnPConfig.tex
new file mode 100644
index 0000000..f62399e
--- /dev/null
+++ b/doc/latex/classcUPnPConfig.tex
@@ -0,0 +1,120 @@
+\hypertarget{classcUPnPConfig}{
+\section{cUPnPConfig Class Reference}
+\label{classcUPnPConfig}\index{cUPnPConfig@{cUPnPConfig}}
+}
+{\tt \#include $<$config.h$>$}
+
+Collaboration diagram for cUPnPConfig:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=204pt]{classcUPnPConfig__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+bool \hyperlink{classcUPnPConfig_3ac0d1253dba86cb4630bc1e29a9fe10}{parseSetup} (const char $\ast$Name, const char $\ast$Value)
+\item
+bool \hyperlink{classcUPnPConfig_19689798911a39c47958e819c33d4b09}{processArgs} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static \hyperlink{classcUPnPConfig}{cUPnPConfig} $\ast$ \hyperlink{classcUPnPConfig_3949dcc8a418edb8a0ece2dce62f515c}{get} ()
+\end{CompactItemize}
+\subsection*{Public Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPConfig_dd0afbf876c2625acc52cfd8fd8b6a7c}{
+char $\ast$ \hyperlink{classcUPnPConfig_dd0afbf876c2625acc52cfd8fd8b6a7c}{mInterface}}
+\label{classcUPnPConfig_dd0afbf876c2625acc52cfd8fd8b6a7c}
+
+\begin{CompactList}\small\item\em the network interface, which the server is bound to \item\end{CompactList}\item
+\hypertarget{classcUPnPConfig_0d7d7eb8d1ae9fffab39b39d1c9f10dd}{
+char $\ast$ \hyperlink{classcUPnPConfig_0d7d7eb8d1ae9fffab39b39d1c9f10dd}{mAddress}}
+\label{classcUPnPConfig_0d7d7eb8d1ae9fffab39b39d1c9f10dd}
+
+\begin{CompactList}\small\item\em the IP address which is used by the server \item\end{CompactList}\item
+\hypertarget{classcUPnPConfig_93224ed337b1f74525a68c5159532cb3}{
+int \hyperlink{classcUPnPConfig_93224ed337b1f74525a68c5159532cb3}{mPort}}
+\label{classcUPnPConfig_93224ed337b1f74525a68c5159532cb3}
+
+\begin{CompactList}\small\item\em the port which the server is listening on \item\end{CompactList}\item
+\hypertarget{classcUPnPConfig_6861c1183545e44a7d33e17440f4cd8c}{
+int \hyperlink{classcUPnPConfig_6861c1183545e44a7d33e17440f4cd8c}{mEnable}}
+\label{classcUPnPConfig_6861c1183545e44a7d33e17440f4cd8c}
+
+\begin{CompactList}\small\item\em indicates, if the server is enabled or not \item\end{CompactList}\item
+\hypertarget{classcUPnPConfig_da3ca113e9f1946fd1c09ebdcdcde0af}{
+int \hyperlink{classcUPnPConfig_da3ca113e9f1946fd1c09ebdcdcde0af}{mAutoSetup}}
+\label{classcUPnPConfig_da3ca113e9f1946fd1c09ebdcdcde0af}
+
+\begin{CompactList}\small\item\em indicates, if the settings are automatically detected \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The configuration settings
+
+This holds the configurations for the server. It holds information about the network settings as well as some status flags.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPConfig_3949dcc8a418edb8a0ece2dce62f515c}{
+\index{cUPnPConfig@{cUPnPConfig}!get@{get}}
+\index{get@{get}!cUPnPConfig@{cUPnPConfig}}
+\subsubsection[{get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPConfig} $\ast$ cUPnPConfig::get ()\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPConfig_3949dcc8a418edb8a0ece2dce62f515c}
+
+
+Get the configuration
+
+This returns the instance of the current configuration settings.
+
+\begin{Desc}
+\item[Returns:]the configuration object \end{Desc}
+\hypertarget{classcUPnPConfig_3ac0d1253dba86cb4630bc1e29a9fe10}{
+\index{cUPnPConfig@{cUPnPConfig}!parseSetup@{parseSetup}}
+\index{parseSetup@{parseSetup}!cUPnPConfig@{cUPnPConfig}}
+\subsubsection[{parseSetup}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPConfig::parseSetup (const char $\ast$ {\em Name}, \/ const char $\ast$ {\em Value})}}
+\label{classcUPnPConfig_3ac0d1253dba86cb4630bc1e29a9fe10}
+
+
+Parse setup variable
+
+This parses the setup variable with the according value. The value is a string representation and must be converted into the according data type.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if parsing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Name}]the name of the variable \item[{\em Value}]the according value of the variable \end{description}
+\end{Desc}
+\hypertarget{classcUPnPConfig_19689798911a39c47958e819c33d4b09}{
+\index{cUPnPConfig@{cUPnPConfig}!processArgs@{processArgs}}
+\index{processArgs@{processArgs}!cUPnPConfig@{cUPnPConfig}}
+\subsubsection[{processArgs}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPConfig::processArgs (int {\em argc}, \/ char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]})}}
+\label{classcUPnPConfig_19689798911a39c47958e819c33d4b09}
+
+
+Processes the commandline arguments
+
+This processes the commandline arguments which the user specified at the start of the plugin.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if processing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em argc}]the number of arguments in the list \item[{\em argv}]the arguments as a char array \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+misc/config.h\item
+misc/config.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPConfig__coll__graph.eps b/doc/latex/classcUPnPConfig__coll__graph.eps
new file mode 100644
index 0000000..22b74c0
--- /dev/null
+++ b/doc/latex/classcUPnPConfig__coll__graph.eps
@@ -0,0 +1,303 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 204 224
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 168 188 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 180 lineto
+96 180 lineto
+96 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 180 lineto
+96 180 lineto
+96 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 167 moveto 59 (cUPnPConfig) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 160 moveto
+96 160 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 147 moveto 56 (+ mInterface) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 135 moveto 53 (+ mAddress) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 123 moveto 35 (+ mPort) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 111 moveto 47 (+ mEnable) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 99 moveto 63 (+ mAutoSetup) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 87 moveto 65 (- mParsedArgs) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 75 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 68 moveto
+96 68 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 80 (+ ~cUPnPConfig\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 65 (+ parseSetup\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 70 (+ processArgs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 29 (+ get\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 71 (- cUPnPConfig\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 105 118 moveto
+110 112 114 103 114 90 curveto
+114 71 106 60 96 57 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 96 123 moveto
+102.56 114.21 lineto
+100.37 120.57 lineto
+104.74 118.14 lineto
+104.74 118.14 lineto
+104.74 118.14 lineto
+100.37 120.57 lineto
+106.93 122.08 lineto
+96 123 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 96 123 moveto
+102.56 114.21 lineto
+100.37 120.57 lineto
+104.74 118.14 lineto
+104.74 118.14 lineto
+104.74 118.14 lineto
+100.37 120.57 lineto
+106.93 122.08 lineto
+96 123 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+114 87 moveto 46 (mInstance) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 204 224
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPConfig__coll__graph.md5 b/doc/latex/classcUPnPConfig__coll__graph.md5
new file mode 100644
index 0000000..b1a6dfb
--- /dev/null
+++ b/doc/latex/classcUPnPConfig__coll__graph.md5
@@ -0,0 +1 @@
+465180009ac14e0fa37230ad2881e5f3 \ No newline at end of file
diff --git a/doc/latex/classcUPnPConfig__coll__graph.pdf b/doc/latex/classcUPnPConfig__coll__graph.pdf
new file mode 100644
index 0000000..b4a24ae
--- /dev/null
+++ b/doc/latex/classcUPnPConfig__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPContainerMediator.tex b/doc/latex/classcUPnPContainerMediator.tex
new file mode 100644
index 0000000..04800d4
--- /dev/null
+++ b/doc/latex/classcUPnPContainerMediator.tex
@@ -0,0 +1,153 @@
+\hypertarget{classcUPnPContainerMediator}{
+\section{cUPnPContainerMediator Class Reference}
+\label{classcUPnPContainerMediator}\index{cUPnPContainerMediator@{cUPnPContainerMediator}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPContainerMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPContainerMediator__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPContainerMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPContainerMediator__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPContainerMediator_e6fce4835ea40a77b401a093f65b5822}{cUPnPContainerMediator} (\hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$MediaDatabase)
+\item
+virtual \hyperlink{classcUPnPClassContainer}{cUPnPClassContainer} $\ast$ \hyperlink{classcUPnPContainerMediator_751177c725da94b1b91f6cda4645844d}{createObject} (const char $\ast$Title, bool Restricted)
+\item
+virtual \hyperlink{classcUPnPClassContainer}{cUPnPClassContainer} $\ast$ \hyperlink{classcUPnPContainerMediator_78b71f96fb4289dc78f897d6282078d6}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual int \hyperlink{classcUPnPContainerMediator_1caa4625fca42940ba36999a71ac49ec}{objectToDatabase} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPContainerMediator_79f483b48f596047ed9549f0b036f35b}{databaseToObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, \hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Container Mediator
+
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPContainerMediator_e6fce4835ea40a77b401a093f65b5822}{
+\index{cUPnPContainerMediator@{cUPnPContainerMediator}!cUPnPContainerMediator@{cUPnPContainerMediator}}
+\index{cUPnPContainerMediator@{cUPnPContainerMediator}!cUPnPContainerMediator@{cUPnPContainerMediator}}
+\subsubsection[{cUPnPContainerMediator}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPContainerMediator::cUPnPContainerMediator ({\bf cMediaDatabase} $\ast$ {\em MediaDatabase})}}
+\label{classcUPnPContainerMediator_e6fce4835ea40a77b401a093f65b5822}
+
+
+Constructor of container mediator
+
+This creates a new container mediator with which it is possible to create new instances of Container objects.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em MediaDatabase}]the media database \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPContainerMediator_751177c725da94b1b91f6cda4645844d}{
+\index{cUPnPContainerMediator@{cUPnPContainerMediator}!createObject@{createObject}}
+\index{createObject@{createObject}!cUPnPContainerMediator@{cUPnPContainerMediator}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassContainer} $\ast$ cUPnPContainerMediator::createObject (const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPContainerMediator_751177c725da94b1b91f6cda4645844d}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_bfbca3f1cbadacee2b21306364750f26}{cUPnPObjectMediator}.\hypertarget{classcUPnPContainerMediator_79f483b48f596047ed9549f0b036f35b}{
+\index{cUPnPContainerMediator@{cUPnPContainerMediator}!databaseToObject@{databaseToObject}}
+\index{databaseToObject@{databaseToObject}!cUPnPContainerMediator@{cUPnPContainerMediator}}
+\subsubsection[{databaseToObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPContainerMediator::databaseToObject ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ {\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPContainerMediator_79f483b48f596047ed9549f0b036f35b}
+
+
+Loads an object from database
+
+This loads an object from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be loaded \item[{\em ID}]the object ID of that object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_07a6a1d2694fb2f4573bd50374406b24}{cUPnPObjectMediator}.\hypertarget{classcUPnPContainerMediator_78b71f96fb4289dc78f897d6282078d6}{
+\index{cUPnPContainerMediator@{cUPnPContainerMediator}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPContainerMediator@{cUPnPContainerMediator}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassContainer} $\ast$ cUPnPContainerMediator::getObject ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPContainerMediator_78b71f96fb4289dc78f897d6282078d6}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_5b4fff612476fb51690919f9c59899a5}{cUPnPObjectMediator}.\hypertarget{classcUPnPContainerMediator_1caa4625fca42940ba36999a71ac49ec}{
+\index{cUPnPContainerMediator@{cUPnPContainerMediator}!objectToDatabase@{objectToDatabase}}
+\index{objectToDatabase@{objectToDatabase}!cUPnPContainerMediator@{cUPnPContainerMediator}}
+\subsubsection[{objectToDatabase}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPContainerMediator::objectToDatabase ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPContainerMediator_1caa4625fca42940ba36999a71ac49ec}
+
+
+Store the object in the database
+
+This stores the information of an object in the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_c44c010895f92adc63af2a2d34cf34c8}{cUPnPObjectMediator}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPContainerMediator__coll__graph.eps b/doc/latex/classcUPnPContainerMediator__coll__graph.eps
new file mode 100644
index 0000000..67c6fb0
--- /dev/null
+++ b/doc/latex/classcUPnPContainerMediator__coll__graph.eps
@@ -0,0 +1,1323 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 647 1774
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 611 1738 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 73 0 moveto
+73 120 lineto
+220 120 lineto
+220 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 73 0 moveto
+73 120 lineto
+220 120 lineto
+220 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91 107 moveto 110 (cUPnPContainerMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 73 100 moveto
+220 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 73 80 moveto
+220 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+80.5 67 moveto 125 (+ cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+80.5 55 moveto 131 (+ ~cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+80.5 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+80.5 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+80.5 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+80.5 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 79 158 213 338 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 79 158 moveto
+79 338 lineto
+213 338 lineto
+213 158 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 158 moveto
+79 338 lineto
+213 338 lineto
+213 158 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97.5 325 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 318 moveto
+213 318 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 305 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 293 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 286 moveto
+213 286 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 273 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 261 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 249 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 237 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 225 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 213 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 201 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 189 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 177 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 165 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 148 moveto
+146 138 146 129 146 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 148 moveto
+146 158 lineto
+149.5 148 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 0 488 118 608 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 488 moveto
+0 608 lineto
+118 608 lineto
+118 488 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 488 moveto
+0 608 lineto
+118 608 lineto
+118 488 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 595 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 588 moveto
+118 588 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+57.5 575 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 568 moveto
+118 568 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 555 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 543 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 531 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 519 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 507 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 495 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 80 478 moveto
+92 436 107 383 120 338 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 76.52 477.42 moveto
+77 488 lineto
+83.23 479.43 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 199 386 331 710 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 199 386 moveto
+199 710 lineto
+331 710 lineto
+331 386 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 386 moveto
+199 710 lineto
+331 710 lineto
+331 386 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+228.5 697 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 690 moveto
+331 690 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 677 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 665 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 653 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 641 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 629 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 622 moveto
+331 622 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 609 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 597 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 585 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 573 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 561 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 549 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 537 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 525 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 513 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 501 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 489 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 477 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 465 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 453 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 441 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 429 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 417 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 405 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 393 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node4->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 197 377 moveto
+192 363 187 350 182 338 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 201 386 moveto
+192.83 378.69 lineto
+198.97 381.43 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+198.97 381.43 lineto
+201.05 375.03 lineto
+201 386 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 201 386 moveto
+192.83 378.69 lineto
+198.97 381.43 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+198.97 381.43 lineto
+201.05 375.03 lineto
+201 386 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+192 359 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 279 800 399 1004 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 279 800 moveto
+279 1004 lineto
+399 1004 lineto
+399 800 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 800 moveto
+279 1004 lineto
+399 1004 lineto
+399 800 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+293 991 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 984 moveto
+399 984 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 971 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 959 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 947 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 940 moveto
+399 940 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 927 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 915 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 903 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 891 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 879 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 867 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 855 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 843 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 831 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 819 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 807 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 316 790 moveto
+311 765 305 737 299 710 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 318 800 moveto
+311.63 791.08 lineto
+317.02 795.1 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+317.02 795.1 lineto
+320.45 789.31 lineto
+318 800 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 318 800 moveto
+311.63 791.08 lineto
+317.02 795.1 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+317.02 795.1 lineto
+320.45 789.31 lineto
+318 800 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+306.5 731 moveto 41 (mFactory) alignedtext
+grestore
+% Node5->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 408 927 moveto
+414 922 417 913 417 902 curveto
+417 886 410 876 399 872 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 399 932 moveto
+405.56 923.21 lineto
+403.37 929.57 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+403.37 929.57 lineto
+409.93 931.08 lineto
+399 932 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 399 932 moveto
+405.56 923.21 lineto
+403.37 929.57 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+403.37 929.57 lineto
+409.93 931.08 lineto
+399 932 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+417 899 moveto 46 (mInstance) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 153 1094 269 1406 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 153 1094 moveto
+153 1406 lineto
+270 1406 lineto
+270 1094 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1094 moveto
+153 1406 lineto
+270 1406 lineto
+270 1094 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+172.5 1393 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1386 moveto
+270 1386 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1373 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1361 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1349 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1337 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1325 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1313 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1306 moveto
+270 1306 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1293 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1281 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1269 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1257 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1245 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1233 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1221 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1209 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1197 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1185 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1173 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1161 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1149 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1137 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1125 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1113 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1101 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node6->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 196 1084 moveto
+187 984 177 854 169 740 curveto
+160 599 153 437 149 338 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 197 1094 moveto
+191.53 1084.5 lineto
+196.5 1089.02 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196.5 1089.02 lineto
+200.48 1083.6 lineto
+197 1094 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 197 1094 moveto
+191.53 1084.5 lineto
+196.5 1089.02 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196.5 1089.02 lineto
+200.48 1083.6 lineto
+197 1094 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+169 731 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 206 1084 moveto
+205 988 207 866 220 758 curveto
+222 742 224 726 227 710 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 206 1094 moveto
+201.5 1084 lineto
+206 1089 lineto
+206 1084 lineto
+206 1084 lineto
+206 1084 lineto
+206 1089 lineto
+210.5 1084 lineto
+206 1094 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 206 1094 moveto
+201.5 1084 lineto
+206 1089 lineto
+206 1084 lineto
+206 1084 lineto
+206 1084 lineto
+206 1089 lineto
+210.5 1084 lineto
+206 1094 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+220 899 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 271 1085 moveto
+281 1057 292 1029 301 1004 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 268 1094 moveto
+266.89 1083.09 lineto
+269.58 1089.26 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+269.58 1089.26 lineto
+275.43 1085.94 lineto
+268 1094 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 268 1094 moveto
+266.89 1083.09 lineto
+269.58 1089.26 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+269.58 1089.26 lineto
+275.43 1085.94 lineto
+268 1094 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+280 1067 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1275 moveto
+284 1270 287 1262 287 1250 curveto
+287 1233 280 1223 270 1219 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 270 1281 moveto
+275.3 1271.4 lineto
+274 1278 lineto
+278 1275 lineto
+278 1275 lineto
+278 1275 lineto
+274 1278 lineto
+280.7 1278.6 lineto
+270 1281 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 270 1281 moveto
+275.3 1271.4 lineto
+274 1278 lineto
+278 1275 lineto
+278 1275 lineto
+278 1275 lineto
+274 1278 lineto
+280.7 1278.6 lineto
+270 1281 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+287 1247 moveto 46 (mInstance) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 259 1454 331 1538 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 259 1454 moveto
+259 1538 lineto
+331 1538 lineto
+331 1454 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1454 moveto
+259 1538 lineto
+331 1538 lineto
+331 1454 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+280.5 1525 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1518 moveto
+331 1518 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1505 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1498 moveto
+331 1498 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1485 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1473 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1461 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1445 moveto
+274 1433 270 1420 265 1406 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 281 1454 moveto
+273.57 1445.94 lineto
+279.42 1449.26 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+279.42 1449.26 lineto
+282.11 1443.09 lineto
+281 1454 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 281 1454 moveto
+273.57 1445.94 lineto
+279.42 1449.26 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+279.42 1449.26 lineto
+282.11 1443.09 lineto
+281 1454 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+276 1427 moveto 32 (mRows) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 185 1586 271 1730 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 185 1586 moveto
+185 1730 lineto
+271 1730 lineto
+271 1586 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1586 moveto
+185 1730 lineto
+271 1730 lineto
+271 1586 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+216 1717 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1710 moveto
+271 1710 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1697 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1685 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1673 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1661 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1654 moveto
+271 1654 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1641 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1629 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1617 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1605 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1593 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node8->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 209 1576 moveto
+207 1563 206 1551 204 1538 curveto
+200 1495 199 1449 200 1406 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 211 1586 moveto
+204.63 1577.08 lineto
+210.02 1581.1 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+210.02 1581.1 lineto
+213.45 1575.31 lineto
+211 1586 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 211 1586 moveto
+204.63 1577.08 lineto
+210.02 1581.1 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+210.02 1581.1 lineto
+213.45 1575.31 lineto
+211 1586 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+207 1493 moveto 46 (mLastRow) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 262 1577 moveto
+268 1563 273 1550 278 1538 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 258 1586 moveto
+257.95 1575.03 lineto
+260.03 1581.43 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+260.03 1581.43 lineto
+266.17 1578.69 lineto
+258 1586 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 258 1586 moveto
+257.95 1575.03 lineto
+260.03 1581.43 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+260.03 1581.43 lineto
+266.17 1578.69 lineto
+258 1586 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+271 1559 moveto 46 (mLastRow) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 481 758 603 1046 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 481 758 moveto
+481 1046 lineto
+603 1046 lineto
+603 758 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 758 moveto
+481 1046 lineto
+603 1046 lineto
+603 758 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+507.5 1033 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1026 moveto
+603 1026 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1013 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1006 moveto
+603 1006 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 993 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 981 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 969 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 957 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 945 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 933 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 921 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 909 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 897 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 885 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 873 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 861 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 849 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 837 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 825 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 813 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 801 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 789 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 777 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 765 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node9->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 475 762 moveto
+474 761 473 759 472 758 curveto
+431 700 375 644 331 604 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 481 771 moveto
+471.71 765.18 lineto
+478.23 766.84 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+478.23 766.84 lineto
+479.2 760.18 lineto
+481 771 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 481 771 moveto
+471.71 765.18 lineto
+478.23 766.84 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+478.23 766.84 lineto
+479.2 760.18 lineto
+481 771 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+457 731 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 647 1774
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPContainerMediator__coll__graph.md5 b/doc/latex/classcUPnPContainerMediator__coll__graph.md5
new file mode 100644
index 0000000..e9a18f3
--- /dev/null
+++ b/doc/latex/classcUPnPContainerMediator__coll__graph.md5
@@ -0,0 +1 @@
+7dca813e69c10af346e4a6229f3084f7 \ No newline at end of file
diff --git a/doc/latex/classcUPnPContainerMediator__coll__graph.pdf b/doc/latex/classcUPnPContainerMediator__coll__graph.pdf
new file mode 100644
index 0000000..7693398
--- /dev/null
+++ b/doc/latex/classcUPnPContainerMediator__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPContainerMediator__inherit__graph.eps b/doc/latex/classcUPnPContainerMediator__inherit__graph.eps
new file mode 100644
index 0000000..b10e235
--- /dev/null
+++ b/doc/latex/classcUPnPContainerMediator__inherit__graph.eps
@@ -0,0 +1,414 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 190 536
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 154 500 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+147 120 lineto
+147 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+147 120 lineto
+147 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 107 moveto 110 (cUPnPContainerMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 100 moveto
+147 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+71.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 80 moveto
+147 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 125 (+ cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 131 (+ ~cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 6 156 140 336 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 6 156 moveto
+6 336 lineto
+140 336 lineto
+140 156 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 6 156 moveto
+6 336 lineto
+140 336 lineto
+140 156 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+24.5 323 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 6 316 moveto
+140 316 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 303 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 291 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 6 284 moveto
+140 284 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 271 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 259 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 247 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 235 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 223 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 211 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 199 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 187 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 175 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 163 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 73 146 moveto
+73 137 73 129 73 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 69.5 146 moveto
+73 156 lineto
+76.5 146 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 14 372 132 492 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 14 372 moveto
+14 492 lineto
+132 492 lineto
+132 372 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 14 372 moveto
+14 492 lineto
+132 492 lineto
+132 372 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+32.5 479 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 14 472 moveto
+132 472 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+71.5 459 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 14 452 moveto
+132 452 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 439 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 427 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 415 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 403 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 391 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22 379 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 73 362 moveto
+73 353 73 344 73 336 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 69.5 362 moveto
+73 372 lineto
+76.5 362 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 190 536
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPContainerMediator__inherit__graph.md5 b/doc/latex/classcUPnPContainerMediator__inherit__graph.md5
new file mode 100644
index 0000000..580ce2b
--- /dev/null
+++ b/doc/latex/classcUPnPContainerMediator__inherit__graph.md5
@@ -0,0 +1 @@
+6ee334e11cb0aba8d02f895faa511946 \ No newline at end of file
diff --git a/doc/latex/classcUPnPContainerMediator__inherit__graph.pdf b/doc/latex/classcUPnPContainerMediator__inherit__graph.pdf
new file mode 100644
index 0000000..d44d098
--- /dev/null
+++ b/doc/latex/classcUPnPContainerMediator__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPItemMediator.tex b/doc/latex/classcUPnPItemMediator.tex
new file mode 100644
index 0000000..9bb71d1
--- /dev/null
+++ b/doc/latex/classcUPnPItemMediator.tex
@@ -0,0 +1,161 @@
+\hypertarget{classcUPnPItemMediator}{
+\section{cUPnPItemMediator Class Reference}
+\label{classcUPnPItemMediator}\index{cUPnPItemMediator@{cUPnPItemMediator}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPItemMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPItemMediator__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPItemMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPItemMediator__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPItemMediator_99ec31552ae8e4d52da6920ff959c133}{cUPnPItemMediator} (\hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$MediaDatabase)
+\item
+virtual \hyperlink{classcUPnPClassItem}{cUPnPClassItem} $\ast$ \hyperlink{classcUPnPItemMediator_e2fd4cf5e6435f1eeadd11f9a99cd2db}{createObject} (const char $\ast$Title, bool Restricted)
+\item
+virtual \hyperlink{classcUPnPClassItem}{cUPnPClassItem} $\ast$ \hyperlink{classcUPnPItemMediator_81411b2a472ade71d73a9c8ddc2a7990}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual int \hyperlink{classcUPnPItemMediator_6d954b1cfdc4a7d55981c6ebff9d6d04}{objectToDatabase} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPItemMediator_1f3645ebe0a33a81d0b3f22060dc4761}{databaseToObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, \hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Item Mediator
+
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPItemMediator_99ec31552ae8e4d52da6920ff959c133}{
+\index{cUPnPItemMediator@{cUPnPItemMediator}!cUPnPItemMediator@{cUPnPItemMediator}}
+\index{cUPnPItemMediator@{cUPnPItemMediator}!cUPnPItemMediator@{cUPnPItemMediator}}
+\subsubsection[{cUPnPItemMediator}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPItemMediator::cUPnPItemMediator ({\bf cMediaDatabase} $\ast$ {\em MediaDatabase})}}
+\label{classcUPnPItemMediator_99ec31552ae8e4d52da6920ff959c133}
+
+
+Constructor of item mediator
+
+This creates a new item mediator with which it is possible to create new instances of Item objects.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em MediaDatabase}]the media database \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPItemMediator_e2fd4cf5e6435f1eeadd11f9a99cd2db}{
+\index{cUPnPItemMediator@{cUPnPItemMediator}!createObject@{createObject}}
+\index{createObject@{createObject}!cUPnPItemMediator@{cUPnPItemMediator}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassItem} $\ast$ cUPnPItemMediator::createObject (const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPItemMediator_e2fd4cf5e6435f1eeadd11f9a99cd2db}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_bfbca3f1cbadacee2b21306364750f26}{cUPnPObjectMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_14fefa90807d40d91a80712729af2beb}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_29d40a311b7283cc4fba36860ac8c935}{cUPnPMovieMediator}.\hypertarget{classcUPnPItemMediator_1f3645ebe0a33a81d0b3f22060dc4761}{
+\index{cUPnPItemMediator@{cUPnPItemMediator}!databaseToObject@{databaseToObject}}
+\index{databaseToObject@{databaseToObject}!cUPnPItemMediator@{cUPnPItemMediator}}
+\subsubsection[{databaseToObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPItemMediator::databaseToObject ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ {\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPItemMediator_1f3645ebe0a33a81d0b3f22060dc4761}
+
+
+Loads an object from database
+
+This loads an object from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be loaded \item[{\em ID}]the object ID of that object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_07a6a1d2694fb2f4573bd50374406b24}{cUPnPObjectMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoItemMediator_3f7ec1937b2b95e3ec5462470971d350}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_33237e5d850c107d37be37c1646b17d7}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_542135e9c1051b57a8f6f5ecc0c1ede3}{cUPnPMovieMediator}.\hypertarget{classcUPnPItemMediator_81411b2a472ade71d73a9c8ddc2a7990}{
+\index{cUPnPItemMediator@{cUPnPItemMediator}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPItemMediator@{cUPnPItemMediator}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassItem} $\ast$ cUPnPItemMediator::getObject ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPItemMediator_81411b2a472ade71d73a9c8ddc2a7990}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_5b4fff612476fb51690919f9c59899a5}{cUPnPObjectMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_c13bf0f008f49b0ab499542391998a24}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_d85b240eb54efd9ab46c440b51c71e83}{cUPnPMovieMediator}.\hypertarget{classcUPnPItemMediator_6d954b1cfdc4a7d55981c6ebff9d6d04}{
+\index{cUPnPItemMediator@{cUPnPItemMediator}!objectToDatabase@{objectToDatabase}}
+\index{objectToDatabase@{objectToDatabase}!cUPnPItemMediator@{cUPnPItemMediator}}
+\subsubsection[{objectToDatabase}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPItemMediator::objectToDatabase ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPItemMediator_6d954b1cfdc4a7d55981c6ebff9d6d04}
+
+
+Store the object in the database
+
+This stores the information of an object in the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPObjectMediator_c44c010895f92adc63af2a2d34cf34c8}{cUPnPObjectMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoItemMediator_984e10738bca46ce38307d5f60e26bd3}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_822f9c93928a7dbe9491c8cccbf53f95}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_61ab6dcaf2417898428ddf1f635788b7}{cUPnPMovieMediator}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPItemMediator__coll__graph.eps b/doc/latex/classcUPnPItemMediator__coll__graph.eps
new file mode 100644
index 0000000..c951a09
--- /dev/null
+++ b/doc/latex/classcUPnPItemMediator__coll__graph.eps
@@ -0,0 +1,1323 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 647 1774
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 611 1738 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 84 0 moveto
+84 120 lineto
+209 120 lineto
+209 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 0 moveto
+84 120 lineto
+209 120 lineto
+209 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+102 107 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 100 moveto
+209 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 80 moveto
+209 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 67 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 55 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 79 158 213 338 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 79 158 moveto
+79 338 lineto
+213 338 lineto
+213 158 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 158 moveto
+79 338 lineto
+213 338 lineto
+213 158 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97.5 325 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 318 moveto
+213 318 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 305 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 293 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 286 moveto
+213 286 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 273 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 261 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 249 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 237 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 225 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 213 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 201 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 189 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 177 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 165 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 148 moveto
+146 138 146 129 146 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 148 moveto
+146 158 lineto
+149.5 148 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 0 488 118 608 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 488 moveto
+0 608 lineto
+118 608 lineto
+118 488 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 488 moveto
+0 608 lineto
+118 608 lineto
+118 488 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 595 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 588 moveto
+118 588 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+57.5 575 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 568 moveto
+118 568 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 555 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 543 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 531 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 519 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 507 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 495 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 80 478 moveto
+92 436 107 383 120 338 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 76.52 477.42 moveto
+77 488 lineto
+83.23 479.43 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 199 386 331 710 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 199 386 moveto
+199 710 lineto
+331 710 lineto
+331 386 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 386 moveto
+199 710 lineto
+331 710 lineto
+331 386 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+228.5 697 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 690 moveto
+331 690 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 677 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 665 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 653 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 641 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 629 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 622 moveto
+331 622 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 609 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 597 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 585 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 573 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 561 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 549 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 537 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 525 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 513 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 501 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 489 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 477 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 465 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 453 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 441 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 429 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 417 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 405 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 393 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node4->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 197 377 moveto
+192 363 187 350 182 338 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 201 386 moveto
+192.83 378.69 lineto
+198.97 381.43 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+198.97 381.43 lineto
+201.05 375.03 lineto
+201 386 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 201 386 moveto
+192.83 378.69 lineto
+198.97 381.43 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+196.94 376.86 lineto
+198.97 381.43 lineto
+201.05 375.03 lineto
+201 386 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+192 359 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 279 800 399 1004 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 279 800 moveto
+279 1004 lineto
+399 1004 lineto
+399 800 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 800 moveto
+279 1004 lineto
+399 1004 lineto
+399 800 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+293 991 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 984 moveto
+399 984 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 971 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 959 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 947 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 940 moveto
+399 940 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 927 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 915 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 903 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 891 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 879 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 867 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 855 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 843 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 831 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 819 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 807 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 316 790 moveto
+311 765 305 737 299 710 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 318 800 moveto
+311.63 791.08 lineto
+317.02 795.1 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+317.02 795.1 lineto
+320.45 789.31 lineto
+318 800 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 318 800 moveto
+311.63 791.08 lineto
+317.02 795.1 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+316.04 790.19 lineto
+317.02 795.1 lineto
+320.45 789.31 lineto
+318 800 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+306.5 731 moveto 41 (mFactory) alignedtext
+grestore
+% Node5->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 408 927 moveto
+414 922 417 913 417 902 curveto
+417 886 410 876 399 872 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 399 932 moveto
+405.56 923.21 lineto
+403.37 929.57 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+403.37 929.57 lineto
+409.93 931.08 lineto
+399 932 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 399 932 moveto
+405.56 923.21 lineto
+403.37 929.57 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+407.74 927.14 lineto
+403.37 929.57 lineto
+409.93 931.08 lineto
+399 932 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+417 899 moveto 46 (mInstance) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 153 1094 269 1406 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 153 1094 moveto
+153 1406 lineto
+270 1406 lineto
+270 1094 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1094 moveto
+153 1406 lineto
+270 1406 lineto
+270 1094 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+172.5 1393 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1386 moveto
+270 1386 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1373 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1361 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1349 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1337 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1325 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1313 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1306 moveto
+270 1306 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1293 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1281 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1269 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1257 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1245 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1233 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1221 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1209 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1197 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1185 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1173 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1161 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1149 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1137 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1125 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1113 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1101 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node6->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 196 1084 moveto
+187 984 177 854 169 740 curveto
+160 599 153 437 149 338 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 197 1094 moveto
+191.53 1084.5 lineto
+196.5 1089.02 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196.5 1089.02 lineto
+200.48 1083.6 lineto
+197 1094 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 197 1094 moveto
+191.53 1084.5 lineto
+196.5 1089.02 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196 1084.05 lineto
+196.5 1089.02 lineto
+200.48 1083.6 lineto
+197 1094 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+169 731 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 206 1084 moveto
+205 988 207 866 220 758 curveto
+222 742 224 726 227 710 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 206 1094 moveto
+201.5 1084 lineto
+206 1089 lineto
+206 1084 lineto
+206 1084 lineto
+206 1084 lineto
+206 1089 lineto
+210.5 1084 lineto
+206 1094 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 206 1094 moveto
+201.5 1084 lineto
+206 1089 lineto
+206 1084 lineto
+206 1084 lineto
+206 1084 lineto
+206 1089 lineto
+210.5 1084 lineto
+206 1094 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+220 899 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 271 1085 moveto
+281 1057 292 1029 301 1004 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 268 1094 moveto
+266.89 1083.09 lineto
+269.58 1089.26 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+269.58 1089.26 lineto
+275.43 1085.94 lineto
+268 1094 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 268 1094 moveto
+266.89 1083.09 lineto
+269.58 1089.26 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+271.16 1084.51 lineto
+269.58 1089.26 lineto
+275.43 1085.94 lineto
+268 1094 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+280 1067 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1275 moveto
+284 1270 287 1262 287 1250 curveto
+287 1233 280 1223 270 1219 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 270 1281 moveto
+275.3 1271.4 lineto
+274 1278 lineto
+278 1275 lineto
+278 1275 lineto
+278 1275 lineto
+274 1278 lineto
+280.7 1278.6 lineto
+270 1281 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 270 1281 moveto
+275.3 1271.4 lineto
+274 1278 lineto
+278 1275 lineto
+278 1275 lineto
+278 1275 lineto
+274 1278 lineto
+280.7 1278.6 lineto
+270 1281 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+287 1247 moveto 46 (mInstance) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 259 1454 331 1538 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 259 1454 moveto
+259 1538 lineto
+331 1538 lineto
+331 1454 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1454 moveto
+259 1538 lineto
+331 1538 lineto
+331 1454 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+280.5 1525 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1518 moveto
+331 1518 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1505 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1498 moveto
+331 1498 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1485 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1473 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1461 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1445 moveto
+274 1433 270 1420 265 1406 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 281 1454 moveto
+273.57 1445.94 lineto
+279.42 1449.26 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+279.42 1449.26 lineto
+282.11 1443.09 lineto
+281 1454 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 281 1454 moveto
+273.57 1445.94 lineto
+279.42 1449.26 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+277.84 1444.51 lineto
+279.42 1449.26 lineto
+282.11 1443.09 lineto
+281 1454 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+276 1427 moveto 32 (mRows) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 185 1586 271 1730 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 185 1586 moveto
+185 1730 lineto
+271 1730 lineto
+271 1586 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1586 moveto
+185 1730 lineto
+271 1730 lineto
+271 1586 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+216 1717 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1710 moveto
+271 1710 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1697 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1685 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1673 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1661 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1654 moveto
+271 1654 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1641 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1629 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1617 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1605 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1593 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node8->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 209 1576 moveto
+207 1563 206 1551 204 1538 curveto
+200 1495 199 1449 200 1406 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 211 1586 moveto
+204.63 1577.08 lineto
+210.02 1581.1 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+210.02 1581.1 lineto
+213.45 1575.31 lineto
+211 1586 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 211 1586 moveto
+204.63 1577.08 lineto
+210.02 1581.1 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+209.04 1576.19 lineto
+210.02 1581.1 lineto
+213.45 1575.31 lineto
+211 1586 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+207 1493 moveto 46 (mLastRow) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 262 1577 moveto
+268 1563 273 1550 278 1538 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 258 1586 moveto
+257.95 1575.03 lineto
+260.03 1581.43 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+260.03 1581.43 lineto
+266.17 1578.69 lineto
+258 1586 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 258 1586 moveto
+257.95 1575.03 lineto
+260.03 1581.43 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+262.06 1576.86 lineto
+260.03 1581.43 lineto
+266.17 1578.69 lineto
+258 1586 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+271 1559 moveto 46 (mLastRow) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 481 758 603 1046 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 481 758 moveto
+481 1046 lineto
+603 1046 lineto
+603 758 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 758 moveto
+481 1046 lineto
+603 1046 lineto
+603 758 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+507.5 1033 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1026 moveto
+603 1026 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1013 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1006 moveto
+603 1006 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 993 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 981 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 969 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 957 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 945 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 933 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 921 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 909 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 897 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 885 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 873 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 861 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 849 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 837 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 825 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 813 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 801 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 789 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 777 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 765 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node9->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 475 762 moveto
+474 761 473 759 472 758 curveto
+431 700 375 644 331 604 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 481 771 moveto
+471.71 765.18 lineto
+478.23 766.84 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+478.23 766.84 lineto
+479.2 760.18 lineto
+481 771 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 481 771 moveto
+471.71 765.18 lineto
+478.23 766.84 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+475.45 762.68 lineto
+478.23 766.84 lineto
+479.2 760.18 lineto
+481 771 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+457 731 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 647 1774
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPItemMediator__coll__graph.md5 b/doc/latex/classcUPnPItemMediator__coll__graph.md5
new file mode 100644
index 0000000..e4ba6a7
--- /dev/null
+++ b/doc/latex/classcUPnPItemMediator__coll__graph.md5
@@ -0,0 +1 @@
+13e0d9848be93022f9f3833133bf074e \ No newline at end of file
diff --git a/doc/latex/classcUPnPItemMediator__coll__graph.pdf b/doc/latex/classcUPnPItemMediator__coll__graph.pdf
new file mode 100644
index 0000000..b4e7f5c
--- /dev/null
+++ b/doc/latex/classcUPnPItemMediator__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPItemMediator__inherit__graph.eps b/doc/latex/classcUPnPItemMediator__inherit__graph.eps
new file mode 100644
index 0000000..615955e
--- /dev/null
+++ b/doc/latex/classcUPnPItemMediator__inherit__graph.eps
@@ -0,0 +1,636 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 368 848
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 332 812 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 89 312 moveto
+89 432 lineto
+214 432 lineto
+214 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 312 moveto
+89 432 lineto
+214 432 lineto
+214 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+107 419 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 412 moveto
+214 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+149.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 392 moveto
+214 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 379 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 367 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 76 156 226 276 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 76 156 moveto
+76 276 lineto
+226 276 lineto
+226 156 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 76 156 moveto
+76 276 lineto
+226 276 lineto
+226 156 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94.5 263 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 76 256 moveto
+226 256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+149.5 243 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 76 236 moveto
+226 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 223 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 211 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 199 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 187 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 175 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 163 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node1->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 151 302 moveto
+151 293 151 285 151 276 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 147.5 302 moveto
+151 312 lineto
+154.5 302 lineto
+closepath stroke
+grestore
+% Node2
+gsave
+[ /Rect [ 84 468 218 648 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 84 468 moveto
+84 648 lineto
+218 648 lineto
+218 468 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 468 moveto
+84 648 lineto
+218 648 lineto
+218 468 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+102.5 635 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 628 moveto
+218 628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 615 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 603 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 596 moveto
+218 596 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 583 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 571 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 559 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 547 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 535 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 523 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 511 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 499 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 487 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 475 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 151 458 moveto
+151 449 151 441 151 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 147.5 458 moveto
+151 468 lineto
+154.5 458 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 92 684 210 804 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 92 684 moveto
+92 804 lineto
+210 804 lineto
+210 684 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 92 684 moveto
+92 804 lineto
+210 804 lineto
+210 684 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+110.5 791 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 92 784 moveto
+210 784 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+149.5 771 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 92 764 moveto
+210 764 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 751 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 739 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 727 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 715 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 703 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 691 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 151 674 moveto
+151 665 151 656 151 648 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 147.5 674 moveto
+151 684 lineto
+154.5 674 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 0 0 132 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPMovieMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+132 120 lineto
+132 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+132 120 lineto
+132 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 107 moveto 95 (cUPnPMovieMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 100 moveto
+132 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+64.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 80 moveto
+132 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 110 (+ cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 116 (+ ~cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node5
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 113 147 moveto
+108 138 103 129 98 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 110.08 148.96 moveto
+118 156 lineto
+116.2 145.56 lineto
+closepath stroke
+grestore
+% Node6
+gsave
+[ /Rect [ 150 0 324 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoBroadcastMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 150 0 moveto
+150 120 lineto
+324 120 lineto
+324 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 150 0 moveto
+150 120 lineto
+324 120 lineto
+324 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+168.5 107 moveto 137 (cUPnPVideoBroadcastMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 150 100 moveto
+324 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+235.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 150 80 moveto
+324 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 67 moveto 152 (+ cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 55 moveto 158 (+ ~cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node6
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 189 147 moveto
+194 138 199 129 204 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 185.8 145.56 moveto
+184 156 lineto
+191.92 148.96 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 368 848
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPItemMediator__inherit__graph.md5 b/doc/latex/classcUPnPItemMediator__inherit__graph.md5
new file mode 100644
index 0000000..ad900fc
--- /dev/null
+++ b/doc/latex/classcUPnPItemMediator__inherit__graph.md5
@@ -0,0 +1 @@
+62d7954a9600eda360dc5302cbca5820 \ No newline at end of file
diff --git a/doc/latex/classcUPnPItemMediator__inherit__graph.pdf b/doc/latex/classcUPnPItemMediator__inherit__graph.pdf
new file mode 100644
index 0000000..36f1073
--- /dev/null
+++ b/doc/latex/classcUPnPItemMediator__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPMovieMediator.tex b/doc/latex/classcUPnPMovieMediator.tex
new file mode 100644
index 0000000..7fe459f
--- /dev/null
+++ b/doc/latex/classcUPnPMovieMediator.tex
@@ -0,0 +1,153 @@
+\hypertarget{classcUPnPMovieMediator}{
+\section{cUPnPMovieMediator Class Reference}
+\label{classcUPnPMovieMediator}\index{cUPnPMovieMediator@{cUPnPMovieMediator}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPMovieMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPMovieMediator__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPMovieMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPMovieMediator__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPMovieMediator_aa40d0f4054d6b90b2cbb0fe6bd8ac38}{cUPnPMovieMediator} (\hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$MediaDatabase)
+\item
+virtual \hyperlink{classcUPnPClassMovie}{cUPnPClassMovie} $\ast$ \hyperlink{classcUPnPMovieMediator_29d40a311b7283cc4fba36860ac8c935}{createObject} (const char $\ast$Title, bool Restricted)
+\item
+virtual \hyperlink{classcUPnPClassMovie}{cUPnPClassMovie} $\ast$ \hyperlink{classcUPnPMovieMediator_d85b240eb54efd9ab46c440b51c71e83}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual int \hyperlink{classcUPnPMovieMediator_61ab6dcaf2417898428ddf1f635788b7}{objectToDatabase} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPMovieMediator_542135e9c1051b57a8f6f5ecc0c1ede3}{databaseToObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, \hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Movie Mediator
+
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPMovieMediator_aa40d0f4054d6b90b2cbb0fe6bd8ac38}{
+\index{cUPnPMovieMediator@{cUPnPMovieMediator}!cUPnPMovieMediator@{cUPnPMovieMediator}}
+\index{cUPnPMovieMediator@{cUPnPMovieMediator}!cUPnPMovieMediator@{cUPnPMovieMediator}}
+\subsubsection[{cUPnPMovieMediator}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPMovieMediator::cUPnPMovieMediator ({\bf cMediaDatabase} $\ast$ {\em MediaDatabase})}}
+\label{classcUPnPMovieMediator_aa40d0f4054d6b90b2cbb0fe6bd8ac38}
+
+
+Constructor of movie mediator
+
+This creates a new movie mediator with which it is possible to create new instances of Movie objects.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em MediaDatabase}]the media database \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPMovieMediator_29d40a311b7283cc4fba36860ac8c935}{
+\index{cUPnPMovieMediator@{cUPnPMovieMediator}!createObject@{createObject}}
+\index{createObject@{createObject}!cUPnPMovieMediator@{cUPnPMovieMediator}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassMovie} $\ast$ cUPnPMovieMediator::createObject (const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPMovieMediator_29d40a311b7283cc4fba36860ac8c935}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}{cUPnPVideoItemMediator}.\hypertarget{classcUPnPMovieMediator_542135e9c1051b57a8f6f5ecc0c1ede3}{
+\index{cUPnPMovieMediator@{cUPnPMovieMediator}!databaseToObject@{databaseToObject}}
+\index{databaseToObject@{databaseToObject}!cUPnPMovieMediator@{cUPnPMovieMediator}}
+\subsubsection[{databaseToObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPMovieMediator::databaseToObject ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ {\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPMovieMediator_542135e9c1051b57a8f6f5ecc0c1ede3}
+
+
+Loads an object from database
+
+This loads an object from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be loaded \item[{\em ID}]the object ID of that object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_3f7ec1937b2b95e3ec5462470971d350}{cUPnPVideoItemMediator}.\hypertarget{classcUPnPMovieMediator_d85b240eb54efd9ab46c440b51c71e83}{
+\index{cUPnPMovieMediator@{cUPnPMovieMediator}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPMovieMediator@{cUPnPMovieMediator}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassMovie} $\ast$ cUPnPMovieMediator::getObject ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPMovieMediator_d85b240eb54efd9ab46c440b51c71e83}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}{cUPnPVideoItemMediator}.\hypertarget{classcUPnPMovieMediator_61ab6dcaf2417898428ddf1f635788b7}{
+\index{cUPnPMovieMediator@{cUPnPMovieMediator}!objectToDatabase@{objectToDatabase}}
+\index{objectToDatabase@{objectToDatabase}!cUPnPMovieMediator@{cUPnPMovieMediator}}
+\subsubsection[{objectToDatabase}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPMovieMediator::objectToDatabase ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPMovieMediator_61ab6dcaf2417898428ddf1f635788b7}
+
+
+Store the object in the database
+
+This stores the information of an object in the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_984e10738bca46ce38307d5f60e26bd3}{cUPnPVideoItemMediator}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPMovieMediator__coll__graph.eps b/doc/latex/classcUPnPMovieMediator__coll__graph.eps
new file mode 100644
index 0000000..ec5ccaf
--- /dev/null
+++ b/doc/latex/classcUPnPMovieMediator__coll__graph.eps
@@ -0,0 +1,1471 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 647 2090
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 611 2054 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 80 0 moveto
+80 120 lineto
+212 120 lineto
+212 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 80 0 moveto
+80 120 lineto
+212 120 lineto
+212 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98.5 107 moveto 95 (cUPnPMovieMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 80 100 moveto
+212 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 80 80 moveto
+212 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 67 moveto 110 (+ cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 55 moveto 116 (+ ~cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+88 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 71 158 221 278 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 71 158 moveto
+71 278 lineto
+221 278 lineto
+221 158 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 158 moveto
+71 278 lineto
+221 278 lineto
+221 158 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+89.5 265 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 258 moveto
+221 258 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 245 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 238 moveto
+221 238 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 225 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 213 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 201 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 189 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 177 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 165 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 148 moveto
+146 138 146 129 146 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 148 moveto
+146 158 lineto
+149.5 148 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 84 316 208 436 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 84 316 moveto
+84 436 lineto
+209 436 lineto
+209 316 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 316 moveto
+84 436 lineto
+209 436 lineto
+209 316 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+102 423 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 416 moveto
+209 416 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 403 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 396 moveto
+209 396 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 383 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 371 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 359 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 347 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 335 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 323 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 306 moveto
+146 296 146 287 146 278 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 306 moveto
+146 316 lineto
+149.5 306 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 79 474 213 654 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 79 474 moveto
+79 654 lineto
+213 654 lineto
+213 474 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 474 moveto
+79 654 lineto
+213 654 lineto
+213 474 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97.5 641 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 634 moveto
+213 634 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 621 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 609 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 602 moveto
+213 602 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 589 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 577 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 565 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 553 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 541 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 529 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 517 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 505 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 493 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 481 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 464 moveto
+146 454 146 445 146 436 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 464 moveto
+146 474 lineto
+149.5 464 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 0 804 118 924 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 804 moveto
+0 924 lineto
+118 924 lineto
+118 804 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 804 moveto
+0 924 lineto
+118 924 lineto
+118 804 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 911 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 904 moveto
+118 904 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+57.5 891 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 884 moveto
+118 884 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 871 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 859 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 847 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 835 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 823 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 811 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 80 794 moveto
+92 752 107 699 120 654 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 76.52 793.42 moveto
+77 804 lineto
+83.23 795.43 lineto
+closepath stroke
+grestore
+% Node6
+gsave
+[ /Rect [ 199 702 331 1026 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 199 702 moveto
+199 1026 lineto
+331 1026 lineto
+331 702 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 702 moveto
+199 1026 lineto
+331 1026 lineto
+331 702 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+228.5 1013 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 1006 moveto
+331 1006 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 993 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 981 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 969 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 957 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 945 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 938 moveto
+331 938 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 925 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 913 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 901 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 889 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 877 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 865 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 853 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 841 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 829 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 817 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 805 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 793 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 781 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 769 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 757 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 745 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 733 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 721 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 709 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node6->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 197 693 moveto
+192 679 187 666 182 654 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 201 702 moveto
+192.83 694.69 lineto
+198.97 697.43 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+198.97 697.43 lineto
+201.05 691.03 lineto
+201 702 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 201 702 moveto
+192.83 694.69 lineto
+198.97 697.43 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+198.97 697.43 lineto
+201.05 691.03 lineto
+201 702 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+192 675 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 279 1116 399 1320 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 279 1116 moveto
+279 1320 lineto
+399 1320 lineto
+399 1116 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1116 moveto
+279 1320 lineto
+399 1320 lineto
+399 1116 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+293 1307 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1300 moveto
+399 1300 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1287 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1275 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1263 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1256 moveto
+399 1256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1243 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1231 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1219 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1207 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1195 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1183 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1171 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1159 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1147 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1135 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1123 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 316 1106 moveto
+311 1081 305 1053 299 1026 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 318 1116 moveto
+311.63 1107.08 lineto
+317.02 1111.1 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+317.02 1111.1 lineto
+320.45 1105.31 lineto
+318 1116 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 318 1116 moveto
+311.63 1107.08 lineto
+317.02 1111.1 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+317.02 1111.1 lineto
+320.45 1105.31 lineto
+318 1116 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+306.5 1047 moveto 41 (mFactory) alignedtext
+grestore
+% Node7->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 408 1243 moveto
+414 1238 417 1229 417 1218 curveto
+417 1202 410 1192 399 1188 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 399 1248 moveto
+405.56 1239.21 lineto
+403.37 1245.57 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+403.37 1245.57 lineto
+409.93 1247.08 lineto
+399 1248 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 399 1248 moveto
+405.56 1239.21 lineto
+403.37 1245.57 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+403.37 1245.57 lineto
+409.93 1247.08 lineto
+399 1248 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+417 1215 moveto 46 (mInstance) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 153 1410 269 1722 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 153 1410 moveto
+153 1722 lineto
+270 1722 lineto
+270 1410 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1410 moveto
+153 1722 lineto
+270 1722 lineto
+270 1410 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+172.5 1709 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1702 moveto
+270 1702 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1689 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1677 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1665 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1653 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1641 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1629 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1622 moveto
+270 1622 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1609 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1597 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1585 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1573 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1561 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1549 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1537 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1525 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1513 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1501 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1489 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1477 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1465 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1453 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1441 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1429 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1417 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node8->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 196 1400 moveto
+187 1300 177 1170 169 1056 curveto
+160 915 153 753 149 654 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 197 1410 moveto
+191.53 1400.5 lineto
+196.5 1405.02 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196.5 1405.02 lineto
+200.48 1399.6 lineto
+197 1410 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 197 1410 moveto
+191.53 1400.5 lineto
+196.5 1405.02 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196.5 1405.02 lineto
+200.48 1399.6 lineto
+197 1410 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+169 1047 moveto 50 (mDatabase) alignedtext
+grestore
+% Node8->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 206 1400 moveto
+205 1304 207 1182 220 1074 curveto
+222 1058 224 1042 227 1026 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 206 1410 moveto
+201.5 1400 lineto
+206 1405 lineto
+206 1400 lineto
+206 1400 lineto
+206 1400 lineto
+206 1405 lineto
+210.5 1400 lineto
+206 1410 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 206 1410 moveto
+201.5 1400 lineto
+206 1405 lineto
+206 1400 lineto
+206 1400 lineto
+206 1400 lineto
+206 1405 lineto
+210.5 1400 lineto
+206 1410 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+220 1215 moveto 50 (mDatabase) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 271 1401 moveto
+281 1373 292 1345 301 1320 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 268 1410 moveto
+266.89 1399.09 lineto
+269.58 1405.26 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+269.58 1405.26 lineto
+275.43 1401.94 lineto
+268 1410 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 268 1410 moveto
+266.89 1399.09 lineto
+269.58 1405.26 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+269.58 1405.26 lineto
+275.43 1401.94 lineto
+268 1410 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+280 1383 moveto 50 (mDatabase) alignedtext
+grestore
+% Node8->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1591 moveto
+284 1586 287 1578 287 1566 curveto
+287 1549 280 1539 270 1535 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 270 1597 moveto
+275.3 1587.4 lineto
+274 1594 lineto
+278 1591 lineto
+278 1591 lineto
+278 1591 lineto
+274 1594 lineto
+280.7 1594.6 lineto
+270 1597 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 270 1597 moveto
+275.3 1587.4 lineto
+274 1594 lineto
+278 1591 lineto
+278 1591 lineto
+278 1591 lineto
+274 1594 lineto
+280.7 1594.6 lineto
+270 1597 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+287 1563 moveto 46 (mInstance) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 259 1770 331 1854 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 259 1770 moveto
+259 1854 lineto
+331 1854 lineto
+331 1770 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1770 moveto
+259 1854 lineto
+331 1854 lineto
+331 1770 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+280.5 1841 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1834 moveto
+331 1834 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1821 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1814 moveto
+331 1814 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1801 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1789 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1777 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node9->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1761 moveto
+274 1749 270 1736 265 1722 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 281 1770 moveto
+273.57 1761.94 lineto
+279.42 1765.26 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+279.42 1765.26 lineto
+282.11 1759.09 lineto
+281 1770 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 281 1770 moveto
+273.57 1761.94 lineto
+279.42 1765.26 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+279.42 1765.26 lineto
+282.11 1759.09 lineto
+281 1770 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+276 1743 moveto 32 (mRows) alignedtext
+grestore
+% Node10
+gsave
+[ /Rect [ 185 1902 271 2046 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 185 1902 moveto
+185 2046 lineto
+271 2046 lineto
+271 1902 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1902 moveto
+185 2046 lineto
+271 2046 lineto
+271 1902 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+216 2033 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 2026 moveto
+271 2026 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 2013 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 2001 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1989 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1977 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1970 moveto
+271 1970 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1957 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1945 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1933 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1921 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1909 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node10->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 209 1892 moveto
+207 1879 206 1867 204 1854 curveto
+200 1811 199 1765 200 1722 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 211 1902 moveto
+204.63 1893.08 lineto
+210.02 1897.1 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+210.02 1897.1 lineto
+213.45 1891.31 lineto
+211 1902 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 211 1902 moveto
+204.63 1893.08 lineto
+210.02 1897.1 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+210.02 1897.1 lineto
+213.45 1891.31 lineto
+211 1902 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+207 1809 moveto 46 (mLastRow) alignedtext
+grestore
+% Node10->Node9
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 262 1893 moveto
+268 1879 273 1866 278 1854 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 258 1902 moveto
+257.95 1891.03 lineto
+260.03 1897.43 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+260.03 1897.43 lineto
+266.17 1894.69 lineto
+258 1902 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 258 1902 moveto
+257.95 1891.03 lineto
+260.03 1897.43 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+260.03 1897.43 lineto
+266.17 1894.69 lineto
+258 1902 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+271 1875 moveto 46 (mLastRow) alignedtext
+grestore
+% Node11
+gsave
+[ /Rect [ 481 1074 603 1362 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 481 1074 moveto
+481 1362 lineto
+603 1362 lineto
+603 1074 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1074 moveto
+481 1362 lineto
+603 1362 lineto
+603 1074 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+507.5 1349 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1342 moveto
+603 1342 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1329 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1322 moveto
+603 1322 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1309 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1297 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1285 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1273 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1261 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1249 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1237 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1225 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1213 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1201 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1189 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1177 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1165 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1153 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1141 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1129 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1117 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1105 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1093 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1081 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node11->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 475 1078 moveto
+474 1077 473 1075 472 1074 curveto
+431 1016 375 960 331 920 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 481 1087 moveto
+471.71 1081.18 lineto
+478.23 1082.84 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+478.23 1082.84 lineto
+479.2 1076.18 lineto
+481 1087 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 481 1087 moveto
+471.71 1081.18 lineto
+478.23 1082.84 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+478.23 1082.84 lineto
+479.2 1076.18 lineto
+481 1087 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+457 1047 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 647 2090
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPMovieMediator__coll__graph.md5 b/doc/latex/classcUPnPMovieMediator__coll__graph.md5
new file mode 100644
index 0000000..71c32d7
--- /dev/null
+++ b/doc/latex/classcUPnPMovieMediator__coll__graph.md5
@@ -0,0 +1 @@
+43b6a14ee43308bbae8f5b88071e2c70 \ No newline at end of file
diff --git a/doc/latex/classcUPnPMovieMediator__coll__graph.pdf b/doc/latex/classcUPnPMovieMediator__coll__graph.pdf
new file mode 100644
index 0000000..f6fce63
--- /dev/null
+++ b/doc/latex/classcUPnPMovieMediator__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPMovieMediator__inherit__graph.eps b/doc/latex/classcUPnPMovieMediator__inherit__graph.eps
new file mode 100644
index 0000000..e738284
--- /dev/null
+++ b/doc/latex/classcUPnPMovieMediator__inherit__graph.eps
@@ -0,0 +1,562 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 194 848
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 158 812 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 9 0 moveto
+9 120 lineto
+141 120 lineto
+141 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 0 moveto
+9 120 lineto
+141 120 lineto
+141 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+27.5 107 moveto 95 (cUPnPMovieMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 100 moveto
+141 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+73.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 9 80 moveto
+141 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 67 moveto 110 (+ cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 55 moveto 116 (+ ~cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+17 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 156 150 276 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 156 moveto
+0 276 lineto
+150 276 lineto
+150 156 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 156 moveto
+0 276 lineto
+150 276 lineto
+150 156 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 263 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 256 moveto
+150 256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+73.5 243 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 236 moveto
+150 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 223 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 211 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 199 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 187 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 175 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 163 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 75 146 moveto
+75 137 75 129 75 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 71.5 146 moveto
+75 156 lineto
+78.5 146 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 13 312 137 432 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 13 312 moveto
+13 432 lineto
+138 432 lineto
+138 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 312 moveto
+13 432 lineto
+138 432 lineto
+138 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+31 419 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 412 moveto
+138 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+73.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 13 392 moveto
+138 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 379 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 367 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 75 302 moveto
+75 293 75 285 75 276 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 71.5 302 moveto
+75 312 lineto
+78.5 302 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 8 468 142 648 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 8 468 moveto
+8 648 lineto
+142 648 lineto
+142 468 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 468 moveto
+8 648 lineto
+142 648 lineto
+142 468 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26.5 635 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 628 moveto
+142 628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 615 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 603 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 8 596 moveto
+142 596 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 583 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 571 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 559 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 547 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 535 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 523 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 511 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 499 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 487 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+16 475 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 75 458 moveto
+75 449 75 441 75 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 71.5 458 moveto
+75 468 lineto
+78.5 458 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 16 684 134 804 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 16 684 moveto
+16 804 lineto
+134 804 lineto
+134 684 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 16 684 moveto
+16 804 lineto
+134 804 lineto
+134 684 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+34.5 791 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 16 784 moveto
+134 784 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+73.5 771 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 16 764 moveto
+134 764 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+24 751 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+24 739 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+24 727 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+24 715 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+24 703 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+24 691 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 75 674 moveto
+75 665 75 656 75 648 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 71.5 674 moveto
+75 684 lineto
+78.5 674 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 194 848
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPMovieMediator__inherit__graph.md5 b/doc/latex/classcUPnPMovieMediator__inherit__graph.md5
new file mode 100644
index 0000000..4bb7b68
--- /dev/null
+++ b/doc/latex/classcUPnPMovieMediator__inherit__graph.md5
@@ -0,0 +1 @@
+954b864151a83ca074a16d48740cc45c \ No newline at end of file
diff --git a/doc/latex/classcUPnPMovieMediator__inherit__graph.pdf b/doc/latex/classcUPnPMovieMediator__inherit__graph.pdf
new file mode 100644
index 0000000..f3580f8
--- /dev/null
+++ b/doc/latex/classcUPnPMovieMediator__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPObjectFactory.tex b/doc/latex/classcUPnPObjectFactory.tex
new file mode 100644
index 0000000..7356b44
--- /dev/null
+++ b/doc/latex/classcUPnPObjectFactory.tex
@@ -0,0 +1,199 @@
+\hypertarget{classcUPnPObjectFactory}{
+\section{cUPnPObjectFactory Class Reference}
+\label{classcUPnPObjectFactory}\index{cUPnPObjectFactory@{cUPnPObjectFactory}}
+}
+{\tt \#include $<$object.h$>$}
+
+Collaboration diagram for cUPnPObjectFactory:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPObjectFactory__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+void \hyperlink{classcUPnPObjectFactory_f2b20dffcd46c08d5b2de4b6807e0689}{registerMediator} (const char $\ast$UPnPClass, \hyperlink{classcMediatorInterface}{cMediatorInterface} $\ast$Mediator)
+\item
+void \hyperlink{classcUPnPObjectFactory_ae48ef32453881a77857bf9772d79d22}{unregisterMediator} (const char $\ast$UPnPClass, bool freeMediator=true)
+\item
+\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcUPnPObjectFactory_c71bbdb30be6b0fd17f67b8850aeccdb}{createObject} (const char $\ast$UPnPClass, const char $\ast$Title, bool Restricted=true)
+\item
+\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcUPnPObjectFactory_a26f57549c26c6fc15425158e7fda4b6}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\item
+int \hyperlink{classcUPnPObjectFactory_1b521c8cfa3507bec49274b606d5d2c5}{saveObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+int \hyperlink{classcUPnPObjectFactory_10198e67d9da1f964aa895cd463b2f92}{deleteObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+int \hyperlink{classcUPnPObjectFactory_947c7256906b4dbe63d156723cdc38be}{clearObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static \hyperlink{classcUPnPObjectFactory}{cUPnPObjectFactory} $\ast$ \hyperlink{classcUPnPObjectFactory_5b99e366dad18ab44ee1d2da5f1c3b4d}{getInstance} ()
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The object factory
+
+This factory can create, delete, clear or save UPnP objects. It uses mediators to communicate with the persistance database to load or persist the objects.
+
+If a new type of object shall be stored in the database an according mediator is needed, which knows the internal database structure. It must implement the \hyperlink{classcMediatorInterface}{cMediatorInterface} class to work with this factory.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPObjectFactory_947c7256906b4dbe63d156723cdc38be}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!clearObject@{clearObject}}
+\index{clearObject@{clearObject}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{clearObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectFactory::clearObject ({\bf cUPnPClassObject} $\ast$ {\em Object})}}
+\label{classcUPnPObjectFactory_947c7256906b4dbe63d156723cdc38be}
+
+
+Clears the object
+
+This clears the object, i.e. all its children will be removed and deleted from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be cleared \end{description}
+\end{Desc}
+ \hypertarget{classcUPnPObjectFactory_c71bbdb30be6b0fd17f67b8850aeccdb}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!createObject@{createObject}}
+\index{createObject@{createObject}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassObject} $\ast$ cUPnPObjectFactory::createObject (const char $\ast$ {\em UPnPClass}, \/ const char $\ast$ {\em Title}, \/ bool {\em Restricted} = {\tt true})}}
+\label{classcUPnPObjectFactory_c71bbdb30be6b0fd17f67b8850aeccdb}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em UPnPClass}]the class of the new object \end{description}
+\end{Desc}
+\hypertarget{classcUPnPObjectFactory_10198e67d9da1f964aa895cd463b2f92}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!deleteObject@{deleteObject}}
+\index{deleteObject@{deleteObject}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{deleteObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectFactory::deleteObject ({\bf cUPnPClassObject} $\ast$ {\em Object})}}
+\label{classcUPnPObjectFactory_10198e67d9da1f964aa895cd463b2f92}
+
+
+Deletes the object
+
+This deletes the object in the database by removing all its children and then deleting the contents from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be deleted \end{description}
+\end{Desc}
+ \hypertarget{classcUPnPObjectFactory_5b99e366dad18ab44ee1d2da5f1c3b4d}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!getInstance@{getInstance}}
+\index{getInstance@{getInstance}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{getInstance}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectFactory} $\ast$ cUPnPObjectFactory::getInstance ()\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPObjectFactory_5b99e366dad18ab44ee1d2da5f1c3b4d}
+
+
+Return the instance of the factory
+
+This returns the instance of the factory. When the media database is initialized successfully, it usally has all known mediators already registered.
+
+\begin{Desc}
+\item[Returns:]the instance of the factory \end{Desc}
+\hypertarget{classcUPnPObjectFactory_a26f57549c26c6fc15425158e7fda4b6}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassObject} $\ast$ cUPnPObjectFactory::getObject ({\bf cUPnPObjectID} {\em ID})}}
+\label{classcUPnPObjectFactory_a26f57549c26c6fc15425158e7fda4b6}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+ \hypertarget{classcUPnPObjectFactory_f2b20dffcd46c08d5b2de4b6807e0689}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!registerMediator@{registerMediator}}
+\index{registerMediator@{registerMediator}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{registerMediator}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPObjectFactory::registerMediator (const char $\ast$ {\em UPnPClass}, \/ {\bf cMediatorInterface} $\ast$ {\em Mediator})}}
+\label{classcUPnPObjectFactory_f2b20dffcd46c08d5b2de4b6807e0689}
+
+
+Register a mediator
+
+This registers a new mediator by the associated class. The mediator must implement the \hyperlink{classcMediatorInterface}{cMediatorInterface} class to be used with this factory.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em UPnPClass}]the class of which the mediator is associated to \item[{\em Mediator}]the mediator itself \end{description}
+\end{Desc}
+\hypertarget{classcUPnPObjectFactory_1b521c8cfa3507bec49274b606d5d2c5}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!saveObject@{saveObject}}
+\index{saveObject@{saveObject}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{saveObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectFactory::saveObject ({\bf cUPnPClassObject} $\ast$ {\em Object})}}
+\label{classcUPnPObjectFactory_1b521c8cfa3507bec49274b606d5d2c5}
+
+
+Saves the object
+
+This saves the object in the database by updating the values in the database with those in the object.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+ \hypertarget{classcUPnPObjectFactory_ae48ef32453881a77857bf9772d79d22}{
+\index{cUPnPObjectFactory@{cUPnPObjectFactory}!unregisterMediator@{unregisterMediator}}
+\index{unregisterMediator@{unregisterMediator}!cUPnPObjectFactory@{cUPnPObjectFactory}}
+\subsubsection[{unregisterMediator}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPObjectFactory::unregisterMediator (const char $\ast$ {\em UPnPClass}, \/ bool {\em freeMediator} = {\tt true})}}
+\label{classcUPnPObjectFactory_ae48ef32453881a77857bf9772d79d22}
+
+
+Unregisters a mediator
+
+This unregisters a mediator if it is not needed anylonger. If the optional parameter {\tt freeMediator} is set, the object instance will be free'd after removing it from the list.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em UPnPClass}]the class of the associated mediator \item[{\em freeMediator}]flag to indicate if the mediator shall be free'd after removing \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPObjectFactory__coll__graph.eps b/doc/latex/classcUPnPObjectFactory__coll__graph.eps
new file mode 100644
index 0000000..7ae1c30
--- /dev/null
+++ b/doc/latex/classcUPnPObjectFactory__coll__graph.eps
@@ -0,0 +1,710 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 228 932
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 192 896 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 204 lineto
+120 204 lineto
+120 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 204 lineto
+120 204 lineto
+120 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+14 191 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 184 moveto
+120 184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 159 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 147 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 140 moveto
+120 140 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 129 120 moveto
+135 116 138 110 138 102 curveto
+138 90 131 83 120 80 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 120 124 moveto
+127.31 115.83 lineto
+124.57 121.97 lineto
+129.14 119.94 lineto
+129.14 119.94 lineto
+129.14 119.94 lineto
+124.57 121.97 lineto
+130.97 124.05 lineto
+120 124 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 120 124 moveto
+127.31 115.83 lineto
+124.57 121.97 lineto
+129.14 119.94 lineto
+129.14 119.94 lineto
+129.14 119.94 lineto
+124.57 121.97 lineto
+130.97 124.05 lineto
+120 124 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+138 99 moveto 46 (mInstance) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 2 252 118 564 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 2 252 moveto
+2 564 lineto
+119 564 lineto
+119 252 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 2 252 moveto
+2 564 lineto
+119 564 lineto
+119 252 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+21.5 551 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 2 544 moveto
+119 544 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 531 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 519 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 507 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 495 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 483 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 471 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 2 464 moveto
+119 464 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 451 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 439 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 427 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 415 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 403 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 391 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 379 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 367 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 355 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 343 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 331 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 319 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 307 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 295 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 283 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 271 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+9.5 259 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 60 242 moveto
+60 229 60 216 60 204 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 60 252 moveto
+55.5 242 lineto
+60 247 lineto
+60 242 lineto
+60 242 lineto
+60 242 lineto
+60 247 lineto
+64.5 242 lineto
+60 252 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 60 252 moveto
+55.5 242 lineto
+60 247 lineto
+60 242 lineto
+60 242 lineto
+60 242 lineto
+60 247 lineto
+64.5 242 lineto
+60 252 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+60 225 moveto 50 (mDatabase) alignedtext
+grestore
+% Node2->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 127 433 moveto
+133 428 136 420 136 408 curveto
+136 391 129 381 119 377 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 119 439 moveto
+124.3 429.4 lineto
+123 436 lineto
+127 433 lineto
+127 433 lineto
+127 433 lineto
+123 436 lineto
+129.7 436.6 lineto
+119 439 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 119 439 moveto
+124.3 429.4 lineto
+123 436 lineto
+127 433 lineto
+127 433 lineto
+127 433 lineto
+123 436 lineto
+129.7 436.6 lineto
+119 439 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+136 405 moveto 46 (mInstance) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 91 612 163 696 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 91 612 moveto
+91 696 lineto
+163 696 lineto
+163 612 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 91 612 moveto
+91 696 lineto
+163 696 lineto
+163 612 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+112.5 683 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 91 676 moveto
+163 676 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+99 663 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 91 656 moveto
+163 656 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+99 643 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+99 631 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+99 619 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 113 602 moveto
+110 591 106 578 103 564 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 116 612 moveto
+108.82 603.71 lineto
+114.56 607.21 lineto
+113.13 602.42 lineto
+113.13 602.42 lineto
+113.13 602.42 lineto
+114.56 607.21 lineto
+117.44 601.13 lineto
+116 612 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 116 612 moveto
+108.82 603.71 lineto
+114.56 607.21 lineto
+113.13 602.42 lineto
+113.13 602.42 lineto
+113.13 602.42 lineto
+114.56 607.21 lineto
+117.44 601.13 lineto
+116 612 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+109 585 moveto 32 (mRows) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 17 744 103 888 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 17 744 moveto
+17 888 lineto
+103 888 lineto
+103 744 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 17 744 moveto
+17 888 lineto
+103 888 lineto
+103 744 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+48 875 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 17 868 moveto
+103 868 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 855 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 843 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 831 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 819 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 17 812 moveto
+103 812 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 799 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 787 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 775 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 763 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 751 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node4->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 41 734 moveto
+39 721 37 709 36 696 curveto
+32 653 33 607 37 564 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 43 744 moveto
+36.63 735.08 lineto
+42.02 739.1 lineto
+41.04 734.19 lineto
+41.04 734.19 lineto
+41.04 734.19 lineto
+42.02 739.1 lineto
+45.45 733.31 lineto
+43 744 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 43 744 moveto
+36.63 735.08 lineto
+42.02 739.1 lineto
+41.04 734.19 lineto
+41.04 734.19 lineto
+41.04 734.19 lineto
+42.02 739.1 lineto
+45.45 733.31 lineto
+43 744 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+36 651 moveto 46 (mLastRow) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 94 735 moveto
+100 721 105 708 110 696 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 90 744 moveto
+89.95 733.03 lineto
+92.03 739.43 lineto
+94.06 734.86 lineto
+94.06 734.86 lineto
+94.06 734.86 lineto
+92.03 739.43 lineto
+98.17 736.69 lineto
+90 744 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 90 744 moveto
+89.95 733.03 lineto
+92.03 739.43 lineto
+94.06 734.86 lineto
+94.06 734.86 lineto
+94.06 734.86 lineto
+92.03 739.43 lineto
+98.17 736.69 lineto
+90 744 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+100 717 moveto 46 (mLastRow) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 228 932
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPObjectFactory__coll__graph.md5 b/doc/latex/classcUPnPObjectFactory__coll__graph.md5
new file mode 100644
index 0000000..8adba80
--- /dev/null
+++ b/doc/latex/classcUPnPObjectFactory__coll__graph.md5
@@ -0,0 +1 @@
+f6b0540159a7159018a87d95a80b2147 \ No newline at end of file
diff --git a/doc/latex/classcUPnPObjectFactory__coll__graph.pdf b/doc/latex/classcUPnPObjectFactory__coll__graph.pdf
new file mode 100644
index 0000000..87d657a
--- /dev/null
+++ b/doc/latex/classcUPnPObjectFactory__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPObjectMediator.tex b/doc/latex/classcUPnPObjectMediator.tex
new file mode 100644
index 0000000..6613879
--- /dev/null
+++ b/doc/latex/classcUPnPObjectMediator.tex
@@ -0,0 +1,262 @@
+\hypertarget{classcUPnPObjectMediator}{
+\section{cUPnPObjectMediator Class Reference}
+\label{classcUPnPObjectMediator}\index{cUPnPObjectMediator@{cUPnPObjectMediator}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPObjectMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPObjectMediator__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPObjectMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPObjectMediator__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual \hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcUPnPObjectMediator_bfbca3f1cbadacee2b21306364750f26}{createObject} (const char $\ast$Title, bool Restricted)
+\item
+virtual \hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$ \hyperlink{classcUPnPObjectMediator_5b4fff612476fb51690919f9c59899a5}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\item
+virtual int \hyperlink{classcUPnPObjectMediator_c200f88239b8940d9d38cbe04c3e961e}{saveObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPObjectMediator_0d2f9d72a678002456cbdeccb2c6e5fe}{deleteObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPObjectMediator_9ab720e86c6d6cb397799ac5070f70aa}{clearObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPObjectMediator_1bc635808c95f6bd774046c37b8139a1}{cUPnPObjectMediator} (\hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$MediaDatabase)
+\item
+virtual int \hyperlink{classcUPnPObjectMediator_a5a3c6d0fd0cff8c74e6fc40d723290f}{initializeObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, const char $\ast$Class, const char $\ast$Title, bool Restricted)
+\item
+virtual int \hyperlink{classcUPnPObjectMediator_c44c010895f92adc63af2a2d34cf34c8}{objectToDatabase} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPObjectMediator_07a6a1d2694fb2f4573bd50374406b24}{databaseToObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, \hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPObjectMediator_e4c8b57a4ebeee1cd55306d436a10541}{
+\hyperlink{classcSQLiteDatabase}{cSQLiteDatabase} $\ast$ \hyperlink{classcUPnPObjectMediator_e4c8b57a4ebeee1cd55306d436a10541}{mDatabase}}
+\label{classcUPnPObjectMediator_e4c8b57a4ebeee1cd55306d436a10541}
+
+\begin{CompactList}\small\item\em the SQLite 3 database wrapper \item\end{CompactList}\item
+\hypertarget{classcUPnPObjectMediator_dbdaa3de8276658a0f8d91d24a789ddf}{
+\hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$ \hyperlink{classcUPnPObjectMediator_dbdaa3de8276658a0f8d91d24a789ddf}{mMediaDatabase}}
+\label{classcUPnPObjectMediator_dbdaa3de8276658a0f8d91d24a789ddf}
+
+\begin{CompactList}\small\item\em the media database \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Object Mediator
+
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPObjectMediator_1bc635808c95f6bd774046c37b8139a1}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{cUPnPObjectMediator}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPObjectMediator::cUPnPObjectMediator ({\bf cMediaDatabase} $\ast$ {\em MediaDatabase})\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUPnPObjectMediator_1bc635808c95f6bd774046c37b8139a1}
+
+
+Constructor of object mediator
+
+This constructs a new object mediator. This is actually not allowed because it is prohibited to create instances of the UPnP class Object \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em MediaDatabase}]the media database \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPObjectMediator_9ab720e86c6d6cb397799ac5070f70aa}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!clearObject@{clearObject}}
+\index{clearObject@{clearObject}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{clearObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectMediator::clearObject ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_9ab720e86c6d6cb397799ac5070f70aa}
+
+
+Clears the object
+
+This clears the object, i.e. all its children will be removed and deleted from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be cleared \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcMediatorInterface_cd087c690154d43ac5ef92c5a42f2349}{cMediatorInterface}.\hypertarget{classcUPnPObjectMediator_bfbca3f1cbadacee2b21306364750f26}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!createObject@{createObject}}
+\index{createObject@{createObject}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassObject} $\ast$ cUPnPObjectMediator::createObject (const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_bfbca3f1cbadacee2b21306364750f26}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcMediatorInterface_68a8350f7ea5ccd2496580035228b1fc}{cMediatorInterface}.
+
+Reimplemented in \hyperlink{classcUPnPItemMediator_e2fd4cf5e6435f1eeadd11f9a99cd2db}{cUPnPItemMediator}, \hyperlink{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_14fefa90807d40d91a80712729af2beb}{cUPnPVideoBroadcastMediator}, \hyperlink{classcUPnPMovieMediator_29d40a311b7283cc4fba36860ac8c935}{cUPnPMovieMediator}, and \hyperlink{classcUPnPContainerMediator_751177c725da94b1b91f6cda4645844d}{cUPnPContainerMediator}.\hypertarget{classcUPnPObjectMediator_07a6a1d2694fb2f4573bd50374406b24}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!databaseToObject@{databaseToObject}}
+\index{databaseToObject@{databaseToObject}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{databaseToObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectMediator::databaseToObject ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ {\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_07a6a1d2694fb2f4573bd50374406b24}
+
+
+Loads an object from database
+
+This loads an object from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be loaded \item[{\em ID}]the object ID of that object \end{description}
+\end{Desc}
+
+
+Reimplemented in \hyperlink{classcUPnPItemMediator_1f3645ebe0a33a81d0b3f22060dc4761}{cUPnPItemMediator}, \hyperlink{classcUPnPVideoItemMediator_3f7ec1937b2b95e3ec5462470971d350}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_33237e5d850c107d37be37c1646b17d7}{cUPnPVideoBroadcastMediator}, \hyperlink{classcUPnPMovieMediator_542135e9c1051b57a8f6f5ecc0c1ede3}{cUPnPMovieMediator}, and \hyperlink{classcUPnPContainerMediator_79f483b48f596047ed9549f0b036f35b}{cUPnPContainerMediator}.\hypertarget{classcUPnPObjectMediator_0d2f9d72a678002456cbdeccb2c6e5fe}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!deleteObject@{deleteObject}}
+\index{deleteObject@{deleteObject}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{deleteObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectMediator::deleteObject ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_0d2f9d72a678002456cbdeccb2c6e5fe}
+
+
+Deletes the object
+
+This deletes the object in the database by removing all its children and then deleting the contents from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be deleted \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcMediatorInterface_ffbddb7fe72554b9cde9d02648cf8f0e}{cMediatorInterface}.\hypertarget{classcUPnPObjectMediator_5b4fff612476fb51690919f9c59899a5}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassObject} $\ast$ cUPnPObjectMediator::getObject ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_5b4fff612476fb51690919f9c59899a5}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcMediatorInterface_716ad95bf6ac5a10e9409ced7a63a9d8}{cMediatorInterface}.
+
+Reimplemented in \hyperlink{classcUPnPItemMediator_81411b2a472ade71d73a9c8ddc2a7990}{cUPnPItemMediator}, \hyperlink{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_c13bf0f008f49b0ab499542391998a24}{cUPnPVideoBroadcastMediator}, \hyperlink{classcUPnPMovieMediator_d85b240eb54efd9ab46c440b51c71e83}{cUPnPMovieMediator}, and \hyperlink{classcUPnPContainerMediator_78b71f96fb4289dc78f897d6282078d6}{cUPnPContainerMediator}.\hypertarget{classcUPnPObjectMediator_a5a3c6d0fd0cff8c74e6fc40d723290f}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!initializeObject@{initializeObject}}
+\index{initializeObject@{initializeObject}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{initializeObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectMediator::initializeObject ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ const char $\ast$ {\em Class}, \/ const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_a5a3c6d0fd0cff8c74e6fc40d723290f}
+
+
+Initializes an object
+
+This initializes an object, which means, that it will be created in the database with the required details.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be initialized \item[{\em Class}]the class of the object \item[{\em Title}]the title of the object \item[{\em Restricted}]restriction of the object \end{description}
+\end{Desc}
+\hypertarget{classcUPnPObjectMediator_c44c010895f92adc63af2a2d34cf34c8}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!objectToDatabase@{objectToDatabase}}
+\index{objectToDatabase@{objectToDatabase}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{objectToDatabase}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectMediator::objectToDatabase ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_c44c010895f92adc63af2a2d34cf34c8}
+
+
+Store the object in the database
+
+This stores the information of an object in the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Reimplemented in \hyperlink{classcUPnPItemMediator_6d954b1cfdc4a7d55981c6ebff9d6d04}{cUPnPItemMediator}, \hyperlink{classcUPnPVideoItemMediator_984e10738bca46ce38307d5f60e26bd3}{cUPnPVideoItemMediator}, \hyperlink{classcUPnPVideoBroadcastMediator_822f9c93928a7dbe9491c8cccbf53f95}{cUPnPVideoBroadcastMediator}, \hyperlink{classcUPnPMovieMediator_61ab6dcaf2417898428ddf1f635788b7}{cUPnPMovieMediator}, and \hyperlink{classcUPnPContainerMediator_1caa4625fca42940ba36999a71ac49ec}{cUPnPContainerMediator}.\hypertarget{classcUPnPObjectMediator_c200f88239b8940d9d38cbe04c3e961e}{
+\index{cUPnPObjectMediator@{cUPnPObjectMediator}!saveObject@{saveObject}}
+\index{saveObject@{saveObject}!cUPnPObjectMediator@{cUPnPObjectMediator}}
+\subsubsection[{saveObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPObjectMediator::saveObject ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPObjectMediator_c200f88239b8940d9d38cbe04c3e961e}
+
+
+Saves the object
+
+This saves the object in the database by updating the values in the database with those in the object.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Implements \hyperlink{classcMediatorInterface_a2f40e697f499c64cfd007aa70e3da7e}{cMediatorInterface}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPObjectMediator__coll__graph.eps b/doc/latex/classcUPnPObjectMediator__coll__graph.eps
new file mode 100644
index 0000000..d1e8e38
--- /dev/null
+++ b/doc/latex/classcUPnPObjectMediator__coll__graph.eps
@@ -0,0 +1,1249 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 647 1616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 611 1580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 79 0 moveto
+79 180 lineto
+213 180 lineto
+213 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 0 moveto
+79 180 lineto
+213 180 lineto
+213 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97.5 167 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 160 moveto
+213 160 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 147 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 135 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 128 moveto
+213 128 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 115 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 103 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 91 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 79 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 67 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 55 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 43 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 31 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 330 118 450 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 330 moveto
+0 450 lineto
+118 450 lineto
+118 330 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 330 moveto
+0 450 lineto
+118 450 lineto
+118 330 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 437 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 430 moveto
+118 430 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+57.5 417 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 410 moveto
+118 410 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 397 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 385 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 373 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 361 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 349 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 337 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 80 320 moveto
+92 278 107 225 120 180 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 76.52 319.42 moveto
+77 330 lineto
+83.23 321.43 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 199 228 331 552 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 199 228 moveto
+199 552 lineto
+331 552 lineto
+331 228 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 228 moveto
+199 552 lineto
+331 552 lineto
+331 228 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+228.5 539 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 532 moveto
+331 532 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 519 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 507 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 495 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 483 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 471 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 464 moveto
+331 464 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 451 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 439 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 427 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 415 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 403 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 391 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 379 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 367 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 355 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 343 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 331 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 319 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 307 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 295 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 283 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 271 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 259 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 247 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 235 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node3->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 197 219 moveto
+192 205 187 192 182 180 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 201 228 moveto
+192.83 220.69 lineto
+198.97 223.43 lineto
+196.94 218.86 lineto
+196.94 218.86 lineto
+196.94 218.86 lineto
+198.97 223.43 lineto
+201.05 217.03 lineto
+201 228 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 201 228 moveto
+192.83 220.69 lineto
+198.97 223.43 lineto
+196.94 218.86 lineto
+196.94 218.86 lineto
+196.94 218.86 lineto
+198.97 223.43 lineto
+201.05 217.03 lineto
+201 228 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+192 201 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 279 642 399 846 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 279 642 moveto
+279 846 lineto
+399 846 lineto
+399 642 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 642 moveto
+279 846 lineto
+399 846 lineto
+399 642 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+293 833 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 826 moveto
+399 826 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 813 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 801 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 789 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 782 moveto
+399 782 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 769 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 757 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 745 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 733 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 721 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 709 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 697 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 685 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 673 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 661 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 649 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 316 632 moveto
+311 607 305 579 299 552 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 318 642 moveto
+311.63 633.08 lineto
+317.02 637.1 lineto
+316.04 632.19 lineto
+316.04 632.19 lineto
+316.04 632.19 lineto
+317.02 637.1 lineto
+320.45 631.31 lineto
+318 642 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 318 642 moveto
+311.63 633.08 lineto
+317.02 637.1 lineto
+316.04 632.19 lineto
+316.04 632.19 lineto
+316.04 632.19 lineto
+317.02 637.1 lineto
+320.45 631.31 lineto
+318 642 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+306.5 573 moveto 41 (mFactory) alignedtext
+grestore
+% Node4->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 408 769 moveto
+414 764 417 755 417 744 curveto
+417 728 410 718 399 714 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 399 774 moveto
+405.56 765.21 lineto
+403.37 771.57 lineto
+407.74 769.14 lineto
+407.74 769.14 lineto
+407.74 769.14 lineto
+403.37 771.57 lineto
+409.93 773.08 lineto
+399 774 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 399 774 moveto
+405.56 765.21 lineto
+403.37 771.57 lineto
+407.74 769.14 lineto
+407.74 769.14 lineto
+407.74 769.14 lineto
+403.37 771.57 lineto
+409.93 773.08 lineto
+399 774 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+417 741 moveto 46 (mInstance) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 153 936 269 1248 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 153 936 moveto
+153 1248 lineto
+270 1248 lineto
+270 936 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 936 moveto
+153 1248 lineto
+270 1248 lineto
+270 936 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+172.5 1235 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1228 moveto
+270 1228 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1215 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1203 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1191 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1179 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1167 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1155 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1148 moveto
+270 1148 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1135 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1123 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1111 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1099 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1087 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1075 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1063 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1051 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1039 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1027 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1015 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1003 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 991 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 979 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 967 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 955 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 943 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node5->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 196 926 moveto
+187 826 177 696 169 582 curveto
+160 441 153 279 149 180 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 197 936 moveto
+191.53 926.5 lineto
+196.5 931.02 lineto
+196 926.05 lineto
+196 926.05 lineto
+196 926.05 lineto
+196.5 931.02 lineto
+200.48 925.6 lineto
+197 936 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 197 936 moveto
+191.53 926.5 lineto
+196.5 931.02 lineto
+196 926.05 lineto
+196 926.05 lineto
+196 926.05 lineto
+196.5 931.02 lineto
+200.48 925.6 lineto
+197 936 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+169 573 moveto 50 (mDatabase) alignedtext
+grestore
+% Node5->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 206 926 moveto
+205 830 207 708 220 600 curveto
+222 584 224 568 227 552 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 206 936 moveto
+201.5 926 lineto
+206 931 lineto
+206 926 lineto
+206 926 lineto
+206 926 lineto
+206 931 lineto
+210.5 926 lineto
+206 936 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 206 936 moveto
+201.5 926 lineto
+206 931 lineto
+206 926 lineto
+206 926 lineto
+206 926 lineto
+206 931 lineto
+210.5 926 lineto
+206 936 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+220 741 moveto 50 (mDatabase) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 271 927 moveto
+281 899 292 871 301 846 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 268 936 moveto
+266.89 925.09 lineto
+269.58 931.26 lineto
+271.16 926.51 lineto
+271.16 926.51 lineto
+271.16 926.51 lineto
+269.58 931.26 lineto
+275.43 927.94 lineto
+268 936 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 268 936 moveto
+266.89 925.09 lineto
+269.58 931.26 lineto
+271.16 926.51 lineto
+271.16 926.51 lineto
+271.16 926.51 lineto
+269.58 931.26 lineto
+275.43 927.94 lineto
+268 936 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+280 909 moveto 50 (mDatabase) alignedtext
+grestore
+% Node5->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1117 moveto
+284 1112 287 1104 287 1092 curveto
+287 1075 280 1065 270 1061 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 270 1123 moveto
+275.3 1113.4 lineto
+274 1120 lineto
+278 1117 lineto
+278 1117 lineto
+278 1117 lineto
+274 1120 lineto
+280.7 1120.6 lineto
+270 1123 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 270 1123 moveto
+275.3 1113.4 lineto
+274 1120 lineto
+278 1117 lineto
+278 1117 lineto
+278 1117 lineto
+274 1120 lineto
+280.7 1120.6 lineto
+270 1123 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+287 1089 moveto 46 (mInstance) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 259 1296 331 1380 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 259 1296 moveto
+259 1380 lineto
+331 1380 lineto
+331 1296 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1296 moveto
+259 1380 lineto
+331 1380 lineto
+331 1296 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+280.5 1367 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1360 moveto
+331 1360 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1347 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1340 moveto
+331 1340 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1327 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1315 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1303 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1287 moveto
+274 1275 270 1262 265 1248 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 281 1296 moveto
+273.57 1287.94 lineto
+279.42 1291.26 lineto
+277.84 1286.51 lineto
+277.84 1286.51 lineto
+277.84 1286.51 lineto
+279.42 1291.26 lineto
+282.11 1285.09 lineto
+281 1296 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 281 1296 moveto
+273.57 1287.94 lineto
+279.42 1291.26 lineto
+277.84 1286.51 lineto
+277.84 1286.51 lineto
+277.84 1286.51 lineto
+279.42 1291.26 lineto
+282.11 1285.09 lineto
+281 1296 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+276 1269 moveto 32 (mRows) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 185 1428 271 1572 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 185 1428 moveto
+185 1572 lineto
+271 1572 lineto
+271 1428 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1428 moveto
+185 1572 lineto
+271 1572 lineto
+271 1428 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+216 1559 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1552 moveto
+271 1552 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1539 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1527 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1515 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1503 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1496 moveto
+271 1496 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1483 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1471 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1459 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1447 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1435 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node7->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 209 1418 moveto
+207 1405 206 1393 204 1380 curveto
+200 1337 199 1291 200 1248 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 211 1428 moveto
+204.63 1419.08 lineto
+210.02 1423.1 lineto
+209.04 1418.19 lineto
+209.04 1418.19 lineto
+209.04 1418.19 lineto
+210.02 1423.1 lineto
+213.45 1417.31 lineto
+211 1428 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 211 1428 moveto
+204.63 1419.08 lineto
+210.02 1423.1 lineto
+209.04 1418.19 lineto
+209.04 1418.19 lineto
+209.04 1418.19 lineto
+210.02 1423.1 lineto
+213.45 1417.31 lineto
+211 1428 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+207 1335 moveto 46 (mLastRow) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 262 1419 moveto
+268 1405 273 1392 278 1380 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 258 1428 moveto
+257.95 1417.03 lineto
+260.03 1423.43 lineto
+262.06 1418.86 lineto
+262.06 1418.86 lineto
+262.06 1418.86 lineto
+260.03 1423.43 lineto
+266.17 1420.69 lineto
+258 1428 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 258 1428 moveto
+257.95 1417.03 lineto
+260.03 1423.43 lineto
+262.06 1418.86 lineto
+262.06 1418.86 lineto
+262.06 1418.86 lineto
+260.03 1423.43 lineto
+266.17 1420.69 lineto
+258 1428 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+271 1401 moveto 46 (mLastRow) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 481 600 603 888 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 481 600 moveto
+481 888 lineto
+603 888 lineto
+603 600 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 600 moveto
+481 888 lineto
+603 888 lineto
+603 600 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+507.5 875 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 868 moveto
+603 868 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 855 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 848 moveto
+603 848 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 835 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 823 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 811 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 799 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 787 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 775 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 763 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 751 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 739 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 727 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 715 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 703 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 691 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 679 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 667 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 655 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 643 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 631 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 619 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 607 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node8->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 475 604 moveto
+474 603 473 601 472 600 curveto
+431 542 375 486 331 446 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 481 613 moveto
+471.71 607.18 lineto
+478.23 608.84 lineto
+475.45 604.68 lineto
+475.45 604.68 lineto
+475.45 604.68 lineto
+478.23 608.84 lineto
+479.2 602.18 lineto
+481 613 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 481 613 moveto
+471.71 607.18 lineto
+478.23 608.84 lineto
+475.45 604.68 lineto
+475.45 604.68 lineto
+475.45 604.68 lineto
+478.23 608.84 lineto
+479.2 602.18 lineto
+481 613 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+457 573 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 647 1616
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPObjectMediator__coll__graph.md5 b/doc/latex/classcUPnPObjectMediator__coll__graph.md5
new file mode 100644
index 0000000..1caf568
--- /dev/null
+++ b/doc/latex/classcUPnPObjectMediator__coll__graph.md5
@@ -0,0 +1 @@
+85e47ee2e1d5da01c8573cc90a9a9e2c \ No newline at end of file
diff --git a/doc/latex/classcUPnPObjectMediator__coll__graph.pdf b/doc/latex/classcUPnPObjectMediator__coll__graph.pdf
new file mode 100644
index 0000000..f87bd83
--- /dev/null
+++ b/doc/latex/classcUPnPObjectMediator__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPObjectMediator__inherit__graph.eps b/doc/latex/classcUPnPObjectMediator__inherit__graph.eps
new file mode 100644
index 0000000..98cf462
--- /dev/null
+++ b/doc/latex/classcUPnPObjectMediator__inherit__graph.eps
@@ -0,0 +1,710 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 443 848
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 407 812 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 82 468 moveto
+82 648 lineto
+216 648 lineto
+216 468 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 82 468 moveto
+82 648 lineto
+216 648 lineto
+216 468 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100.5 635 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 82 628 moveto
+216 628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 615 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 603 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 82 596 moveto
+216 596 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 583 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 571 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 559 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 547 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 535 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 523 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 511 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 499 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 487 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+90 475 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 0 312 146 432 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPContainerMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 312 moveto
+0 432 lineto
+147 432 lineto
+147 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 312 moveto
+0 432 lineto
+147 432 lineto
+147 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 419 moveto 110 (cUPnPContainerMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 412 moveto
+147 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+71.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 392 moveto
+147 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 379 moveto 125 (+ cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 367 moveto 131 (+ ~cUPnPContainerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node1->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 108 459 moveto
+104 450 101 441 97 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 104.74 460.28 moveto
+112 468 lineto
+111.14 457.44 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 164 312 288 432 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 164 312 moveto
+164 432 lineto
+289 432 lineto
+289 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 164 312 moveto
+164 432 lineto
+289 432 lineto
+289 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+182 419 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 164 412 moveto
+289 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+224.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 164 392 moveto
+289 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 379 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 367 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+171.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node1->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 190 459 moveto
+194 450 197 441 201 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 186.86 457.44 moveto
+186 468 lineto
+193.26 460.28 lineto
+closepath stroke
+grestore
+% Node2
+gsave
+[ /Rect [ 90 684 208 804 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 90 684 moveto
+90 804 lineto
+208 804 lineto
+208 684 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 90 684 moveto
+90 804 lineto
+208 804 lineto
+208 684 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+108.5 791 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 90 784 moveto
+208 784 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+147.5 771 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 90 764 moveto
+208 764 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 751 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 739 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 727 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 715 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 703 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+98 691 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 149 674 moveto
+149 665 149 656 149 648 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 145.5 674 moveto
+149 684 lineto
+152.5 674 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 151 156 301 276 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 151 156 moveto
+151 276 lineto
+301 276 lineto
+301 156 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 151 156 moveto
+151 276 lineto
+301 276 lineto
+301 156 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+169.5 263 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 151 256 moveto
+301 256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+224.5 243 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 151 236 moveto
+301 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 223 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 211 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 199 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 187 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 175 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+159 163 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node5
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 226 302 moveto
+226 293 226 285 226 276 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 222.5 302 moveto
+226 312 lineto
+229.5 302 lineto
+closepath stroke
+grestore
+% Node6
+gsave
+[ /Rect [ 75 0 207 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPMovieMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 75 0 moveto
+75 120 lineto
+207 120 lineto
+207 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 75 0 moveto
+75 120 lineto
+207 120 lineto
+207 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+93.5 107 moveto 95 (cUPnPMovieMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 75 100 moveto
+207 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+139.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 75 80 moveto
+207 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 67 moveto 110 (+ cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 55 moveto 116 (+ ~cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+83 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node5->Node6
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 188 147 moveto
+183 138 178 129 173 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 185.08 148.96 moveto
+193 156 lineto
+191.2 145.56 lineto
+closepath stroke
+grestore
+% Node7
+gsave
+[ /Rect [ 225 0 399 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoBroadcastMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 225 0 moveto
+225 120 lineto
+399 120 lineto
+399 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 225 0 moveto
+225 120 lineto
+399 120 lineto
+399 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+243.5 107 moveto 137 (cUPnPVideoBroadcastMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 225 100 moveto
+399 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+310.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 225 80 moveto
+399 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 67 moveto 152 (+ cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 55 moveto 158 (+ ~cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node5->Node7
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 264 147 moveto
+268 138 274 129 279 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 260.8 145.56 moveto
+259 156 lineto
+266.92 148.96 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 443 848
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPObjectMediator__inherit__graph.md5 b/doc/latex/classcUPnPObjectMediator__inherit__graph.md5
new file mode 100644
index 0000000..270f3ca
--- /dev/null
+++ b/doc/latex/classcUPnPObjectMediator__inherit__graph.md5
@@ -0,0 +1 @@
+16ab6bd3044bdf97e0a0d6ae10723f8e \ No newline at end of file
diff --git a/doc/latex/classcUPnPObjectMediator__inherit__graph.pdf b/doc/latex/classcUPnPObjectMediator__inherit__graph.pdf
new file mode 100644
index 0000000..f8913ee
--- /dev/null
+++ b/doc/latex/classcUPnPObjectMediator__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPObjects.tex b/doc/latex/classcUPnPObjects.tex
new file mode 100644
index 0000000..2dcffe9
--- /dev/null
+++ b/doc/latex/classcUPnPObjects.tex
@@ -0,0 +1,39 @@
+\hypertarget{classcUPnPObjects}{
+\section{cUPnPObjects Class Reference}
+\label{classcUPnPObjects}\index{cUPnPObjects@{cUPnPObjects}}
+}
+{\tt \#include $<$object.h$>$}
+
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+void \hyperlink{classcUPnPObjects_d9368864f90f5b72742895015df1aef2}{SortBy} (const char $\ast$Property, bool Descending=false)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+List of UPnP Objects
+
+This is a cList of UPnP Objects The list can be sorted by using a specific property
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPObjects_d9368864f90f5b72742895015df1aef2}{
+\index{cUPnPObjects@{cUPnPObjects}!SortBy@{SortBy}}
+\index{SortBy@{SortBy}!cUPnPObjects@{cUPnPObjects}}
+\subsubsection[{SortBy}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPObjects::SortBy (const char $\ast$ {\em Property}, \/ bool {\em Descending} = {\tt false})}}
+\label{classcUPnPObjects_d9368864f90f5b72742895015df1aef2}
+
+
+Sorts the list
+
+This sorts the list by a specific property and a certain direction \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Property}]the property used for sorting \item[{\em Descending}]the direction of the sort \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPResource.tex b/doc/latex/classcUPnPResource.tex
new file mode 100644
index 0000000..d9dc758
--- /dev/null
+++ b/doc/latex/classcUPnPResource.tex
@@ -0,0 +1,288 @@
+\hypertarget{classcUPnPResource}{
+\section{cUPnPResource Class Reference}
+\label{classcUPnPResource}\index{cUPnPResource@{cUPnPResource}}
+}
+{\tt \#include $<$object.h$>$}
+
+Collaboration diagram for cUPnPResource:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPResource__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+unsigned int \hyperlink{classcUPnPResource_47ad15c119fbcfdda1bc5f60d0a3efc9}{getID} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPResource_b648a88993b0e5a4421514f45a5b266f}{getResource} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPResource_5da7e39c5fc76f5607c232319daa135c}{getDuration} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPResource_27d5140dc72a8e034ce197913d6aa1d5}{getResolution} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPResource_0ff5e61a2d07873ae2ebdab7d87b3d9f}{getProtocolInfo} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPResource_6aeaaf476c5d6548b15bb381c032b815}{getContentType} () const
+\item
+const char $\ast$ \hyperlink{classcUPnPResource_04ab0d214e39ddfa18339926cef9fd64}{getImportURI} () const
+\item
+int \hyperlink{classcUPnPResource_6b6855ba6d4bd06805750ede92449c8d}{getResourceType} () const
+\item
+unsigned long \hyperlink{classcUPnPResource_361f6991a29dddf575a2b0b63ce5a66a}{getSize} () const
+\item
+off64\_\-t \hyperlink{classcUPnPResource_5cabb363c4fd0785d3f073011df835e9}{getFileSize} () const
+\item
+time\_\-t \hyperlink{classcUPnPResource_c95a8fe0bdba2c371a46e4e267dab1aa}{getLastModification} () const
+\item
+unsigned int \hyperlink{classcUPnPResource_3f2f3d5c447fee28d3dff5cf739e4c98}{getBitrate} () const
+\item
+unsigned int \hyperlink{classcUPnPResource_5ea6003b282c48f575bc54f5c9658ca9}{getSampleFrequency} () const
+\item
+unsigned int \hyperlink{classcUPnPResource_3efd82888fd648dd08b5d43520638d17}{getBitsPerSample} () const
+\item
+unsigned int \hyperlink{classcUPnPResource_ff18e089f421d710580292f0b91b40f8}{getNrAudioChannels} () const
+\item
+unsigned int \hyperlink{classcUPnPResource_276eddcc28bad31d6178cf109373074a}{getColorDepth} () const
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPResource_61e899959de76787a31b2caf642893f5}{
+class \hyperlink{classcUPnPResource_61e899959de76787a31b2caf642893f5}{cUPnPResourceMediator}}
+\label{classcUPnPResource_61e899959de76787a31b2caf642893f5}
+
+\item
+\hypertarget{classcUPnPResource_bd3fceb5edae16f35b23748913128356}{
+class \hyperlink{classcUPnPResource_bd3fceb5edae16f35b23748913128356}{cUPnPResources}}
+\label{classcUPnPResource_bd3fceb5edae16f35b23748913128356}
+
+\item
+\hypertarget{classcUPnPResource_41bb7e713331591ea53b89d0019b101a}{
+class \hyperlink{classcUPnPResource_41bb7e713331591ea53b89d0019b101a}{cAudioVideoDetector}}
+\label{classcUPnPResource_41bb7e713331591ea53b89d0019b101a}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+UPnP Resource
+
+This contains all details about a resource
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPResource_3f2f3d5c447fee28d3dff5cf739e4c98}{
+\index{cUPnPResource@{cUPnPResource}!getBitrate@{getBitrate}}
+\index{getBitrate@{getBitrate}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getBitrate}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPResource::getBitrate () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_3f2f3d5c447fee28d3dff5cf739e4c98}
+
+
+Get the bitrate
+
+This returns the bitrate of the resource in bits per second.
+
+\begin{Desc}
+\item[Returns:]the bitrate of the resource \end{Desc}
+\hypertarget{classcUPnPResource_3efd82888fd648dd08b5d43520638d17}{
+\index{cUPnPResource@{cUPnPResource}!getBitsPerSample@{getBitsPerSample}}
+\index{getBitsPerSample@{getBitsPerSample}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getBitsPerSample}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPResource::getBitsPerSample () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_3efd82888fd648dd08b5d43520638d17}
+
+
+Get the bits per sample
+
+Returns the number of bits per sample.
+
+\begin{Desc}
+\item[Returns:]the bits per sample of the resource \end{Desc}
+\hypertarget{classcUPnPResource_276eddcc28bad31d6178cf109373074a}{
+\index{cUPnPResource@{cUPnPResource}!getColorDepth@{getColorDepth}}
+\index{getColorDepth@{getColorDepth}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getColorDepth}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPResource::getColorDepth () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_276eddcc28bad31d6178cf109373074a}
+
+
+Get the color depth
+
+Returns the color depth of the resource in pits per pixel
+
+\begin{Desc}
+\item[Returns:]the color depth of the resource \end{Desc}
+\hypertarget{classcUPnPResource_6aeaaf476c5d6548b15bb381c032b815}{
+\index{cUPnPResource@{cUPnPResource}!getContentType@{getContentType}}
+\index{getContentType@{getContentType}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getContentType}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPResource::getContentType () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_6aeaaf476c5d6548b15bb381c032b815}
+
+
+Get the content type
+
+Returns the mime type of the content of the resource
+
+\begin{Desc}
+\item[Returns:]the content type of the resource \end{Desc}
+\hypertarget{classcUPnPResource_5da7e39c5fc76f5607c232319daa135c}{
+\index{cUPnPResource@{cUPnPResource}!getDuration@{getDuration}}
+\index{getDuration@{getDuration}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getDuration}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPResource::getDuration () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_5da7e39c5fc76f5607c232319daa135c}
+
+
+Get the duration
+
+Returns a date time string with the duration of the resource
+
+\begin{Desc}
+\item[Returns:]the duration of the resource \end{Desc}
+\hypertarget{classcUPnPResource_5cabb363c4fd0785d3f073011df835e9}{
+\index{cUPnPResource@{cUPnPResource}!getFileSize@{getFileSize}}
+\index{getFileSize@{getFileSize}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getFileSize}]{\setlength{\rightskip}{0pt plus 5cm}off64\_\-t cUPnPResource::getFileSize () const}}
+\label{classcUPnPResource_5cabb363c4fd0785d3f073011df835e9}
+
+
+Get the file size
+
+Returns the file size in bytes of the resource or 0 if its unknown or a stream
+
+\begin{Desc}
+\item[Returns:]the file size \end{Desc}
+\hypertarget{classcUPnPResource_47ad15c119fbcfdda1bc5f60d0a3efc9}{
+\index{cUPnPResource@{cUPnPResource}!getID@{getID}}
+\index{getID@{getID}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getID}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPResource::getID () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_47ad15c119fbcfdda1bc5f60d0a3efc9}
+
+
+Get resource ID
+
+Gets the resource ID
+
+\begin{Desc}
+\item[Returns:]the resource ID \end{Desc}
+\hypertarget{classcUPnPResource_04ab0d214e39ddfa18339926cef9fd64}{
+\index{cUPnPResource@{cUPnPResource}!getImportURI@{getImportURI}}
+\index{getImportURI@{getImportURI}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getImportURI}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPResource::getImportURI () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_04ab0d214e39ddfa18339926cef9fd64}
+
+
+Get the import URI
+
+This returns the import URI where the resource was located before importing it
+
+\begin{Desc}
+\item[Returns:]the import URI \end{Desc}
+\hypertarget{classcUPnPResource_c95a8fe0bdba2c371a46e4e267dab1aa}{
+\index{cUPnPResource@{cUPnPResource}!getLastModification@{getLastModification}}
+\index{getLastModification@{getLastModification}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getLastModification}]{\setlength{\rightskip}{0pt plus 5cm}time\_\-t cUPnPResource::getLastModification () const}}
+\label{classcUPnPResource_c95a8fe0bdba2c371a46e4e267dab1aa}
+
+
+Get the last modification
+
+This returns the timestamp of the last modification to the file. If it is a stream, then its the current time.
+
+\begin{Desc}
+\item[Returns:]the timestamp with the last modification of the resource \end{Desc}
+\hypertarget{classcUPnPResource_ff18e089f421d710580292f0b91b40f8}{
+\index{cUPnPResource@{cUPnPResource}!getNrAudioChannels@{getNrAudioChannels}}
+\index{getNrAudioChannels@{getNrAudioChannels}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getNrAudioChannels}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPResource::getNrAudioChannels () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_ff18e089f421d710580292f0b91b40f8}
+
+
+Get number of audio channels
+
+Returns the number of audio channels of the audio stream in a video
+
+\begin{Desc}
+\item[Returns:]the number of audio channels \end{Desc}
+\hypertarget{classcUPnPResource_0ff5e61a2d07873ae2ebdab7d87b3d9f}{
+\index{cUPnPResource@{cUPnPResource}!getProtocolInfo@{getProtocolInfo}}
+\index{getProtocolInfo@{getProtocolInfo}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getProtocolInfo}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPResource::getProtocolInfo () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_0ff5e61a2d07873ae2ebdab7d87b3d9f}
+
+
+Get the protocol info
+
+This returns the protocol info field of a resource
+
+\begin{Desc}
+\item[Returns:]the protocol info string \end{Desc}
+\hypertarget{classcUPnPResource_27d5140dc72a8e034ce197913d6aa1d5}{
+\index{cUPnPResource@{cUPnPResource}!getResolution@{getResolution}}
+\index{getResolution@{getResolution}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getResolution}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPResource::getResolution () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_27d5140dc72a8e034ce197913d6aa1d5}
+
+
+Get the resolution
+
+Returns the resolution string with the pattern width x height in pixels
+
+\begin{Desc}
+\item[Returns:]the resolution of the resource \end{Desc}
+\hypertarget{classcUPnPResource_b648a88993b0e5a4421514f45a5b266f}{
+\index{cUPnPResource@{cUPnPResource}!getResource@{getResource}}
+\index{getResource@{getResource}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getResource}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPResource::getResource () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_b648a88993b0e5a4421514f45a5b266f}
+
+
+Get the resources
+
+Returns the resource. This is in most cases the file name or resource locator where to find the resource
+
+\begin{Desc}
+\item[Returns:]the resource string \end{Desc}
+\hypertarget{classcUPnPResource_6b6855ba6d4bd06805750ede92449c8d}{
+\index{cUPnPResource@{cUPnPResource}!getResourceType@{getResourceType}}
+\index{getResourceType@{getResourceType}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getResourceType}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPResource::getResourceType () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_6b6855ba6d4bd06805750ede92449c8d}
+
+
+Get the resource type
+
+This returns the resource type of the resource.
+
+\begin{Desc}
+\item[Returns:]the resource type \end{Desc}
+\hypertarget{classcUPnPResource_5ea6003b282c48f575bc54f5c9658ca9}{
+\index{cUPnPResource@{cUPnPResource}!getSampleFrequency@{getSampleFrequency}}
+\index{getSampleFrequency@{getSampleFrequency}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getSampleFrequency}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int cUPnPResource::getSampleFrequency () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_5ea6003b282c48f575bc54f5c9658ca9}
+
+
+Get the sample frequency
+
+Returns the sample frequency in samples per second.
+
+\begin{Desc}
+\item[Returns:]the sample frequency of the resource \end{Desc}
+\hypertarget{classcUPnPResource_361f6991a29dddf575a2b0b63ce5a66a}{
+\index{cUPnPResource@{cUPnPResource}!getSize@{getSize}}
+\index{getSize@{getSize}!cUPnPResource@{cUPnPResource}}
+\subsubsection[{getSize}]{\setlength{\rightskip}{0pt plus 5cm}unsigned long cUPnPResource::getSize () const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPResource_361f6991a29dddf575a2b0b63ce5a66a}
+
+
+Get the size
+
+Returns the resource size or -1 if its unknown
+
+\begin{Desc}
+\item[Returns:]the resource size or -1 if unknown \end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPResourceMediator.tex b/doc/latex/classcUPnPResourceMediator.tex
new file mode 100644
index 0000000..bb9b7cc
--- /dev/null
+++ b/doc/latex/classcUPnPResourceMediator.tex
@@ -0,0 +1,100 @@
+\hypertarget{classcUPnPResourceMediator}{
+\section{cUPnPResourceMediator Class Reference}
+\label{classcUPnPResourceMediator}\index{cUPnPResourceMediator@{cUPnPResourceMediator}}
+}
+{\tt \#include $<$resources.h$>$}
+
+Collaboration diagram for cUPnPResourceMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPResourceMediator__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$ \hyperlink{classcUPnPResourceMediator_9d4d8cc5eafb18b13ad7d14793d3f9de}{getResource} (unsigned int ResourceID)
+\item
+int \hyperlink{classcUPnPResourceMediator_a633cef46d5cae9aecec05ea28d7c14e}{saveResource} (\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$Resource)
+\item
+\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$ \hyperlink{classcUPnPResourceMediator_14367dd7e160f6c6812279b84a4fa8e2}{newResource} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPResourceMediator_bd3fceb5edae16f35b23748913128356}{
+class \hyperlink{classcUPnPResourceMediator_bd3fceb5edae16f35b23748913128356}{cUPnPResources}}
+\label{classcUPnPResourceMediator_bd3fceb5edae16f35b23748913128356}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The resource mediator
+
+This is another mediator which communicates with the database. It manages the resources in the database
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPResourceMediator_9d4d8cc5eafb18b13ad7d14793d3f9de}{
+\index{cUPnPResourceMediator@{cUPnPResourceMediator}!getResource@{getResource}}
+\index{getResource@{getResource}!cUPnPResourceMediator@{cUPnPResourceMediator}}
+\subsubsection[{getResource}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPResource} $\ast$ cUPnPResourceMediator::getResource (unsigned int {\em ResourceID})}}
+\label{classcUPnPResourceMediator_9d4d8cc5eafb18b13ad7d14793d3f9de}
+
+
+Get a resource by ID
+
+This returns a resource by its resource ID
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ResourceID}]the resource ID of the demanded resource \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]the requested resource \end{Desc}
+\hypertarget{classcUPnPResourceMediator_14367dd7e160f6c6812279b84a4fa8e2}{
+\index{cUPnPResourceMediator@{cUPnPResourceMediator}!newResource@{newResource}}
+\index{newResource@{newResource}!cUPnPResourceMediator@{cUPnPResourceMediator}}
+\subsubsection[{newResource}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPResource} $\ast$ cUPnPResourceMediator::newResource ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ int {\em ResourceType}, \/ cString {\em ResourceFile}, \/ cString {\em ContentType}, \/ cString {\em ProtocolInfo})}}
+\label{classcUPnPResourceMediator_14367dd7e160f6c6812279b84a4fa8e2}
+
+
+Create new resource
+
+This creates a new resource and stores the skeleton in the database. The newly created resource will only contain all required information.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the Object which will hold the resource \item[{\em ResourceType}]the type of the resource \item[{\em ResourceFile}]the file or URL, where the resource can be located \item[{\em ContentType}]the mime type of the content \item[{\em ProtocolInfo}]the protocol information of the resource \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]the newly created resource \end{Desc}
+\hypertarget{classcUPnPResourceMediator_a633cef46d5cae9aecec05ea28d7c14e}{
+\index{cUPnPResourceMediator@{cUPnPResourceMediator}!saveResource@{saveResource}}
+\index{saveResource@{saveResource}!cUPnPResourceMediator@{cUPnPResourceMediator}}
+\subsubsection[{saveResource}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPResourceMediator::saveResource ({\bf cUPnPResource} $\ast$ {\em Resource})}}
+\label{classcUPnPResourceMediator_a633cef46d5cae9aecec05ea28d7c14e}
+
+
+Saves the resource
+
+This updates the information in the database with those in the resource object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Resource}]the resource which shall be saved \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if saving was successful\item {\bf {\tt $<$0},} if an error occured \end{itemize}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/resources.h\item
+database/resources.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPResourceMediator__coll__graph.eps b/doc/latex/classcUPnPResourceMediator__coll__graph.eps
new file mode 100644
index 0000000..f3066b5
--- /dev/null
+++ b/doc/latex/classcUPnPResourceMediator__coll__graph.eps
@@ -0,0 +1,652 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 239 848
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 203 812 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+147 120 lineto
+147 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+147 120 lineto
+147 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18 107 moveto 110 (cUPnPResourceMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 100 moveto
+147 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 87 moveto 56 (- mDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 80 moveto
+147 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 131 (+ ~cUPnPResourceMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 77 (+ saveResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 31 moveto 74 (+ newResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 19 moveto 122 (- cUPnPResourceMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 7 moveto 97 (- getNextResourceID\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 15 168 131 480 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 15 168 moveto
+15 480 lineto
+132 480 lineto
+132 168 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 168 moveto
+15 480 lineto
+132 480 lineto
+132 168 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+34.5 467 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 460 moveto
+132 460 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 447 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 435 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 423 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 411 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 399 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 387 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 380 moveto
+132 380 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 367 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 355 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 343 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 331 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 319 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 307 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 295 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 283 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 271 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 259 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 247 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 235 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 223 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 211 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 199 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 187 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+22.5 175 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 73 158 moveto
+73 145 73 132 73 120 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 73 168 moveto
+68.5 158 lineto
+73 163 lineto
+73 158 lineto
+73 158 lineto
+73 158 lineto
+73 163 lineto
+77.5 158 lineto
+73 168 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 73 168 moveto
+68.5 158 lineto
+73 163 lineto
+73 158 lineto
+73 158 lineto
+73 158 lineto
+73 163 lineto
+77.5 158 lineto
+73 168 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+73 141 moveto 50 (mDatabase) alignedtext
+grestore
+% Node2->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 140 349 moveto
+146 344 149 336 149 324 curveto
+149 307 142 297 132 293 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 132 355 moveto
+137.3 345.4 lineto
+136 352 lineto
+140 349 lineto
+140 349 lineto
+140 349 lineto
+136 352 lineto
+142.7 352.6 lineto
+132 355 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 132 355 moveto
+137.3 345.4 lineto
+136 352 lineto
+140 349 lineto
+140 349 lineto
+140 349 lineto
+136 352 lineto
+142.7 352.6 lineto
+132 355 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+149 321 moveto 46 (mInstance) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 104 528 176 612 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 104 528 moveto
+104 612 lineto
+176 612 lineto
+176 528 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 104 528 moveto
+104 612 lineto
+176 612 lineto
+176 528 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+125.5 599 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 104 592 moveto
+176 592 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+112 579 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 104 572 moveto
+176 572 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+112 559 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+112 547 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+112 535 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 126 518 moveto
+123 507 119 494 116 480 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 129 528 moveto
+121.82 519.71 lineto
+127.56 523.21 lineto
+126.13 518.42 lineto
+126.13 518.42 lineto
+126.13 518.42 lineto
+127.56 523.21 lineto
+130.44 517.13 lineto
+129 528 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 129 528 moveto
+121.82 519.71 lineto
+127.56 523.21 lineto
+126.13 518.42 lineto
+126.13 518.42 lineto
+126.13 518.42 lineto
+127.56 523.21 lineto
+130.44 517.13 lineto
+129 528 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+122 501 moveto 32 (mRows) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 30 660 116 804 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 30 660 moveto
+30 804 lineto
+116 804 lineto
+116 660 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 30 660 moveto
+30 804 lineto
+116 804 lineto
+116 660 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+61 791 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 30 784 moveto
+116 784 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 771 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 759 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 747 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 735 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 30 728 moveto
+116 728 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 715 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 703 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 691 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 679 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38 667 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node4->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 54 650 moveto
+52 637 50 625 49 612 curveto
+45 569 46 523 50 480 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 56 660 moveto
+49.63 651.08 lineto
+55.02 655.1 lineto
+54.04 650.19 lineto
+54.04 650.19 lineto
+54.04 650.19 lineto
+55.02 655.1 lineto
+58.45 649.31 lineto
+56 660 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 56 660 moveto
+49.63 651.08 lineto
+55.02 655.1 lineto
+54.04 650.19 lineto
+54.04 650.19 lineto
+54.04 650.19 lineto
+55.02 655.1 lineto
+58.45 649.31 lineto
+56 660 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+49 567 moveto 46 (mLastRow) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 107 651 moveto
+113 637 118 624 123 612 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 103 660 moveto
+102.95 649.03 lineto
+105.03 655.43 lineto
+107.06 650.86 lineto
+107.06 650.86 lineto
+107.06 650.86 lineto
+105.03 655.43 lineto
+111.17 652.69 lineto
+103 660 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 103 660 moveto
+102.95 649.03 lineto
+105.03 655.43 lineto
+107.06 650.86 lineto
+107.06 650.86 lineto
+107.06 650.86 lineto
+105.03 655.43 lineto
+111.17 652.69 lineto
+103 660 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+113 633 moveto 46 (mLastRow) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 239 848
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPResourceMediator__coll__graph.md5 b/doc/latex/classcUPnPResourceMediator__coll__graph.md5
new file mode 100644
index 0000000..6aa940e
--- /dev/null
+++ b/doc/latex/classcUPnPResourceMediator__coll__graph.md5
@@ -0,0 +1 @@
+6885f12acd8f99bc0b432069ef7f9ab7 \ No newline at end of file
diff --git a/doc/latex/classcUPnPResourceMediator__coll__graph.pdf b/doc/latex/classcUPnPResourceMediator__coll__graph.pdf
new file mode 100644
index 0000000..995ca6b
--- /dev/null
+++ b/doc/latex/classcUPnPResourceMediator__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPResource__coll__graph.eps b/doc/latex/classcUPnPResource__coll__graph.eps
new file mode 100644
index 0000000..98f0cae
--- /dev/null
+++ b/doc/latex/classcUPnPResource__coll__graph.eps
@@ -0,0 +1,462 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 166 800
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 130 764 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 420 lineto
+123 420 lineto
+123 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 420 lineto
+123 420 lineto
+123 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+25 407 moveto 72 (cUPnPResource) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 400 moveto
+123 400 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 387 moveto 65 (- mResourceID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 375 moveto 53 (- mObjectID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 363 moveto 77 (- mResourceType) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 351 moveto 56 (- mResource) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 339 moveto 50 (- mDuration) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 327 moveto 60 (- mResolution) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 315 moveto 67 (- mProtocolInfo) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 303 moveto 69 (- mContentType) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 291 moveto 59 (- mImportURI) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 279 moveto 34 (- mSize) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 267 moveto 43 (- mBitrate) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 255 moveto 93 (- mSampleFrequency) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 243 moveto 80 (- mBitsPerSample) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 231 moveto 89 (- mNrAudioChannels) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 219 moveto 62 (- mColorDepth) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 212 moveto
+123 212 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 199 moveto 38 (+ getID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 187 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 175 moveto 65 (+ getDuration\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 163 moveto 74 (+ getResolution\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 151 moveto 81 (+ getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 139 moveto 83 (+ getContentType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 127 moveto 73 (+ getImportURI\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 115 moveto 91 (+ getResourceType\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 103 moveto 48 (+ getSize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 91 moveto 64 (+ getFileSize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 79 moveto 100 (+ getLastModification\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 67 moveto 57 (+ getBitrate\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 55 moveto 107 (+ getSampleFrequency\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 43 moveto 94 (+ getBitsPerSample\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 31 moveto 104 (+ getNrAudioChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 19 moveto 77 (+ getColorDepth\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 7 moveto 84 (- cUPnPResource\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 468 122 756 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 468 moveto
+0 756 lineto
+122 756 lineto
+122 468 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 468 moveto
+0 756 lineto
+122 756 lineto
+122 468 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+26.5 743 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 736 moveto
+122 736 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 723 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 716 moveto
+122 716 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 703 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 691 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 679 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 667 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 655 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 643 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 631 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 619 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 607 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 595 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 583 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 571 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 559 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 547 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 535 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 523 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 511 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 499 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 487 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 475 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 61 458 moveto
+61 445 61 433 61 420 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 61 468 moveto
+56.5 458 lineto
+61 463 lineto
+61 458 lineto
+61 458 lineto
+61 458 lineto
+61 463 lineto
+65.5 458 lineto
+61 468 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 61 468 moveto
+56.5 458 lineto
+61 463 lineto
+61 458 lineto
+61 458 lineto
+61 458 lineto
+61 463 lineto
+65.5 458 lineto
+61 468 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+60.5 441 moveto 47 (mObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 166 800
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPResource__coll__graph.md5 b/doc/latex/classcUPnPResource__coll__graph.md5
new file mode 100644
index 0000000..213e628
--- /dev/null
+++ b/doc/latex/classcUPnPResource__coll__graph.md5
@@ -0,0 +1 @@
+c0c9bc0c77b27537360e2178ab938faf \ No newline at end of file
diff --git a/doc/latex/classcUPnPResource__coll__graph.pdf b/doc/latex/classcUPnPResource__coll__graph.pdf
new file mode 100644
index 0000000..ab62189
--- /dev/null
+++ b/doc/latex/classcUPnPResource__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPResources.tex b/doc/latex/classcUPnPResources.tex
new file mode 100644
index 0000000..c374d97
--- /dev/null
+++ b/doc/latex/classcUPnPResources.tex
@@ -0,0 +1,173 @@
+\hypertarget{classcUPnPResources}{
+\section{cUPnPResources Class Reference}
+\label{classcUPnPResources}\index{cUPnPResources@{cUPnPResources}}
+}
+{\tt \#include $<$resources.h$>$}
+
+Collaboration diagram for cUPnPResources:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPResources__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+int \hyperlink{classcUPnPResources_5da9137336fa284040a823f53267b837}{getResourcesOfObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+int \hyperlink{classcUPnPResources_eaffc72ee9faeb046a41b965ce61507f}{loadResources} ()
+\item
+\hyperlink{classcUPnPResource}{cUPnPResource} $\ast$ \hyperlink{classcUPnPResources_cfec64e65fa14c1efb653c9c4fbbc609}{getResource} (unsigned int ResourceID)
+\item
+int \hyperlink{classcUPnPResources_974dd63afd52b87732800b7cf578a387}{createFromChannel} (\hyperlink{classcUPnPClassVideoBroadcast}{cUPnPClassVideoBroadcast} $\ast$Object, cChannel $\ast$Channel)
+\item
+int \hyperlink{classcUPnPResources_47b243391bc9e1867bc16d4307f2af8a}{createFromRecording} (\hyperlink{classcUPnPClassVideoItem}{cUPnPClassVideoItem} $\ast$Object, cRecording $\ast$Recording)
+\item
+int \hyperlink{classcUPnPResources_b2bac789a9caf023940dfc02a079c249}{createFromFile} (\hyperlink{classcUPnPClassItem}{cUPnPClassItem} $\ast$Object, cString File)
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static \hyperlink{classcUPnPResources}{cUPnPResources} $\ast$ \hyperlink{classcUPnPResources_c3136b664928d2214e76e0e65a4ace6a}{getInstance} ()
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The resource manager
+
+This manages the resources in an internal cache. It may create a new resource from a channel, a recording or a custom file.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPResources_974dd63afd52b87732800b7cf578a387}{
+\index{cUPnPResources@{cUPnPResources}!createFromChannel@{createFromChannel}}
+\index{createFromChannel@{createFromChannel}!cUPnPResources@{cUPnPResources}}
+\subsubsection[{createFromChannel}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPResources::createFromChannel ({\bf cUPnPClassVideoBroadcast} $\ast$ {\em Object}, \/ cChannel $\ast$ {\em Channel})}}
+\label{classcUPnPResources_974dd63afd52b87732800b7cf578a387}
+
+
+Create resource from channel
+
+This creates a new resource from the given channel. It determines what kind of video stream it is and further details if available. It stores the resource in the database after creating it.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the videoBroadcast item which holds the resource \item[{\em Channel}]the VDR TV channel \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if loading was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPResources_b2bac789a9caf023940dfc02a079c249}{
+\index{cUPnPResources@{cUPnPResources}!createFromFile@{createFromFile}}
+\index{createFromFile@{createFromFile}!cUPnPResources@{cUPnPResources}}
+\subsubsection[{createFromFile}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPResources::createFromFile ({\bf cUPnPClassItem} $\ast$ {\em Object}, \/ cString {\em File})}}
+\label{classcUPnPResources_b2bac789a9caf023940dfc02a079c249}
+
+
+Create resource from file
+
+This creates a new resource from the given file. It determines all available information about the resource by analizing the content. It stores the resource in the database after creating it.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the item which holds the resource \item[{\em File}]the file name \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if loading was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPResources_47b243391bc9e1867bc16d4307f2af8a}{
+\index{cUPnPResources@{cUPnPResources}!createFromRecording@{createFromRecording}}
+\index{createFromRecording@{createFromRecording}!cUPnPResources@{cUPnPResources}}
+\subsubsection[{createFromRecording}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPResources::createFromRecording ({\bf cUPnPClassVideoItem} $\ast$ {\em Object}, \/ cRecording $\ast$ {\em Recording})}}
+\label{classcUPnPResources_47b243391bc9e1867bc16d4307f2af8a}
+
+
+Create resource from recording
+
+This creates a new resource from the given recording. It determines what kind of video stream it is and further details if available. It stores the resource in the database after creating it.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the videoItem item which holds the resource \item[{\em Recording}]the VDR TV recording \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if loading was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPResources_c3136b664928d2214e76e0e65a4ace6a}{
+\index{cUPnPResources@{cUPnPResources}!getInstance@{getInstance}}
+\index{getInstance@{getInstance}!cUPnPResources@{cUPnPResources}}
+\subsubsection[{getInstance}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPResources} $\ast$ cUPnPResources::getInstance ()\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPResources_c3136b664928d2214e76e0e65a4ace6a}
+
+
+Get the instance of the resource manager
+
+This returns the instance of the resource manager.
+
+\begin{Desc}
+\item[Returns:]the instance of the manager \end{Desc}
+\hypertarget{classcUPnPResources_cfec64e65fa14c1efb653c9c4fbbc609}{
+\index{cUPnPResources@{cUPnPResources}!getResource@{getResource}}
+\index{getResource@{getResource}!cUPnPResources@{cUPnPResources}}
+\subsubsection[{getResource}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPResource} $\ast$ cUPnPResources::getResource (unsigned int {\em ResourceID})}}
+\label{classcUPnPResources_cfec64e65fa14c1efb653c9c4fbbc609}
+
+
+Get a resource by ID
+
+This returns a resource by its resource ID
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ResourceID}]the resource ID of the demanded resource \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]the requested resource \end{Desc}
+ \hypertarget{classcUPnPResources_5da9137336fa284040a823f53267b837}{
+\index{cUPnPResources@{cUPnPResources}!getResourcesOfObject@{getResourcesOfObject}}
+\index{getResourcesOfObject@{getResourcesOfObject}!cUPnPResources@{cUPnPResources}}
+\subsubsection[{getResourcesOfObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPResources::getResourcesOfObject ({\bf cUPnPClassObject} $\ast$ {\em Object})}}
+\label{classcUPnPResources_5da9137336fa284040a823f53267b837}
+
+
+Fill object with its resources
+
+This will load all the resources from the database, which are associated to the given object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object, which shall be filled \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if loading was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPResources_eaffc72ee9faeb046a41b965ce61507f}{
+\index{cUPnPResources@{cUPnPResources}!loadResources@{loadResources}}
+\index{loadResources@{loadResources}!cUPnPResources@{cUPnPResources}}
+\subsubsection[{loadResources}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPResources::loadResources ()}}
+\label{classcUPnPResources_eaffc72ee9faeb046a41b965ce61507f}
+
+
+Loads all resources from database
+
+This loads all resources from the database into the internal cache.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt 0},} if loading was successful\item {\bf {\tt $<$0},} otherwise \end{itemize}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/resources.h\item
+database/resources.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPResources__coll__graph.eps b/doc/latex/classcUPnPResources__coll__graph.eps
new file mode 100644
index 0000000..7f4457f
--- /dev/null
+++ b/doc/latex/classcUPnPResources__coll__graph.eps
@@ -0,0 +1,838 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 300 1088
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 264 1052 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 20 0 moveto
+20 192 lineto
+150 192 lineto
+150 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 0 moveto
+20 192 lineto
+150 192 lineto
+150 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+46.5 179 moveto 77 (cUPnPResources) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 172 moveto
+150 172 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 159 moveto 61 (- mResources) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 147 moveto 52 (- mMediator) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 135 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 123 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 116 moveto
+150 116 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 103 moveto 114 (+ getResourcesOfObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 91 moveto 80 (+ loadResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 79 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 67 moveto 98 (+ ~cUPnPResources\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 55 moveto 100 (+ createFromChannel\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 43 moveto 108 (+ createFromRecording\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 31 moveto 80 (+ createFromFile\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 19 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 7 moveto 89 (- cUPnPResources\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 159 113 moveto
+165 109 168 103 168 96 curveto
+168 85 161 78 150 75 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 150 117 moveto
+157.31 108.83 lineto
+154.57 114.97 lineto
+159.14 112.94 lineto
+159.14 112.94 lineto
+159.14 112.94 lineto
+154.57 114.97 lineto
+160.97 117.05 lineto
+150 117 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 150 117 moveto
+157.31 108.83 lineto
+154.57 114.97 lineto
+159.14 112.94 lineto
+159.14 112.94 lineto
+159.14 112.94 lineto
+154.57 114.97 lineto
+160.97 117.05 lineto
+150 117 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+168 93 moveto 46 (mInstance) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 408 116 720 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 408 moveto
+0 720 lineto
+117 720 lineto
+117 408 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 408 moveto
+0 720 lineto
+117 720 lineto
+117 408 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+19.5 707 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 700 moveto
+117 700 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 687 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 675 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 663 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 651 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 639 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 627 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 620 moveto
+117 620 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 607 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 595 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 583 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 571 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 559 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 547 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 535 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 523 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 511 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 499 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 487 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 475 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 463 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 451 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 439 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 427 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+7.5 415 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 46 398 moveto
+44 347 45 291 51 240 curveto
+53 224 55 208 59 192 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 46 408 moveto
+41.5 398 lineto
+46 403 lineto
+46 398 lineto
+46 398 lineto
+46 398 lineto
+46 403 lineto
+50.5 398 lineto
+46 408 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 46 408 moveto
+41.5 398 lineto
+46 403 lineto
+46 398 lineto
+46 398 lineto
+46 398 lineto
+46 403 lineto
+50.5 398 lineto
+46 408 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+51 297 moveto 50 (mDatabase) alignedtext
+grestore
+% Node2->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 125 589 moveto
+131 584 134 576 134 564 curveto
+134 547 127 537 117 533 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 117 595 moveto
+122.3 585.4 lineto
+121 592 lineto
+125 589 lineto
+125 589 lineto
+125 589 lineto
+121 592 lineto
+127.7 592.6 lineto
+117 595 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 117 595 moveto
+122.3 585.4 lineto
+121 592 lineto
+125 589 lineto
+125 589 lineto
+125 589 lineto
+121 592 lineto
+127.7 592.6 lineto
+117 595 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+134 561 moveto 46 (mInstance) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 110 240 256 360 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPResourceMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 110 240 moveto
+110 360 lineto
+257 360 lineto
+257 240 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 110 240 moveto
+110 360 lineto
+257 360 lineto
+257 240 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+128 347 moveto 110 (cUPnPResourceMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 110 340 moveto
+257 340 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+117.5 327 moveto 56 (- mDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 110 320 moveto
+257 320 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+117.5 307 moveto 131 (+ ~cUPnPResourceMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+117.5 295 moveto 70 (+ getResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+117.5 283 moveto 77 (+ saveResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+117.5 271 moveto 74 (+ newResource\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+117.5 259 moveto 122 (- cUPnPResourceMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+117.5 247 moveto 97 (- getNextResourceID\(\)) alignedtext
+grestore
+% Node2->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 121 430 moveto
+133 406 144 381 154 360 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 117 439 moveto
+116.95 428.03 lineto
+119.03 434.43 lineto
+121.06 429.86 lineto
+121.06 429.86 lineto
+121.06 429.86 lineto
+119.03 434.43 lineto
+125.17 431.69 lineto
+117 439 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 117 439 moveto
+116.95 428.03 lineto
+119.03 434.43 lineto
+121.06 429.86 lineto
+121.06 429.86 lineto
+121.06 429.86 lineto
+119.03 434.43 lineto
+125.17 431.69 lineto
+117 439 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+141 381 moveto 50 (mDatabase) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 89 768 161 852 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 89 768 moveto
+89 852 lineto
+161 852 lineto
+161 768 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 768 moveto
+89 852 lineto
+161 852 lineto
+161 768 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+110.5 839 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 832 moveto
+161 832 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 819 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 812 moveto
+161 812 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 799 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 787 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 775 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 111 758 moveto
+108 747 104 734 101 720 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 114 768 moveto
+106.82 759.71 lineto
+112.56 763.21 lineto
+111.13 758.42 lineto
+111.13 758.42 lineto
+111.13 758.42 lineto
+112.56 763.21 lineto
+115.44 757.13 lineto
+114 768 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 114 768 moveto
+106.82 759.71 lineto
+112.56 763.21 lineto
+111.13 758.42 lineto
+111.13 758.42 lineto
+111.13 758.42 lineto
+112.56 763.21 lineto
+115.44 757.13 lineto
+114 768 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+107 741 moveto 32 (mRows) alignedtext
+grestore
+% Node4
+gsave
+[ /Rect [ 15 900 101 1044 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 15 900 moveto
+15 1044 lineto
+101 1044 lineto
+101 900 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 900 moveto
+15 1044 lineto
+101 1044 lineto
+101 900 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+46 1031 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 1024 moveto
+101 1024 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 1011 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 999 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 987 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 975 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 15 968 moveto
+101 968 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 955 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 943 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 931 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 919 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 907 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node4->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 39 890 moveto
+37 877 35 865 34 852 curveto
+30 809 31 763 35 720 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 41 900 moveto
+34.63 891.08 lineto
+40.02 895.1 lineto
+39.04 890.19 lineto
+39.04 890.19 lineto
+39.04 890.19 lineto
+40.02 895.1 lineto
+43.45 889.31 lineto
+41 900 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 41 900 moveto
+34.63 891.08 lineto
+40.02 895.1 lineto
+39.04 890.19 lineto
+39.04 890.19 lineto
+39.04 890.19 lineto
+40.02 895.1 lineto
+43.45 889.31 lineto
+41 900 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+34 807 moveto 46 (mLastRow) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 92 891 moveto
+98 877 103 864 108 852 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 88 900 moveto
+87.95 889.03 lineto
+90.03 895.43 lineto
+92.06 890.86 lineto
+92.06 890.86 lineto
+92.06 890.86 lineto
+90.03 895.43 lineto
+96.17 892.69 lineto
+88 900 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 88 900 moveto
+87.95 889.03 lineto
+90.03 895.43 lineto
+92.06 890.86 lineto
+92.06 890.86 lineto
+92.06 890.86 lineto
+90.03 895.43 lineto
+96.17 892.69 lineto
+88 900 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+98 873 moveto 46 (mLastRow) alignedtext
+grestore
+% Node5->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 150 231 moveto
+144 218 137 206 131 192 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 154 240 moveto
+145.83 232.69 lineto
+151.97 235.43 lineto
+149.94 230.86 lineto
+149.94 230.86 lineto
+149.94 230.86 lineto
+151.97 235.43 lineto
+154.05 229.03 lineto
+154 240 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 154 240 moveto
+145.83 232.69 lineto
+151.97 235.43 lineto
+149.94 230.86 lineto
+149.94 230.86 lineto
+149.94 230.86 lineto
+151.97 235.43 lineto
+154.05 229.03 lineto
+154 240 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+144 213 moveto 46 (mMediator) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 300 1088
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPResources__coll__graph.md5 b/doc/latex/classcUPnPResources__coll__graph.md5
new file mode 100644
index 0000000..d1fa953
--- /dev/null
+++ b/doc/latex/classcUPnPResources__coll__graph.md5
@@ -0,0 +1 @@
+20e5964ca09aebcf8223c1e86dabbc11 \ No newline at end of file
diff --git a/doc/latex/classcUPnPResources__coll__graph.pdf b/doc/latex/classcUPnPResources__coll__graph.pdf
new file mode 100644
index 0000000..84a4926
--- /dev/null
+++ b/doc/latex/classcUPnPResources__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPServer.tex b/doc/latex/classcUPnPServer.tex
new file mode 100644
index 0000000..153f0fb
--- /dev/null
+++ b/doc/latex/classcUPnPServer.tex
@@ -0,0 +1,318 @@
+\hypertarget{classcUPnPServer}{
+\section{cUPnPServer Class Reference}
+\label{classcUPnPServer}\index{cUPnPServer@{cUPnPServer}}
+}
+{\tt \#include $<$server.h$>$}
+
+Collaboration diagram for cUPnPServer:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPServer__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPServer_e0277b2231f10e66a5c6ce9acb42fcd0}{cUPnPServer} ()
+\item
+virtual \hyperlink{classcUPnPServer_8eb136050f3f6c2edb7acbf5d690723d}{$\sim$cUPnPServer} ()
+\item
+void \hyperlink{classcUPnPServer_4935ab1fbcc03279193e0f9fa675fb8b}{enable} (bool enabled)
+\item
+bool \hyperlink{classcUPnPServer_811d90c5aadc75bc48670757def1c21e}{start} (void)
+\item
+bool \hyperlink{classcUPnPServer_9dd50cfea9042d49ef58b99b44c0c5af}{restart} (void)
+\item
+void \hyperlink{classcUPnPServer_c5ecc7ef5d42db1fa136ff00b24d1289}{stop} (void)
+\item
+bool \hyperlink{classcUPnPServer_783f27c1997257539ccb8ff7ade815be}{autoDetectSettings} (void)
+\item
+sockaddr\_\-in $\ast$ \hyperlink{classcUPnPServer_f938922eff48ca1035e88677e095c0c4}{getServerAddress} (void)
+\item
+const char $\ast$ \hyperlink{classcUPnPServer_e28dd555ac861850c9a2bbd22d9a7d3a}{getInterface} (void) const
+\item
+bool \hyperlink{classcUPnPServer_77494ce55a93601110bd4ffce8559b23}{setServerPort} (unsigned short port)
+\item
+bool \hyperlink{classcUPnPServer_81cf9d85c09093094febe6966a568702}{setInterface} (const char $\ast$Interface)
+\item
+bool \hyperlink{classcUPnPServer_ebebc8d232cf4ad04e5f72f5ab763db6}{setAddress} (const char $\ast$Address)
+\item
+bool \hyperlink{classcUPnPServer_7c91df7310a99786a0a126497299d030}{setAutoDetection} (bool enable)
+\item
+bool \hyperlink{classcUPnPServer_fbaaebd4496e98106c2d9be4c2512a66}{isEnabled} (void) const
+\item
+bool \hyperlink{classcUPnPServer_af5358b41e19ba2917371c2d118d0145}{isRunning} (void) const
+\item
+bool \hyperlink{classcUPnPServer_389ffe474f61ec18b6f99dd02a9c31e4}{isAutoDetectionEnabled} ()
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPServer_d07aa2117373999585d4e5530ef02918}{
+class \hyperlink{classcUPnPServer_d07aa2117373999585d4e5530ef02918}{cPluginUpnp}}
+\label{classcUPnPServer_d07aa2117373999585d4e5530ef02918}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The UPnP Server
+
+This is the core of the UPnP server. This handles all the components which are needed for a UPnP media server. Incoming messages are passed through it and it determines what to do.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPServer_e0277b2231f10e66a5c6ce9acb42fcd0}{
+\index{cUPnPServer@{cUPnPServer}!cUPnPServer@{cUPnPServer}}
+\index{cUPnPServer@{cUPnPServer}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{cUPnPServer}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPServer::cUPnPServer ()}}
+\label{classcUPnPServer_e0277b2231f10e66a5c6ce9acb42fcd0}
+
+
+Constructor
+
+This will create a new server and initializes the main functionalities The server has to be started manually by invoking \hyperlink{classcUPnPServer_811d90c5aadc75bc48670757def1c21e}{cUPnPServer::start()}. \hypertarget{classcUPnPServer_8eb136050f3f6c2edb7acbf5d690723d}{
+\index{cUPnPServer@{cUPnPServer}!$\sim$cUPnPServer@{$\sim$cUPnPServer}}
+\index{$\sim$cUPnPServer@{$\sim$cUPnPServer}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{$\sim$cUPnPServer}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPServer::$\sim$cUPnPServer ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPServer_8eb136050f3f6c2edb7acbf5d690723d}
+
+
+Destructor
+
+This will destroy the server object. Open ports and connections will be closed.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPServer_783f27c1997257539ccb8ff7ade815be}{
+\index{cUPnPServer@{cUPnPServer}!autoDetectSettings@{autoDetectSettings}}
+\index{autoDetectSettings@{autoDetectSettings}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{autoDetectSettings}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::autoDetectSettings (void)}}
+\label{classcUPnPServer_783f27c1997257539ccb8ff7ade815be}
+
+
+Automatically detect settings
+
+This will automatically detect the network settings if the autodetection is turned on.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if autoDetection was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_4935ab1fbcc03279193e0f9fa675fb8b}{
+\index{cUPnPServer@{cUPnPServer}!enable@{enable}}
+\index{enable@{enable}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{enable}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPServer::enable (bool {\em enabled})}}
+\label{classcUPnPServer_4935ab1fbcc03279193e0f9fa675fb8b}
+
+
+Enable the server
+
+This switch indicates if the server is startable or not
+
+If it is set to false, any invocation of \hyperlink{classcUPnPServer_811d90c5aadc75bc48670757def1c21e}{start()} will do nothing.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em enabled}]if {\bf {\tt true},} the server will be enabled. If {\bf {\tt false} it} is disabled. \end{description}
+\end{Desc}
+\hypertarget{classcUPnPServer_e28dd555ac861850c9a2bbd22d9a7d3a}{
+\index{cUPnPServer@{cUPnPServer}!getInterface@{getInterface}}
+\index{getInterface@{getInterface}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{getInterface}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPServer::getInterface (void) const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPServer_e28dd555ac861850c9a2bbd22d9a7d3a}
+
+
+Get the interface the server listens to
+
+\begin{Desc}
+\item[Returns:]the network interface \end{Desc}
+\hypertarget{classcUPnPServer_f938922eff48ca1035e88677e095c0c4}{
+\index{cUPnPServer@{cUPnPServer}!getServerAddress@{getServerAddress}}
+\index{getServerAddress@{getServerAddress}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{getServerAddress}]{\setlength{\rightskip}{0pt plus 5cm}sockaddr\_\-in $\ast$ cUPnPServer::getServerAddress (void)}}
+\label{classcUPnPServer_f938922eff48ca1035e88677e095c0c4}
+
+
+Get the server address
+
+Returns a server address structure including IP address and port
+
+\begin{Desc}
+\item[Returns:]The server socket address \end{Desc}
+\hypertarget{classcUPnPServer_389ffe474f61ec18b6f99dd02a9c31e4}{
+\index{cUPnPServer@{cUPnPServer}!isAutoDetectionEnabled@{isAutoDetectionEnabled}}
+\index{isAutoDetectionEnabled@{isAutoDetectionEnabled}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{isAutoDetectionEnabled}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::isAutoDetectionEnabled ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPServer_389ffe474f61ec18b6f99dd02a9c31e4}
+
+
+Is auto detection enabled or not
+
+Returns true or false if auto detection is enabled or not
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if autodetection is enabled\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_fbaaebd4496e98106c2d9be4c2512a66}{
+\index{cUPnPServer@{cUPnPServer}!isEnabled@{isEnabled}}
+\index{isEnabled@{isEnabled}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{isEnabled}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::isEnabled (void) const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPServer_fbaaebd4496e98106c2d9be4c2512a66}
+
+
+Checks if the server is enabled
+
+This indicates if the server is currently enabled.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the server is enabled\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_af5358b41e19ba2917371c2d118d0145}{
+\index{cUPnPServer@{cUPnPServer}!isRunning@{isRunning}}
+\index{isRunning@{isRunning}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{isRunning}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::isRunning (void) const\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{classcUPnPServer_af5358b41e19ba2917371c2d118d0145}
+
+
+Checks if the server is running
+
+If the server is enabled, this indicates if it is running.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true} if} the server is running\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_9dd50cfea9042d49ef58b99b44c0c5af}{
+\index{cUPnPServer@{cUPnPServer}!restart@{restart}}
+\index{restart@{restart}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{restart}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::restart (void)}}
+\label{classcUPnPServer_9dd50cfea9042d49ef58b99b44c0c5af}
+
+
+Restart the server
+
+When the server is not operating properly it can be restarted. It will stop the server functionalities, clear everything and start it again.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} when the server restarted successfully\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_ebebc8d232cf4ad04e5f72f5ab763db6}{
+\index{cUPnPServer@{cUPnPServer}!setAddress@{setAddress}}
+\index{setAddress@{setAddress}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{setAddress}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::setAddress (const char $\ast$ {\em Address})}}
+\label{classcUPnPServer_ebebc8d232cf4ad04e5f72f5ab763db6}
+
+
+Set the server address
+
+Specifies the servers IP address. The server needs to restart when the IP is changed. However, it's not possible to detect changes through the system.
+
+This method should only be used in cases of fixed IP addresses for example when no DHCP server is available.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Address}]The address of the server \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the new server address is set\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_7c91df7310a99786a0a126497299d030}{
+\index{cUPnPServer@{cUPnPServer}!setAutoDetection@{setAutoDetection}}
+\index{setAutoDetection@{setAutoDetection}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{setAutoDetection}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::setAutoDetection (bool {\em enable})}}
+\label{classcUPnPServer_7c91df7310a99786a0a126497299d030}
+
+
+Enables oder Disables auto detection mode
+
+If this is set to true, the setup will get it's information via auto detection
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em enable}]{\bf {\tt true} enables} and {\bf {\tt false} disables} the auto detection \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the new server address is set\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_81cf9d85c09093094febe6966a568702}{
+\index{cUPnPServer@{cUPnPServer}!setInterface@{setInterface}}
+\index{setInterface@{setInterface}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{setInterface}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::setInterface (const char $\ast$ {\em Interface})}}
+\label{classcUPnPServer_81cf9d85c09093094febe6966a568702}
+
+
+The Interface to listen on
+
+Sets the listener interface, for instance 'eth1' or 'wlan0'
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Interface}]The interface of the server \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the new server address is set\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_77494ce55a93601110bd4ffce8559b23}{
+\index{cUPnPServer@{cUPnPServer}!setServerPort@{setServerPort}}
+\index{setServerPort@{setServerPort}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{setServerPort}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::setServerPort (unsigned short {\em port})}}
+\label{classcUPnPServer_77494ce55a93601110bd4ffce8559b23}
+
+
+Set the server port
+
+The port must be in the scope of user definied ports (49152 - 65535). If the port is 0, it is autoassigned. You can retrieve the actual port by calling \hyperlink{classcUPnPServer_f938922eff48ca1035e88677e095c0c4}{getServerAddress()}, which will give you a structure with the port in it.
+
+The server must be restarted if the IP or port changes.
+
+Returns 1 when the port is valid, 0 otherwise
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em port}]The port of the server \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if the new server port is set\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_811d90c5aadc75bc48670757def1c21e}{
+\index{cUPnPServer@{cUPnPServer}!start@{start}}
+\index{start@{start}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{start}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPServer::start (void)}}
+\label{classcUPnPServer_811d90c5aadc75bc48670757def1c21e}
+
+
+Start the UPnP server
+
+This will start the UPnP server activities as a background task.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} when the server started successfully\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPServer_c5ecc7ef5d42db1fa136ff00b24d1289}{
+\index{cUPnPServer@{cUPnPServer}!stop@{stop}}
+\index{stop@{stop}!cUPnPServer@{cUPnPServer}}
+\subsubsection[{stop}]{\setlength{\rightskip}{0pt plus 5cm}void cUPnPServer::stop (void)}}
+\label{classcUPnPServer_c5ecc7ef5d42db1fa136ff00b24d1289}
+
+
+Stop the server
+
+This will stop the server. This means that open connections to any clients and open ports will be closed.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+server/server.h\item
+server/server.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPServer__coll__graph.eps b/doc/latex/classcUPnPServer__coll__graph.eps
new file mode 100644
index 0000000..a9015b4
--- /dev/null
+++ b/doc/latex/classcUPnPServer__coll__graph.eps
@@ -0,0 +1,1824 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 678 2120
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 642 2084 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 244 0 moveto
+244 396 lineto
+379 396 lineto
+379 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 0 moveto
+244 396 lineto
+379 396 lineto
+379 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+281.5 383 moveto 59 (cUPnPServer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 376 moveto
+379 376 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 363 moveto 58 (- mIsRunning) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 351 moveto 58 (- mIsEnabled) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 339 moveto 63 (- mServerAddr) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 327 moveto 53 (- mInterface) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 315 moveto 119 (- mIsAutoDetectionEnabled) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 303 moveto 93 (- mDeviceDescription) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 291 moveto 62 (- mWebServer) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 279 moveto 82 (- mMediaDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 267 moveto 74 (- mDeviceHandle) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 255 moveto 101 (- mConnectionManager) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 243 moveto 87 (- mContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 244 236 moveto
+379 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 223 moveto 74 (+ cUPnPServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 211 moveto 80 (+ ~cUPnPServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 199 moveto 44 (+ enable\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 187 moveto 35 (+ start\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 175 moveto 43 (+ restart\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 163 moveto 34 (+ stop\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 151 moveto 98 (+ autoDetectSettings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 139 moveto 93 (+ getServerAddress\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 127 moveto 67 (+ getInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 115 moveto 75 (+ setServerPort\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 103 moveto 67 (+ setInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 91 moveto 65 (+ setAddress\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 79 moveto 90 (+ setAutoDetection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 67 moveto 58 (+ isEnabled\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 55 moveto 58 (+ isRunning\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 43 moveto 119 (+ isAutoDetectionEnabled\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 31 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 19 moveto 35 (- uninit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+251.5 7 moveto 98 (- upnpActionCallback\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 202 480 324 648 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcContentDirectory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 202 480 moveto
+202 648 lineto
+325 648 lineto
+325 480 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 480 moveto
+202 648 lineto
+325 648 lineto
+325 480 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+224 635 moveto 78 (cContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 628 moveto
+325 628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 615 moveto 82 (- mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 202 608 moveto
+325 608 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 595 moveto 93 (+ cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 583 moveto 99 (+ ~cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 571 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 559 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 547 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 535 moveto 40 (- Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 523 moveto 107 (- getSearchCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 511 moveto 94 (- getSortCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 499 moveto 100 (- getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+209.5 487 moveto 43 (- browse\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 261 470 moveto
+262 451 263 432 265 414 curveto
+266 408 266 402 267 396 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 261 480 moveto
+256.5 470 lineto
+261 475 lineto
+261 470 lineto
+261 470 lineto
+261 470 lineto
+261 475 lineto
+265.5 470 lineto
+261 480 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 261 480 moveto
+256.5 470 lineto
+261 475 lineto
+261 470 lineto
+261 470 lineto
+261 470 lineto
+261 475 lineto
+265.5 470 lineto
+261 480 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+265.5 417 moveto 81 (mContentDirectory) alignedtext
+grestore
+% Node3
+gsave
+[ /Rect [ 168 828 276 960 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUpnpService.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 168 828 moveto
+168 960 lineto
+276 960 lineto
+276 828 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 828 moveto
+168 960 lineto
+276 960 lineto
+276 828 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+191.5 947 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 940 moveto
+276 940 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 927 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 168 920 moveto
+276 920 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 907 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 895 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 883 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 871 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 859 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 847 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+176 835 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 231 818 moveto
+235 783 239 740 244 702 curveto
+246 685 249 666 251 648 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 227.51 817.7 moveto
+230 828 lineto
+234.48 818.4 lineto
+closepath stroke
+grestore
+% Node11
+gsave
+[ /Rect [ 46 444 184 684 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcConnectionManager.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 46 444 moveto
+46 684 lineto
+184 684 lineto
+184 444 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 444 moveto
+46 684 lineto
+184 684 lineto
+184 444 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+69 671 moveto 92 (cConnectionManager) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 664 moveto
+184 664 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 651 moveto 94 (- mDefaultConnection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 639 moveto 96 (- mVirtualConnections) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 627 moveto 100 (- mSupportedProtocols) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 46 620 moveto
+184 620 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 607 moveto 107 (+ cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 595 moveto 113 (+ ~cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 583 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 571 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 559 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 547 moveto 47 (- setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 535 moveto 78 (- getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 523 moveto 121 (- getCurrentConnectionIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 511 moveto 122 (- getCurrentConnectionInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 499 moveto 107 (- prepareForConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 487 moveto 101 (- connectionComplete\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 475 moveto 116 (- createVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 463 moveto 121 (- destroyVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+54 451 moveto 110 (- getConnectionIDsCVS\(\)) alignedtext
+grestore
+% Node3->Node11
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 209 818 moveto
+202 782 192 739 179 702 curveto
+177 696 175 690 173 684 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 205.61 818.88 moveto
+211 828 lineto
+212.47 817.51 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 294 732 426 1056 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 294 732 moveto
+294 1056 lineto
+426 1056 lineto
+426 732 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 732 moveto
+294 1056 lineto
+426 1056 lineto
+426 732 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+323.5 1043 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 1036 moveto
+426 1036 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1023 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 1011 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 999 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 987 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 975 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 294 968 moveto
+426 968 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 955 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 943 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 931 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 919 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 907 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 895 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 883 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 871 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 859 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 847 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 835 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 823 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 811 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 799 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 787 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 775 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 763 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 751 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+302 739 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node4->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 361 722 moveto
+360 630 356 515 346 414 curveto
+345 408 345 402 344 396 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 361 732 moveto
+356.5 722 lineto
+361 727 lineto
+361 722 lineto
+361 722 lineto
+361 722 lineto
+361 727 lineto
+365.5 722 lineto
+361 732 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 361 732 moveto
+356.5 722 lineto
+361 727 lineto
+361 722 lineto
+361 722 lineto
+361 722 lineto
+361 727 lineto
+365.5 722 lineto
+361 732 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+362 561 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node4->Node2
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 289 738 moveto
+287 736 286 734 285 732 curveto
+280 723 274 723 270 714 curveto
+262 693 259 670 258 648 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 294 747 moveto
+285.21 740.44 lineto
+291.57 742.63 lineto
+289.14 738.26 lineto
+289.14 738.26 lineto
+289.14 738.26 lineto
+291.57 742.63 lineto
+293.08 736.07 lineto
+294 747 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 294 747 moveto
+285.21 740.44 lineto
+291.57 742.63 lineto
+289.14 738.26 lineto
+289.14 738.26 lineto
+289.14 738.26 lineto
+291.57 742.63 lineto
+293.08 736.07 lineto
+294 747 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+273 705 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 300 1146 420 1350 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 300 1146 moveto
+300 1350 lineto
+420 1350 lineto
+420 1146 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1146 moveto
+300 1350 lineto
+420 1350 lineto
+420 1146 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+314 1337 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1330 moveto
+420 1330 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1317 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1305 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1293 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 300 1286 moveto
+420 1286 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1273 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1261 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1249 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1237 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1225 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1213 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1201 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1189 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1177 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1165 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+308 1153 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 360 1136 moveto
+360 1110 360 1083 360 1056 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 360 1146 moveto
+355.5 1136 lineto
+360 1141 lineto
+360 1136 lineto
+360 1136 lineto
+360 1136 lineto
+360 1141 lineto
+364.5 1136 lineto
+360 1146 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 360 1146 moveto
+355.5 1136 lineto
+360 1141 lineto
+360 1136 lineto
+360 1136 lineto
+360 1136 lineto
+360 1141 lineto
+364.5 1136 lineto
+360 1146 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+360.5 1077 moveto 41 (mFactory) alignedtext
+grestore
+% Node5->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 429 1273 moveto
+435 1268 438 1259 438 1248 curveto
+438 1232 431 1222 420 1218 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 420 1278 moveto
+426.56 1269.21 lineto
+424.37 1275.57 lineto
+428.74 1273.14 lineto
+428.74 1273.14 lineto
+428.74 1273.14 lineto
+424.37 1275.57 lineto
+430.93 1277.08 lineto
+420 1278 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 420 1278 moveto
+426.56 1269.21 lineto
+424.37 1275.57 lineto
+428.74 1273.14 lineto
+428.74 1273.14 lineto
+428.74 1273.14 lineto
+424.37 1275.57 lineto
+430.93 1277.08 lineto
+420 1278 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+438 1245 moveto 46 (mInstance) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 214 1440 330 1752 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 214 1440 moveto
+214 1752 lineto
+331 1752 lineto
+331 1440 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1440 moveto
+214 1752 lineto
+331 1752 lineto
+331 1440 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+233.5 1739 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1732 moveto
+331 1732 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1719 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1707 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1695 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1683 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1671 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1659 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 214 1652 moveto
+331 1652 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1639 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1627 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1615 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1603 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1591 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1579 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1567 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1555 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1543 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1531 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1519 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1507 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1495 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1483 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1471 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1459 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+221.5 1447 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node6->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 227 1430 moveto
+209 1331 201 1207 241 1104 curveto
+252 1077 269 1080 285 1056 curveto
+288 1051 291 1047 294 1042 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 229 1440 moveto
+222.63 1431.08 lineto
+228.02 1435.1 lineto
+227.04 1430.19 lineto
+227.04 1430.19 lineto
+227.04 1430.19 lineto
+228.02 1435.1 lineto
+231.45 1429.31 lineto
+229 1440 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 229 1440 moveto
+222.63 1431.08 lineto
+228.02 1435.1 lineto
+227.04 1430.19 lineto
+227.04 1430.19 lineto
+227.04 1430.19 lineto
+228.02 1435.1 lineto
+231.45 1429.31 lineto
+229 1440 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+241 1245 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 314 1430 moveto
+321 1402 328 1375 334 1350 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 311 1440 moveto
+309.56 1429.13 lineto
+312.44 1435.21 lineto
+313.87 1430.42 lineto
+313.87 1430.42 lineto
+313.87 1430.42 lineto
+312.44 1435.21 lineto
+318.18 1431.71 lineto
+311 1440 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 311 1440 moveto
+309.56 1429.13 lineto
+312.44 1435.21 lineto
+313.87 1430.42 lineto
+313.87 1430.42 lineto
+313.87 1430.42 lineto
+312.44 1435.21 lineto
+318.18 1431.71 lineto
+311 1440 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+319 1413 moveto 50 (mDatabase) alignedtext
+grestore
+% Node6->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 339 1621 moveto
+345 1616 348 1608 348 1596 curveto
+348 1579 341 1569 331 1565 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 331 1627 moveto
+336.3 1617.4 lineto
+335 1624 lineto
+339 1621 lineto
+339 1621 lineto
+339 1621 lineto
+335 1624 lineto
+341.7 1624.6 lineto
+331 1627 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 331 1627 moveto
+336.3 1617.4 lineto
+335 1624 lineto
+339 1621 lineto
+339 1621 lineto
+339 1621 lineto
+335 1624 lineto
+341.7 1624.6 lineto
+331 1627 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+348 1593 moveto 46 (mInstance) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 320 1800 392 1884 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 320 1800 moveto
+320 1884 lineto
+392 1884 lineto
+392 1800 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 1800 moveto
+320 1884 lineto
+392 1884 lineto
+392 1800 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+341.5 1871 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 1864 moveto
+392 1864 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 1851 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 320 1844 moveto
+392 1844 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 1831 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 1819 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+328 1807 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 339 1791 moveto
+335 1779 331 1766 326 1752 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 342 1800 moveto
+334.57 1791.94 lineto
+340.42 1795.26 lineto
+338.84 1790.51 lineto
+338.84 1790.51 lineto
+338.84 1790.51 lineto
+340.42 1795.26 lineto
+343.11 1789.09 lineto
+342 1800 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 342 1800 moveto
+334.57 1791.94 lineto
+340.42 1795.26 lineto
+338.84 1790.51 lineto
+338.84 1790.51 lineto
+338.84 1790.51 lineto
+340.42 1795.26 lineto
+343.11 1789.09 lineto
+342 1800 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+337 1773 moveto 32 (mRows) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 246 1932 332 2076 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 246 1932 moveto
+246 2076 lineto
+332 2076 lineto
+332 1932 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 1932 moveto
+246 2076 lineto
+332 2076 lineto
+332 1932 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+277 2063 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2056 moveto
+332 2056 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2043 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2031 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2019 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 2007 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 246 2000 moveto
+332 2000 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 1987 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 1975 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 1963 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 1951 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+254 1939 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node8->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 270 1922 moveto
+268 1909 267 1897 265 1884 curveto
+261 1841 260 1795 261 1752 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 272 1932 moveto
+265.63 1923.08 lineto
+271.02 1927.1 lineto
+270.04 1922.19 lineto
+270.04 1922.19 lineto
+270.04 1922.19 lineto
+271.02 1927.1 lineto
+274.45 1921.31 lineto
+272 1932 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 272 1932 moveto
+265.63 1923.08 lineto
+271.02 1927.1 lineto
+270.04 1922.19 lineto
+270.04 1922.19 lineto
+270.04 1922.19 lineto
+271.02 1927.1 lineto
+274.45 1921.31 lineto
+272 1932 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+268 1839 moveto 46 (mLastRow) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 323 1923 moveto
+329 1909 334 1896 339 1884 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 319 1932 moveto
+318.95 1921.03 lineto
+321.03 1927.43 lineto
+323.06 1922.86 lineto
+323.06 1922.86 lineto
+323.06 1922.86 lineto
+321.03 1927.43 lineto
+327.17 1924.69 lineto
+319 1932 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 319 1932 moveto
+318.95 1921.03 lineto
+321.03 1927.43 lineto
+323.06 1922.86 lineto
+323.06 1922.86 lineto
+323.06 1922.86 lineto
+321.03 1927.43 lineto
+327.17 1924.69 lineto
+319 1932 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+332 1905 moveto 46 (mLastRow) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 502 1104 624 1392 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 502 1104 moveto
+502 1392 lineto
+624 1392 lineto
+624 1104 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1104 moveto
+502 1392 lineto
+624 1392 lineto
+624 1104 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+528.5 1379 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1372 moveto
+624 1372 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1359 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 502 1352 moveto
+624 1352 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1339 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1327 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1315 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1303 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1291 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1279 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1267 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1255 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1243 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1231 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1219 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1207 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1195 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1183 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1171 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1159 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1147 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1135 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1123 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+510 1111 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node9->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 497 1112 moveto
+496 1109 494 1106 493 1104 curveto
+472 1067 448 1028 426 993 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 502 1121 moveto
+493.21 1114.44 lineto
+499.57 1116.63 lineto
+497.14 1112.26 lineto
+497.14 1112.26 lineto
+497.14 1112.26 lineto
+499.57 1116.63 lineto
+501.08 1110.07 lineto
+502 1121 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 502 1121 moveto
+493.21 1114.44 lineto
+499.57 1116.63 lineto
+497.14 1112.26 lineto
+497.14 1112.26 lineto
+497.14 1112.26 lineto
+499.57 1116.63 lineto
+501.08 1110.07 lineto
+502 1121 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+481 1077 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+% Node10
+gsave
+[ /Rect [ 454 462 570 666 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPWebServer.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 454 462 moveto
+454 666 lineto
+570 666 lineto
+570 462 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 462 moveto
+454 666 lineto
+570 666 lineto
+570 462 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+472.5 653 moveto 79 (cUPnPWebServer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 646 moveto
+570 646 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 633 moveto 45 (- mRootdir) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 621 moveto 52 (- mInstance) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 609 moveto 97 (- mVirtualDirCallbacks) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 454 602 moveto
+570 602 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 589 moveto 28 (+ init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 577 moveto 38 (+ uninit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 565 moveto 100 (+ ~cUPnPWebServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 553 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 541 moveto 45 (+ getInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 529 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 517 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 505 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 493 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 481 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+462 469 moveto 91 (- cUPnPWebServer\(\)) alignedtext
+grestore
+% Node10->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 451 453 moveto
+428 411 402 365 379 322 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 456 462 moveto
+447.21 455.44 lineto
+453.57 457.63 lineto
+451.14 453.26 lineto
+451.14 453.26 lineto
+451.14 453.26 lineto
+453.57 457.63 lineto
+455.08 451.07 lineto
+456 462 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 456 462 moveto
+447.21 455.44 lineto
+453.57 457.63 lineto
+451.14 453.26 lineto
+451.14 453.26 lineto
+451.14 453.26 lineto
+453.57 457.63 lineto
+455.08 451.07 lineto
+456 462 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+435 417 moveto 56 (mWebServer) alignedtext
+grestore
+% Node10->Node10
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 579 585 moveto
+585 580 588 574 588 564 curveto
+588 550 581 542 570 539 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 570 589 moveto
+577.31 580.83 lineto
+574.57 586.97 lineto
+579.14 584.94 lineto
+579.14 584.94 lineto
+579.14 584.94 lineto
+574.57 586.97 lineto
+580.97 589.05 lineto
+570 589 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 570 589 moveto
+577.31 580.83 lineto
+574.57 586.97 lineto
+579.14 584.94 lineto
+579.14 584.94 lineto
+579.14 584.94 lineto
+574.57 586.97 lineto
+580.97 589.05 lineto
+570 589 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+588 561 moveto 46 (mInstance) alignedtext
+grestore
+% Node11->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 157 434 moveto
+159 427 162 420 166 414 curveto
+188 370 217 325 244 287 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 153 444 moveto
+152.54 433.04 lineto
+154.86 439.36 lineto
+156.71 434.72 lineto
+156.71 434.72 lineto
+156.71 434.72 lineto
+154.86 439.36 lineto
+160.89 436.39 lineto
+153 444 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 153 444 moveto
+152.54 433.04 lineto
+154.86 439.36 lineto
+156.71 434.72 lineto
+156.71 434.72 lineto
+156.71 434.72 lineto
+154.86 439.36 lineto
+160.89 436.39 lineto
+153 444 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+166.5 417 moveto 95 (mConnectionManager) alignedtext
+grestore
+% Node12
+gsave
+[ /Rect [ 0 798 150 990 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcVirtualConnection.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 798 moveto
+0 990 lineto
+150 990 lineto
+150 798 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 798 moveto
+0 990 lineto
+150 990 lineto
+150 798 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+34 977 moveto 82 (cVirtualConnection) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 970 moveto
+150 970 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 957 moveto 101 (- mRemoteProtocolInfo) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 945 moveto 134 (- mRemoteConnectionManager) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 933 moveto 53 (- mDirection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 921 moveto 107 (- mRemoteConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 909 moveto 73 (- mConnectionID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 897 moveto 77 (- mAVTransportID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 885 moveto 41 (- mRcsID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 873 moveto 43 (- mStatus) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 866 moveto
+150 866 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 853 moveto 94 (- cVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 841 moveto 80 (- getStatusString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 829 moveto 89 (- getDirectionString\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 817 moveto 64 (- getDirection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 805 moveto 103 (- getConnectionStatus\(\)) alignedtext
+grestore
+% Node12->Node11
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 83 788 moveto
+85 760 87 730 91 702 curveto
+92 696 93 690 93 684 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 82 798 moveto
+78.52 787.6 lineto
+82.5 793.02 lineto
+83 788.05 lineto
+83 788.05 lineto
+83 788.05 lineto
+82.5 793.02 lineto
+87.47 788.5 lineto
+82 798 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 82 798 moveto
+78.52 787.6 lineto
+82.5 793.02 lineto
+83 788.05 lineto
+83 788.05 lineto
+83 788.05 lineto
+82.5 793.02 lineto
+87.47 788.5 lineto
+82 798 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+91 705 moveto 88 (mDefaultConnection) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 678 2120
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPServer__coll__graph.md5 b/doc/latex/classcUPnPServer__coll__graph.md5
new file mode 100644
index 0000000..326354b
--- /dev/null
+++ b/doc/latex/classcUPnPServer__coll__graph.md5
@@ -0,0 +1 @@
+b490a4351c5fe23ac9c224404c139187 \ No newline at end of file
diff --git a/doc/latex/classcUPnPServer__coll__graph.pdf b/doc/latex/classcUPnPServer__coll__graph.pdf
new file mode 100644
index 0000000..2e323da
--- /dev/null
+++ b/doc/latex/classcUPnPServer__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPVideoBroadcastMediator.tex b/doc/latex/classcUPnPVideoBroadcastMediator.tex
new file mode 100644
index 0000000..d8ae253
--- /dev/null
+++ b/doc/latex/classcUPnPVideoBroadcastMediator.tex
@@ -0,0 +1,153 @@
+\hypertarget{classcUPnPVideoBroadcastMediator}{
+\section{cUPnPVideoBroadcastMediator Class Reference}
+\label{classcUPnPVideoBroadcastMediator}\index{cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPVideoBroadcastMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPVideoBroadcastMediator__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPVideoBroadcastMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPVideoBroadcastMediator__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPVideoBroadcastMediator_58179b50ee5a5952cff70aa4473845f9}{cUPnPVideoBroadcastMediator} (\hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$MediaDatabase)
+\item
+virtual \hyperlink{classcUPnPClassVideoBroadcast}{cUPnPClassVideoBroadcast} $\ast$ \hyperlink{classcUPnPVideoBroadcastMediator_14fefa90807d40d91a80712729af2beb}{createObject} (const char $\ast$Title, bool Restricted)
+\item
+virtual \hyperlink{classcUPnPClassVideoBroadcast}{cUPnPClassVideoBroadcast} $\ast$ \hyperlink{classcUPnPVideoBroadcastMediator_c13bf0f008f49b0ab499542391998a24}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual int \hyperlink{classcUPnPVideoBroadcastMediator_822f9c93928a7dbe9491c8cccbf53f95}{objectToDatabase} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPVideoBroadcastMediator_33237e5d850c107d37be37c1646b17d7}{databaseToObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, \hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+VideoBroadcast Mediator
+
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPVideoBroadcastMediator_58179b50ee5a5952cff70aa4473845f9}{
+\index{cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}!cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}}
+\index{cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}!cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}}
+\subsubsection[{cUPnPVideoBroadcastMediator}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator ({\bf cMediaDatabase} $\ast$ {\em MediaDatabase})}}
+\label{classcUPnPVideoBroadcastMediator_58179b50ee5a5952cff70aa4473845f9}
+
+
+Constructor of video broadcast mediator
+
+This creates a new video broadcast mediator with which it is possible to create new instances of VideoBroadcast objects.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em MediaDatabase}]the media database \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPVideoBroadcastMediator_14fefa90807d40d91a80712729af2beb}{
+\index{cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}!createObject@{createObject}}
+\index{createObject@{createObject}!cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassVideoBroadcast} $\ast$ cUPnPVideoBroadcastMediator::createObject (const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPVideoBroadcastMediator_14fefa90807d40d91a80712729af2beb}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}{cUPnPVideoItemMediator}.\hypertarget{classcUPnPVideoBroadcastMediator_33237e5d850c107d37be37c1646b17d7}{
+\index{cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}!databaseToObject@{databaseToObject}}
+\index{databaseToObject@{databaseToObject}!cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}}
+\subsubsection[{databaseToObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPVideoBroadcastMediator::databaseToObject ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ {\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPVideoBroadcastMediator_33237e5d850c107d37be37c1646b17d7}
+
+
+Loads an object from database
+
+This loads an object from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be loaded \item[{\em ID}]the object ID of that object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_3f7ec1937b2b95e3ec5462470971d350}{cUPnPVideoItemMediator}.\hypertarget{classcUPnPVideoBroadcastMediator_c13bf0f008f49b0ab499542391998a24}{
+\index{cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassVideoBroadcast} $\ast$ cUPnPVideoBroadcastMediator::getObject ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPVideoBroadcastMediator_c13bf0f008f49b0ab499542391998a24}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}{cUPnPVideoItemMediator}.\hypertarget{classcUPnPVideoBroadcastMediator_822f9c93928a7dbe9491c8cccbf53f95}{
+\index{cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}!objectToDatabase@{objectToDatabase}}
+\index{objectToDatabase@{objectToDatabase}!cUPnPVideoBroadcastMediator@{cUPnPVideoBroadcastMediator}}
+\subsubsection[{objectToDatabase}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPVideoBroadcastMediator::objectToDatabase ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPVideoBroadcastMediator_822f9c93928a7dbe9491c8cccbf53f95}
+
+
+Store the object in the database
+
+This stores the information of an object in the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPVideoItemMediator_984e10738bca46ce38307d5f60e26bd3}{cUPnPVideoItemMediator}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.eps b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.eps
new file mode 100644
index 0000000..55c05c6
--- /dev/null
+++ b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.eps
@@ -0,0 +1,1471 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 647 2090
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 611 2054 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 59 0 moveto
+59 120 lineto
+233 120 lineto
+233 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 59 0 moveto
+59 120 lineto
+233 120 lineto
+233 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+77.5 107 moveto 137 (cUPnPVideoBroadcastMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 59 100 moveto
+233 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 59 80 moveto
+233 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+67 67 moveto 152 (+ cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+67 55 moveto 158 (+ ~cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+67 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+67 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+67 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+67 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 71 158 221 278 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 71 158 moveto
+71 278 lineto
+221 278 lineto
+221 158 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 158 moveto
+71 278 lineto
+221 278 lineto
+221 158 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+89.5 265 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 258 moveto
+221 258 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 245 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 238 moveto
+221 238 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 225 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 213 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 201 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 189 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 177 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 165 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 148 moveto
+146 138 146 129 146 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 148 moveto
+146 158 lineto
+149.5 148 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 84 316 208 436 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 84 316 moveto
+84 436 lineto
+209 436 lineto
+209 316 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 316 moveto
+84 436 lineto
+209 436 lineto
+209 316 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+102 423 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 416 moveto
+209 416 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 403 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 396 moveto
+209 396 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 383 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 371 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 359 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 347 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 335 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 323 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 306 moveto
+146 296 146 287 146 278 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 306 moveto
+146 316 lineto
+149.5 306 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 79 474 213 654 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 79 474 moveto
+79 654 lineto
+213 654 lineto
+213 474 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 474 moveto
+79 654 lineto
+213 654 lineto
+213 474 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97.5 641 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 634 moveto
+213 634 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 621 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 609 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 602 moveto
+213 602 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 589 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 577 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 565 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 553 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 541 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 529 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 517 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 505 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 493 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 481 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 464 moveto
+146 454 146 445 146 436 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 464 moveto
+146 474 lineto
+149.5 464 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 0 804 118 924 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 804 moveto
+0 924 lineto
+118 924 lineto
+118 804 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 804 moveto
+0 924 lineto
+118 924 lineto
+118 804 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 911 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 904 moveto
+118 904 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+57.5 891 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 884 moveto
+118 884 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 871 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 859 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 847 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 835 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 823 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 811 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 80 794 moveto
+92 752 107 699 120 654 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 76.52 793.42 moveto
+77 804 lineto
+83.23 795.43 lineto
+closepath stroke
+grestore
+% Node6
+gsave
+[ /Rect [ 199 702 331 1026 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 199 702 moveto
+199 1026 lineto
+331 1026 lineto
+331 702 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 702 moveto
+199 1026 lineto
+331 1026 lineto
+331 702 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+228.5 1013 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 1006 moveto
+331 1006 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 993 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 981 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 969 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 957 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 945 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 938 moveto
+331 938 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 925 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 913 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 901 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 889 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 877 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 865 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 853 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 841 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 829 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 817 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 805 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 793 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 781 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 769 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 757 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 745 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 733 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 721 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 709 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node6->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 197 693 moveto
+192 679 187 666 182 654 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 201 702 moveto
+192.83 694.69 lineto
+198.97 697.43 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+198.97 697.43 lineto
+201.05 691.03 lineto
+201 702 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 201 702 moveto
+192.83 694.69 lineto
+198.97 697.43 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+196.94 692.86 lineto
+198.97 697.43 lineto
+201.05 691.03 lineto
+201 702 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+192 675 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 279 1116 399 1320 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 279 1116 moveto
+279 1320 lineto
+399 1320 lineto
+399 1116 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1116 moveto
+279 1320 lineto
+399 1320 lineto
+399 1116 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+293 1307 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1300 moveto
+399 1300 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1287 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1275 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1263 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1256 moveto
+399 1256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1243 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1231 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1219 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1207 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1195 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1183 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1171 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1159 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1147 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1135 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1123 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 316 1106 moveto
+311 1081 305 1053 299 1026 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 318 1116 moveto
+311.63 1107.08 lineto
+317.02 1111.1 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+317.02 1111.1 lineto
+320.45 1105.31 lineto
+318 1116 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 318 1116 moveto
+311.63 1107.08 lineto
+317.02 1111.1 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+316.04 1106.19 lineto
+317.02 1111.1 lineto
+320.45 1105.31 lineto
+318 1116 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+306.5 1047 moveto 41 (mFactory) alignedtext
+grestore
+% Node7->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 408 1243 moveto
+414 1238 417 1229 417 1218 curveto
+417 1202 410 1192 399 1188 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 399 1248 moveto
+405.56 1239.21 lineto
+403.37 1245.57 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+403.37 1245.57 lineto
+409.93 1247.08 lineto
+399 1248 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 399 1248 moveto
+405.56 1239.21 lineto
+403.37 1245.57 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+407.74 1243.14 lineto
+403.37 1245.57 lineto
+409.93 1247.08 lineto
+399 1248 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+417 1215 moveto 46 (mInstance) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 153 1410 269 1722 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 153 1410 moveto
+153 1722 lineto
+270 1722 lineto
+270 1410 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1410 moveto
+153 1722 lineto
+270 1722 lineto
+270 1410 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+172.5 1709 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1702 moveto
+270 1702 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1689 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1677 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1665 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1653 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1641 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1629 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1622 moveto
+270 1622 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1609 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1597 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1585 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1573 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1561 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1549 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1537 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1525 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1513 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1501 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1489 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1477 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1465 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1453 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1441 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1429 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1417 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node8->Node4
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 196 1400 moveto
+187 1300 177 1170 169 1056 curveto
+160 915 153 753 149 654 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 197 1410 moveto
+191.53 1400.5 lineto
+196.5 1405.02 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196.5 1405.02 lineto
+200.48 1399.6 lineto
+197 1410 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 197 1410 moveto
+191.53 1400.5 lineto
+196.5 1405.02 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196 1400.05 lineto
+196.5 1405.02 lineto
+200.48 1399.6 lineto
+197 1410 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+169 1047 moveto 50 (mDatabase) alignedtext
+grestore
+% Node8->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 206 1400 moveto
+205 1304 207 1182 220 1074 curveto
+222 1058 224 1042 227 1026 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 206 1410 moveto
+201.5 1400 lineto
+206 1405 lineto
+206 1400 lineto
+206 1400 lineto
+206 1400 lineto
+206 1405 lineto
+210.5 1400 lineto
+206 1410 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 206 1410 moveto
+201.5 1400 lineto
+206 1405 lineto
+206 1400 lineto
+206 1400 lineto
+206 1400 lineto
+206 1405 lineto
+210.5 1400 lineto
+206 1410 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+220 1215 moveto 50 (mDatabase) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 271 1401 moveto
+281 1373 292 1345 301 1320 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 268 1410 moveto
+266.89 1399.09 lineto
+269.58 1405.26 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+269.58 1405.26 lineto
+275.43 1401.94 lineto
+268 1410 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 268 1410 moveto
+266.89 1399.09 lineto
+269.58 1405.26 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+271.16 1400.51 lineto
+269.58 1405.26 lineto
+275.43 1401.94 lineto
+268 1410 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+280 1383 moveto 50 (mDatabase) alignedtext
+grestore
+% Node8->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1591 moveto
+284 1586 287 1578 287 1566 curveto
+287 1549 280 1539 270 1535 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 270 1597 moveto
+275.3 1587.4 lineto
+274 1594 lineto
+278 1591 lineto
+278 1591 lineto
+278 1591 lineto
+274 1594 lineto
+280.7 1594.6 lineto
+270 1597 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 270 1597 moveto
+275.3 1587.4 lineto
+274 1594 lineto
+278 1591 lineto
+278 1591 lineto
+278 1591 lineto
+274 1594 lineto
+280.7 1594.6 lineto
+270 1597 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+287 1563 moveto 46 (mInstance) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 259 1770 331 1854 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 259 1770 moveto
+259 1854 lineto
+331 1854 lineto
+331 1770 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1770 moveto
+259 1854 lineto
+331 1854 lineto
+331 1770 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+280.5 1841 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1834 moveto
+331 1834 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1821 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1814 moveto
+331 1814 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1801 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1789 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1777 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node9->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1761 moveto
+274 1749 270 1736 265 1722 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 281 1770 moveto
+273.57 1761.94 lineto
+279.42 1765.26 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+279.42 1765.26 lineto
+282.11 1759.09 lineto
+281 1770 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 281 1770 moveto
+273.57 1761.94 lineto
+279.42 1765.26 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+277.84 1760.51 lineto
+279.42 1765.26 lineto
+282.11 1759.09 lineto
+281 1770 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+276 1743 moveto 32 (mRows) alignedtext
+grestore
+% Node10
+gsave
+[ /Rect [ 185 1902 271 2046 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 185 1902 moveto
+185 2046 lineto
+271 2046 lineto
+271 1902 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1902 moveto
+185 2046 lineto
+271 2046 lineto
+271 1902 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+216 2033 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 2026 moveto
+271 2026 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 2013 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 2001 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1989 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1977 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1970 moveto
+271 1970 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1957 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1945 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1933 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1921 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1909 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node10->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 209 1892 moveto
+207 1879 206 1867 204 1854 curveto
+200 1811 199 1765 200 1722 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 211 1902 moveto
+204.63 1893.08 lineto
+210.02 1897.1 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+210.02 1897.1 lineto
+213.45 1891.31 lineto
+211 1902 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 211 1902 moveto
+204.63 1893.08 lineto
+210.02 1897.1 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+209.04 1892.19 lineto
+210.02 1897.1 lineto
+213.45 1891.31 lineto
+211 1902 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+207 1809 moveto 46 (mLastRow) alignedtext
+grestore
+% Node10->Node9
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 262 1893 moveto
+268 1879 273 1866 278 1854 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 258 1902 moveto
+257.95 1891.03 lineto
+260.03 1897.43 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+260.03 1897.43 lineto
+266.17 1894.69 lineto
+258 1902 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 258 1902 moveto
+257.95 1891.03 lineto
+260.03 1897.43 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+262.06 1892.86 lineto
+260.03 1897.43 lineto
+266.17 1894.69 lineto
+258 1902 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+271 1875 moveto 46 (mLastRow) alignedtext
+grestore
+% Node11
+gsave
+[ /Rect [ 481 1074 603 1362 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 481 1074 moveto
+481 1362 lineto
+603 1362 lineto
+603 1074 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1074 moveto
+481 1362 lineto
+603 1362 lineto
+603 1074 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+507.5 1349 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1342 moveto
+603 1342 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1329 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1322 moveto
+603 1322 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1309 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1297 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1285 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1273 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1261 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1249 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1237 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1225 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1213 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1201 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1189 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1177 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1165 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1153 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1141 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1129 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1117 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1105 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1093 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1081 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node11->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 475 1078 moveto
+474 1077 473 1075 472 1074 curveto
+431 1016 375 960 331 920 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 481 1087 moveto
+471.71 1081.18 lineto
+478.23 1082.84 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+478.23 1082.84 lineto
+479.2 1076.18 lineto
+481 1087 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 481 1087 moveto
+471.71 1081.18 lineto
+478.23 1082.84 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+475.45 1078.68 lineto
+478.23 1082.84 lineto
+479.2 1076.18 lineto
+481 1087 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+457 1047 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 647 2090
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.md5 b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.md5
new file mode 100644
index 0000000..3b0455a
--- /dev/null
+++ b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.md5
@@ -0,0 +1 @@
+1386d6d494a222c63ad2cb3751d5b1f4 \ No newline at end of file
diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf
new file mode 100644
index 0000000..76fecb5
--- /dev/null
+++ b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps
new file mode 100644
index 0000000..aeeb510
--- /dev/null
+++ b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps
@@ -0,0 +1,562 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 218 848
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 182 812 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+174 120 lineto
+174 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+174 120 lineto
+174 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 107 moveto 137 (cUPnPVideoBroadcastMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 100 moveto
+174 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 80 moveto
+174 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 152 (+ cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 158 (+ ~cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 12 156 162 276 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 12 156 moveto
+12 276 lineto
+162 276 lineto
+162 156 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 12 156 moveto
+12 276 lineto
+162 276 lineto
+162 156 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+30.5 263 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 12 256 moveto
+162 256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 243 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 12 236 moveto
+162 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20 223 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20 211 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20 199 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20 187 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20 175 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+20 163 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 87 146 moveto
+87 137 87 129 87 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 83.5 146 moveto
+87 156 lineto
+90.5 146 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 25 312 149 432 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 25 312 moveto
+25 432 lineto
+150 432 lineto
+150 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 25 312 moveto
+25 432 lineto
+150 432 lineto
+150 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+43 419 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 25 412 moveto
+150 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 25 392 moveto
+150 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+32.5 379 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+32.5 367 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+32.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+32.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+32.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+32.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 87 302 moveto
+87 293 87 285 87 276 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 83.5 302 moveto
+87 312 lineto
+90.5 302 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 20 468 154 648 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 20 468 moveto
+20 648 lineto
+154 648 lineto
+154 468 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 468 moveto
+20 648 lineto
+154 648 lineto
+154 468 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+38.5 635 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 628 moveto
+154 628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 615 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 603 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 20 596 moveto
+154 596 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 583 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 571 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 559 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 547 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 535 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 523 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 511 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 499 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 487 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+28 475 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 87 458 moveto
+87 449 87 441 87 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 83.5 458 moveto
+87 468 lineto
+90.5 458 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 28 684 146 804 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 28 684 moveto
+28 804 lineto
+146 804 lineto
+146 684 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 28 684 moveto
+28 804 lineto
+146 804 lineto
+146 684 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+46.5 791 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 28 784 moveto
+146 784 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+85.5 771 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 28 764 moveto
+146 764 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+36 751 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+36 739 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+36 727 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+36 715 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+36 703 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+36 691 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node5->Node4
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 87 674 moveto
+87 665 87 656 87 648 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 83.5 674 moveto
+87 684 lineto
+90.5 674 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 218 848
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.md5 b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.md5
new file mode 100644
index 0000000..39cdec4
--- /dev/null
+++ b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.md5
@@ -0,0 +1 @@
+9e2f28ebe3d86a4a81b1a5c50bccba2e \ No newline at end of file
diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf
new file mode 100644
index 0000000..e10a466
--- /dev/null
+++ b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPVideoItemMediator.tex b/doc/latex/classcUPnPVideoItemMediator.tex
new file mode 100644
index 0000000..a2cb4c1
--- /dev/null
+++ b/doc/latex/classcUPnPVideoItemMediator.tex
@@ -0,0 +1,161 @@
+\hypertarget{classcUPnPVideoItemMediator}{
+\section{cUPnPVideoItemMediator Class Reference}
+\label{classcUPnPVideoItemMediator}\index{cUPnPVideoItemMediator@{cUPnPVideoItemMediator}}
+}
+{\tt \#include $<$object.h$>$}
+
+Inheritance diagram for cUPnPVideoItemMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUPnPVideoItemMediator__inherit__graph}
+\end{center}
+\end{figure}
+Collaboration diagram for cUPnPVideoItemMediator:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=400pt]{classcUPnPVideoItemMediator__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{classcUPnPVideoItemMediator_1f56334e155773b6c3d86f481f4ad96b}{cUPnPVideoItemMediator} (\hyperlink{classcMediaDatabase}{cMediaDatabase} $\ast$MediaDatabase)
+\item
+virtual \hyperlink{classcUPnPClassVideoItem}{cUPnPClassVideoItem} $\ast$ \hyperlink{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}{createObject} (const char $\ast$Title, bool Restricted)
+\item
+virtual \hyperlink{classcUPnPClassVideoItem}{cUPnPClassVideoItem} $\ast$ \hyperlink{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}{getObject} (\hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual int \hyperlink{classcUPnPVideoItemMediator_984e10738bca46ce38307d5f60e26bd3}{objectToDatabase} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object)
+\item
+virtual int \hyperlink{classcUPnPVideoItemMediator_3f7ec1937b2b95e3ec5462470971d350}{databaseToObject} (\hyperlink{classcUPnPClassObject}{cUPnPClassObject} $\ast$Object, \hyperlink{structcUPnPObjectID}{cUPnPObjectID} ID)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+VideoItem Mediator
+
+This is the interface between the objects and the database. It is possible to create new objects, stores objects in the database as well as removing them from it.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{classcUPnPVideoItemMediator_1f56334e155773b6c3d86f481f4ad96b}{
+\index{cUPnPVideoItemMediator@{cUPnPVideoItemMediator}!cUPnPVideoItemMediator@{cUPnPVideoItemMediator}}
+\index{cUPnPVideoItemMediator@{cUPnPVideoItemMediator}!cUPnPVideoItemMediator@{cUPnPVideoItemMediator}}
+\subsubsection[{cUPnPVideoItemMediator}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPVideoItemMediator::cUPnPVideoItemMediator ({\bf cMediaDatabase} $\ast$ {\em MediaDatabase})}}
+\label{classcUPnPVideoItemMediator_1f56334e155773b6c3d86f481f4ad96b}
+
+
+Constructor of videoitem mediator
+
+This creates a new videoitem mediator with which it is possible to create new instances of VideoItem objects.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em MediaDatabase}]the media database \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}{
+\index{cUPnPVideoItemMediator@{cUPnPVideoItemMediator}!createObject@{createObject}}
+\index{createObject@{createObject}!cUPnPVideoItemMediator@{cUPnPVideoItemMediator}}
+\subsubsection[{createObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassVideoItem} $\ast$ cUPnPVideoItemMediator::createObject (const char $\ast$ {\em Title}, \/ bool {\em Restricted})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPVideoItemMediator_27e001142c3651c36dfd3b7c450414c0}
+
+
+Creates an object
+
+This creates a new UPnP object with the specific title and the restriction.
+
+\begin{Desc}
+\item[Returns:]the newly created object \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Title}]the title of that object \item[{\em Restricted}]the restriction of the object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPItemMediator_e2fd4cf5e6435f1eeadd11f9a99cd2db}{cUPnPItemMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoBroadcastMediator_14fefa90807d40d91a80712729af2beb}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_29d40a311b7283cc4fba36860ac8c935}{cUPnPMovieMediator}.\hypertarget{classcUPnPVideoItemMediator_3f7ec1937b2b95e3ec5462470971d350}{
+\index{cUPnPVideoItemMediator@{cUPnPVideoItemMediator}!databaseToObject@{databaseToObject}}
+\index{databaseToObject@{databaseToObject}!cUPnPVideoItemMediator@{cUPnPVideoItemMediator}}
+\subsubsection[{databaseToObject}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPVideoItemMediator::databaseToObject ({\bf cUPnPClassObject} $\ast$ {\em Object}, \/ {\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPVideoItemMediator_3f7ec1937b2b95e3ec5462470971d350}
+
+
+Loads an object from database
+
+This loads an object from the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be loaded \item[{\em ID}]the object ID of that object \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPItemMediator_1f3645ebe0a33a81d0b3f22060dc4761}{cUPnPItemMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoBroadcastMediator_33237e5d850c107d37be37c1646b17d7}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_542135e9c1051b57a8f6f5ecc0c1ede3}{cUPnPMovieMediator}.\hypertarget{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}{
+\index{cUPnPVideoItemMediator@{cUPnPVideoItemMediator}!getObject@{getObject}}
+\index{getObject@{getObject}!cUPnPVideoItemMediator@{cUPnPVideoItemMediator}}
+\subsubsection[{getObject}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPClassVideoItem} $\ast$ cUPnPVideoItemMediator::getObject ({\bf cUPnPObjectID} {\em ID})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}}
+\label{classcUPnPVideoItemMediator_dd8927340a69d247965ef9250adefb21}
+
+
+Get an object
+
+Retrieves a UPnP object from the database and stores its information in the object. The object is obtained via its object ID.
+
+\begin{Desc}
+\item[Returns:]the object, found in the database \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]the object ID \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPItemMediator_81411b2a472ade71d73a9c8ddc2a7990}{cUPnPItemMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoBroadcastMediator_c13bf0f008f49b0ab499542391998a24}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_d85b240eb54efd9ab46c440b51c71e83}{cUPnPMovieMediator}.\hypertarget{classcUPnPVideoItemMediator_984e10738bca46ce38307d5f60e26bd3}{
+\index{cUPnPVideoItemMediator@{cUPnPVideoItemMediator}!objectToDatabase@{objectToDatabase}}
+\index{objectToDatabase@{objectToDatabase}!cUPnPVideoItemMediator@{cUPnPVideoItemMediator}}
+\subsubsection[{objectToDatabase}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPVideoItemMediator::objectToDatabase ({\bf cUPnPClassObject} $\ast$ {\em Object})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUPnPVideoItemMediator_984e10738bca46ce38307d5f60e26bd3}
+
+
+Store the object in the database
+
+This stores the information of an object in the database
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt $<$0},} in case of an error\item {\bf {\tt 0},} otherwise \end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Object}]the object to be saved \end{description}
+\end{Desc}
+
+
+Reimplemented from \hyperlink{classcUPnPItemMediator_6d954b1cfdc4a7d55981c6ebff9d6d04}{cUPnPItemMediator}.
+
+Reimplemented in \hyperlink{classcUPnPVideoBroadcastMediator_822f9c93928a7dbe9491c8cccbf53f95}{cUPnPVideoBroadcastMediator}, and \hyperlink{classcUPnPMovieMediator_61ab6dcaf2417898428ddf1f635788b7}{cUPnPMovieMediator}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+database/object.h\item
+database/object.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPVideoItemMediator__coll__graph.eps b/doc/latex/classcUPnPVideoItemMediator__coll__graph.eps
new file mode 100644
index 0000000..7399be7
--- /dev/null
+++ b/doc/latex/classcUPnPVideoItemMediator__coll__graph.eps
@@ -0,0 +1,1397 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 647 1932
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 611 1896 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 71 0 moveto
+71 120 lineto
+221 120 lineto
+221 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 0 moveto
+71 120 lineto
+221 120 lineto
+221 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+89.5 107 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 100 moveto
+221 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 71 80 moveto
+221 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 67 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 55 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+79 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 84 158 208 278 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 84 158 moveto
+84 278 lineto
+209 278 lineto
+209 158 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 158 moveto
+84 278 lineto
+209 278 lineto
+209 158 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+102 265 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 258 moveto
+209 258 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+144.5 245 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 238 moveto
+209 238 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 225 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 213 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 201 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 189 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 177 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+91.5 165 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 148 moveto
+146 138 146 129 146 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 148 moveto
+146 158 lineto
+149.5 148 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 79 316 213 496 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 79 316 moveto
+79 496 lineto
+213 496 lineto
+213 316 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 316 moveto
+79 496 lineto
+213 496 lineto
+213 316 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97.5 483 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 476 moveto
+213 476 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 463 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 451 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 79 444 moveto
+213 444 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 431 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 419 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 407 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 395 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 383 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 371 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 359 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 347 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 335 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+87 323 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 146 306 moveto
+146 296 146 287 146 278 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 142.5 306 moveto
+146 316 lineto
+149.5 306 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 0 646 118 766 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 646 moveto
+0 766 lineto
+118 766 lineto
+118 646 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 646 moveto
+0 766 lineto
+118 766 lineto
+118 646 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 753 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 746 moveto
+118 746 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+57.5 733 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 726 moveto
+118 726 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 713 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 701 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 689 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 677 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 665 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 653 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 80 636 moveto
+92 594 107 541 120 496 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 76.52 635.42 moveto
+77 646 lineto
+83.23 637.43 lineto
+closepath stroke
+grestore
+% Node5
+gsave
+[ /Rect [ 199 544 331 868 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediaDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 199 544 moveto
+199 868 lineto
+331 868 lineto
+331 544 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 544 moveto
+199 868 lineto
+331 868 lineto
+331 544 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+228.5 855 moveto 73 (cMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 848 moveto
+331 848 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 835 moveto 89 (- mSystemUpdateID) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 823 moveto 47 (- mFactory) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 811 moveto 48 (- mObjects) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 799 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 787 moveto 96 (- mLastInsertObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 199 780 moveto
+331 780 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 767 moveto 103 (+ getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 755 moveto 116 (+ getContainerUpdateIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 743 moveto 88 (+ cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 731 moveto 94 (+ ~cMediaDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 719 moveto 69 (+ addFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 707 moveto 107 (+ getObjectByFastFind\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 695 moveto 79 (+ getObjectByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 683 moveto 46 (+ browse\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 671 moveto 44 (+ search\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 659 moveto 84 (- getNextObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 647 moveto 67 (- cacheObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 635 moveto 86 (- prepareDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 623 moveto 71 (- loadChannels\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 611 moveto 79 (- loadRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 599 moveto 98 (- updateChannelEPG\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 587 moveto 90 (- updateRecordings\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 575 moveto 25 (- init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 563 moveto 85 (- updateSystemID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+207 551 moveto 40 (- Action\(\)) alignedtext
+grestore
+% Node5->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 197 535 moveto
+192 521 187 508 182 496 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 201 544 moveto
+192.83 536.69 lineto
+198.97 539.43 lineto
+196.94 534.86 lineto
+196.94 534.86 lineto
+196.94 534.86 lineto
+198.97 539.43 lineto
+201.05 533.03 lineto
+201 544 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 201 544 moveto
+192.83 536.69 lineto
+198.97 539.43 lineto
+196.94 534.86 lineto
+196.94 534.86 lineto
+196.94 534.86 lineto
+198.97 539.43 lineto
+201.05 533.03 lineto
+201 544 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+192 517 moveto 76 (mMediaDatabase) alignedtext
+grestore
+% Node6
+gsave
+[ /Rect [ 279 958 399 1162 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectFactory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 279 958 moveto
+279 1162 lineto
+399 1162 lineto
+399 958 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 958 moveto
+279 1162 lineto
+399 1162 lineto
+399 958 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+293 1149 moveto 92 (cUPnPObjectFactory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1142 moveto
+399 1142 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1129 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1117 moveto 57 (- mMediators) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1105 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 279 1098 moveto
+399 1098 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1085 moveto 85 (+ registerMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1073 moveto 95 (+ unregisterMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1061 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1049 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1037 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1025 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1013 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 1001 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 989 moveto 87 (- findMediatorByID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 977 moveto 102 (- findMediatorByClass\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+287 965 moveto 104 (- cUPnPObjectFactory\(\)) alignedtext
+grestore
+% Node6->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 316 948 moveto
+311 923 305 895 299 868 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 318 958 moveto
+311.63 949.08 lineto
+317.02 953.1 lineto
+316.04 948.19 lineto
+316.04 948.19 lineto
+316.04 948.19 lineto
+317.02 953.1 lineto
+320.45 947.31 lineto
+318 958 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 318 958 moveto
+311.63 949.08 lineto
+317.02 953.1 lineto
+316.04 948.19 lineto
+316.04 948.19 lineto
+316.04 948.19 lineto
+317.02 953.1 lineto
+320.45 947.31 lineto
+318 958 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+306.5 889 moveto 41 (mFactory) alignedtext
+grestore
+% Node6->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 408 1085 moveto
+414 1080 417 1071 417 1060 curveto
+417 1044 410 1034 399 1030 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 399 1090 moveto
+405.56 1081.21 lineto
+403.37 1087.57 lineto
+407.74 1085.14 lineto
+407.74 1085.14 lineto
+407.74 1085.14 lineto
+403.37 1087.57 lineto
+409.93 1089.08 lineto
+399 1090 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 399 1090 moveto
+405.56 1081.21 lineto
+403.37 1087.57 lineto
+407.74 1085.14 lineto
+407.74 1085.14 lineto
+407.74 1085.14 lineto
+403.37 1087.57 lineto
+409.93 1089.08 lineto
+399 1090 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+417 1057 moveto 46 (mInstance) alignedtext
+grestore
+% Node7
+gsave
+[ /Rect [ 153 1252 269 1564 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcSQLiteDatabase.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 153 1252 moveto
+153 1564 lineto
+270 1564 lineto
+270 1252 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1252 moveto
+153 1564 lineto
+270 1564 lineto
+270 1252 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+172.5 1551 moveto 77 (cSQLiteDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1544 moveto
+270 1544 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1531 moveto 68 (- mAutoCommit) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1519 moveto 92 (- mActiveTransaction) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1507 moveto 52 (- mLastRow) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1495 moveto 38 (- mRows) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1483 moveto 56 (- mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1471 moveto 52 (- mInstance) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 153 1464 moveto
+270 1464 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1451 moveto 98 (+ ~cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1439 moveto 82 (+ getResultCount\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1427 moveto 101 (+ getLastInsertRowID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1415 moveto 80 (+ getResultRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1403 moveto 81 (+ execStatement\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1391 moveto 85 (+ startTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1379 moveto 98 (+ commitTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1367 moveto 99 (+ rollbackTransaction\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1355 moveto 83 (+ setAutoCommit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1343 moveto 42 (+ sprintf\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1331 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1319 moveto 89 (- cSQLiteDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1307 moveto 47 (- initialize\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1295 moveto 76 (- initializeTables\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1283 moveto 82 (- initializeTriggers\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1271 moveto 33 (- exec\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+160.5 1259 moveto 72 (- getResultRow\(\)) alignedtext
+grestore
+% Node7->Node3
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 196 1242 moveto
+187 1142 177 1012 169 898 curveto
+160 757 153 595 149 496 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 197 1252 moveto
+191.53 1242.5 lineto
+196.5 1247.02 lineto
+196 1242.05 lineto
+196 1242.05 lineto
+196 1242.05 lineto
+196.5 1247.02 lineto
+200.48 1241.6 lineto
+197 1252 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 197 1252 moveto
+191.53 1242.5 lineto
+196.5 1247.02 lineto
+196 1242.05 lineto
+196 1242.05 lineto
+196 1242.05 lineto
+196.5 1247.02 lineto
+200.48 1241.6 lineto
+197 1252 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+169 889 moveto 50 (mDatabase) alignedtext
+grestore
+% Node7->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 206 1242 moveto
+205 1146 207 1024 220 916 curveto
+222 900 224 884 227 868 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 206 1252 moveto
+201.5 1242 lineto
+206 1247 lineto
+206 1242 lineto
+206 1242 lineto
+206 1242 lineto
+206 1247 lineto
+210.5 1242 lineto
+206 1252 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 206 1252 moveto
+201.5 1242 lineto
+206 1247 lineto
+206 1242 lineto
+206 1242 lineto
+206 1242 lineto
+206 1247 lineto
+210.5 1242 lineto
+206 1252 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+220 1057 moveto 50 (mDatabase) alignedtext
+grestore
+% Node7->Node6
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 271 1243 moveto
+281 1215 292 1187 301 1162 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 268 1252 moveto
+266.89 1241.09 lineto
+269.58 1247.26 lineto
+271.16 1242.51 lineto
+271.16 1242.51 lineto
+271.16 1242.51 lineto
+269.58 1247.26 lineto
+275.43 1243.94 lineto
+268 1252 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 268 1252 moveto
+266.89 1241.09 lineto
+269.58 1247.26 lineto
+271.16 1242.51 lineto
+271.16 1242.51 lineto
+271.16 1242.51 lineto
+269.58 1247.26 lineto
+275.43 1243.94 lineto
+268 1252 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+280 1225 moveto 50 (mDatabase) alignedtext
+grestore
+% Node7->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1433 moveto
+284 1428 287 1420 287 1408 curveto
+287 1391 280 1381 270 1377 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 270 1439 moveto
+275.3 1429.4 lineto
+274 1436 lineto
+278 1433 lineto
+278 1433 lineto
+278 1433 lineto
+274 1436 lineto
+280.7 1436.6 lineto
+270 1439 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 270 1439 moveto
+275.3 1429.4 lineto
+274 1436 lineto
+278 1433 lineto
+278 1433 lineto
+278 1433 lineto
+274 1436 lineto
+280.7 1436.6 lineto
+270 1439 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+287 1405 moveto 46 (mInstance) alignedtext
+grestore
+% Node8
+gsave
+[ /Rect [ 259 1612 331 1696 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRows.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 259 1612 moveto
+259 1696 lineto
+331 1696 lineto
+331 1612 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1612 moveto
+259 1696 lineto
+331 1696 lineto
+331 1612 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+280.5 1683 moveto 29 (cRows) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1676 moveto
+331 1676 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1663 moveto 52 (- mLastRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 259 1656 moveto
+331 1656 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1643 moveto 50 (+ ~cRows\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1631 moveto 56 (+ fetchRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+267 1619 moveto 41 (- cRows\(\)) alignedtext
+grestore
+% Node8->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 278 1603 moveto
+274 1591 270 1578 265 1564 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 281 1612 moveto
+273.57 1603.94 lineto
+279.42 1607.26 lineto
+277.84 1602.51 lineto
+277.84 1602.51 lineto
+277.84 1602.51 lineto
+279.42 1607.26 lineto
+282.11 1601.09 lineto
+281 1612 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 281 1612 moveto
+273.57 1603.94 lineto
+279.42 1607.26 lineto
+277.84 1602.51 lineto
+277.84 1602.51 lineto
+277.84 1602.51 lineto
+279.42 1607.26 lineto
+282.11 1601.09 lineto
+281 1612 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+276 1585 moveto 32 (mRows) alignedtext
+grestore
+% Node9
+gsave
+[ /Rect [ 185 1744 271 1888 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcRow.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 185 1744 moveto
+185 1888 lineto
+271 1888 lineto
+271 1744 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1744 moveto
+185 1888 lineto
+271 1888 lineto
+271 1744 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+216 1875 moveto 24 (cRow) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1868 moveto
+271 1868 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1855 moveto 50 (- currentCol) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1843 moveto 46 (- ColCount) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1831 moveto 44 (- Columns) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1819 moveto 35 (- Values) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 185 1812 moveto
+271 1812 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1799 moveto 45 (+ ~cRow\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1787 moveto 41 (+ Count\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1775 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1763 moveto 70 (+ fetchColumn\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+193 1751 moveto 36 (- cRow\(\)) alignedtext
+grestore
+% Node9->Node7
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 209 1734 moveto
+207 1721 206 1709 204 1696 curveto
+200 1653 199 1607 200 1564 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 211 1744 moveto
+204.63 1735.08 lineto
+210.02 1739.1 lineto
+209.04 1734.19 lineto
+209.04 1734.19 lineto
+209.04 1734.19 lineto
+210.02 1739.1 lineto
+213.45 1733.31 lineto
+211 1744 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 211 1744 moveto
+204.63 1735.08 lineto
+210.02 1739.1 lineto
+209.04 1734.19 lineto
+209.04 1734.19 lineto
+209.04 1734.19 lineto
+210.02 1739.1 lineto
+213.45 1733.31 lineto
+211 1744 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+207 1651 moveto 46 (mLastRow) alignedtext
+grestore
+% Node9->Node8
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 262 1735 moveto
+268 1721 273 1708 278 1696 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 258 1744 moveto
+257.95 1733.03 lineto
+260.03 1739.43 lineto
+262.06 1734.86 lineto
+262.06 1734.86 lineto
+262.06 1734.86 lineto
+260.03 1739.43 lineto
+266.17 1736.69 lineto
+258 1744 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 258 1744 moveto
+257.95 1733.03 lineto
+260.03 1739.43 lineto
+262.06 1734.86 lineto
+262.06 1734.86 lineto
+262.06 1734.86 lineto
+260.03 1739.43 lineto
+266.17 1736.69 lineto
+258 1744 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+271 1717 moveto 46 (mLastRow) alignedtext
+grestore
+% Node10
+gsave
+[ /Rect [ 481 916 603 1204 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($structcUPnPObjectID.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 481 916 moveto
+481 1204 lineto
+603 1204 lineto
+603 916 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 916 moveto
+481 1204 lineto
+603 1204 lineto
+603 916 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+507.5 1191 moveto 69 (cUPnPObjectID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1184 moveto
+603 1184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1171 moveto 24 (+ _ID) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 481 1164 moveto
+603 1164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1151 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1139 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1127 moveto 84 (+ cUPnPObjectID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1115 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1103 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1091 moveto 56 (+ operator=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1079 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1067 moveto 62 (+ operator++\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1055 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1043 moveto 56 (+ operator--\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1031 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1019 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 1007 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 995 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 983 moveto 59 (+ operator!=\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 971 moveto 62 (+ operator==\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 959 moveto 106 (+ operator unsigned int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 947 moveto 64 (+ operator int\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 935 moveto 71 (+ operator long\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+489 923 moveto 54 (+ operator*\(\)) alignedtext
+grestore
+% Node10->Node5
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 475 920 moveto
+474 919 473 917 472 916 curveto
+431 858 375 802 331 762 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 481 929 moveto
+471.71 923.18 lineto
+478.23 924.84 lineto
+475.45 920.68 lineto
+475.45 920.68 lineto
+475.45 920.68 lineto
+478.23 924.84 lineto
+479.2 918.18 lineto
+481 929 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 481 929 moveto
+471.71 923.18 lineto
+478.23 924.84 lineto
+475.45 920.68 lineto
+475.45 920.68 lineto
+475.45 920.68 lineto
+478.23 924.84 lineto
+479.2 918.18 lineto
+481 929 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+457 889 moveto 90 (mLastInsertObjectID) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 647 1932
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPVideoItemMediator__coll__graph.md5 b/doc/latex/classcUPnPVideoItemMediator__coll__graph.md5
new file mode 100644
index 0000000..c0c70a0
--- /dev/null
+++ b/doc/latex/classcUPnPVideoItemMediator__coll__graph.md5
@@ -0,0 +1 @@
+b524b23a3cb95d78f8080c5736b5f54e \ No newline at end of file
diff --git a/doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf b/doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf
new file mode 100644
index 0000000..798b25e
--- /dev/null
+++ b/doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps
new file mode 100644
index 0000000..37d990b
--- /dev/null
+++ b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps
@@ -0,0 +1,636 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 368 848
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 332 812 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 76 156 moveto
+76 276 lineto
+226 276 lineto
+226 156 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 76 156 moveto
+76 276 lineto
+226 276 lineto
+226 156 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+94.5 263 moveto 113 (cUPnPVideoItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 76 256 moveto
+226 256 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+149.5 243 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 76 236 moveto
+226 236 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 223 moveto 128 (+ cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 211 moveto 134 (+ ~cUPnPVideoItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 199 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 187 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 175 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+84 163 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node5
+gsave
+[ /Rect [ 0 0 132 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPMovieMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+132 120 lineto
+132 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 120 lineto
+132 120 lineto
+132 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 107 moveto 95 (cUPnPMovieMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 100 moveto
+132 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+64.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 80 moveto
+132 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 110 (+ cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 116 (+ ~cUPnPMovieMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node1->Node5
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 113 147 moveto
+108 138 103 129 98 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 110.08 148.96 moveto
+118 156 lineto
+116.2 145.56 lineto
+closepath stroke
+grestore
+% Node6
+gsave
+[ /Rect [ 150 0 324 120 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPVideoBroadcastMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 150 0 moveto
+150 120 lineto
+324 120 lineto
+324 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 150 0 moveto
+150 120 lineto
+324 120 lineto
+324 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+168.5 107 moveto 137 (cUPnPVideoBroadcastMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 150 100 moveto
+324 100 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+235.5 87 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 150 80 moveto
+324 80 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 67 moveto 152 (+ cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 55 moveto 158 (+ ~cUPnPVideoBroadcastMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 43 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 31 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 19 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+158 7 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node1->Node6
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 189 147 moveto
+194 138 199 129 204 120 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 185.8 145.56 moveto
+184 156 lineto
+191.92 148.96 lineto
+closepath stroke
+grestore
+% Node2
+gsave
+[ /Rect [ 89 312 213 432 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPItemMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 89 312 moveto
+89 432 lineto
+214 432 lineto
+214 312 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 312 moveto
+89 432 lineto
+214 432 lineto
+214 312 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+107 419 moveto 88 (cUPnPItemMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 412 moveto
+214 412 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+149.5 399 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 392 moveto
+214 392 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 379 moveto 103 (+ cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 367 moveto 109 (+ ~cUPnPItemMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 355 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 343 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 331 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+96.5 319 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node2->Node1
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 151 302 moveto
+151 293 151 285 151 276 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 147.5 302 moveto
+151 312 lineto
+154.5 302 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 84 468 218 648 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcUPnPObjectMediator.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 84 468 moveto
+84 648 lineto
+218 648 lineto
+218 468 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 468 moveto
+84 648 lineto
+218 648 lineto
+218 468 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+102.5 635 moveto 97 (cUPnPObjectMediator) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 628 moveto
+218 628 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 615 moveto 58 (# mDatabase) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 603 moveto 84 (# mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 84 596 moveto
+218 596 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 583 moveto 118 (+ ~cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 571 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 559 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 547 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 535 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 523 moveto 65 (+ clearObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 511 moveto 111 (# cUPnPObjectMediator\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 499 moveto 78 (# initializeObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 487 moveto 92 (# objectToDatabase\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+92 475 moveto 93 (# databaseToObject\(\)) alignedtext
+grestore
+% Node3->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 151 458 moveto
+151 449 151 441 151 432 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 147.5 458 moveto
+151 468 lineto
+154.5 458 lineto
+closepath stroke
+grestore
+% Node4
+gsave
+[ /Rect [ 92 684 210 804 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcMediatorInterface.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 92 684 moveto
+92 804 lineto
+210 804 lineto
+210 684 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 92 684 moveto
+92 804 lineto
+210 804 lineto
+210 684 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+110.5 791 moveto 81 (cMediatorInterface) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 92 784 moveto
+210 784 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+149.5 771 moveto 3 ( ) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 92 764 moveto
+210 764 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 751 moveto 102 (+ ~cMediatorInterface\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 739 moveto 71 (+ createObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 727 moveto 57 (+ getObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 715 moveto 65 (+ saveObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 703 moveto 70 (+ deleteObject\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+100 691 moveto 65 (+ clearObject\(\)) alignedtext
+grestore
+% Node4->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 151 674 moveto
+151 665 151 656 151 648 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 147.5 674 moveto
+151 684 lineto
+154.5 674 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 368 848
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.md5 b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.md5
new file mode 100644
index 0000000..be22c47
--- /dev/null
+++ b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.md5
@@ -0,0 +1 @@
+2031cf38727dba187f3b7108d2b9f1ce \ No newline at end of file
diff --git a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf
new file mode 100644
index 0000000..39e6799
--- /dev/null
+++ b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUPnPWebServer.tex b/doc/latex/classcUPnPWebServer.tex
new file mode 100644
index 0000000..3e6f913
--- /dev/null
+++ b/doc/latex/classcUPnPWebServer.tex
@@ -0,0 +1,229 @@
+\hypertarget{classcUPnPWebServer}{
+\section{cUPnPWebServer Class Reference}
+\label{classcUPnPWebServer}\index{cUPnPWebServer@{cUPnPWebServer}}
+}
+{\tt \#include $<$upnpwebserver.h$>$}
+
+Collaboration diagram for cUPnPWebServer:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=224pt]{classcUPnPWebServer__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+bool \hyperlink{classcUPnPWebServer_a374ec8a84405fb2ee16dc00ba0218f5}{init} ()
+\item
+bool \hyperlink{classcUPnPWebServer_cd20b60b929abfb205ec438127caed49}{uninit} ()
+\end{CompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{CompactItemize}
+\item
+static \hyperlink{classcUPnPWebServer}{cUPnPWebServer} $\ast$ \hyperlink{classcUPnPWebServer_59fb8d378eae0193665b51fdda5a4da0}{getInstance} (const char $\ast$rootdir=\char`\"{}/\char`\"{})
+\item
+static int \hyperlink{classcUPnPWebServer_0540de6d9f111756593d202f30102ffb}{getInfo} (const char $\ast$filename, struct File\_\-Info $\ast$info)
+\item
+static UpnpWebFileHandle \hyperlink{classcUPnPWebServer_5f9d44729464cab3e8bf74e4457dbb24}{open} (const char $\ast$filename, UpnpOpenFileMode mode)
+\item
+static int \hyperlink{classcUPnPWebServer_7bdaa921f11a40da60c5fc99f577a017}{read} (UpnpWebFileHandle fh, char $\ast$buf, size\_\-t buflen)
+\item
+static int \hyperlink{classcUPnPWebServer_46e282288394c8ba37e9d4846944c6a4}{write} (UpnpWebFileHandle fh, char $\ast$buf, size\_\-t buflen)
+\item
+static int \hyperlink{classcUPnPWebServer_2d1ee3a89ea42cb9fd0669937061695f}{seek} (UpnpWebFileHandle fh, off\_\-t offset, int origin)
+\item
+static int \hyperlink{classcUPnPWebServer_79d080eaf445325b7f8759dfb0744c26}{close} (UpnpWebFileHandle fh)
+\end{CompactItemize}
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUPnPWebServer_02ebb94fd2cdff4bfb2da3267446d62b}{
+class \hyperlink{classcUPnPWebServer_02ebb94fd2cdff4bfb2da3267446d62b}{cUPnPServer}}
+\label{classcUPnPWebServer_02ebb94fd2cdff4bfb2da3267446d62b}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The internal webserver
+
+This is the internal webserver. It distributes all the contents of the UPnP-Server.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUPnPWebServer_79d080eaf445325b7f8759dfb0744c26}{
+\index{cUPnPWebServer@{cUPnPWebServer}!close@{close}}
+\index{close@{close}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPWebServer::close (UpnpWebFileHandle {\em fh})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPWebServer_79d080eaf445325b7f8759dfb0744c26}
+
+
+Closes the file
+
+closes the opened file
+
+Returns 0 on success, non-zero value otherwise
+
+\begin{Desc}
+\item[Returns:]0 on success, non-zero value otherwise \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em fh}]the file handle of the opened file \end{description}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_0540de6d9f111756593d202f30102ffb}{
+\index{cUPnPWebServer@{cUPnPWebServer}!getInfo@{getInfo}}
+\index{getInfo@{getInfo}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{getInfo}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPWebServer::getInfo (const char $\ast$ {\em filename}, \/ struct File\_\-Info $\ast$ {\em info})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPWebServer_0540de6d9f111756593d202f30102ffb}
+
+
+Retrieve file information
+
+Returns file related information for an virtual directory file
+
+\begin{Desc}
+\item[Returns:]0 on success, -1 otherwise \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em filename}]The filename of which the information is gathered \item[{\em info}]The File\_\-Info structure with the data \end{description}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_59fb8d378eae0193665b51fdda5a4da0}{
+\index{cUPnPWebServer@{cUPnPWebServer}!getInstance@{getInstance}}
+\index{getInstance@{getInstance}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{getInstance}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPWebServer} $\ast$ cUPnPWebServer::getInstance (const char $\ast$ {\em rootdir} = {\tt \char`\"{}/\char`\"{}})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPWebServer_59fb8d378eae0193665b51fdda5a4da0}
+
+
+Returns the instance of the webserver
+
+Returns the instance of the webserver. This will create a single instance of none is existing on the very first call. A subsequent call will return the same instance.
+
+\begin{Desc}
+\item[Returns:]the instance of webserver \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em rootdir}]the root directory of the webserver \end{description}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_a374ec8a84405fb2ee16dc00ba0218f5}{
+\index{cUPnPWebServer@{cUPnPWebServer}!init@{init}}
+\index{init@{init}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{init}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPWebServer::init (void)}}
+\label{classcUPnPWebServer_a374ec8a84405fb2ee16dc00ba0218f5}
+
+
+Initializes the webserver
+
+It enables the webserver which comes with the {\em Intel SDK\/} and creates virtual directories for shares media.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if initializing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_5f9d44729464cab3e8bf74e4457dbb24}{
+\index{cUPnPWebServer@{cUPnPWebServer}!open@{open}}
+\index{open@{open}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{open}]{\setlength{\rightskip}{0pt plus 5cm}UpnpWebFileHandle cUPnPWebServer::open (const char $\ast$ {\em filename}, \/ UpnpOpenFileMode {\em mode})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPWebServer_5f9d44729464cab3e8bf74e4457dbb24}
+
+
+Opens a virtual directory file
+
+Opens a file in a virtual directory with the specified mode.
+
+Possible modes are:\begin{itemize}
+\item {\bf UPNP\_\-READ}, Opens the file for reading\item {\bf UPNP\_\-WRITE}, Opens the file for writing\end{itemize}
+
+
+It returns a file handle to the opened file, NULL otherwise
+
+\begin{Desc}
+\item[Returns:]FileHandle to the opened file, NULL otherwise \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em filename}]The file to open \item[{\em mode}]UPNP\_\-WRITE for writing, UPNP\_\-READ for reading. \end{description}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_7bdaa921f11a40da60c5fc99f577a017}{
+\index{cUPnPWebServer@{cUPnPWebServer}!read@{read}}
+\index{read@{read}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{read}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPWebServer::read (UpnpWebFileHandle {\em fh}, \/ char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPWebServer_7bdaa921f11a40da60c5fc99f577a017}
+
+
+Reads from the opened file
+
+Reads {\tt buflen} bytes from the file and stores the content to the buffer
+
+Returns 0 no more bytes read (EOF) $>$0 bytes read from file
+
+\begin{Desc}
+\item[Returns:]number of bytes read, 0 on EOF \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em fh}]the file handle of the opened file \item[{\em buf}]the buffer to write the bytes to \item[{\em buflen}]the maximum count of bytes to read \end{description}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_2d1ee3a89ea42cb9fd0669937061695f}{
+\index{cUPnPWebServer@{cUPnPWebServer}!seek@{seek}}
+\index{seek@{seek}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{seek}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPWebServer::seek (UpnpWebFileHandle {\em fh}, \/ off\_\-t {\em offset}, \/ int {\em origin})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPWebServer_2d1ee3a89ea42cb9fd0669937061695f}
+
+
+Seek in the file
+
+Seeks in the opened file and sets the file pointer to the specified offset
+
+Returns 0 on success, non-zero value otherwise
+
+\begin{Desc}
+\item[Returns:]0 on success, non-zero value otherwise \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em fh}]the file handle of the opened file \item[{\em offset}]a negative oder positive value which moves the pointer forward or backward \item[{\em origin}]SEEK\_\-CUR, SEEK\_\-END or SEEK\_\-SET \end{description}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_cd20b60b929abfb205ec438127caed49}{
+\index{cUPnPWebServer@{cUPnPWebServer}!uninit@{uninit}}
+\index{uninit@{uninit}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{uninit}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPWebServer::uninit (void)}}
+\label{classcUPnPWebServer_cd20b60b929abfb205ec438127caed49}
+
+
+Uninitializes the webserver
+
+This stops the webserver.
+
+\begin{Desc}
+\item[Returns:]returns\begin{itemize}
+\item {\bf {\tt true},} if initializing was successful\item {\bf {\tt false},} otherwise \end{itemize}
+\end{Desc}
+\hypertarget{classcUPnPWebServer_46e282288394c8ba37e9d4846944c6a4}{
+\index{cUPnPWebServer@{cUPnPWebServer}!write@{write}}
+\index{write@{write}!cUPnPWebServer@{cUPnPWebServer}}
+\subsubsection[{write}]{\setlength{\rightskip}{0pt plus 5cm}int cUPnPWebServer::write (UpnpWebFileHandle {\em fh}, \/ char $\ast$ {\em buf}, \/ size\_\-t {\em buflen})\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}}
+\label{classcUPnPWebServer_46e282288394c8ba37e9d4846944c6a4}
+
+
+Writes to the opened file
+
+Writes {\tt buflen} bytes from the buffer and stores the content in the file
+
+Returns $>$0 bytes wrote to file, maybe less the buflen in case of write errors
+
+\begin{Desc}
+\item[Returns:]number of bytes read, 0 on EOF \end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em fh}]the file handle of the opened file \item[{\em buf}]the buffer to read the bytes from \item[{\em buflen}]the maximum count of bytes to write \end{description}
+\end{Desc}
+
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+upnpcomponents/upnpwebserver.h\item
+upnpcomponents/upnpwebserver.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUPnPWebServer__coll__graph.eps b/doc/latex/classcUPnPWebServer__coll__graph.eps
new file mode 100644
index 0000000..cb7f5b1
--- /dev/null
+++ b/doc/latex/classcUPnPWebServer__coll__graph.eps
@@ -0,0 +1,309 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 224 248
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 188 212 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 0 0 moveto
+0 204 lineto
+116 204 lineto
+116 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 204 lineto
+116 204 lineto
+116 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+18.5 191 moveto 79 (cUPnPWebServer) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 184 moveto
+116 184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 171 moveto 45 (- mRootdir) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 159 moveto 52 (- mInstance) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 147 moveto 97 (- mVirtualDirCallbacks) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 140 moveto
+116 140 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 28 (+ init\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 38 (+ uninit\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 100 (+ ~cUPnPWebServer\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 66 (+ getInstance\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 45 (+ getInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 36 (+ open\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 34 (+ read\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 35 (+ write\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 36 (+ seek\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 38 (+ close\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 91 (- cUPnPWebServer\(\)) alignedtext
+grestore
+% Node1->Node1
+gsave
+1 setlinewidth
+dashed
+0.776 0.753 0.804 edgecolor
+newpath 124 132 moveto
+130 126 134 116 134 102 curveto
+134 83 127 71 116 66 curveto
+stroke
+0.776 0.753 0.804 edgecolor
+newpath 116 138 moveto
+121.3 128.4 lineto
+120 135 lineto
+124 132 lineto
+124 132 lineto
+124 132 lineto
+120 135 lineto
+126.7 135.6 lineto
+116 138 lineto
+closepath fill
+1 setlinewidth
+solid
+0.776 0.753 0.804 edgecolor
+newpath 116 138 moveto
+121.3 128.4 lineto
+120 135 lineto
+124 132 lineto
+124 132 lineto
+124 132 lineto
+120 135 lineto
+126.7 135.6 lineto
+116 138 lineto
+closepath stroke
+0.000 0.000 0.000 edgecolor
+10 /FreeSans set_font
+134 99 moveto 46 (mInstance) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 224 248
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUPnPWebServer__coll__graph.md5 b/doc/latex/classcUPnPWebServer__coll__graph.md5
new file mode 100644
index 0000000..0981052
--- /dev/null
+++ b/doc/latex/classcUPnPWebServer__coll__graph.md5
@@ -0,0 +1 @@
+db043e038192946ad650b05e1f09c435 \ No newline at end of file
diff --git a/doc/latex/classcUPnPWebServer__coll__graph.pdf b/doc/latex/classcUPnPWebServer__coll__graph.pdf
new file mode 100644
index 0000000..3d6b301
--- /dev/null
+++ b/doc/latex/classcUPnPWebServer__coll__graph.pdf
Binary files differ
diff --git a/doc/latex/classcUpnpService.tex b/doc/latex/classcUpnpService.tex
new file mode 100644
index 0000000..77c7a6c
--- /dev/null
+++ b/doc/latex/classcUpnpService.tex
@@ -0,0 +1,180 @@
+\hypertarget{classcUpnpService}{
+\section{cUpnpService Class Reference}
+\label{classcUpnpService}\index{cUpnpService@{cUpnpService}}
+}
+{\tt \#include $<$upnpservice.h$>$}
+
+Inheritance diagram for cUpnpService:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[height=400pt]{classcUpnpService__inherit__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+virtual int \hyperlink{classcUpnpService_e6d3522d580e5975f5a38d5bea88e29d}{subscribe} (Upnp\_\-Subscription\_\-Request $\ast$Request)=0
+\item
+virtual int \hyperlink{classcUpnpService_bbffca233e6aa193eda223cb7bfc2917}{execute} (Upnp\_\-Action\_\-Request $\ast$Request)=0
+\end{CompactItemize}
+\subsection*{Protected Member Functions}
+\begin{CompactItemize}
+\item
+virtual void \hyperlink{classcUpnpService_f0976057350505eca781aafcaf6b1d14}{setError} (Upnp\_\-Action\_\-Request $\ast$Request, int Error)
+\item
+int \hyperlink{classcUpnpService_846cd44a1c014395278c3af339122656}{parseIntegerValue} (IN IXML\_\-Document $\ast$Document, IN const char $\ast$Item, OUT int $\ast$Value)
+\item
+int \hyperlink{classcUpnpService_925b7a9628230ce69b803afb8fee212f}{parseStringValue} (IN IXML\_\-Document $\ast$Document, IN const char $\ast$Item, OUT char $\ast$$\ast$Value)
+\end{CompactItemize}
+\subsection*{Protected Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{classcUpnpService_359ba19926aab21f7a2e3c77ffc7f7ea}{
+UpnpDevice\_\-Handle \hyperlink{classcUpnpService_359ba19926aab21f7a2e3c77ffc7f7ea}{mDeviceHandle}}
+\label{classcUpnpService_359ba19926aab21f7a2e3c77ffc7f7ea}
+
+\begin{CompactList}\small\item\em the UPnP device handle of the root device \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+UPnP Service interface
+
+This is a service interface implemented by a UPnP service like CDS oder CMS
+
+It comes with some tool functions which are commonly useful for processing an event or action.
+
+\subsection{Member Function Documentation}
+\hypertarget{classcUpnpService_bbffca233e6aa193eda223cb7bfc2917}{
+\index{cUpnpService@{cUpnpService}!execute@{execute}}
+\index{execute@{execute}!cUpnpService@{cUpnpService}}
+\subsubsection[{execute}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cUpnpService::execute (Upnp\_\-Action\_\-Request $\ast$ {\em Request})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcUpnpService_bbffca233e6aa193eda223cb7bfc2917}
+
+
+Executes an action
+
+This executes an action initialized by a control point. The result is stored in the first parameter.
+
+\begin{Desc}
+\item[Returns:]An integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if subscription was okay\item or any other non null value in case of an error\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Input and output parameters of an action \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Input and output parameters of an action \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcConnectionManager_12fa6b0a9e20c3af663e3ca2b3c97dfb}{cConnectionManager}, and \hyperlink{classcContentDirectory_a0225df761512819b9c46f45b2a0f0d0}{cContentDirectory}.\hypertarget{classcUpnpService_846cd44a1c014395278c3af339122656}{
+\index{cUpnpService@{cUpnpService}!parseIntegerValue@{parseIntegerValue}}
+\index{parseIntegerValue@{parseIntegerValue}!cUpnpService@{cUpnpService}}
+\subsubsection[{parseIntegerValue}]{\setlength{\rightskip}{0pt plus 5cm}int cUpnpService::parseIntegerValue (IN IXML\_\-Document $\ast$ {\em Document}, \/ IN const char $\ast$ {\em Item}, \/ OUT int $\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUpnpService_846cd44a1c014395278c3af339122656}
+
+
+Parses an integer value
+
+This tool function parses an integer value from a given {\em IXML\/} document. It is searching for the very first occurance of the demanded item.
+
+\begin{Desc}
+\item[Returns:]Returns\begin{itemize}
+\item {\bf {\tt 0},} if parsing was successful\item {\bf {\tt $<$0},} if an error occured\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Document}]the document, which is parsed \item[{\em Item}]the demanded item \item[{\em Value}]the value of the item \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Document}]the document, which is parsed \item[{\em Item}]the demanded item \item[{\em Value}]the value of the item \end{description}
+\end{Desc}
+\hypertarget{classcUpnpService_925b7a9628230ce69b803afb8fee212f}{
+\index{cUpnpService@{cUpnpService}!parseStringValue@{parseStringValue}}
+\index{parseStringValue@{parseStringValue}!cUpnpService@{cUpnpService}}
+\subsubsection[{parseStringValue}]{\setlength{\rightskip}{0pt plus 5cm}int cUpnpService::parseStringValue (IN IXML\_\-Document $\ast$ {\em Document}, \/ IN const char $\ast$ {\em Item}, \/ OUT char $\ast$$\ast$ {\em Value})\hspace{0.3cm}{\tt \mbox{[}protected\mbox{]}}}}
+\label{classcUpnpService_925b7a9628230ce69b803afb8fee212f}
+
+
+Parses a string value
+
+This tool function parses a string value from a given {\em IXML\/} document. It is searching for the very first occurance of the demanded item.
+
+\begin{Desc}
+\item[Returns:]Returns\begin{itemize}
+\item {\bf {\tt 0},} if parsing was successful\item {\bf {\tt $<$0},} if an error occured\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Document}]the document, which is parsed \item[{\em Item}]the demanded item \item[{\em Value}]the value of the item \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Document}]the document, which is parsed \item[{\em Item}]the demanded item \item[{\em Value}]the value of the item \end{description}
+\end{Desc}
+\hypertarget{classcUpnpService_f0976057350505eca781aafcaf6b1d14}{
+\index{cUpnpService@{cUpnpService}!setError@{setError}}
+\index{setError@{setError}!cUpnpService@{cUpnpService}}
+\subsubsection[{setError}]{\setlength{\rightskip}{0pt plus 5cm}void cUpnpService::setError (Upnp\_\-Action\_\-Request $\ast$ {\em Request}, \/ int {\em Error})\hspace{0.3cm}{\tt \mbox{[}protected, virtual\mbox{]}}}}
+\label{classcUpnpService_f0976057350505eca781aafcaf6b1d14}
+
+
+Sets an error on an action request
+
+This function puts a error message into the action request structure according to its error code
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]the action request, to set the error for \item[{\em Error}]the error code of which the message should be obtained \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]the action request, to set the error for \item[{\em Error}]the error code of which the message should be obtained \end{description}
+\end{Desc}
+
+
+Reimplemented in \hyperlink{classcConnectionManager_02014a637c6cb04cbfe10b3cb4ce6d1d}{cConnectionManager}, and \hyperlink{classcContentDirectory_a3b0df304987a0f2b17733c651d5b5c6}{cContentDirectory}.\hypertarget{classcUpnpService_e6d3522d580e5975f5a38d5bea88e29d}{
+\index{cUpnpService@{cUpnpService}!subscribe@{subscribe}}
+\index{subscribe@{subscribe}!cUpnpService@{cUpnpService}}
+\subsubsection[{subscribe}]{\setlength{\rightskip}{0pt plus 5cm}virtual int cUpnpService::subscribe (Upnp\_\-Subscription\_\-Request $\ast$ {\em Request})\hspace{0.3cm}{\tt \mbox{[}pure virtual\mbox{]}}}}
+\label{classcUpnpService_e6d3522d580e5975f5a38d5bea88e29d}
+
+
+Subscribes to an event
+
+This is a callback function to register a new subscriber for an event.
+
+\begin{Desc}
+\item[Returns:]An integer representing one of the following:\begin{itemize}
+\item {\bf {\tt UPNP\_\-E\_\-SUCCESS},} if subscription was okay\item or any other non null value in case of an error\end{itemize}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Information about the subscription \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em Request}]Information about the subscription \end{description}
+\end{Desc}
+
+
+Implemented in \hyperlink{classcConnectionManager_7990eba09a100e5e4ee5b01b87bcc16e}{cConnectionManager}, and \hyperlink{classcContentDirectory_17acd376a722e6e7de9ec0d4cabb707b}{cContentDirectory}.
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+upnpcomponents/upnpservice.h\item
+upnpcomponents/upnpservice.cpp\end{CompactItemize}
diff --git a/doc/latex/classcUpnpService__inherit__graph.eps b/doc/latex/classcUpnpService__inherit__graph.eps
new file mode 100644
index 0000000..8155755
--- /dev/null
+++ b/doc/latex/classcUpnpService__inherit__graph.eps
@@ -0,0 +1,444 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (savop) savop,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 322 452
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 286 416 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% Node1
+gsave
+0.000 0.000 0.749 nodecolor
+newpath 89 276 moveto
+89 408 lineto
+197 408 lineto
+197 276 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 276 moveto
+89 408 lineto
+197 408 lineto
+197 276 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+112.5 395 moveto 61 (cUpnpService) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 388 moveto
+197 388 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 375 moveto 77 (# mDeviceHandle) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 89 368 moveto
+197 368 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 355 moveto 82 (+ ~cUpnpService\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 343 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 331 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 319 moveto 49 (# setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 307 moveto 92 (# parseIntegerValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 295 moveto 88 (# parseStringValue\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+97 283 moveto 73 (- cUpnpService\(\)) alignedtext
+grestore
+% Node2
+gsave
+[ /Rect [ 0 0 138 240 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcConnectionManager.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+138 240 lineto
+138 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 0 moveto
+0 240 lineto
+138 240 lineto
+138 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+23 227 moveto 92 (cConnectionManager) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 220 moveto
+138 220 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 207 moveto 94 (- mDefaultConnection) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 195 moveto 96 (- mVirtualConnections) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 183 moveto 100 (- mSupportedProtocols) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 0 176 moveto
+138 176 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 163 moveto 107 (+ cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 151 moveto 113 (+ ~cConnectionManager\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 139 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 127 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 115 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 103 moveto 47 (- setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 91 moveto 78 (- getProtocolInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 79 moveto 121 (- getCurrentConnectionIDs\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 67 moveto 122 (- getCurrentConnectionInfo\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 55 moveto 107 (- prepareForConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 43 moveto 101 (- connectionComplete\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 31 moveto 116 (- createVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 19 moveto 121 (- destroyVirtualConnection\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+8 7 moveto 110 (- getConnectionIDsCVS\(\)) alignedtext
+grestore
+% Node1->Node2
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 118 266 moveto
+115 258 112 249 109 240 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 114.77 267.43 moveto
+121 276 lineto
+121.48 265.42 lineto
+closepath stroke
+grestore
+% Node3
+gsave
+[ /Rect [ 156 36 278 204 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI ($classcContentDirectory.html) >>
+ /Subtype /Link
+/ANN pdfmark
+0.000 0.000 1.000 nodecolor
+newpath 156 36 moveto
+156 204 lineto
+279 204 lineto
+279 36 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 156 36 moveto
+156 204 lineto
+279 204 lineto
+279 36 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+178 191 moveto 78 (cContentDirectory) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 156 184 moveto
+279 184 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 171 moveto 82 (- mMediaDatabase) alignedtext
+1 setlinewidth
+filled
+0.000 0.000 0.000 nodecolor
+newpath 156 164 moveto
+279 164 lineto
+stroke
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 151 moveto 93 (+ cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 139 moveto 99 (+ ~cContentDirectory\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 127 moveto 57 (+ subscribe\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 115 moveto 50 (+ execute\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 103 moveto 50 (+ setError\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 91 moveto 40 (- Action\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 79 moveto 107 (- getSearchCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 67 moveto 94 (- getSortCapabilities\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 55 moveto 100 (- getSystemUpdateID\(\)) alignedtext
+0.000 0.000 0.000 nodecolor
+10 /FreeSans set_font
+163.5 43 moveto 43 (- browse\(\)) alignedtext
+grestore
+% Node1->Node3
+gsave
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 168 266 moveto
+175 247 182 225 189 204 curveto
+stroke
+1 setlinewidth
+solid
+0.667 0.776 0.439 edgecolor
+newpath 164.52 265.42 moveto
+165 276 lineto
+171.23 267.43 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 322 452
+end
+restore
+%%EOF
diff --git a/doc/latex/classcUpnpService__inherit__graph.md5 b/doc/latex/classcUpnpService__inherit__graph.md5
new file mode 100644
index 0000000..7be2f11
--- /dev/null
+++ b/doc/latex/classcUpnpService__inherit__graph.md5
@@ -0,0 +1 @@
+0e29170e3c5c7bffb14d60dfe738343c \ No newline at end of file
diff --git a/doc/latex/classcUpnpService__inherit__graph.pdf b/doc/latex/classcUpnpService__inherit__graph.pdf
new file mode 100644
index 0000000..ee5afa5
--- /dev/null
+++ b/doc/latex/classcUpnpService__inherit__graph.pdf
Binary files differ
diff --git a/doc/latex/classcVirtualConnection.tex b/doc/latex/classcVirtualConnection.tex
new file mode 100644
index 0000000..a0334d4
--- /dev/null
+++ b/doc/latex/classcVirtualConnection.tex
@@ -0,0 +1,25 @@
+\hypertarget{classcVirtualConnection}{
+\section{cVirtualConnection Class Reference}
+\label{classcVirtualConnection}\index{cVirtualConnection@{cVirtualConnection}}
+}
+{\tt \#include $<$connectionmanager.h$>$}
+
+\subsection*{Friends}
+\begin{CompactItemize}
+\item
+\hypertarget{classcVirtualConnection_a889c1ce7880be8fb32bbd69a95b1915}{
+class \hyperlink{classcVirtualConnection_a889c1ce7880be8fb32bbd69a95b1915}{cConnectionManager}}
+\label{classcVirtualConnection_a889c1ce7880be8fb32bbd69a95b1915}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Virtual connection
+
+A virtual connection managed by the connection manager service
+
+The documentation for this class was generated from the following files:\begin{CompactItemize}
+\item
+upnpcomponents/connectionmanager.h\item
+upnpcomponents/connectionmanager.cpp\end{CompactItemize}
diff --git a/doc/latex/doxygen.sty b/doc/latex/doxygen.sty
new file mode 100644
index 0000000..91fc5f1
--- /dev/null
+++ b/doc/latex/doxygen.sty
@@ -0,0 +1,86 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doxygen}
+\RequirePackage{calc}
+\RequirePackage{array}
+\pagestyle{fancyplain}
+\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
+\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
+\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
+\lhead[\fancyplain{}{\bfseries\thepage}]
+ {\fancyplain{}{\bfseries\rightmark}}
+\rhead[\fancyplain{}{\bfseries\leftmark}]
+ {\fancyplain{}{\bfseries\thepage}}
+\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by Doxygen }]{}
+\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by Doxygen }}
+\cfoot{}
+\newenvironment{Code}
+{\footnotesize}
+{\normalsize}
+\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
+\newenvironment{DocInclude}
+{\footnotesize}
+{\normalsize}
+\newenvironment{VerbInclude}
+{\footnotesize}
+{\normalsize}
+\newenvironment{Image}
+{\begin{figure}[H]}
+{\end{figure}}
+\newenvironment{ImageNoCaption}{}{}
+\newenvironment{CompactList}
+{\begin{list}{}{
+ \setlength{\leftmargin}{0.5cm}
+ \setlength{\itemsep}{0pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \renewcommand{\makelabel}{\hfill}}}
+{\end{list}}
+\newenvironment{CompactItemize}
+{
+ \begin{itemize}
+ \setlength{\itemsep}{-3pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \setlength{\partopsep}{0pt}
+}
+{\end{itemize}}
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
+\newlength{\tmplength}
+\newenvironment{TabularC}[1]
+{
+\setlength{\tmplength}
+ {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
+ \par\begin{tabular*}{\linewidth}
+ {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
+}
+{\end{tabular*}\par}
+\newcommand{\entrylabel}[1]{
+ {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}}
+\newenvironment{Desc}
+{\begin{list}{}
+ {
+ \settowidth{\labelwidth}{40pt}
+ \setlength{\leftmargin}{\labelwidth}
+ \setlength{\parsep}{0pt}
+ \setlength{\itemsep}{-4pt}
+ \renewcommand{\makelabel}{\entrylabel}
+ }
+}
+{\end{list}}
+\newenvironment{Indent}
+ {\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
+ \item[]\ignorespaces}
+ {\unskip\end{list}}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\addtocounter{secnumdepth}{1}
+\sloppy
+\usepackage[T1]{fontenc}
+\makeatletter
+\renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}%
+ {-3.25ex plus -1ex minus -0.2ex}%
+ {1.5ex plus 0.2ex}%
+ {\normalfont\normalsize\bfseries}}
+\makeatother
+\stepcounter{secnumdepth}
+\stepcounter{tocdepth}
diff --git a/doc/latex/hierarchy.tex b/doc/latex/hierarchy.tex
new file mode 100644
index 0000000..9bd003b
--- /dev/null
+++ b/doc/latex/hierarchy.tex
@@ -0,0 +1,67 @@
+\section{Class Hierarchy}
+This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList}
+\item \contentsline{section}{cAudioVideoDetector}{\pageref{classcAudioVideoDetector}}{}
+\item \contentsline{section}{cClass}{\pageref{structcClass}}{}
+\item \contentsline{section}{cDlna}{\pageref{classcDlna}}{}
+\item \contentsline{section}{cFileHandle}{\pageref{classcFileHandle}}{}
+\begin{CompactList}
+\item \contentsline{section}{cLiveReceiver}{\pageref{classcLiveReceiver}}{}
+\item \contentsline{section}{cRecordingPlayer}{\pageref{classcRecordingPlayer}}{}
+\end{CompactList}
+\item \contentsline{section}{cFilterCriteria}{\pageref{classcFilterCriteria}}{}
+\item \contentsline{section}{cMediaDatabase}{\pageref{classcMediaDatabase}}{}
+\item \contentsline{section}{cMediatorInterface}{\pageref{classcMediatorInterface}}{}
+\begin{CompactList}
+\item \contentsline{section}{cUPnPObjectMediator}{\pageref{classcUPnPObjectMediator}}{}
+\begin{CompactList}
+\item \contentsline{section}{cUPnPContainerMediator}{\pageref{classcUPnPContainerMediator}}{}
+\item \contentsline{section}{cUPnPItemMediator}{\pageref{classcUPnPItemMediator}}{}
+\begin{CompactList}
+\item \contentsline{section}{cUPnPVideoItemMediator}{\pageref{classcUPnPVideoItemMediator}}{}
+\begin{CompactList}
+\item \contentsline{section}{cUPnPMovieMediator}{\pageref{classcUPnPMovieMediator}}{}
+\item \contentsline{section}{cUPnPVideoBroadcastMediator}{\pageref{classcUPnPVideoBroadcastMediator}}{}
+\end{CompactList}
+\end{CompactList}
+\end{CompactList}
+\end{CompactList}
+\item \contentsline{section}{cMenuSetupUPnP}{\pageref{classcMenuSetupUPnP}}{}
+\item \contentsline{section}{cPathParser}{\pageref{classcPathParser}}{}
+\item \contentsline{section}{cPluginUpnp}{\pageref{classcPluginUpnp}}{}
+\item \contentsline{section}{cRegisteredProfile}{\pageref{classcRegisteredProfile}}{}
+\item \contentsline{section}{cRow}{\pageref{classcRow}}{}
+\item \contentsline{section}{cRows}{\pageref{classcRows}}{}
+\item \contentsline{section}{cSortCrit}{\pageref{structcSortCrit}}{}
+\item \contentsline{section}{cSortCriteria}{\pageref{classcSortCriteria}}{}
+\item \contentsline{section}{cSQLiteDatabase}{\pageref{classcSQLiteDatabase}}{}
+\item \contentsline{section}{cUPnPClassObject}{\pageref{classcUPnPClassObject}}{}
+\begin{CompactList}
+\item \contentsline{section}{cUPnPClassContainer}{\pageref{classcUPnPClassContainer}}{}
+\item \contentsline{section}{cUPnPClassItem}{\pageref{classcUPnPClassItem}}{}
+\begin{CompactList}
+\item \contentsline{section}{cUPnPClassVideoItem}{\pageref{classcUPnPClassVideoItem}}{}
+\begin{CompactList}
+\item \contentsline{section}{cUPnPClassMovie}{\pageref{classcUPnPClassMovie}}{}
+\item \contentsline{section}{cUPnPClassVideoBroadcast}{\pageref{classcUPnPClassVideoBroadcast}}{}
+\end{CompactList}
+\end{CompactList}
+\end{CompactList}
+\item \contentsline{section}{cUPnPConfig}{\pageref{classcUPnPConfig}}{}
+\item \contentsline{section}{cUPnPObjectFactory}{\pageref{classcUPnPObjectFactory}}{}
+\item \contentsline{section}{cUPnPObjectID}{\pageref{structcUPnPObjectID}}{}
+\item \contentsline{section}{cUPnPObjects}{\pageref{classcUPnPObjects}}{}
+\item \contentsline{section}{cUPnPResource}{\pageref{classcUPnPResource}}{}
+\item \contentsline{section}{cUPnPResourceMediator}{\pageref{classcUPnPResourceMediator}}{}
+\item \contentsline{section}{cUPnPResources}{\pageref{classcUPnPResources}}{}
+\item \contentsline{section}{cUPnPResultSet}{\pageref{structcUPnPResultSet}}{}
+\item \contentsline{section}{cUPnPServer}{\pageref{classcUPnPServer}}{}
+\item \contentsline{section}{cUpnpService}{\pageref{classcUpnpService}}{}
+\begin{CompactList}
+\item \contentsline{section}{cConnectionManager}{\pageref{classcConnectionManager}}{}
+\item \contentsline{section}{cContentDirectory}{\pageref{classcContentDirectory}}{}
+\end{CompactList}
+\item \contentsline{section}{cUPnPWebServer}{\pageref{classcUPnPWebServer}}{}
+\item \contentsline{section}{cVirtualConnection}{\pageref{classcVirtualConnection}}{}
+\item \contentsline{section}{DLNAIconProfile}{\pageref{structDLNAIconProfile}}{}
+\item \contentsline{section}{DLNAProfile}{\pageref{structDLNAProfile}}{}
+\end{CompactList}
diff --git a/doc/latex/refman.tex b/doc/latex/refman.tex
new file mode 100644
index 0000000..d623968
--- /dev/null
+++ b/doc/latex/refman.tex
@@ -0,0 +1,101 @@
+\documentclass[a4paper]{book}
+\usepackage{a4wide}
+\usepackage{makeidx}
+\usepackage{fancyhdr}
+\usepackage{graphicx}
+\usepackage{multicol}
+\usepackage{float}
+\usepackage{textcomp}
+\usepackage{alltt}
+\usepackage{times}
+\usepackage{ifpdf}
+\ifpdf
+\usepackage[pdftex,
+ pagebackref=true,
+ colorlinks=true,
+ linkcolor=blue,
+ unicode
+ ]{hyperref}
+\else
+\usepackage[ps2pdf,
+ pagebackref=true,
+ colorlinks=true,
+ linkcolor=blue,
+ unicode
+ ]{hyperref}
+\usepackage{pspicture}
+\fi
+\usepackage[utf8]{inputenc}
+\usepackage{doxygen}
+\makeindex
+\setcounter{tocdepth}{3}
+\renewcommand{\footrulewidth}{0.4pt}
+\begin{document}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}
+{\Large UPnP/DLNA plugin for VDR \\[1ex]\large 0.0.1 }\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.5.8}\\
+\vspace*{0.5cm}
+{\small Sun Nov 8 15:44:08 2009}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\pagenumbering{roman}
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\chapter{Class Index}
+\input{hierarchy}
+\chapter{Class Index}
+\input{annotated}
+\chapter{Class Documentation}
+\input{classcAudioVideoDetector}
+\include{structcClass}
+\include{classcConnectionManager}
+\include{classcContentDirectory}
+\include{classcDlna}
+\include{classcFileHandle}
+\include{classcFilterCriteria}
+\include{classcLiveReceiver}
+\include{classcMediaDatabase}
+\include{classcMediatorInterface}
+\include{classcMenuSetupUPnP}
+\include{classcPathParser}
+\include{classcPluginUpnp}
+\include{classcRecordingPlayer}
+\include{classcRegisteredProfile}
+\include{classcRow}
+\include{classcRows}
+\include{structcSortCrit}
+\include{classcSortCriteria}
+\include{classcSQLiteDatabase}
+\include{classcUPnPClassContainer}
+\include{classcUPnPClassItem}
+\include{classcUPnPClassMovie}
+\include{classcUPnPClassObject}
+\include{classcUPnPClassVideoBroadcast}
+\include{classcUPnPClassVideoItem}
+\include{classcUPnPConfig}
+\include{classcUPnPContainerMediator}
+\include{classcUPnPItemMediator}
+\include{classcUPnPMovieMediator}
+\include{classcUPnPObjectFactory}
+\include{structcUPnPObjectID}
+\include{classcUPnPObjectMediator}
+\include{classcUPnPObjects}
+\include{classcUPnPResource}
+\include{classcUPnPResourceMediator}
+\include{classcUPnPResources}
+\include{structcUPnPResultSet}
+\include{classcUPnPServer}
+\include{classcUpnpService}
+\include{classcUPnPVideoBroadcastMediator}
+\include{classcUPnPVideoItemMediator}
+\include{classcUPnPWebServer}
+\include{classcVirtualConnection}
+\include{structDLNAIconProfile}
+\include{structDLNAProfile}
+\printindex
+\end{document}
diff --git a/doc/latex/structDLNAIconProfile.tex b/doc/latex/structDLNAIconProfile.tex
new file mode 100644
index 0000000..0929c2a
--- /dev/null
+++ b/doc/latex/structDLNAIconProfile.tex
@@ -0,0 +1,39 @@
+\hypertarget{structDLNAIconProfile}{
+\section{DLNAIconProfile Struct Reference}
+\label{structDLNAIconProfile}\index{DLNAIconProfile@{DLNAIconProfile}}
+}
+{\tt \#include $<$common.h$>$}
+
+\subsection*{Public Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{structDLNAIconProfile_d5dc566526b37cddf1cfd14fa1efa509}{
+const char $\ast$ \hyperlink{structDLNAIconProfile_d5dc566526b37cddf1cfd14fa1efa509}{mime}}
+\label{structDLNAIconProfile_d5dc566526b37cddf1cfd14fa1efa509}
+
+\begin{CompactList}\small\item\em the mime type of the image \item\end{CompactList}\item
+\hypertarget{structDLNAIconProfile_b570aed93a91d6629a5f14ac28bb474d}{
+unsigned short \hyperlink{structDLNAIconProfile_b570aed93a91d6629a5f14ac28bb474d}{width}}
+\label{structDLNAIconProfile_b570aed93a91d6629a5f14ac28bb474d}
+
+\begin{CompactList}\small\item\em image width in pixel \item\end{CompactList}\item
+\hypertarget{structDLNAIconProfile_80d7178a6681bef071a5c8e3598e54fb}{
+unsigned short \hyperlink{structDLNAIconProfile_80d7178a6681bef071a5c8e3598e54fb}{height}}
+\label{structDLNAIconProfile_80d7178a6681bef071a5c8e3598e54fb}
+
+\begin{CompactList}\small\item\em image height in pixel \item\end{CompactList}\item
+\hypertarget{structDLNAIconProfile_7c3a12a0f4673cd6d9b49895326b99c3}{
+unsigned char \hyperlink{structDLNAIconProfile_7c3a12a0f4673cd6d9b49895326b99c3}{bitDepth}}
+\label{structDLNAIconProfile_7c3a12a0f4673cd6d9b49895326b99c3}
+
+\begin{CompactList}\small\item\em bit depth in bits per pixel \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The DLNA profile for a icon image
+
+This complies with the DLNA media format guidelines. It contains a valid mime type, the resolution of the image and the corresponding bit depth
+
+The documentation for this struct was generated from the following file:\begin{CompactItemize}
+\item
+common.h\end{CompactItemize}
diff --git a/doc/latex/structDLNAProfile.tex b/doc/latex/structDLNAProfile.tex
new file mode 100644
index 0000000..bf53525
--- /dev/null
+++ b/doc/latex/structDLNAProfile.tex
@@ -0,0 +1,29 @@
+\hypertarget{structDLNAProfile}{
+\section{DLNAProfile Struct Reference}
+\label{structDLNAProfile}\index{DLNAProfile@{DLNAProfile}}
+}
+{\tt \#include $<$common.h$>$}
+
+\subsection*{Public Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{structDLNAProfile_4957399cd872c2d843a35a886f9a6a5a}{
+const char $\ast$ \hyperlink{structDLNAProfile_4957399cd872c2d843a35a886f9a6a5a}{ID}}
+\label{structDLNAProfile_4957399cd872c2d843a35a886f9a6a5a}
+
+\begin{CompactList}\small\item\em the DLNA profile ID \item\end{CompactList}\item
+\hypertarget{structDLNAProfile_79dc39f6af5a840901ad09617792cb41}{
+const char $\ast$ \hyperlink{structDLNAProfile_79dc39f6af5a840901ad09617792cb41}{mime}}
+\label{structDLNAProfile_79dc39f6af5a840901ad09617792cb41}
+
+\begin{CompactList}\small\item\em the mime type of the resource \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The combination of DLNA profile ID and the corresponding mime type
+
+This complies with the DLNA media format guidelines. Though this is very similar to the profile structure of libdlna, it comes without the additional label field as it seams to be not needed.
+
+The documentation for this struct was generated from the following file:\begin{CompactItemize}
+\item
+common.h\end{CompactItemize}
diff --git a/doc/latex/structcClass.tex b/doc/latex/structcClass.tex
new file mode 100644
index 0000000..625e1cf
--- /dev/null
+++ b/doc/latex/structcClass.tex
@@ -0,0 +1,67 @@
+\hypertarget{structcClass}{
+\section{cClass Struct Reference}
+\label{structcClass}\index{cClass@{cClass}}
+}
+{\tt \#include $<$object.h$>$}
+
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+bool \hyperlink{structcClass_22a5df5fd2bfc9e7b58018a6b8d45309}{operator==} (const \hyperlink{structcClass}{cClass} \&cmp)
+\item
+bool \hyperlink{structcClass_1de09f337ef261d363f261f83a3cf7ae}{operator!=} (const \hyperlink{structcClass}{cClass} \&cmp)
+\end{CompactItemize}
+\subsection*{Public Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{structcClass_0a14fb51e02dc017227b86e3c14b5cbd}{
+cString \hyperlink{structcClass_0a14fb51e02dc017227b86e3c14b5cbd}{ID}}
+\label{structcClass_0a14fb51e02dc017227b86e3c14b5cbd}
+
+\begin{CompactList}\small\item\em The upnp class ID. \item\end{CompactList}\item
+\hypertarget{structcClass_4c66f7ea7dc7bfd418ae8c23145ea3c8}{
+bool \hyperlink{structcClass_4c66f7ea7dc7bfd418ae8c23145ea3c8}{includeDerived}}
+\label{structcClass_4c66f7ea7dc7bfd418ae8c23145ea3c8}
+
+\begin{CompactList}\small\item\em flag, to indicate if derived classes are allowed \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Structure of a UPnP Class
+
+This represents a UPnP Class
+
+\subsection{Member Function Documentation}
+\hypertarget{structcClass_1de09f337ef261d363f261f83a3cf7ae}{
+\index{cClass@{cClass}!operator!=@{operator!=}}
+\index{operator!=@{operator!=}!cClass@{cClass}}
+\subsubsection[{operator!=}]{\setlength{\rightskip}{0pt plus 5cm}bool cClass::operator!= (const {\bf cClass} \& {\em cmp})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcClass_1de09f337ef261d363f261f83a3cf7ae}
+
+
+Compares two classes
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em cmp}]the other class to compare with \end{description}
+\end{Desc}
+ \hypertarget{structcClass_22a5df5fd2bfc9e7b58018a6b8d45309}{
+\index{cClass@{cClass}!operator==@{operator==}}
+\index{operator==@{operator==}!cClass@{cClass}}
+\subsubsection[{operator==}]{\setlength{\rightskip}{0pt plus 5cm}bool cClass::operator== (const {\bf cClass} \& {\em cmp})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcClass_22a5df5fd2bfc9e7b58018a6b8d45309}
+
+
+Compares two classes
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em cmp}]the other class to compare with \end{description}
+\end{Desc}
+
+
+The documentation for this struct was generated from the following file:\begin{CompactItemize}
+\item
+database/object.h\end{CompactItemize}
diff --git a/doc/latex/structcSortCrit.tex b/doc/latex/structcSortCrit.tex
new file mode 100644
index 0000000..5a38bfa
--- /dev/null
+++ b/doc/latex/structcSortCrit.tex
@@ -0,0 +1,29 @@
+\hypertarget{structcSortCrit}{
+\section{cSortCrit Struct Reference}
+\label{structcSortCrit}\index{cSortCrit@{cSortCrit}}
+}
+{\tt \#include $<$search.h$>$}
+
+\subsection*{Public Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{structcSortCrit_fedfdc7edd9ec85496338f52df0a04d1}{
+const char $\ast$ \hyperlink{structcSortCrit_fedfdc7edd9ec85496338f52df0a04d1}{Property}}
+\label{structcSortCrit_fedfdc7edd9ec85496338f52df0a04d1}
+
+\begin{CompactList}\small\item\em the Property, which shall be sorted \item\end{CompactList}\item
+\hypertarget{structcSortCrit_ca3564efa1903ab8b1ba144d43c6715f}{
+bool \hyperlink{structcSortCrit_ca3564efa1903ab8b1ba144d43c6715f}{SortDescending}}
+\label{structcSortCrit_ca3564efa1903ab8b1ba144d43c6715f}
+
+\begin{CompactList}\small\item\em sort the objects in descending order \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Sort criteria
+
+This is a structure for sorting objects. It has a certain property and a direction flag.
+
+The documentation for this struct was generated from the following file:\begin{CompactItemize}
+\item
+misc/search.h\end{CompactItemize}
diff --git a/doc/latex/structcUPnPObjectID.tex b/doc/latex/structcUPnPObjectID.tex
new file mode 100644
index 0000000..b5b6ce9
--- /dev/null
+++ b/doc/latex/structcUPnPObjectID.tex
@@ -0,0 +1,274 @@
+\hypertarget{structcUPnPObjectID}{
+\section{cUPnPObjectID Struct Reference}
+\label{structcUPnPObjectID}\index{cUPnPObjectID@{cUPnPObjectID}}
+}
+{\tt \#include $<$object.h$>$}
+
+\subsection*{Public Member Functions}
+\begin{CompactItemize}
+\item
+\hyperlink{structcUPnPObjectID_c2ee8d12b2b317fa430e9107f1870efe}{cUPnPObjectID} ()
+\item
+\hyperlink{structcUPnPObjectID_baeac468c4117f2fac4e3d93f3de9730}{cUPnPObjectID} (long ID)
+\item
+\hyperlink{structcUPnPObjectID_f3e044892ae1c1d840d4154ab96a2440}{cUPnPObjectID} (int ID)
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \& \hyperlink{structcUPnPObjectID_747dfcfad52baae471cc756bed63a6e8}{operator=} (long ID)
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \& \hyperlink{structcUPnPObjectID_b83af995ac5e03b6f6402d83a6713960}{operator=} (int ID)
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \& \hyperlink{structcUPnPObjectID_9d2adc7bcee2e5b1d51aa7ffc385296f}{operator=} (const \hyperlink{structcUPnPObjectID}{cUPnPObjectID} \&ID)
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \& \hyperlink{structcUPnPObjectID_c347bd50efed28fda02f98da46114786}{operator++} ()
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \hyperlink{structcUPnPObjectID_d46000a3acdd6f522bf3b86e48d47ddf}{operator++} (int)
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \hyperlink{structcUPnPObjectID_3e6872234bfd011a720b7847190dfdb9}{operator--} (int)
+\item
+\hyperlink{structcUPnPObjectID}{cUPnPObjectID} \& \hyperlink{structcUPnPObjectID_40864616e14e4b5c98ff274098402be7}{operator--} ()
+\item
+bool \hyperlink{structcUPnPObjectID_25b1f5cd4eb080cc4ab53731e1bd75f1}{operator!=} (long ID)
+\item
+bool \hyperlink{structcUPnPObjectID_b612ccd98af29996a4ac15cdbf01320f}{operator==} (long ID)
+\item
+bool \hyperlink{structcUPnPObjectID_5183bfe859555d90c7bc7abd576d0980}{operator!=} (int ID)
+\item
+bool \hyperlink{structcUPnPObjectID_18cf7d50a8ae1b6d2034e88fef78e23f}{operator==} (int ID)
+\item
+bool \hyperlink{structcUPnPObjectID_d55b5dc94c58d56762c602de5dd99790}{operator!=} (const \hyperlink{structcUPnPObjectID}{cUPnPObjectID} \&ID)
+\item
+bool \hyperlink{structcUPnPObjectID_54cb3e4ab1b340c9580e915dbf9319a1}{operator==} (const \hyperlink{structcUPnPObjectID}{cUPnPObjectID} \&ID)
+\item
+\hyperlink{structcUPnPObjectID_daa4eae524c68f1f85b8d82d16568d10}{operator unsigned int} ()
+\item
+\hyperlink{structcUPnPObjectID_73ff8d0e18486552dbfbf828a2e7bc7c}{operator int} ()
+\item
+\hyperlink{structcUPnPObjectID_d5659a7a9f7cfc7dd6ae0911ebd5e03c}{operator long} ()
+\item
+const char $\ast$ \hyperlink{structcUPnPObjectID_33e67c6f297892763b5a4a41cd435490}{operator$\ast$} ()
+\end{CompactItemize}
+\subsection*{Public Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{structcUPnPObjectID_af52b7865459a66369101b7fba35aa0c}{
+int \hyperlink{structcUPnPObjectID_af52b7865459a66369101b7fba35aa0c}{\_\-ID}}
+\label{structcUPnPObjectID_af52b7865459a66369101b7fba35aa0c}
+
+\begin{CompactList}\small\item\em The UPnP Object ID. \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+UPnP Object ID
+
+This is a UPnP Object ID representation.
+
+\subsection{Constructor \& Destructor Documentation}
+\hypertarget{structcUPnPObjectID_c2ee8d12b2b317fa430e9107f1870efe}{
+\index{cUPnPObjectID@{cUPnPObjectID}!cUPnPObjectID@{cUPnPObjectID}}
+\index{cUPnPObjectID@{cUPnPObjectID}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{cUPnPObjectID}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPObjectID::cUPnPObjectID ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_c2ee8d12b2b317fa430e9107f1870efe}
+
+
+Constructor
+
+Creates invalid ID \hypertarget{structcUPnPObjectID_baeac468c4117f2fac4e3d93f3de9730}{
+\index{cUPnPObjectID@{cUPnPObjectID}!cUPnPObjectID@{cUPnPObjectID}}
+\index{cUPnPObjectID@{cUPnPObjectID}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{cUPnPObjectID}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPObjectID::cUPnPObjectID (long {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_baeac468c4117f2fac4e3d93f3de9730}
+
+
+Constructor
+
+Creates from long integer \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]new ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_f3e044892ae1c1d840d4154ab96a2440}{
+\index{cUPnPObjectID@{cUPnPObjectID}!cUPnPObjectID@{cUPnPObjectID}}
+\index{cUPnPObjectID@{cUPnPObjectID}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{cUPnPObjectID}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPObjectID::cUPnPObjectID (int {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_f3e044892ae1c1d840d4154ab96a2440}
+
+
+Constructor
+
+Creates from integer \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]new ID \end{description}
+\end{Desc}
+
+
+\subsection{Member Function Documentation}
+\hypertarget{structcUPnPObjectID_73ff8d0e18486552dbfbf828a2e7bc7c}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator int@{operator int}}
+\index{operator int@{operator int}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator int}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPObjectID::operator int ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_73ff8d0e18486552dbfbf828a2e7bc7c}
+
+
+Casts to int \hypertarget{structcUPnPObjectID_d5659a7a9f7cfc7dd6ae0911ebd5e03c}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator long@{operator long}}
+\index{operator long@{operator long}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator long}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPObjectID::operator long ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_d5659a7a9f7cfc7dd6ae0911ebd5e03c}
+
+
+Casts to long \hypertarget{structcUPnPObjectID_daa4eae524c68f1f85b8d82d16568d10}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator unsigned int@{operator unsigned int}}
+\index{operator unsigned int@{operator unsigned int}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator unsigned int}]{\setlength{\rightskip}{0pt plus 5cm}cUPnPObjectID::operator unsigned int ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_daa4eae524c68f1f85b8d82d16568d10}
+
+
+Casts to unsigned int \hypertarget{structcUPnPObjectID_d55b5dc94c58d56762c602de5dd99790}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator!=@{operator!=}}
+\index{operator!=@{operator!=}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator!=}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPObjectID::operator!= (const {\bf cUPnPObjectID} \& {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_d55b5dc94c58d56762c602de5dd99790}
+
+
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]compare with this ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_5183bfe859555d90c7bc7abd576d0980}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator!=@{operator!=}}
+\index{operator!=@{operator!=}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator!=}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPObjectID::operator!= (int {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_5183bfe859555d90c7bc7abd576d0980}
+
+
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]compare with this ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_25b1f5cd4eb080cc4ab53731e1bd75f1}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator!=@{operator!=}}
+\index{operator!=@{operator!=}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator!=}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPObjectID::operator!= (long {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_25b1f5cd4eb080cc4ab53731e1bd75f1}
+
+
+Not equal \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]compare with this ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_33e67c6f297892763b5a4a41cd435490}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator$\ast$@{operator$\ast$}}
+\index{operator$\ast$@{operator$\ast$}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator$\ast$}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ cUPnPObjectID::operator$\ast$ ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_33e67c6f297892763b5a4a41cd435490}
+
+
+Casts to string \hypertarget{structcUPnPObjectID_d46000a3acdd6f522bf3b86e48d47ddf}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator++@{operator++}}
+\index{operator++@{operator++}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator++}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID} cUPnPObjectID::operator++ (int)\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_d46000a3acdd6f522bf3b86e48d47ddf}
+
+
+Post increment the ID \hypertarget{structcUPnPObjectID_c347bd50efed28fda02f98da46114786}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator++@{operator++}}
+\index{operator++@{operator++}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator++}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID}\& cUPnPObjectID::operator++ ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_c347bd50efed28fda02f98da46114786}
+
+
+Pre increment the ID \hypertarget{structcUPnPObjectID_40864616e14e4b5c98ff274098402be7}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator--@{operator--}}
+\index{operator--@{operator--}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator--}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID}\& cUPnPObjectID::operator-- ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_40864616e14e4b5c98ff274098402be7}
+
+
+Pre decrement the ID \hypertarget{structcUPnPObjectID_3e6872234bfd011a720b7847190dfdb9}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator--@{operator--}}
+\index{operator--@{operator--}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator--}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID} cUPnPObjectID::operator-- (int)\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_3e6872234bfd011a720b7847190dfdb9}
+
+
+Post decrement the ID \hypertarget{structcUPnPObjectID_9d2adc7bcee2e5b1d51aa7ffc385296f}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator=@{operator=}}
+\index{operator=@{operator=}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID}\& cUPnPObjectID::operator= (const {\bf cUPnPObjectID} \& {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_9d2adc7bcee2e5b1d51aa7ffc385296f}
+
+
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]new ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_b83af995ac5e03b6f6402d83a6713960}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator=@{operator=}}
+\index{operator=@{operator=}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID}\& cUPnPObjectID::operator= (int {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_b83af995ac5e03b6f6402d83a6713960}
+
+
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]new ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_747dfcfad52baae471cc756bed63a6e8}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator=@{operator=}}
+\index{operator=@{operator=}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}{\bf cUPnPObjectID}\& cUPnPObjectID::operator= (long {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_747dfcfad52baae471cc756bed63a6e8}
+
+
+Set the object ID \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]new ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_54cb3e4ab1b340c9580e915dbf9319a1}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator==@{operator==}}
+\index{operator==@{operator==}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator==}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPObjectID::operator== (const {\bf cUPnPObjectID} \& {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_54cb3e4ab1b340c9580e915dbf9319a1}
+
+
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]compare with this ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_18cf7d50a8ae1b6d2034e88fef78e23f}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator==@{operator==}}
+\index{operator==@{operator==}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator==}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPObjectID::operator== (int {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_18cf7d50a8ae1b6d2034e88fef78e23f}
+
+
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]compare with this ID \end{description}
+\end{Desc}
+\hypertarget{structcUPnPObjectID_b612ccd98af29996a4ac15cdbf01320f}{
+\index{cUPnPObjectID@{cUPnPObjectID}!operator==@{operator==}}
+\index{operator==@{operator==}!cUPnPObjectID@{cUPnPObjectID}}
+\subsubsection[{operator==}]{\setlength{\rightskip}{0pt plus 5cm}bool cUPnPObjectID::operator== (long {\em ID})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}}
+\label{structcUPnPObjectID_b612ccd98af29996a4ac15cdbf01320f}
+
+
+Equal \begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ID}]compare with this ID \end{description}
+\end{Desc}
+
+
+The documentation for this struct was generated from the following file:\begin{CompactItemize}
+\item
+database/object.h\end{CompactItemize}
diff --git a/doc/latex/structcUPnPResultSet.tex b/doc/latex/structcUPnPResultSet.tex
new file mode 100644
index 0000000..6a69ecf
--- /dev/null
+++ b/doc/latex/structcUPnPResultSet.tex
@@ -0,0 +1,34 @@
+\hypertarget{structcUPnPResultSet}{
+\section{cUPnPResultSet Struct Reference}
+\label{structcUPnPResultSet}\index{cUPnPResultSet@{cUPnPResultSet}}
+}
+{\tt \#include $<$metadata.h$>$}
+
+\subsection*{Public Attributes}
+\begin{CompactItemize}
+\item
+\hypertarget{structcUPnPResultSet_94b5bc7673773e674a81d0c5adc7f4e7}{
+int \hyperlink{structcUPnPResultSet_94b5bc7673773e674a81d0c5adc7f4e7}{mNumberReturned}}
+\label{structcUPnPResultSet_94b5bc7673773e674a81d0c5adc7f4e7}
+
+\begin{CompactList}\small\item\em The number of returned matches. \item\end{CompactList}\item
+\hypertarget{structcUPnPResultSet_78bd90b56bfc5804e54df6579cd8e541}{
+int \hyperlink{structcUPnPResultSet_78bd90b56bfc5804e54df6579cd8e541}{mTotalMatches}}
+\label{structcUPnPResultSet_78bd90b56bfc5804e54df6579cd8e541}
+
+\begin{CompactList}\small\item\em The total amount of matches. \item\end{CompactList}\item
+\hypertarget{structcUPnPResultSet_7e891eca2a37daea6285d2f7a2731c1d}{
+const char $\ast$ \hyperlink{structcUPnPResultSet_7e891eca2a37daea6285d2f7a2731c1d}{mResult}}
+\label{structcUPnPResultSet_7e891eca2a37daea6285d2f7a2731c1d}
+
+\begin{CompactList}\small\item\em The DIDL-Lite fragment. \item\end{CompactList}\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+The result set of a request
+
+This contains the results of a previous {\em Browse\/} or {\em Search\/} request.
+
+The documentation for this struct was generated from the following file:\begin{CompactItemize}
+\item
+database/metadata.h\end{CompactItemize}
diff --git a/doc/upnpdlna.dox b/doc/upnpdlna.dox
new file mode 100644
index 0000000..a791812
--- /dev/null
+++ b/doc/upnpdlna.dox
@@ -0,0 +1,1510 @@
+# Doxyfile 1.5.8
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "UPnP/DLNA plugin for VDR"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = 0.0.1
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ./doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES = "bc= \b \c"
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE = doxygen.err
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = . ./database ./misc ./receiver ./server ./upnpcomponents
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = *.h *.cpp
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature. Other possible values
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW = NONE
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = YES
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = YES
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Options related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/http/icons/upnpIconLrg.jpeg b/http/icons/upnpIconLrg.jpeg
new file mode 100755
index 0000000..6421267
--- /dev/null
+++ b/http/icons/upnpIconLrg.jpeg
Binary files differ
diff --git a/http/icons/upnpIconLrg.png b/http/icons/upnpIconLrg.png
new file mode 100755
index 0000000..d93e7c0
--- /dev/null
+++ b/http/icons/upnpIconLrg.png
Binary files differ
diff --git a/http/icons/upnpIconSm.jpeg b/http/icons/upnpIconSm.jpeg
new file mode 100755
index 0000000..b163f05
--- /dev/null
+++ b/http/icons/upnpIconSm.jpeg
Binary files differ
diff --git a/http/icons/upnpIconSm.png b/http/icons/upnpIconSm.png
new file mode 100755
index 0000000..d4320f4
--- /dev/null
+++ b/http/icons/upnpIconSm.png
Binary files differ
diff --git a/http/xml/cds_scpd.xml b/http/xml/cds_scpd.xml
new file mode 100644
index 0000000..dff4252
--- /dev/null
+++ b/http/xml/cds_scpd.xml
@@ -0,0 +1,145 @@
+<?xml version = "1.0" encoding="UTF-8"?>
+<scpd xmlns="urn:schemas-upnp-org:service-1-0">
+<specVersion>
+<major>1</major>
+<minor>0</minor>
+</specVersion>
+<actionList>
+<action>
+<name>GetSearchCapabilities</name>
+<argumentList>
+<argument>
+<name>SearchCaps</name>
+<direction>out</direction>
+<relatedStateVariable>SearchCapabilities</relatedStateVariable>
+</argument>
+</argumentList>
+</action>
+<action>
+<name>GetSortCapabilities</name>
+<argumentList>
+<argument>
+<name>SortCaps</name>
+<direction>out</direction>
+<relatedStateVariable>SortCapabilities</relatedStateVariable>
+</argument>
+</argumentList>
+</action>
+<action>
+<name>GetSystemUpdateID</name>
+<argumentList>
+<argument>
+<name>Id</name>
+<direction>out</direction>
+<relatedStateVariable>SystemUpdateID</relatedStateVariable>
+</argument>
+</argumentList>
+</action>
+<action>
+<name>Browse</name>
+<argumentList>
+<argument>
+<name>ObjectID</name>
+<direction>in</direction>
+<relatedStateVariable>A_ARG_TYPE_ObjectID</relatedStateVariable>
+</argument>
+<argument>
+<name>BrowseFlag</name>
+<direction>in</direction>
+<relatedStateVariable>A_ARG_TYPE_BrowseFlag</relatedStateVariable>
+</argument>
+<argument>
+<name>Filter</name>
+<direction>in</direction>
+<relatedStateVariable>A_ARG_TYPE_Filter</relatedStateVariable>
+</argument>
+<argument>
+<name>StartingIndex</name>
+<direction>in</direction>
+<relatedStateVariable>A_ARG_TYPE_Index</relatedStateVariable>
+</argument>
+<argument>
+<name>RequestedCount</name>
+<direction>in</direction>
+<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
+</argument>
+<argument>
+<name>SortCriteria</name>
+<direction>in</direction>
+<relatedStateVariable>A_ARG_TYPE_SortCriteria</relatedStateVariable>
+</argument>
+<argument>
+<name>Result</name>
+<direction>out</direction>
+<relatedStateVariable>A_ARG_TYPE_Result</relatedStateVariable>
+</argument>
+<argument>
+<name>NumberReturned</name>
+<direction>out</direction>
+<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
+</argument>
+<argument>
+<name>TotalMatches</name>
+<direction>out</direction>
+<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
+</argument>
+<argument>
+<name>UpdateID</name>
+<direction>out</direction>
+<relatedStateVariable>A_ARG_TYPE_UpdateID</relatedStateVariable>
+</argument>
+</argumentList>
+</action>
+</actionList>
+<serviceStateTable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_ObjectID</name>
+<dataType>string</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_Result</name>
+<dataType>string</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_BrowseFlag</name>
+<dataType>string</dataType>
+<allowedValueList>
+<allowedValue>BrowseMetadata</allowedValue>
+<allowedValue>BrowseDirectChildren</allowedValue>
+</allowedValueList>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_Filter</name>
+<dataType>string</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_SortCriteria</name>
+<dataType>string</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_Index</name>
+<dataType>ui4</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_Count</name>
+<dataType>ui4</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>A_ARG_TYPE_UpdateID</name>
+<dataType>ui4</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>SearchCapabilities</name>
+<dataType>string</dataType>
+</stateVariable>
+<stateVariable sendEvents="no">
+<name>SortCapabilities</name>
+<dataType>string</dataType>
+</stateVariable>
+<stateVariable sendEvents="yes">
+<name>SystemUpdateID</name>
+<dataType>ui4</dataType>
+</stateVariable>
+</serviceStateTable>
+</scpd>
+
diff --git a/http/xml/cms_scpd.xml b/http/xml/cms_scpd.xml
new file mode 100644
index 0000000..e4071f9
--- /dev/null
+++ b/http/xml/cms_scpd.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scpd xmlns="urn:schemas-upnp-org:service-1-0">
+ <specVersion>
+ <major>1</major>
+ <minor>0</minor>
+ </specVersion>
+ <actionList>
+ <action>
+ <name>GetProtocolInfo</name>
+ <argumentList>
+ <argument>
+ <name>Source</name>
+ <direction>out</direction>
+ <relatedStateVariable>SourceProtocolInfo</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>Sink</name>
+ <direction>out</direction>
+ <relatedStateVariable>SinkProtocolInfo</relatedStateVariable>
+ </argument>
+ </argumentList>
+ </action>
+ <action>
+ <name>GetCurrentConnectionIDs</name>
+ <argumentList>
+ <argument>
+ <name>ConnectionIDs</name>
+ <direction>out</direction>
+ <relatedStateVariable>CurrentConnectionIDs</relatedStateVariable>
+ </argument>
+ </argumentList>
+ </action>
+ <action>
+ <name>GetCurrentConnectionInfo</name>
+ <argumentList>
+ <argument>
+ <name>ConnectionID</name>
+ <direction>in</direction>
+ <relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>RcsID</name>
+ <direction>out</direction>
+ <relatedStateVariable>A_ARG_TYPE_RcsID</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>AVTransportID</name>
+ <direction>out</direction>
+ <relatedStateVariable>A_ARG_TYPE_AVTransportID</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>ProtocolInfo</name>
+ <direction>out</direction>
+ <relatedStateVariable>A_ARG_TYPE_ProtocolInfo</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>PeerConnectionManager</name>
+ <direction>out</direction>
+ <relatedStateVariable>A_ARG_TYPE_ConnectionManager</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>PeerConnectionID</name>
+ <direction>out</direction>
+ <relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>Direction</name>
+ <direction>out</direction>
+ <relatedStateVariable>A_ARG_TYPE_Direction</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>Status</name>
+ <direction>out</direction>
+ <relatedStateVariable>A_ARG_TYPE_ConnectionStatus</relatedStateVariable>
+ </argument>
+ </argumentList>
+ </action>
+ </actionList>
+ <serviceStateTable>
+ <stateVariable sendEvents="yes">
+ <name>SourceProtocolInfo</name>
+ <dataType>string</dataType>
+ </stateVariable>
+ <stateVariable sendEvents="yes">
+ <name>SinkProtocolInfo</name>
+ <dataType>string</dataType>
+ </stateVariable>
+ <stateVariable sendEvents="yes">
+ <name>CurrentConnectionIDs</name>
+ <dataType>string</dataType>
+ </stateVariable>
+ <stateVariable sendEvents="no">
+ <name>A_ARG_TYPE_ConnectionStatus</name>
+ <dataType>string</dataType>
+ <allowedValueList>
+ <allowedValue>OK</allowedValue>
+ <allowedValue>ContentFormatMismatch</allowedValue>
+ <allowedValue>InsufficientBandwidth</allowedValue>
+ <allowedValue>UnreliableChannel</allowedValue>
+ <allowedValue>Unknown</allowedValue>
+ </allowedValueList>
+ </stateVariable>
+ <stateVariable sendEvents="no">
+ <name>A_ARG_TYPE_ConnectionManager</name>
+ <dataType>string</dataType>
+ </stateVariable>
+ <stateVariable sendEvents="no">
+ <name>A_ARG_TYPE_Direction</name>
+ <dataType>string</dataType>
+ <allowedValueList>
+ <allowedValue>Input</allowedValue>
+ <allowedValue>Output</allowedValue>
+ </allowedValueList>
+ </stateVariable>
+ <stateVariable sendEvents="no">
+ <name>A_ARG_TYPE_ProtocolInfo</name>
+ <dataType>string</dataType>
+ </stateVariable>
+ <stateVariable sendEvents="no">
+ <name>A_ARG_TYPE_ConnectionID</name>
+ <dataType>i4</dataType>
+ </stateVariable>
+ <stateVariable sendEvents="no">
+ <name>A_ARG_TYPE_AVTransportID</name>
+ <dataType>i4</dataType>
+ </stateVariable>
+ <stateVariable sendEvents="no">
+ <name>A_ARG_TYPE_RcsID</name>
+ <dataType>i4</dataType>
+ </stateVariable>
+ </serviceStateTable>
+</scpd>
+
diff --git a/inc/avdetector.h b/inc/avdetector.h
new file mode 100644
index 0000000..923608f
--- /dev/null
+++ b/inc/avdetector.h
@@ -0,0 +1,124 @@
+/*
+ * File: avdetector.h
+ * Author: savop
+ *
+ * Created on 26. Oktober 2009, 13:02
+ */
+
+#ifndef _AVDETECTOR_H
+#define _AVDETECTOR_H
+
+#include "profiles.h"
+#include <vdr/recording.h>
+#include <vdr/channels.h>
+
+extern "C" {
+#include <libavcodec/avcodec.h>
+#include <libavformat/avformat.h>
+}
+
+/**
+ * The audio/video detector
+ *
+ * This is the audio video detector, which analizes the audio and video stream
+ * of a file to gather more information about the resource. This is also
+ * required for determination of a suitable DLNA profile.
+ */
+class cAudioVideoDetector {
+private:
+ void init();
+ void uninit();
+ int detectChannelProperties();
+ int detectFileProperties();
+ int detectRecordingProperties();
+ /**
+ * Detect video properties
+ *
+ * This detects video properties of a video stream
+ *
+ * @return returns
+ * - \bc 0, if the detection was successful
+ * - \bc <0, otherwise
+ */
+ int analyseVideo(AVFormatContext* FormatCtx);
+ /**
+ * Detect audio properties
+ *
+ * This detects audio properties of a video or audio stream
+ *
+ * @return returns
+ * - \bc 0, if the detection was successful
+ * - \bc <0, otherwise
+ */
+ int analyseAudio(AVFormatContext* FormatCtx);
+ /**
+ * Detect DLNA profile
+ *
+ * This detects the matching DLNA profile for the video or audio item
+ *
+ * @return returns
+ * - \bc 0, if the detection was successful
+ * - \bc <0, otherwise
+ */
+ int detectDLNAProfile(AVFormatContext* FormatCtx);
+ UPNP_RESOURCE_TYPES mResourceType;
+ union {
+ const cChannel* Channel;
+ const cRecording* Recording;
+ const char* Filename;
+ } mResource;
+ int mWidth;
+ int mHeight;
+ int mBitrate;
+ int mBitsPerSample;
+ int mColorDepth;
+ off64_t mDuration;
+ off64_t mSize;
+ int mSampleFrequency;
+ int mNrAudioChannels;
+ DLNAProfile* mDLNAProfile;
+public:
+ cAudioVideoDetector(const char* Filename);
+ cAudioVideoDetector(const cChannel* Channel);
+ cAudioVideoDetector(const cRecording* Recording);
+ virtual ~cAudioVideoDetector();
+ /**
+ * Detect resource properties of the file
+ *
+ * This detects the resource properties of a file. If the returned value
+ * is 0, no erros occured while detection and the properties are properly
+ * set. Otherwise, in case of an error, the properties may have
+ * unpredictable values.
+ *
+ * @return returns
+ * - \bc 0, if the detection was successful
+ * - \bc <0, otherwise
+ */
+ int detectProperties();
+ DLNAProfile* getDLNAProfile() const { return this->mDLNAProfile; }
+ const char* getContentType() const { return (this->mDLNAProfile) ? this->mDLNAProfile->mime : NULL; }
+ const char* getProtocolInfo() const;
+ int getWidth() const { return this->mWidth; }
+ int getHeight() const { return this->mHeight; }
+ int getBitrate() const { return this->mBitrate; }
+ int getBitsPerSample() const { return this->mBitsPerSample; }
+ int getSampleFrequency() const { return this->mSampleFrequency; }
+ int getNumberOfAudioChannels() const { return this->mNrAudioChannels; }
+ int getColorDepth() const { return this->mColorDepth; }
+ off64_t getFileSize() const { return this->mSize; }
+ off64_t getDuration() const { return this->mDuration; }
+};
+
+class cCodecToolKit {
+public:
+ static AVCodecContext* getFirstCodecContext(AVFormatContext* FormatCtx, CodecType Type);
+ static AVStream* getFirstStream(AVFormatContext* FormatCtx, CodecType Type);
+ static bool matchesAcceptedBitrates(AcceptedBitrates Bitrates, AVCodecContext* Codec);
+ static bool matchesAcceptedSystemBitrate(AcceptedBitrates Bitrate, AVFormatContext* Format);
+ static bool matchesAcceptedAudioChannels(AcceptedAudioChannels Channels, AVCodecContext* Codec);
+ static bool matchesAcceptedSamplingRates(AcceptedSamplingRates SamplingRates, AVCodecContext* Codec);
+ static bool matchesAcceptedResolutions(AcceptedResolution *Resolutions, int Count, AVStream* Stream);
+};
+
+#endif /* _AVDETECTOR_H */
+
diff --git a/inc/config.h b/inc/config.h
new file mode 100644
index 0000000..10f92e7
--- /dev/null
+++ b/inc/config.h
@@ -0,0 +1,74 @@
+/*
+ * File: config.h
+ * Author: savop
+ *
+ * Created on 15. August 2009, 13:03
+ */
+
+#ifndef _CONFIG_H
+#define _CONFIG_H
+
+#include <vdr/tools.h>
+#include "../common.h"
+
+/**
+ * The configuration settings
+ *
+ * This holds the configurations for the server. It holds information about the
+ * network settings as well as some status flags.
+ */
+class cUPnPConfig {
+private:
+ static cUPnPConfig* mInstance;
+ cString mParsedArgs;
+ cUPnPConfig();
+public:
+ static int verbosity; ///< the verbosity of the plugin, the higher the more messages
+ ///< are printed.
+ char* mInterface; ///< the network interface, which the server is bound to
+ char* mAddress; ///< the IP address which is used by the server
+ int mPort; ///< the port which the server is listening on
+ int mEnable; ///< indicates, if the server is enabled or not
+ int mAutoSetup; ///< indicates, if the settings are automatically detected
+ char* mDatabaseFolder; ///< the directory where the metadata.db is located
+ char* mHTTPFolder; ///< the directory where the HTTP data is located
+public:
+ virtual ~cUPnPConfig();
+ /**
+ * Get the configuration
+ *
+ * This returns the instance of the current configuration settings.
+ *
+ * @return the configuration object
+ */
+ static cUPnPConfig* get();
+ /**
+ * Parse setup variable
+ *
+ * This parses the setup variable with the according value. The value is a
+ * string representation and must be converted into the according data type.
+ *
+ * @return returns
+ * - \bc true, if parsing was successful
+ * - \bc false, otherwise
+ * @param Name the name of the variable
+ * @param Value the according value of the variable
+ */
+ bool parseSetup(const char* Name, const char* Value);
+ /**
+ * Processes the commandline arguments
+ *
+ * This processes the commandline arguments which the user specified at the
+ * start of the plugin.
+ *
+ * @return returns
+ * - \bc true, if processing was successful
+ * - \bc false, otherwise
+ * @param argc the number of arguments in the list
+ * @param argv the arguments as a char array
+ */
+ bool processArgs(int argc, char* argv[]);
+};
+
+#endif /* _CONFIG_H */
+
diff --git a/inc/database.h b/inc/database.h
new file mode 100644
index 0000000..5bb595f
--- /dev/null
+++ b/inc/database.h
@@ -0,0 +1,1024 @@
+/*
+ * File: database.h
+ * Author: savop
+ *
+ * Created on 3. September 2009, 22:20
+ */
+
+#ifndef _DATABASE_H
+#define _DATABASE_H
+
+#include <sqlite3.h>
+#include <vdr/tools.h>
+#include "../common.h"
+
+#define SQLITE_CASCADE_DELETES
+
+#define PK_OBJECTS TOSTRING(1)
+#define PK_RESOURCES TOSTRING(2)
+#define PK_SEARCHCLASSES TOSTRING(3)
+
+#define SQLITE_FIRST_CUSTOMID TOSTRING(100)
+
+#define SQLITE_COLUMN_NAME_LENGTH 64
+
+#define SQLITE_TABLE_RESOURCES "Resources"
+#define SQLITE_TABLE_OBJECTS "Objects"
+#define SQLITE_TABLE_ITEMS "Items"
+#define SQLITE_TABLE_CONTAINERS "Containers"
+#define SQLITE_TABLE_VIDEOITEMS "VideoItems"
+#define SQLITE_TABLE_AUDIOITEMS "AudioItems"
+#define SQLITE_TABLE_IMAGEITEMS "ImageItems"
+#define SQLITE_TABLE_VIDEOBROADCASTS "VideoBroadcasts"
+#define SQLITE_TABLE_AUDIOBROADCASTS "AudioBroadcasts"
+#define SQLITE_TABLE_MOVIES "Movies"
+#define SQLITE_TABLE_PHOTOS "Photos"
+#define SQLITE_TABLE_ALBUMS "Albums"
+#define SQLITE_TABLE_PLAYLISTS "Playlists"
+#define SQLITE_TABLE_SEARCHCLASS "SearchClass"
+#define SQLITE_TABLE_PRIMARY_KEYS "PrimaryKeys"
+#define SQLITE_TABLE_SYSTEM "System"
+#define SQLITE_TABLE_ITEMFINDER "ItemFinder"
+
+#define SQLITE_TYPE_TEXT "TEXT"
+#define SQLITE_TYPE_INTEGER "INTEGER"
+#define SQLITE_TYPE_BOOL SQLITE_TYPE_INTEGER
+#define SQLITE_TYPE_DATE SQLITE_TYPE_TEXT
+#define SQLITE_TYPE_ULONG SQLITE_TYPE_INTEGER
+#define SQLITE_TYPE_LONG SQLITE_TYPE_INTEGER
+#define SQLITE_TYPE_UINTEGER SQLITE_TYPE_INTEGER
+
+#define SQLITE_TRANSACTION_BEGIN "BEGIN IMMEDIATE TRANSACTION "
+#define SQLITE_TRANSACTION_END "COMMIT TRANSACTION"
+#define SQLITE_TRANSACTION_TYPE "ROLLBACK"
+
+#define SQLITE_CONFLICT_CLAUSE "ON CONFLICT " SQLITE_TRANSACTION_TYPE
+#define SQLITE_PRIMARY_KEY SQLITE_TYPE_INTEGER " PRIMARY KEY"
+#define SQLITE_NOT_NULL "NOT NULL"
+#define SQLITE_UNIQUE "UNIQUE"
+
+#define SQLITE_COL_OBJECTID "ObjectID"
+#define SQLITE_COL_PARENTID "ParentID"
+#define SQLITE_COL_TITLE "Title"
+#define SQLITE_COL_CREATOR "Creator"
+#define SQLITE_COL_CLASS "Class"
+#define SQLITE_COL_RESTRICTED "Restricted"
+#define SQLITE_COL_WRITESTATUS "WriteStatus"
+#define SQLITE_COL_REFERENCEID "RefID"
+#define SQLITE_COL_CLASSDERIVED "IncludeDerived"
+#define SQLITE_COL_SEARCHABLE "Searchable"
+#define SQLITE_COL_CONTAINER_UID "UpdateID"
+#define SQLITE_COL_RESOURCEID "ResourceID"
+#define SQLITE_COL_PROTOCOLINFO "ProtocolInfo"
+#define SQLITE_COL_CONTENTTYPE "ContentType"
+#define SQLITE_COL_RESOURCETYPE "ResourceType"
+#define SQLITE_COL_RESOURCE "Resource"
+#define SQLITE_COL_SIZE "Size"
+#define SQLITE_COL_DURATION "Duration"
+#define SQLITE_COL_BITRATE "Bitrate"
+#define SQLITE_COL_SAMPLEFREQUENCE "SampleFreq"
+#define SQLITE_COL_BITSPERSAMPLE "BitsPerSample"
+#define SQLITE_COL_NOAUDIOCHANNELS "NoAudioChannels"
+#define SQLITE_COL_COLORDEPTH "ColorDepth"
+#define SQLITE_COL_RESOLUTION "Resolution"
+#define SQLITE_COL_GENRE "Genre"
+#define SQLITE_COL_LONGDESCRIPTION "LongDescription"
+#define SQLITE_COL_PRODUCER "Producer"
+#define SQLITE_COL_RATING "Rating"
+#define SQLITE_COL_ACTOR "Actor"
+#define SQLITE_COL_DIRECTOR "Director"
+#define SQLITE_COL_DESCRIPTION "Description"
+#define SQLITE_COL_PUBLISHER "Publisher"
+#define SQLITE_COL_LANGUAGE "Language"
+#define SQLITE_COL_RELATION "Relation"
+#define SQLITE_COL_STORAGEMEDIUM "StorageMedium"
+#define SQLITE_COL_DVDREGIONCODE "DVDRegionCode"
+#define SQLITE_COL_CHANNELNAME "Channelname"
+#define SQLITE_COL_SCHEDULEDSTARTTIME "ScheduledStartTime"
+#define SQLITE_COL_SCHEDULEDENDTIME "ScheduledEndTime"
+#define SQLITE_COL_ICON "Icon"
+#define SQLITE_COL_REGION "Region"
+#define SQLITE_COL_CHANNELNR "ChannelNr"
+#define SQLITE_COL_RIGHTS "Rights"
+#define SQLITE_COL_RADIOCALLSIGN "CallSign"
+#define SQLITE_COL_RADIOSTATIONID "StationID"
+#define SQLITE_COL_RADIOBAND "Band"
+#define SQLITE_COL_CONTRIBUTOR "Contributor"
+#define SQLITE_COL_DATE "Date"
+#define SQLITE_COL_ALBUM "Album"
+#define SQLITE_COL_ARTIST "Artist"
+#define SQLITE_COL_DLNA_CONTAINERTYPE "DLNAContainer"
+#define SQLITE_COL_CHILDCOUNT "ChildCount"
+#define SQLITE_COL_ITEMFINDER "ItemFastID"
+
+#define SQLITE_UPNP_OBJECTID SQLITE_COL_OBJECTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL " " SQLITE_CONFLICT_CLAUSE " "\
+ SQLITE_UNIQUE " " SQLITE_CONFLICT_CLAUSE
+
+#define SQLITE_INSERT_TRIGGER(TableA,TableB,Class) "CREATE TRIGGER IF NOT EXISTS "\
+ TableA "_I_" TableB " "\
+ "BEFORE INSERT ON "\
+ TableB " "\
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "((SELECT " SQLITE_COL_OBJECTID " FROM " TableA " "\
+ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID " "\
+ ") IS NULL) "\
+ "OR "\
+ "((SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_OBJECTS " "\
+ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID " "\
+ "AND " SQLITE_COL_CLASS " LIKE '" Class "%%') IS NULL) "\
+ ") THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ", "\
+ "'INSERT on table " TableB " failed due constraint violation "\
+ "on foreign key " SQLITE_COL_OBJECTID "'"\
+ ") "\
+ "END; END;"
+
+#define SQLITE_UPDATE_TRIGGER(TableA,TableB,Class) "CREATE TRIGGER IF NOT EXISTS "\
+ TableA "_U_" TableB " "\
+ "BEFORE UPDATE ON "\
+ TableB " "\
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "((SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_OBJECTS " "\
+ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID " "\
+ "AND " SQLITE_COL_CLASS " LIKE '" Class "%%') IS NULL)"\
+ ") THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ", "\
+ "'UPDATE on table " TableB " failed due constraint violation "\
+ "on foreign key " SQLITE_COL_OBJECTID "'"\
+ ") "\
+ "END; END;"
+
+#define SQLITE_INSERT_REFERENCE_TRIGGER(Table,Column) "CREATE TRIGGER IF NOT EXISTS "\
+ Table "_I_" Table " "\
+ "BEFORE INSERT ON " \
+ Table " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ( "\
+ "((SELECT " SQLITE_COL_OBJECTID " FROM " Table " "\
+ "WHERE " SQLITE_COL_OBJECTID " = NEW." Column ") IS NULL) "\
+ "AND "\
+ "(NEW." Column "!=-1)"\
+ ")THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " Table " "\
+ "violates foreign key \"" Column "\"') "\
+ "END; END;"
+
+#define SQLITE_UPDATE_REFERENCE_TRIGGER(Table,Column) "CREATE TRIGGER IF NOT EXISTS "\
+ Table "_U_" Table " "\
+ "BEFORE INSERT ON " \
+ Table " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ( "\
+ "((SELECT " SQLITE_COL_OBJECTID " FROM " Table " "\
+ "WHERE " SQLITE_COL_OBJECTID " = NEW." Column ") IS NULL) "\
+ "AND "\
+ "(NEW." Column "!=-1)"\
+ ")THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ", 'UPDATE on table " Table " "\
+ "violates foreign key \"" Column "\"') "\
+ "END; END;"
+
+#define SQLITE_DELETE_REFERENCE_TRIGGER(Table,Column) "CREATE TRIGGER IF NOT EXISTS "\
+ Table "_D_" Table " " \
+ "BEFORE DELETE ON " \
+ Table " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "(SELECT " Column " FROM " Table " "\
+ "WHERE " Column " = OLD." SQLITE_COL_OBJECTID ") IS NOT NULL"\
+ ")THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ", 'DELETE on table " Table " "\
+ "violates foreign key \"" Column "\"') "\
+ "END; END;"
+
+#ifdef SQLITE_CASCADE_DELETES
+#define SQLITE_DELETE_TRIGGER(TableA,TableB) "CREATE TRIGGER IF NOT EXISTS "\
+ TableA "_D_" TableB " "\
+ "BEFORE DELETE ON "\
+ TableA " "\
+ "FOR EACH ROW BEGIN "\
+ "DELETE FROM " TableB " "\
+ "WHERE " SQLITE_COL_OBJECTID "=OLD." SQLITE_COL_OBJECTID "; "\
+ "END;"
+
+#define SQLITE_DELETE_PARENT_TRIGGER "CREATE TRIGGER IF NOT EXISTS "\
+ SQLITE_TABLE_OBJECTS "_D_" SQLITE_TABLE_OBJECTS " " \
+ "BEFORE DELETE ON " \
+ SQLITE_TABLE_OBJECTS " " \
+ "FOR EACH ROW BEGIN "\
+ "DELETE FROM " SQLITE_TABLE_OBJECTS " "\
+ "WHERE " SQLITE_COL_PARENTID "=OLD." SQLITE_COL_OBJECTID "; "\
+ "END;"
+#else
+#define SQLITE_DELETE_TRIGGER(TableA,TableB) "CREATE TRIGGER IF NOT EXISTS "\
+ TableA "_D_" TableB " "\
+ "BEFORE DELETE ON "\
+ TableA " "\
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "(SELECT " SQLITE_COL_OBJECTID " FROM " TableB " "\
+ "WHERE " SQLITE_COL_OBJECTID "=OLD." SQLITE_COL_OBJECTID ") IS NOT NULL"\
+ ") THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ", "\
+ "'DELETE on table " TableA " failed due constraint violation "\
+ "on foreign key " SQLITE_COL_OBJECTID "'"\
+ ") "\
+ "END; END;"
+
+#define SQLITE_DELETE_PARENT_TRIGGER SQLITE_DELETE_REFERENCE_TRIGGER(SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID)
+#endif
+
+/**********************************************\
+* *
+* Primary keys *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_PRIMARY_KEYS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_PRIMARY_KEYS \
+ "("\
+ "KeyID " SQLITE_PRIMARY_KEY " " SQLITE_NOT_NULL ","\
+ "Key " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL\
+ ");"\
+ "INSERT OR IGNORE INTO "\
+ SQLITE_TABLE_PRIMARY_KEYS \
+ "(KeyID, Key) VALUES ("\
+ PK_OBJECTS "," SQLITE_FIRST_CUSTOMID\
+ ");"\
+ "INSERT OR IGNORE INTO "\
+ SQLITE_TABLE_PRIMARY_KEYS \
+ "(KeyID, Key) VALUES ("\
+ PK_RESOURCES ",0"\
+ ");"\
+ "INSERT OR IGNORE INTO "\
+ SQLITE_TABLE_PRIMARY_KEYS \
+ "(KeyID, Key) VALUES ("\
+ PK_SEARCHCLASSES ",0"\
+ ");"
+
+#define SQLITE_TRIGGER_UPDATE_OBJECTID "CREATE TRIGGER IF NOT EXISTS "\
+ SQLITE_TABLE_OBJECTS "_PK_UPDATE "\
+ "AFTER INSERT ON "\
+ SQLITE_TABLE_OBJECTS " "\
+ "BEGIN "\
+ "UPDATE " SQLITE_TABLE_PRIMARY_KEYS " SET Key=Key+1 WHERE KeyID=" PK_OBJECTS "; "\
+ "END;"
+
+/**********************************************\
+* *
+* System settings *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_SYSTEM "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_SYSTEM " "\
+ "("\
+ "Key " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL " " SQLITE_UNIQUE ","\
+ "Value " SQLITE_TYPE_TEXT " "\
+ ");"
+
+#define SQLITE_TRIGGER_UPDATE_SYSTEM "CREATE TRIGGER IF NOT EXISTS "\
+ SQLITE_TABLE_SYSTEM "_VALUE_UPDATE "\
+ "BEFORE UPDATE "\
+ "ON " SQLITE_TABLE_SYSTEM " "\
+ "WHEN ((SELECT Key FROM " SQLITE_TABLE_SYSTEM " WHERE Key=NEW.Key) IS NULL) "\
+ "BEGIN INSERT INTO " SQLITE_TABLE_SYSTEM " (Key) VALUES (NEW.Key); END;"
+
+/**********************************************\
+* *
+* Fast item finder *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_ITEMFINDER "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_ITEMFINDER " "\
+ "("\
+ SQLITE_UPNP_OBJECTID ","\
+ SQLITE_COL_ITEMFINDER " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL " " SQLITE_UNIQUE \
+ ");"
+
+#define SQLITE_TRIGGER_D_OBJECTS_ITEMFINDER SQLITE_DELETE_TRIGGER(SQLITE_TABLE_OBJECTS,\
+ SQLITE_TABLE_ITEMFINDER)
+
+/**********************************************\
+* *
+* Objects *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_OBJECTS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_OBJECTS \
+ "(" \
+ SQLITE_COL_OBJECTID " " SQLITE_PRIMARY_KEY " " SQLITE_NOT_NULL " " SQLITE_CONFLICT_CLAUSE "," \
+ SQLITE_COL_PARENTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL " " SQLITE_CONFLICT_CLAUSE "," \
+ SQLITE_COL_TITLE " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_CREATOR " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_CLASS " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_RESTRICTED " " SQLITE_TYPE_BOOL " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_WRITESTATUS " " SQLITE_TYPE_INTEGER \
+ ");"
+
+// Trigger for foreign key ParentID
+
+#define SQLITE_TRIGGER_D_OBJECTS_OBJECTS SQLITE_DELETE_PARENT_TRIGGER
+
+#define SQLITE_TRIGGER_I_OBJECTS_OBJECTS SQLITE_INSERT_REFERENCE_TRIGGER(SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID)\
+ "CREATE TRIGGER IF NOT EXISTS "\
+ SQLITE_TABLE_OBJECTS "_PI_" SQLITE_TABLE_OBJECTS " "\
+ "BEFORE INSERT ON "\
+ SQLITE_TABLE_OBJECTS " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "((SELECT " SQLITE_COL_PARENTID " FROM " SQLITE_TABLE_OBJECTS " "\
+ "WHERE " SQLITE_COL_PARENTID "=-1) IS NOT NULL) "\
+ "AND "\
+ "(NEW." SQLITE_COL_PARENTID "=-1)"\
+ ") THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ","\
+ "'INSERT on table " SQLITE_TABLE_OBJECTS " violates constraint. "\
+ SQLITE_COL_PARENTID " must uniquely be -1') "\
+ "END; END;"
+
+#define SQLITE_TRIGGER_U_OBJECTS_OBJECTS SQLITE_UPDATE_REFERENCE_TRIGGER(SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID)\
+ "CREATE TRIGGER IF NOT EXISTS "\
+ SQLITE_TABLE_OBJECTS "_PU_" SQLITE_TABLE_OBJECTS " "\
+ "BEFORE UPDATE ON "\
+ SQLITE_TABLE_OBJECTS " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "((SELECT " SQLITE_COL_PARENTID " FROM " SQLITE_TABLE_OBJECTS " "\
+ "WHERE " SQLITE_COL_PARENTID "=-1 "\
+ "AND " SQLITE_COL_OBJECTID "!=NEW." SQLITE_COL_OBJECTID " ) IS NOT NULL) "\
+ "AND "\
+ "(NEW." SQLITE_COL_PARENTID "=-1) AND (OLD." SQLITE_COL_PARENTID "!=-1) "\
+ ") THEN "\
+ "RAISE(" SQLITE_TRANSACTION_TYPE ","\
+ "'UPDATE on table " SQLITE_TABLE_OBJECTS " violates constraint. "\
+ SQLITE_COL_PARENTID " must uniquely be -1') "\
+ "END; END;"
+
+/**********************************************\
+* *
+* Items *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_ITEMS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_ITEMS \
+ "(" \
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_REFERENCEID " " SQLITE_TYPE_INTEGER " DEFAULT -1" \
+ ");"
+
+// Trigger for foreign key ObjectID
+
+#define SQLITE_TRIGGER_D_OBJECT_ITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_OBJECTS,\
+ SQLITE_TABLE_ITEMS)
+
+#define SQLITE_TRIGGER_I_OBJECT_ITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_OBJECTS,\
+ SQLITE_TABLE_ITEMS,\
+ UPNP_CLASS_ITEM)
+
+#define SQLITE_TRIGGER_U_OBJECT_ITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_OBJECTS,\
+ SQLITE_TABLE_ITEMS,\
+ UPNP_CLASS_ITEM)
+
+// Trigger for Reference items
+
+#define SQLITE_TRIGGER_I_ITEMS_ITEMS SQLITE_INSERT_REFERENCE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_COL_REFERENCEID)
+
+#define SQLITE_TRIGGER_U_ITEMS_ITEMS SQLITE_UPDATE_REFERENCE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_COL_REFERENCEID)
+
+#define SQLITE_TRIGGER_D_ITEMS_ITEMS SQLITE_DELETE_REFERENCE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_COL_REFERENCEID)
+
+/**********************************************\
+* *
+* Containers *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_CONTAINER "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_CONTAINERS \
+ "(" \
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_SEARCHABLE " " SQLITE_TYPE_INTEGER ","\
+ SQLITE_COL_CONTAINER_UID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL ","\
+ SQLITE_COL_DLNA_CONTAINERTYPE " " SQLITE_TYPE_TEXT \
+ ");"
+
+#define SQLITE_TRIGGER_D_OBJECT_CONTAINERS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_OBJECTS,\
+ SQLITE_TABLE_CONTAINERS)
+
+#define SQLITE_TRIGGER_I_OBJECT_CONTAINERS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_OBJECTS,\
+ SQLITE_TABLE_CONTAINERS,\
+ UPNP_CLASS_CONTAINER)
+
+#define SQLITE_TRIGGER_U_OBJECT_CONTAINERS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_OBJECTS,\
+ SQLITE_TABLE_CONTAINERS,\
+ UPNP_CLASS_CONTAINER)
+
+/**********************************************\
+* *
+* Video items *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_VIDEOITEMS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_VIDEOITEMS \
+ "(" \
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_GENRE " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_PRODUCER " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_RATING " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_ACTOR " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DIRECTOR " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_LANGUAGE " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_RELATION " " SQLITE_TYPE_TEXT \
+ ");"
+
+#define SQLITE_TRIGGER_D_ITEMS_VIDEOITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_TABLE_VIDEOITEMS)
+
+#define SQLITE_TRIGGER_U_ITEMS_VIDEOITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_ITEMS, \
+ SQLITE_TABLE_VIDEOITEMS, \
+ UPNP_CLASS_VIDEO)
+
+#define SQLITE_TRIGGER_I_ITEMS_VIDEOITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_ITEMS, \
+ SQLITE_TABLE_VIDEOITEMS, \
+ UPNP_CLASS_VIDEO)
+
+/**********************************************\
+* *
+* Audio items *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_AUDIOITEMS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_AUDIOITEMS \
+ "(" \
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_GENRE " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_RELATION " " SQLITE_TYPE_TEXT \
+ ");"
+
+#define SQLITE_TRIGGER_D_ITEMS_AUDIOITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_TABLE_AUDIOITEMS)
+
+#define SQLITE_TRIGGER_U_ITEMS_AUDIOITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_ITEMS, \
+ SQLITE_TABLE_AUDIOITEMS, \
+ UPNP_CLASS_AUDIO)
+
+#define SQLITE_TRIGGER_I_ITEMS_AUDIOITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_ITEMS, \
+ SQLITE_TABLE_AUDIOITEMS, \
+ UPNP_CLASS_AUDIO)
+
+/**********************************************\
+* *
+* Image items *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_IMAGEITEMS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_IMAGEITEMS \
+ "("\
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_RATING " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_DATE " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_RIGHTS " " SQLITE_TYPE_TEXT\
+ ");"
+
+#define SQLITE_TRIGGER_D_ITEMS_IMAGEITEMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_TABLE_IMAGEITEMS)
+
+#define SQLITE_TRIGGER_U_ITEMS_IMAGEITEMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_ITEMS, \
+ SQLITE_TABLE_IMAGEITEMS, \
+ UPNP_CLASS_IMAGE)
+
+#define SQLITE_TRIGGER_I_ITEMS_IMAGEITEMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_ITEMS, \
+ SQLITE_TABLE_IMAGEITEMS, \
+ UPNP_CLASS_IMAGE)
+
+/**********************************************\
+* *
+* Video broadcasts *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_VIDEOBROADCASTS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_VIDEOBROADCASTS \
+ "("\
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_ICON " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_REGION " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_CHANNELNR " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_CHANNELNAME " " SQLITE_TYPE_TEXT " " SQLITE_UNIQUE \
+ ");"
+
+#define SQLITE_TRIGGER_D_VIDEOITEMS_VIDEOBROADCASTS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_VIDEOITEMS, SQLITE_TABLE_VIDEOBROADCASTS)
+
+#define SQLITE_TRIGGER_U_VIDEOITEMS_VIDEOBROADCASTS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\
+ SQLITE_TABLE_VIDEOBROADCASTS,\
+ UPNP_CLASS_VIDEOBC)
+
+#define SQLITE_TRIGGER_I_VIDEOITEMS_VIDEOBROADCASTS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\
+ SQLITE_TABLE_VIDEOBROADCASTS,\
+ UPNP_CLASS_VIDEOBC)
+
+/**********************************************\
+* *
+* Audio broadcasts *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_AUDIOBROADCASTS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_AUDIOBROADCASTS \
+ "("\
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_REGION " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_RADIOCALLSIGN " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_RADIOSTATIONID " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_RADIOBAND " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_CHANNELNR " " SQLITE_TYPE_INTEGER \
+ ");"
+
+#define SQLITE_TRIGGER_D_AUDIOITEMS_AUDIOBROADCASTS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_AUDIOITEMS, SQLITE_TABLE_AUDIOBROADCASTS)
+
+#define SQLITE_TRIGGER_I_AUDIOITEMS_AUDIOBROADCASTS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_AUDIOITEMS,\
+ SQLITE_TABLE_AUDIOBROADCASTS,\
+ UPNP_CLASS_AUDIOBC)
+
+#define SQLITE_TRIGGER_U_AUDIOITEMS_AUDIOBROADCASTS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_AUDIOITEMS,\
+ SQLITE_TABLE_AUDIOBROADCASTS,\
+ UPNP_CLASS_AUDIOBC)
+
+/**********************************************\
+* *
+* Movies *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_MOVIES "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_MOVIES \
+ "("\
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DVDREGIONCODE " " SQLITE_TYPE_INTEGER "," \
+ SQLITE_COL_CHANNELNAME " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_SCHEDULEDSTARTTIME " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_SCHEDULEDENDTIME " " SQLITE_TYPE_TEXT\
+ ");"
+
+#define SQLITE_TRIGGER_D_VIDEOITEMS_MOVIES SQLITE_DELETE_TRIGGER(SQLITE_TABLE_VIDEOITEMS, SQLITE_TABLE_MOVIES)
+
+
+#define SQLITE_TRIGGER_I_VIDEOITEMS_MOVIES SQLITE_INSERT_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\
+ SQLITE_TABLE_MOVIES,\
+ UPNP_CLASS_MOVIE)
+
+#define SQLITE_TRIGGER_U_VIDEOITEMS_MOVIES SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_VIDEOITEMS,\
+ SQLITE_TABLE_MOVIES,\
+ UPNP_CLASS_MOVIE)
+
+/**********************************************\
+* *
+* Photos *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_PHOTOS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_PHOTOS \
+ "("\
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_ALBUM " " SQLITE_TYPE_TEXT\
+ ");"
+
+#define SQLITE_TRIGGER_D_IMAGEITEMS_PHOTOS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_IMAGEITEMS, SQLITE_TABLE_PHOTOS)
+
+#define SQLITE_TRIGGER_I_IMAGEITEMS_PHOTOS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_IMAGEITEMS,\
+ SQLITE_TABLE_PHOTOS,\
+ UPNP_CLASS_PHOTO)
+
+#define SQLITE_TRIGGER_U_IMAGEITEMS_PHOTOS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_IMAGEITEMS,\
+ SQLITE_TABLE_PHOTOS,\
+ UPNP_CLASS_PHOTO)
+
+/**********************************************\
+* *
+* Albums *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_ALBUMS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_ALBUMS \
+ "("\
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_PUBLISHER " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_CONTRIBUTOR " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_DATE " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_RELATION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_RIGHTS " " SQLITE_TYPE_TEXT \
+ ");"
+
+#define SQLITE_TRIGGER_D_CONTAINERS_ALBUMS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_CONTAINERS, SQLITE_TABLE_ALBUMS)
+
+#define SQLITE_TRIGGER_U_CONTAINERS_ALBUMS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_CONTAINERS,\
+ SQLITE_TABLE_ALBUMS,\
+ UPNP_CLASS_ALBUM)
+
+#define SQLITE_TRIGGER_I_CONTAINERS_ALBUMS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_CONTAINERS,\
+ SQLITE_TABLE_ALBUMS,\
+ UPNP_CLASS_ALBUM)
+
+/**********************************************\
+* *
+* Playlists *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_PLAYLISTS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_PLAYLISTS \
+ "(" \
+ SQLITE_UPNP_OBJECTID "," \
+ SQLITE_COL_ARTIST " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_GENRE " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_LONGDESCRIPTION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DESCRIPTION " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_PRODUCER " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_STORAGEMEDIUM " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_CONTRIBUTOR " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_DATE " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_LANGUAGE " " SQLITE_TYPE_TEXT ","\
+ SQLITE_COL_RIGHTS " " SQLITE_TYPE_TEXT\
+ ");"
+
+#define SQLITE_TRIGGER_D_CONTAINERS_PLAYLISTS SQLITE_DELETE_TRIGGER(SQLITE_TABLE_CONTAINERS, SQLITE_TABLE_PLAYLISTS)
+
+#define SQLITE_TRIGGER_I_CONTAINERS_PLAYLISTS SQLITE_INSERT_TRIGGER(SQLITE_TABLE_CONTAINERS,\
+ SQLITE_TABLE_PLAYLISTS,\
+ UPNP_CLASS_PLAYLISTCONT)
+
+#define SQLITE_TRIGGER_U_CONTAINERS_PLAYLISTS SQLITE_UPDATE_TRIGGER(SQLITE_TABLE_CONTAINERS,\
+ SQLITE_TABLE_PLAYLISTS,\
+ UPNP_CLASS_PLAYLISTCONT)
+
+/**********************************************\
+* *
+* Search classes *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_SEARCHCLASS "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_SEARCHCLASS \
+ "(" \
+ SQLITE_COL_OBJECTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_CLASS " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_CLASSDERIVED " " SQLITE_TYPE_BOOL \
+ ");"
+
+#define SQLITE_TRIGGER_D_CONTAINERS_SEARCHCLASSES "CREATE TRIGGER IF NOT EXISTS " \
+ SQLITE_TABLE_CONTAINERS "_D_" SQLITE_TABLE_SEARCHCLASS " " \
+ "BEFORE DELETE ON " \
+ SQLITE_TABLE_CONTAINERS " " \
+ "FOR EACH ROW BEGIN "\
+ "DELETE FROM " SQLITE_TABLE_SEARCHCLASS " "\
+ "WHERE " SQLITE_COL_OBJECTID "= OLD." SQLITE_COL_OBJECTID "; " \
+ "END;"
+
+#define SQLITE_TRIGGER_U_CONTAINERS_SEARCHCLASSES "CREATE TRIGGER IF NOT EXISTS " \
+ SQLITE_TABLE_CONTAINERS "_U_" SQLITE_TABLE_SEARCHCLASS " " \
+ "BEFORE UPDATE ON " \
+ SQLITE_TABLE_SEARCHCLASS " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_CONTAINERS " "\
+ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL "\
+ ") THEN "\
+ "RAISE (" SQLITE_TRANSACTION_TYPE ", 'UPDATE on table " SQLITE_TABLE_SEARCHCLASS " "\
+ "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \
+ "END; END;"
+
+#define SQLITE_TRIGGER_I_CONTAINERS_SEARCHCLASSES "CREATE TRIGGER IF NOT EXISTS " \
+ SQLITE_TABLE_CONTAINERS "_I_" SQLITE_TABLE_SEARCHCLASS " " \
+ "BEFORE INSERT ON " \
+ SQLITE_TABLE_SEARCHCLASS " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_CONTAINERS " "\
+ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL "\
+ ") THEN "\
+ "RAISE (" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " SQLITE_TABLE_SEARCHCLASS " "\
+ "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \
+ "END; END;"
+
+/**********************************************\
+* *
+* Resources *
+* *
+\**********************************************/
+
+#define SQLITE_CREATE_TABLE_RESOURCES "CREATE TABLE IF NOT EXISTS "\
+ SQLITE_TABLE_RESOURCES \
+ "(" \
+ SQLITE_COL_RESOURCEID " " SQLITE_PRIMARY_KEY " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_OBJECTID " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_PROTOCOLINFO " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_CONTENTTYPE " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_RESOURCETYPE " " SQLITE_TYPE_INTEGER " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_RESOURCE " " SQLITE_TYPE_TEXT " " SQLITE_NOT_NULL "," \
+ SQLITE_COL_SIZE " " SQLITE_TYPE_ULONG "," \
+ SQLITE_COL_DURATION " " SQLITE_TYPE_TEXT "," \
+ SQLITE_COL_BITRATE " " SQLITE_TYPE_UINTEGER "," \
+ SQLITE_COL_SAMPLEFREQUENCE " " SQLITE_TYPE_UINTEGER "," \
+ SQLITE_COL_BITSPERSAMPLE " " SQLITE_TYPE_UINTEGER "," \
+ SQLITE_COL_NOAUDIOCHANNELS " " SQLITE_TYPE_UINTEGER "," \
+ SQLITE_COL_COLORDEPTH " " SQLITE_TYPE_UINTEGER "," \
+ SQLITE_COL_RESOLUTION " " SQLITE_TYPE_TEXT \
+ ");"
+
+#define SQLITE_TRIGGER_D_OBJECT_RESOURCES "CREATE TRIGGER IF NOT EXISTS " \
+ SQLITE_TABLE_OBJECTS "_D_" SQLITE_TABLE_RESOURCES " " \
+ "BEFORE DELETE ON " \
+ SQLITE_TABLE_OBJECTS " " \
+ "FOR EACH ROW BEGIN "\
+ "DELETE FROM " SQLITE_TABLE_RESOURCES " "\
+ "WHERE " SQLITE_COL_OBJECTID "= OLD." SQLITE_COL_OBJECTID "; " \
+ "END;"
+
+#define SQLITE_TRIGGER_I_OBJECT_RESOURCES "CREATE TRIGGER IF NOT EXISTS " \
+ SQLITE_TABLE_OBJECTS "_I_" SQLITE_TABLE_RESOURCES " " \
+ "BEFORE INSERT ON " \
+ SQLITE_TABLE_RESOURCES " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_OBJECTS " "\
+ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL"\
+ ") THEN "\
+ "RAISE (" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " SQLITE_TABLE_RESOURCES " "\
+ "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \
+ "END; END;"
+
+#define SQLITE_TRIGGER_U_OBJECT_RESOURCES "CREATE TRIGGER IF NOT EXISTS " \
+ SQLITE_TABLE_OBJECTS "_U_" SQLITE_TABLE_RESOURCES " " \
+ "BEFORE UPDATE ON " \
+ SQLITE_TABLE_RESOURCES " " \
+ "FOR EACH ROW BEGIN "\
+ "SELECT CASE "\
+ "WHEN ("\
+ "(SELECT " SQLITE_COL_OBJECTID " FROM " SQLITE_TABLE_OBJECTS " "\
+ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID ") IS NULL"\
+ ") THEN "\
+ "RAISE (" SQLITE_TRANSACTION_TYPE ", 'INSERT on table " SQLITE_TABLE_RESOURCES " "\
+ "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \
+ "END; END;"
+
+class cSQLiteDatabase;
+
+/**
+ * Result row of a SQL SELECT request
+ *
+ * This is a single row of a {\c SQL SELECT} request.
+ *
+ * @see cRows
+ */
+class cRow : public cListObject {
+ friend class cSQLiteDatabase;
+private:
+ int currentCol;
+ int ColCount;
+ char** Columns;
+ char** Values;
+ cRow();
+public:
+ virtual ~cRow();
+ /**
+ * Number of columns in this row
+ *
+ * @return the number of rows
+ */
+ int Count(){ return this->ColCount; }
+ /**
+ * Fetches a Column
+ *
+ * This will fetch a column of this row and stores the name of the column
+ * in the first parameter and the value in the second parameter.
+ *
+ * @return returns
+ * - \bc true, if more columns to come
+ * - \bc false, if the column is its last in this row.
+ */
+ bool fetchColumn(
+ cString* Column, /**< The name of the current column */
+ cString* Value /**< The value of the current value */
+ );
+
+ /**
+ * Fetches a Column
+ *
+ * This will fetch a column of this row and stores the name of the column
+ * in the first parameter and the value in the second parameter.
+ *
+ * @return returns
+ * - \bc true, if more columns to come
+ * - \bc false, if the column is its last in this row.
+ */
+ bool fetchColumn(
+ char** Column, /**< The name of the current column */
+ char** Value /**< The value of the current column */
+ );
+};
+
+/**
+ * Result rows of a SQL SELECT request
+ *
+ * Contains the rows of a SQL SELECT request
+ *
+ * @see cRow
+ */
+class cRows : public cList<cRow> {
+ friend class cSQLiteDatabase;
+private:
+ cRow* mLastRow;
+ cRows();
+public:
+ virtual ~cRows();
+ /**
+ * Fetches a row from the result
+ *
+ * This fetches the next row in the resultset by storing the contents of
+ * that row in the first parameter.
+ *
+ * @return returns
+ * - \bc true, if more rows to come
+ * - \bc false, if the row is its last in this resultset.
+ */
+ bool fetchRow(
+ cRow** Row /**< The Pointer of the row */
+ );
+};
+
+/**
+ * SQLite Database
+ *
+ * This is a wrapper class for a SQLite3 database connection
+ * It supports simple execution functions.
+ *
+ * On requests with returns any results a instance of \c cRows* will be created.
+ */
+class cSQLiteDatabase {
+ friend class cStatement;
+private:
+ bool mAutoCommit;
+ bool mActiveTransaction;
+ cRow* mLastRow;
+ cRows* mRows;
+ sqlite3* mDatabase;
+ static cSQLiteDatabase* mInstance;
+ cSQLiteDatabase();
+ int initialize();
+ int initializeTables();
+ int initializeTriggers();
+ static int getResultRow(void* DB, int NumCols, char** Values, char** ColNames);
+ int exec(const char* Statement);
+public:
+ /**
+ * Prints a SQLite escaped text
+ *
+ * Returns a formated text with special characters to escape SQLite special
+ * characters like "'". Additionally to the well known characters of \a printf
+ * the following are allowed:
+ *
+ * - \bc q, like s, escapes single quotes in strings
+ * - \bc Q, like q, surrounds the escaped string with additional
+ * single quotes
+ * - \bc z, frees the string after reading and coping it
+ *
+ * @see sprintf()
+ * @return the formated string
+ */
+ static const char* sprintf(
+ const char* Format, /**< The format string */
+ ... /**< optional properties which will be passed to sprintf */
+ );
+ virtual ~cSQLiteDatabase();
+ /**
+ * Returns the instance of the database
+ *
+ * Returns the instance of the SQLite database. This will create a single
+ * instance of none is existing on the very first call. A subsequent call
+ * will return the same instance.
+ *
+ * @return the database instance
+ */
+ static cSQLiteDatabase* getInstance();
+ /**
+ * Row count of the last result
+ *
+ * Returns the row count of the last {\c SQL SELECT} request.
+ *
+ * @see cRows
+ * @return the result row count
+ */
+ int getResultCount() const { return this->mRows->Count(); }
+ /**
+ * The last \c INSERT RowID
+ *
+ * Returns the primary key of the last inserted row.
+ * This will only work if there are no successive calls to the database.
+ *
+ * @return the last insert RowID
+ */
+ long getLastInsertRowID() const;
+ /**
+ * Result set of the last request
+ *
+ * Returns the result rows of the SQL SELECT request.
+ * This might be NULL, if the last statement was not a SELECT.
+ *
+ * @see cRows
+ * @return the result rows of the last \c SELECT statement.
+ */
+ cRows* getResultRows() const { return this->mRows; }
+ /**
+ * Executes a SQL statement
+ *
+ * This will execute the statement in the first parameter. If it is followed
+ * by any optional parameters it will be formated using the same function as
+ * in \c cSQLiteDatabase::sprintf().
+ *
+ * \sa cSQLiteDatabase::sprintf().
+ *
+ * @return returns an integer representing
+ * - \bc -1, in case of an error
+ * - \bc 0, when the statement was executed successfuly
+ */
+ int execStatement(
+ const char* Statement , /**< Statement to be executed */
+ ... /**< optional parameters passed to the format string */
+ );
+ /**
+ * Starts a transaction
+ *
+ * This starts a new transaction and commits or rolls back a previous.
+ *
+ * @see cSQLiteDatabase::setAutoCommit
+ * @see cSQLiteDatabase::commitTransaction
+ */
+ void startTransaction();
+ /**
+ * Commits a transaction
+ *
+ * This function commits the transaction and writes all changes to the
+ * database
+ *
+ * @see cSQLiteDatabase::startTransaction
+ */
+ void commitTransaction();
+ /**
+ * Performs a rollback on a transaction
+ *
+ * This function performs a rollback. No changes will be made to the
+ * database
+ *
+ * @see cSQLiteDatabase::rollbackTransaction
+ */
+ void rollbackTransaction();
+ /**
+ * Set the commit behavior
+ *
+ * This function sets the auto commit behavior on new transactions with
+ * \sa cSQLiteDatabase::startTransaction.
+ *
+ * - \bc true, commits the last transaction before starting a
+ * new one
+ * - \bc false, performs a rollback on the old transaction
+ *
+ */
+ void setAutoCommit(
+ bool Commit=true /**< Switches the behavior of auto commit */
+ ){ this->mAutoCommit = Commit; }
+};
+
+#endif /* _DATABASE_H */ \ No newline at end of file
diff --git a/inc/filehandle.h b/inc/filehandle.h
new file mode 100644
index 0000000..1dc57bf
--- /dev/null
+++ b/inc/filehandle.h
@@ -0,0 +1,108 @@
+/*
+ * File: filehandle.h
+ * Author: savop
+ *
+ * Created on 15. Oktober 2009, 10:49
+ */
+
+#ifndef _FILEHANDLE_H
+#define _FILEHANDLE_H
+
+#include <upnp/upnp.h>
+#include "../common.h"
+
+/**
+ * Interface for File Handles
+ *
+ * This class is a pure virtual class to act as an interface for file handles
+ * used by the webserver.
+ */
+class cFileHandle {
+public:
+ /**
+ * Opens the file
+ *
+ * Opens the file at the given mode. These can be:
+ * - \b UPNP_READ, to read from the file
+ * - \b UPNP_WRITE, to write to the file
+ *
+ * @param mode The file mode, i.e. one of the following
+ * - \b UPNP_READ
+ * - \b UPNP_WRITE
+ */
+ virtual void open(
+ UpnpOpenFileMode mode ///< The file mode, i.e. one of the following
+ ///< - \b UPNP_READ
+ ///< - \b UPNP_WRITE
+ ) = 0;
+ /**
+ * Reads from the file
+ *
+ * Reads from the file a certain amount of bytes and stores them in a buffer
+ *
+ * @return returns
+ * - \b <0, in case of an error
+ * - \b 0, when reading was successful
+ *
+ * @param buf The char buffer
+ * @param buflen The size of the buffer
+ */
+ virtual int read(
+ char* buf, ///< The char buffer
+ size_t buflen ///< The size of the buffer
+ ) = 0;
+ /**
+ * Writes to the file
+ *
+ * Writes to the file a certain amount of bytes which are stored in a buffer
+ *
+ * @return returns
+ * - \b <0, in case of an error
+ * - \b 0, when reading was successful
+ *
+ * @param buf The char buffer
+ * @param buflen The size of the buffer
+ */
+ virtual int write(
+ char* buf, ///< The char buffer
+ size_t buflen ///< The size of the buffer
+ ) = 0;
+ /**
+ * Seeks in the file
+ *
+ * Seeks in the file where the offset is the relativ position depending on
+ * the second parameter. This means, in case of
+ *
+ * - \b SEEK_SET, the offset is relative to the beginning of the file
+ * - \b SEEK_CUR, it is relative to the current position or
+ * - \b SEEK_END, relative to the end of the file.
+ *
+ * @return returns
+ * - \b <0, in case of an error
+ * - \b 0, when reading was successful
+ *
+ * @param offset The byte offset in the file
+ * @param whence one of the following
+ * - \b SEEK_SET,
+ * - \b SEEK_CUR,
+ * - \b SEEK_END
+ */
+ virtual int seek(
+ off_t offset, ///< The byte offset in the file
+ int whence ///< one of the following
+ ///< - \b SEEK_SET,
+ ///< - \b SEEK_CUR,
+ ///< - \b SEEK_END
+ ) = 0;
+ /**
+ * Closes the open file
+ *
+ * This will close open file handles and frees the memory obtained by it.
+ */
+ virtual void close() = 0;
+ virtual ~cFileHandle(){};
+private:
+};
+
+#endif /* _FILEHANDLE_H */
+
diff --git a/inc/livereceiver.h b/inc/livereceiver.h
new file mode 100644
index 0000000..379f453
--- /dev/null
+++ b/inc/livereceiver.h
@@ -0,0 +1,105 @@
+/*
+ * File: livereceiver.h
+ * Author: savop
+ *
+ * Created on 4. Juni 2009, 13:28
+ */
+
+#ifndef _LIVERECEIVER_H
+#define _LIVERECEIVER_H
+
+#include "../common.h"
+#include "filehandle.h"
+#include <vdr/thread.h>
+#include <vdr/receiver.h>
+#include <vdr/ringbuffer.h>
+
+#define RECEIVER_WAIT_ON_NODATA 50 // 50 ms
+#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 2 // 2s
+#define RECEIVER_MIN_BUFFER_FILLAGE 20 // 20%
+
+/**
+ * A receiver for live TV
+ *
+ * This is a receiver object which is attached to a VDR tv card device.
+ * It is receiving transport stream packages and generates a single MPEG2
+ * transport stream which can be distributed through the network.
+ *
+ */
+class cLiveReceiver : public cReceiver, public cThread, public cFileHandle {
+public:
+ /**
+ * Creates a new receiver instance
+ *
+ * This will create a new instance of a live receiver for the specified
+ * channel at the specified priority level.
+ *
+ * A negativ priority means that the receiver may being detached from a
+ * device.
+ *
+ * The receiver must be free'd with delete after it is not used anylonger.
+ *
+ * @return returns a new liveReceiver instance
+ */
+ static cLiveReceiver* newInstance(
+ cChannel *Channel, ///< the channel which shall be tuned
+ int Priority ///< the priority level
+ );
+ virtual ~cLiveReceiver(void);
+ /*! @copydoc cFileHandle::open(UpnpOpenFileMode) */
+ virtual void open(UpnpOpenFileMode mode);
+ /*! @copydoc cFileHandle::read(char*,size_t) */
+ virtual int read(char* buf, size_t buflen);
+ /*! @copydoc cFileHandle::write(char*,size_t) */
+ virtual int write(char* buf, size_t buflen);
+ /*! @copydoc cFileHandle::seek(off_t,int) */
+ virtual int seek(off_t offset, int whence);
+ /*! @copydoc cFileHandle::close() */
+ virtual void close();
+protected:
+ /**
+ * Receives data from VDR
+ *
+ * This is the interface for receiving packet data from the VDR. It buffers
+ * the incoming transport stream packets in a linear ringbuffer and returns
+ * immediatelly
+ */
+ virtual void Receive(
+ uchar *Data, ///< The data received from VDR
+ int Length ///< The length of the data packet, usually 188 bytes
+ );
+ /**
+ * Activates the receiver
+ *
+ * This activates the receiver which initializes internal data structures to
+ * be prepared for receiving data from the VDR
+ *
+ * If the parameter is \bc true, the receiver will be activated. If it is
+ * \bc false, the receiver will be deactivated and stops its threads.
+ */
+ virtual void Activate(
+ bool On ///< Activates the receiver thread
+ );
+ /**
+ * The receiver thread action
+ *
+ * This actually is the receiver thread, which runs consequitivelly and
+ * buffers any received video data from the interal incoming buffer to the
+ * internal outgoing buffer.
+ *
+ * While doing so, it tries to syncronize with the stream and creates new
+ * MPEG2-TS PATs and PMTs for a single MPEG2-TS stream
+ */
+ virtual void Action(void);
+private:
+ cLiveReceiver(cChannel *Channel, cDevice *Device);
+ cDevice *mDevice;
+ cChannel *mChannel;
+ cRingBufferLinear *mLiveBuffer;
+ cRingBufferLinear *mOutputBuffer;
+ cFrameDetector *mFrameDetector;
+ cPatPmtGenerator mPatPmtGenerator;
+};
+
+#endif /* _LIVERECEIVER_H */
+
diff --git a/inc/menusetup.h b/inc/menusetup.h
new file mode 100644
index 0000000..1db0480
--- /dev/null
+++ b/inc/menusetup.h
@@ -0,0 +1,103 @@
+/*
+ * File: menusetup.h
+ * Author: savop
+ *
+ * Created on 19. April 2009, 16:50
+ */
+
+#ifndef _CMENUSETUPUPNP_H
+#define _CMENUSETUPUPNP_H
+
+#include <vdr/plugin.h>
+#include "server.h"
+#include "config.h"
+
+/**
+ * The VDR setup page
+ *
+ * This class shows and manages the settings within the VDR setup OSD
+ *
+ */
+class cMenuSetupUPnP : public cMenuSetupPage {
+public:
+ cMenuSetupUPnP();
+// virtual ~cMenuSetupUPnP();
+ /**
+ * Processes a keystroke
+ *
+ * This processes a keystroke which is done by the user and updates the
+ * menu accordingly
+ *
+ * It returns the current state of the VDR after pressing a key
+ *
+ * @return The current state of the VDR
+ */
+ virtual eOSState ProcessKey(
+ eKeys Key ///< Key, pressed by the user
+ );
+protected:
+ /**
+ * Stores the setup information
+ *
+ * This stores the setup information in the configuration file
+ */
+ virtual void Store(void);
+ /**
+ * Update the menu
+ *
+ * This updates the menu osd and refreshes the screen.
+ */
+ void Update(void);
+ /**
+ * Loads the setup information
+ *
+ * This loads the setup information from the configuration file
+ */
+ void Load(void);
+private:
+ const char* const* getInterfaceList(int *count);
+ int getInterfaceIndex(const char* Interface);
+ const char* getInterface(int Index);
+ cOsdItem *mCtrlBind;
+ cOsdItem *mCtrlEnabled;
+ cOsdItem *mCtrlPort;
+ cOsdItem *mCtrlAutoMode;
+ cUPnPServer* mUpnpServer;
+ /**
+ * Is the server enabled or not
+ *
+ * The server can be switched on or off. If it is turned off, the server
+ * will close open transmissions and ports
+ *
+ */
+ int mEnable;
+ int mAutoSetup;
+ /**
+ * The port to listen to (Default: 0 autodetect)
+ *
+ * The port the server is bound to. The default setting is 0.
+ * So, the server will determine automatically a free random port between
+ * 49152 and 65535. If a server should use a specific port it can be set
+ * to one out of that range.
+ *
+ */
+ int mPort;
+ int mDetectPort;
+ /**
+ * The Interface the server is bound to
+ *
+ * If multiple interfaces exist the server can be bound to a specific
+ * one
+ *
+ */
+ int mInterfaceIndex;
+ /**
+ * The socket address of the server
+ *
+ * The IP address and the port of the server
+ */
+ char *mAddress;
+};
+
+#endif /* _CMENUSETUPUPNP_H */
+
diff --git a/inc/metadata.h b/inc/metadata.h
new file mode 100644
index 0000000..e6200e1
--- /dev/null
+++ b/inc/metadata.h
@@ -0,0 +1,189 @@
+/*
+ * File: metadata.h
+ * Author: savop
+ *
+ * Created on 28. Mai 2009, 21:14
+ */
+
+#ifndef _METADATA_H
+#define _METADATA_H
+
+#include <vdr/tools.h>
+#include <vdr/channels.h>
+#include <vdr/recording.h>
+#include "../common.h"
+#include "database.h"
+#include "object.h"
+#include "resources.h"
+
+/**
+ * The result set of a request
+ *
+ * This contains the results of a previous \e Browse or \e Search request.
+ */
+struct cUPnPResultSet {
+ int mNumberReturned; ///< The number of returned matches
+ int mTotalMatches; ///< The total amount of matches
+ const char* mResult; ///< The DIDL-Lite fragment
+};
+
+/**
+ * The media database
+ *
+ * This class is the global object manager. It holds every object in a local cache.
+ * Only this class is allowed to create new objects.
+ *
+ * @see cUPnPClassObject
+ */
+class cMediaDatabase : public cThread {
+ friend class cUPnPServer;
+ friend class cUPnPObjectMediator;
+private:
+ unsigned int mSystemUpdateID;
+ cUPnPObjectFactory* mFactory;
+ cHash<cUPnPClassObject>* mObjects;
+ cSQLiteDatabase* mDatabase;
+ cUPnPObjectID mLastInsertObjectID;
+ cUPnPObjectID getNextObjectID();
+ void cacheObject(cUPnPClassObject* Object);
+ int prepareDatabase();
+#ifndef WITHOUT_TV
+ int loadChannels();
+ void updateChannelEPG();
+#endif
+#ifndef WITHOUT_RECORDS
+ int loadRecordings();
+ void updateRecordings();
+#endif
+ bool init();
+ void updateSystemID();
+ virtual void Action();
+public:
+ /**
+ * Returns the SystemUpdateID
+ *
+ * This returns the \e SystemUpdateID. This changes whenever anything changed
+ * within the content directory. This value will be sent through the UPnP
+ * network every 2 seconds.
+ *
+ * @return the SystemUpdateID
+ */
+ unsigned int getSystemUpdateID();
+ /**
+ * Returns a CSV list with ContainerUpdateIDs
+ *
+ * This list contains an unordered list of ordered pairs of ContainerID and
+ * its ContainerUpdateID. It contains only recent changes which are not yet
+ * beeing evented. This means that evented updates will be removed from list.
+ *
+ * @return CSV list of ContainerUpdateIDs
+ */
+ const char* getContainerUpdateIDs();
+ /**
+ * Constructor
+ *
+ * This creates an instance of the media database.
+ */
+ cMediaDatabase();
+ virtual ~cMediaDatabase();
+ /**
+ * Add a Fastfind
+ *
+ * This creates a \e Fastfind entry. It is a string which can be used to
+ * relocate a objectID. Usually this is a file name or another ID with which
+ * the related object can be found.
+ *
+ * @return returns
+ * - \bc -1, if the creation was successful
+ * - \bc 0, otherwise
+ */
+ int addFastFind(
+ cUPnPClassObject* Object, ///< the object, which should be registered
+ const char* FastFind ///< the string with which the object shall be
+ ///< relocated
+ );
+ /**
+ * Finds a object by Fastfind
+ *
+ * This returns the object via the \e Fastfind string. The object must be
+ * previosly registered via \c cMediaDatabase::addFastFind().
+ *
+ * It tries to find the object in the internal object cache. If this fails,
+ * the object will be loaded from the database.
+ *
+ * @see cMediaDatabase::addFastFind
+ * @return The object associated with FastFind
+ */
+ cUPnPClassObject* getObjectByFastFind(
+ const char* FastFind ///< the string with which the object shall be
+ ///< relocated
+ );
+ /**
+ * Finds a object by its ObjectID
+ *
+ * This returns the object via its \e ObjectID.
+ *
+ * It tries to find the object in the internal object cache. If this fails,
+ * the object will be loaded from the database.
+ *
+ * @return The object associated with FastFind
+ */
+ cUPnPClassObject* getObjectByID(
+ cUPnPObjectID ID ///< The ObjectID of the requested object
+ );
+ /**
+ * Performs a browse on the database
+ *
+ * This performs a browse request on the database and returns a structure
+ * containing the matching count and DIDL-Lite fragement which is sent to
+ * the control point.
+ *
+ * @return returns an integer representing one of the following:
+ * - \bc UPNP_CDS_E_INVALID_SORT_CRITERIA, when the sort criteria is malformed
+ * - \bc UPNP_CDS_E_CANT_PROCESS_REQUEST, when there is an internal error while
+ * processing the request
+ * - \bc UPNP_CDS_E_NO_SUCH_OBJECT, when the requested ObjectID does not exist
+ * - \bc UPNP_SOAP_E_ACTION_FAILED, when the action failed due any reasons
+ * - \bc UPNP_E_SUCCESS, if the request was successful
+ */
+ int browse(
+ OUT cUPnPResultSet** Results, ///< the result of the request
+ IN const char* ID, ///< the objectID of the request
+ IN bool BrowseMetadata, ///< \b true to browse metadata, \b false otherwise
+ IN const char* Filter = "*", ///< the filter applied to the returned metadata
+ IN unsigned int Offset = 0, ///< the starting offset
+ IN unsigned int Count = 0, ///< maximum count returned
+ IN const char* SortCriteria = "" ///< sorts the results before returning them
+ );
+ /**
+ * Performs a search on the database
+ *
+ * This performs a search request on the database and returns a structure
+ * containing the matching count and DIDL-Lite fragement which is sent to
+ * the control point.
+ *
+ * @note
+ * The submitted ID must be a ContainerID. Searches are performed only
+ * in this container.
+ *
+ * @return returns an integer representing one of the following:
+ * - \bc UPNP_CDS_E_INVALID_SORT_CRITERIA, when the sort criteria is malformed
+ * - \bc UPNP_CDS_E_CANT_PROCESS_REQUEST, when there is an internal error while
+ * processing the request
+ * - \bc UPNP_CDS_E_NO_SUCH_OBJECT, when the requested ObjectID does not exist
+ * - \bc UPNP_SOAP_E_ACTION_FAILED, when the action failed due any reasons
+ * - \bc UPNP_E_SUCCESS, if the request was successful
+ */
+ int search(
+ OUT cUPnPResultSet** Results, ///< the result of the request
+ IN const char* ID, ///< the ContainerID
+ IN const char* Search, ///< the search string
+ IN const char* Filter = "*", ///< the filter applied to the returned metadata
+ IN unsigned int Offset = 0, ///< the starting offset
+ IN unsigned int Count = 0, ///< maximum count returned
+ IN const char* SortCriteria = "" ///< sorts the results before returning them
+ );
+};
+
+#endif /* _METADATA_H */
+
diff --git a/inc/object.h b/inc/object.h
new file mode 100644
index 0000000..bceb3f1
--- /dev/null
+++ b/inc/object.h
@@ -0,0 +1,1576 @@
+/*
+ * File: object.h
+ * Author: savop
+ *
+ * Created on 11. September 2009, 20:39
+ */
+
+#ifndef _OBJECT_H
+#define _OBJECT_H
+
+#include "database.h"
+#include "../common.h"
+#include "util.h"
+#include <string.h>
+#include <vdr/tools.h>
+#include <map>
+#include <vector>
+#include <upnp/ixml.h>
+
+/**
+ * UPnP Object ID
+ *
+ * This is a UPnP Object ID representation.
+ */
+struct cUPnPObjectID {
+ int _ID; ///< The UPnP Object ID
+ /**
+ * Constructor
+ *
+ * Creates invalid ID
+ */
+ cUPnPObjectID():_ID(-1){}
+ /**
+ * Constructor
+ *
+ * Creates from long integer
+ */
+ cUPnPObjectID(
+ long ID ///< new ID
+ ){ _ID = (int)ID; }
+ /**
+ * Constructor
+ *
+ * Creates from integer
+ */
+ cUPnPObjectID(
+ int ID ///< new ID
+ ){ _ID = ID; }
+ /** Set the object ID */
+ cUPnPObjectID &operator=(
+ long ID ///< new ID
+ ){ _ID = ID; return *this; }
+ /** @overload cUPnPObjectID &operator=(long ID) */
+ cUPnPObjectID &operator=(
+ int ID ///< new ID
+ ){ _ID = ID; return *this; }
+ /** @overload cUPnPObjectID &operator=(long ID) */
+ cUPnPObjectID &operator=(
+ const cUPnPObjectID& ID ///< new ID
+ ){ if(this != &ID){ _ID = ID._ID; } return *this; }
+ /** Pre increment the ID */
+ cUPnPObjectID &operator++(){ _ID++; return *this; }
+ /** Post increment the ID */
+ cUPnPObjectID operator++(int){ cUPnPObjectID old = *this; _ID++; return old; }
+ /** Post decrement the ID */
+ cUPnPObjectID operator--(int){ cUPnPObjectID old = *this; _ID--; return old; }
+ /** Pre decrement the ID */
+ cUPnPObjectID &operator--(){ _ID--; return *this; }
+ /** Not equal */
+ bool operator!=(
+ long ID ///< compare with this ID
+ ){ return _ID != ID; }
+ /** Equal */
+ bool operator==(
+ long ID ///< compare with this ID
+ ){ return _ID == ID; }
+ /** @overload bool operator!=(long ID) */
+ bool operator!=(
+ int ID ///< compare with this ID
+ ){ return _ID != ID; }
+ /** @overload bool operator==(long ID) */
+ bool operator==(
+ int ID ///< compare with this ID
+ ){ return _ID == ID; }
+ /** @overload bool operator!=(long ID) */
+ bool operator!=(
+ const cUPnPObjectID& ID ///< compare with this ID
+ ){ return *this == ID; }
+ /** @overload bool operator==(long ID) */
+ bool operator==(
+ const cUPnPObjectID& ID ///< compare with this ID
+ ){ return *this == ID; }
+ /** Casts to unsigned int */
+ operator unsigned int(){ return (unsigned int)_ID; }
+ /** Casts to int */
+ operator int(){ return _ID; }
+ /** Casts to long */
+ operator long(){ return (long)_ID; }
+ /** Casts to string */
+ const char* operator*(){ char* buf; return asprintf(&buf,"%d",_ID)?buf:NULL; }
+};
+
+/**
+ * Structure of a UPnP Class
+ *
+ * This represents a UPnP Class
+ */
+struct cClass {
+ cString ID; ///< The upnp class ID
+ bool includeDerived; ///< flag, to indicate if derived classes are allowed
+ /**
+ * Compares two classes
+ *
+ * @param cmp the other class to compare with
+ */
+ bool operator==(const cClass &cmp){ return (!strcasecmp(cmp.ID,ID) && includeDerived==cmp.includeDerived); }
+ /*! @copydoc operator==(const cClass &cmp) */
+ bool operator!=(const cClass &cmp){ return !(*this==cmp); }
+};
+
+class cUPnPClassObject;
+class cUPnPObjectMediator;
+class cUPnPContainerMediator;
+class cUPnPClassContainer;
+class cUPnPResource;
+
+/**
+ * List of UPnP Objects
+ *
+ * This is a cList of UPnP Objects
+ * The list can be sorted by using a specific property
+ */
+class cUPnPObjects : public cList<cUPnPClassObject> {
+public:
+ cUPnPObjects();
+ virtual ~cUPnPObjects();
+ /**
+ * Sorts the list
+ *
+ * This sorts the list by a specific property and a certain direction
+ */
+ void SortBy(
+ const char* Property, ///< the property used for sorting
+ bool Descending = false ///< the direction of the sort
+ );
+};
+
+/**
+ * The UPnP class Object
+ *
+ * This is a UPnP class Object representation with all its properties.
+ */
+class cUPnPClassObject : public cListObject {
+ friend class cMediaDatabase;
+ friend class cUPnPObjectMediator;
+ friend class cUPnPClassContainer;
+private:
+ cUPnPObjectID mLastID;
+ bool mDeleted; // is this Objected marked as deleted, NOT used yet.
+protected:
+ time_t mLastModified; ///< The last modification of this property
+ cUPnPObjectID mID; ///< The object ID
+ cUPnPClassObject* mParent; ///< The parent object
+ cString mClass; ///< Class (Who am I?)
+ cString mTitle; ///< Object title
+ cString mCreator; ///< Creator of this object
+ bool mRestricted; ///< Ability of changing metadata?
+ int mWriteStatus; ///< Ability of writing resources?
+ cList<cUPnPResource>* mResources; ///< The resources of this object
+ cHash<cUPnPResource>* mResourcesID; ///< The resources of this object as hashmap
+ IXML_Document* mDIDLFragment; ///< The DIDL fragment of the object
+ cString mSortCriteria; ///< The sort criteria to sort with
+ bool mSortDescending; ///< The direction of the sort
+ cUPnPClassObject();
+ /**
+ * Set the Object ID
+ *
+ * This is only allowed by mediators and the media database. Manually editing
+ * the object ID may result in unpredictable behavior.
+ *
+ * @param ID the ObjectID of this object
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ */
+ int setID(cUPnPObjectID ID);
+ /**
+ * Set the Parent Object
+ *
+ * This is only allowed by mediators and the media database. Manually editing
+ * the parent may result in unpredictable behavior.
+ *
+ * @param Parent the parent of this object
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ */
+ int setParent(cUPnPClassContainer* Parent);
+ /**
+ * Set the object class
+ *
+ * This is only allowed by mediators and the media database. Manually editing
+ * the object class may result in unpredictable behavior.
+ *
+ * @param Class the class of this object
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ */
+ int setClass(const char* Class);
+ /**
+ * Set the modification time
+ *
+ * This sets the last modification time to the current timestamp. This is
+ * used to indicate when the object was updated the last time.
+ */
+ void setModified(void){ this->mLastModified = time(NULL); }
+public:
+ /**
+ * Last modified
+ *
+ * Returns when the object was modified the last time.
+ *
+ * @return last modification timestamp
+ */
+ time_t modified() const { return this->mLastModified; }
+ virtual ~cUPnPClassObject();
+ /**
+ * Compares a object
+ *
+ * This compares a given object with this object
+ * It uses the SortCriteria to compare them.
+ *
+ * @return returns
+ * - \bc >0, if the object comes after this one
+ * - \bc 0, if the objects have the same property
+ * - \bc <0, if the object comes before this one
+ * @param ListObject the object to compare with
+ */
+ virtual int Compare(const cListObject& ListObject) const;
+ /**
+ * Get the properties of the object
+ *
+ * This returns a property list with all the properties which can be obtained
+ * or set with \c getProperty or \c setProperty.
+ *
+ * @return a stringlist with the properties
+ */
+ virtual cStringList* getPropertyList();
+ /**
+ * Gets a property
+ *
+ * Returns the value of a specified property. The value is converted into a
+ * string.
+ *
+ * @return returns
+ * - \bc true, if the property exists
+ * - \bc false, otherwise
+ * @param Property the property which should be returned
+ * @param Value the value of that property
+ */
+ virtual bool getProperty(const char* Property, char** Value) const ;
+ /**
+ * Sets a property
+ *
+ * Sets the value of a specified property. The value is converted from string
+ * into the propper data type
+ *
+ * @return returns
+ * - \bc true, if the property exists
+ * - \bc false, otherwise
+ * @param Property the property which should be set
+ * @param Value the value of that property
+ */
+ virtual bool setProperty(const char* Property, const char* Value);
+ /**
+ * Converts to container
+ *
+ * This will convert the object into a container if it is one. If not, it
+ * returns \bc NULL.
+ *
+ * @return returns
+ * - \bc NULL, if it is not a container
+ * - a container representation of this object
+ */
+ virtual cUPnPClassContainer* getContainer(){ return NULL; }
+ /**
+ * Create the DIDL fragment
+ *
+ * This creates the DIDL-Lite fragment of the object. The DIDL is written to the
+ * specified \em IXML document. The details of the output can be controlled via
+ * the filter stringlist
+ *
+ * @return the DIDL fragment of the object
+ * @param Document the IXML document where to write the contents
+ * @param Filter the string list with the filter criteria
+ */
+ virtual IXML_Node* createDIDLFragment(IXML_Document* Document, cStringList* Filter) = 0;
+ /**
+ * Is this a container?
+ *
+ * Returns if this object is a container or not
+ *
+ * @return returns
+ * - \bc true, if it is a container
+ * - \bc false, otherwise
+ */
+ bool isContainer(){ return this->getContainer()==NULL?false:true; }
+ /**
+ * Set the sort criteria
+ *
+ * This sets a certain criteria which the object can be compared with.
+ *
+ * @param Property the property to sort after
+ * @param Descending sort the objects in descending order
+ */
+ void setSortCriteria(const char* Property, bool Descending = false);
+ /**
+ * Clears the sort criteria
+ *
+ * Clears the property of the sort criteria and sets the descending flag to
+ * false.
+ */
+ void clearSortCriteria();
+ /******* Setter *******/
+ /**
+ * Set the title
+ *
+ * This sets the title of the object. It is a required metadata information.
+ * It must not be \bc NULL or an empty string.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Title the title of the object
+ */
+ int setTitle(const char* Title);
+ /**
+ * Set the creator
+ *
+ * The creator of an object is primarily the creator or owner of the object
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Creator the creator of the object
+ */
+ int setCreator(const char* Creator);
+ /**
+ * Set the restriction
+ *
+ * This sets the restriction flag. If the object is restricted, no modifications
+ * to its metadata by the user are allowed.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Restricted \bc true, to disallow modification, \bc false to allow it
+ */
+ int setRestricted(bool Restricted);
+ /**
+ * Set the write status
+ *
+ * This sets the write status of a resource. With this indicator, you can set
+ * the modifiabilty of resources by a control point.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Status the write status
+ */
+ int setWriteStatus(int Status);
+ /**
+ * Set the resources
+ *
+ * This sets the list of resources of an object. The list usally contain a
+ * single resource. However, multiple resources a also very common.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Resources the resource list of this object
+ */
+ int setResources(cList<cUPnPResource>* Resources);
+ /**
+ * Add resource to list
+ *
+ * This adds the specified resource to the resource list of the object
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Resource the resource to be added
+ */
+ int addResource(cUPnPResource* Resource);
+ /**
+ * Remove resource from list
+ *
+ * This removes the specified resource from the resource list of the object
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Resource the resource to be removed
+ */
+ int removeResource(cUPnPResource* Resource);
+ /******* Getter *******/
+ /**
+ * Get the object ID
+ *
+ * This returns the object ID of the object.
+ *
+ * @return the object ID
+ */
+ cUPnPObjectID getID() const { return this->mID; }
+ /**
+ * Get the parent ID
+ *
+ * This returns the ID of the parent container object, associated with this object.
+ * It is \bc -1, if the object is the root object.
+ *
+ * @return the parent ID
+ */
+ cUPnPObjectID getParentID() const { return this->mParent?this->mParent->getID():cUPnPObjectID(-1); }
+ /**
+ * Get the parent object
+ *
+ * This returns the parent container object, associated with this object. It is
+ * \bc NULL, if the object is the root object.
+ *
+ * @return the parent object
+ */
+ cUPnPClassContainer* getParent() const { return (cUPnPClassContainer*)this->mParent; }
+ /**
+ * Get the title
+ *
+ * This returns the title of the object. This may be the title of an item or
+ * the folder name in case of a container.
+ *
+ * @return the title of the object
+ */
+ const char* getTitle() const { return this->mTitle; }
+ /**
+ * Get the object class
+ *
+ * This returns the object class of the object. The classes are defined by
+ * the UPnP Working Committee. However, custom classes which are derived from
+ * a standardized class are also possible.
+ *
+ * @return the class of the object
+ */
+ const char* getClass() const { return this->mClass; }
+ /**
+ * Get the creator
+ *
+ * This returns the creator of the object. Usually, this is the primary
+ * content creator or the owner of the object
+ *
+ * @return the creator of the object
+ */
+ const char* getCreator() const { return this->mCreator; }
+ /**
+ * Is the resource restricted?
+ *
+ * Returns \bc true, if the object is restricted or \bc false, otherwise.
+ * When the object is restricted, then modifications to the metadata of the
+ * object are disallowed.
+ *
+ * @return returns
+ * - \bc true, if the object is restricted
+ * - \bc false, otherwise
+ */
+ bool isRestricted() const { return this->mRestricted; }
+ /**
+ * Get write status
+ *
+ * This returns the write status of the object. It gives information, if the
+ * resource is modifiable.
+ *
+ * @return the write status
+ */
+ int getWriteStatus() const { return this->mWriteStatus; }
+ /**
+ * Get a resource by its ID
+ *
+ * Returns the resource with the specified resource ID.
+ *
+ * @return the resource by ID
+ * @param ResourceID the resource ID of the demanded resource
+ */
+ cUPnPResource* getResource(unsigned int ResourceID) const { return this->mResourcesID->Get(ResourceID); }
+ /**
+ * Get the resources
+ *
+ * This returns a list with resources associated with this object.
+ *
+ * @return the resources of this object
+ */
+ cList<cUPnPResource>* getResources() const { return this->mResources; }
+};
+
+/**
+ * The UPnP class Item
+ *
+ * This is a UPnP class Item representation with all its properties.
+ */
+class cUPnPClassItem : public cUPnPClassObject {
+ friend class cMediaDatabase;
+ friend class cUPnPObjectMediator;
+ friend class cUPnPItemMediator;
+protected:
+// cUPnPObjectID mReferenceID;
+ cUPnPClassItem* mReference; ///< The reference item
+ /**
+ * Constructor of an item
+ *
+ * This creates a new instance of an item
+ */
+ cUPnPClassItem();
+public:
+ virtual ~cUPnPClassItem(){};
+ virtual cStringList* getPropertyList();
+ virtual IXML_Node* createDIDLFragment(IXML_Document* Document, cStringList* Filter);
+ virtual bool setProperty(const char* Property, const char* Value);
+ virtual bool getProperty(const char* Property, char** Value) const;
+ /******** Setter ********/
+ /**
+ * Set a reference item
+ *
+ * This sets a reference item. Its comparable with symlinks in *nix systems
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Reference the reference item
+ */
+ int setReference(cUPnPClassItem* Reference);
+ /******** Getter ********/
+ /**
+ * Get the referenced item
+ *
+ * This returns the referenced item of this item
+ *
+ * @return the referenced item
+ */
+ cUPnPClassItem* getReference() const { return this->mReference; }
+ /**
+ * Get the reference ID
+ *
+ * This returns the object ID of the referenced item or \b -1, if
+ * no reference exists.
+ *
+ * @return the reference ID
+ */
+ cUPnPObjectID getReferenceID() const { return this->mReference?this->mReference->getID():cUPnPObjectID(-1); }
+};
+
+typedef std::vector<cClass> tClassVector;
+
+/**
+ * The UPnP class Container
+ *
+ * This is a UPnP class Container representation with all its properties.
+ */
+class cUPnPClassContainer : public cUPnPClassObject {
+ friend class cMediaDatabase;
+ friend class cUPnPObjectMediator;
+ friend class cUPnPContainerMediator;
+protected:
+ cString mContainerType; ///< DLNA container type
+ tClassVector mSearchClasses; ///< Classes which are searchable
+ tClassVector mCreateClasses; ///< Classes which are creatable
+ bool mSearchable; ///< Is the Container searchable?
+ unsigned int mUpdateID; ///< The containerUpdateID
+ cUPnPObjects* mChildren; ///< List of children
+ cHash<cUPnPClassObject>* mChildrenID; ///< List of children as hash map
+ /**
+ * Update the container
+ *
+ * This performs an update, which acutally increases the containerUpdateID.
+ */
+ void update();
+ /**
+ * Sets the containerUpdateID
+ *
+ * This method should only be used when the containerUpdateID is loaded from
+ * the database.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param UID the containerUpdateID
+ */
+ int setUpdateID(unsigned int UID);
+ /**
+ * Constructor of a container
+ *
+ * This creates a new instance of a container
+ */
+ cUPnPClassContainer();
+public:
+ virtual ~cUPnPClassContainer();
+ virtual cStringList* getPropertyList();
+ virtual IXML_Node* createDIDLFragment(IXML_Document* Document, cStringList* Filter);
+ virtual bool setProperty(const char* Property, const char* Value);
+ virtual bool getProperty(const char* Property, char** Value) const;
+ virtual cUPnPClassContainer* getContainer(){ return this; }
+ /**
+ * Add a child
+ *
+ * This adds the specified child to this container. The parent container of the
+ * child will be set to this container.
+ *
+ * @param Object the child to be added
+ */
+ void addObject(cUPnPClassObject* Object);
+ /**
+ * Remove a child
+ *
+ * This removes the specified child from the list of children. The child will
+ * also loose its parent container, so that there is no link between left.
+ *
+ * @param Object the child to be removed
+ */
+ void removeObject(cUPnPClassObject* Object);
+ /**
+ * Get a child by ID
+ *
+ * Returns the child, which is specified by the \c ObjectID.
+ *
+ * @return the child with the specified ID
+ * @param ID the \c ObjectID of the child
+ */
+ cUPnPClassObject* getObject(cUPnPObjectID ID) const;
+ /**
+ * Get the list of children
+ *
+ * This returns a list of the children of the container.
+ *
+ * @return the list of children
+ */
+ cUPnPObjects* getObjectList() const { return this->mChildren; }
+ /**
+ * Add a search class
+ *
+ * This adds a search class to the search classes vector
+ *
+ * @return returns
+ * - \bc 0, if adding was successful
+ * - \bc <0, otherwise
+ * @param SearchClass the new class to be added
+ */
+ int addSearchClass(cClass SearchClass);
+ /**
+ * Remove a search class
+ *
+ * This removes a search class from the search classes vector
+ *
+ * @return returns
+ * - \bc 0, if deleting was successful
+ * - \bc <0, otherwise
+ * @param SearchClass the class to be deleted
+ */
+ int delSearchClass(cClass SearchClass);
+ /**
+ * Add a create class
+ *
+ * This adds a create class to the create classes vector
+ *
+ * @return returns
+ * - \bc 0, if adding was successful
+ * - \bc <0, otherwise
+ * @param CreateClass the new class to be added
+ */
+ int addCreateClass(cClass CreateClass);
+ /**
+ * Remove a create class
+ *
+ * This removes a create class from the create classes vector
+ *
+ * @return returns
+ * - \bc 0, if deleting was successful
+ * - \bc <0, otherwise
+ * @param CreateClass the class to be deleted
+ */
+ int delCreateClass(cClass CreateClass);
+ /******** Setter ********/
+ /**
+ * Set the DLNA container type
+ *
+ * This sets the DLNA container type. It must be a valid container type value.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Type the DLNA container type
+ */
+ int setContainerType(const char* Type);
+ /**
+ * Sets the search classes
+ *
+ * This sets the search classes, which allows the user to search only for
+ * these classes in the current container and its children. If the vector
+ * is empty the search can return any match. If the additional flag \bc
+ * derived is set, then also any derived classes are matched.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param SearchClasses a vector container the allowed search classes
+ */
+ int setSearchClasses(std::vector<cClass> SearchClasses);
+ /**
+ * Sets the create classes
+ *
+ * This sets the create classes, which allows the user to create new objects
+ * in this container, if \em restricted is \bc false.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param CreateClasses a vector containing the create classes
+ */
+ int setCreateClasses(std::vector<cClass> CreateClasses);
+ /**
+ * Sets the searchable flag
+ *
+ * This sets the searchable flag, which allows or disallows search on this
+ * container.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Searchable \bc true, to enable or \bc false, to disable searching
+ */
+ int setSearchable(bool Searchable);
+ /******** Getter ********/
+ /**
+ * Get the DLNA container type
+ *
+ * This returns the DLNA container type. Currently there are only these possible
+ * values beside \bc NULL:
+ * - \bc TUNER_1_0
+ *
+ * @return the DLNA container type
+ */
+ const char* getContainerType() const { return this->mContainerType; }
+ /**
+ * Get the search classes
+ *
+ * This returns a vector container all possible search classes. This are classes,
+ * which can be used for searching in this container.
+ *
+ * @return a vector with all search classes
+ */
+ const std::vector<cClass>* getSearchClasses() const { return &(this->mSearchClasses); }
+ /**
+ * Get the create classes
+ *
+ * This returns a vector containing all possible create classes. This are classes,
+ * which can be created in this container. For instance a TV container can only create
+ * items of the class VideoBroadcast. The vector is empty when creation of new items
+ * by the user is not allowed.
+ *
+ * @return a vector with create classes
+ */
+ const std::vector<cClass>* getCreateClasses() const { return &(this->mCreateClasses); }
+ /**
+ * Is this container searchable
+ *
+ * This returns \bc true, if the container can be search via \em Search or
+ * \bc false, otherwise.
+ *
+ * @return returns
+ * - \bc true, if the container is searchable
+ * - \bc false, otherwise
+ */
+ bool isSearchable() const { return this->mSearchable; }
+ /**
+ * Get the number of children
+ *
+ * This returns the total number of children of this container
+ *
+ * @return the number of childen
+ */
+ unsigned int getChildCount() const { return this->mChildren->Count(); }
+ /**
+ * Get the containerUpdateID
+ *
+ * This returns the containerUpdateID
+ *
+ * @return the containerUpdateID of this container
+ */
+ unsigned int getUpdateID() const { return this->mUpdateID; }
+ /**
+ * Has the container been updated?
+ *
+ * This returns \bc true, if the container was recently updated or
+ * \bc false, otherwise
+ *
+ * @return returns
+ * - \bc true, if the container was updated
+ * - \bc false, otherwise
+ */
+ bool isUpdated();
+};
+
+/**
+ * The UPnP class VideoItem
+ *
+ * This is a UPnP class VideoItem representation with all its properties.
+ */
+class cUPnPClassVideoItem : public cUPnPClassItem {
+ friend class cMediaDatabase;
+ friend class cUPnPObjectMediator;
+ friend class cUPnPVideoItemMediator;
+protected:
+ cString mGenre; ///< Genre of the video
+ cString mDescription; ///< Description
+ cString mLongDescription; ///< a longer description
+ cString mPublishers; ///< CSV of Publishers
+ cString mLanguage; ///< RFC 1766 Language code
+ cString mRelations; ///< Relation to other contents
+ cString mProducers; ///< CSV of Producers
+ cString mRating; ///< Rating (for parential control)
+ cString mActors; ///< CSV of Actors
+ cString mDirectors; ///< CSV of Directors
+ /**
+ * Constructor of a video item
+ *
+ * This creates a new instance of a video item
+ */
+ cUPnPClassVideoItem();
+public:
+ virtual ~cUPnPClassVideoItem();
+ //virtual cString createDIDLFragment(cStringList* Filter);
+ virtual cStringList* getPropertyList();
+ virtual bool setProperty(const char* Property, const char* Value);
+ virtual bool getProperty(const char* Property, char** Value) const;
+ /******** Setter ********/
+ /**
+ * Set a long description
+ *
+ * A long description may hold information about the content or the story
+ * of a video
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param LongDescription the content or story of a video
+ */
+ int setLongDescription(const char* LongDescription);
+ /**
+ * Set a description
+ *
+ * A description may hold short information about the content or the story
+ * of a video. Unlike a long description, this contains just a very short
+ * brief like a subtitle or the episode title.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Description the description of a video
+ */
+ int setDescription(const char* Description);
+ /**
+ * Set the publishers
+ *
+ * This is a CSV list of publishers, who distributes the video.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Publishers a CSV list of publishers
+ */
+ int setPublishers(const char* Publishers);
+ /**
+ * Set a genre
+ *
+ * This is a CSV list of genre of a video. This may be something like
+ * "Western" or "SciFi". Actually, there is no standardized rule for
+ * a genre name, which results in an ambiguous definition of certain
+ * genre, like Thriller and Horror.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Genre a CSV list of genre
+ */
+ int setGenre(const char* Genre);
+ /**
+ * Set the language
+ *
+ * This sets the language of a video. It is defined by RFC 1766.
+ * A valid language definition is \em "de-DE" or \em "en-US".
+ *
+ * @see http://www.ietf.org/rfc/rfc1766.txt
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Language the language (RFC 1766)
+ */
+ int setLanguage(const char* Language);
+ /**
+ * Sets a relation URL
+ *
+ * This sets a CSV list of relation URLs, where to find additional
+ * information about the movie. The URLs may not contain commas and they
+ * must be properly escaped as in RFC 2396
+ *
+ * @see http://www.ietf.org/rfc/rfc2396.txt
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Relations a CSV list with relations
+ */
+ int setRelations(const char* Relations);
+ /**
+ * Sets the directors
+ *
+ * This sets a CSV list of directors.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Directors a CSV list of directors
+ */
+ int setDirectors(const char* Directors);
+ /**
+ * Sets the actors
+ *
+ * This sets a CSV list of actors in a video. This usually contain the main actors.
+ * However, also other actors appearing in the video can be mentioned here.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Actors a CSV list of actors
+ */
+ int setActors(const char* Actors);
+ /**
+ * Sets the producers
+ *
+ * This sets a CSV list of producers of a video. These are the people who are
+ * involed in the production of a video
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Producers a CSV list of producers
+ */
+ int setProducers(const char* Producers);
+ /**
+ * Sets the rating
+ *
+ * This is a rating, which can be used for parential control issues.
+ *
+ * @see http://en.wikipedia.org/wiki/Motion_picture_rating_system
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Rating the rating of a video
+ */
+ int setRating(const char* Rating);
+ /******** Getter ********/
+ /**
+ * Get the genres
+ *
+ * This returns a CSV list of genre
+ *
+ * @return the genre of a video
+ */
+ const char* getGenre() const { return this->mGenre; }
+ /**
+ * Get the long description
+ *
+ * This returns the long description of a video
+ *
+ * @return the long description of a video
+ */
+ const char* getLongDescription() const { return this->mLongDescription; }
+ /**
+ * Get the description
+ *
+ * This returns the description of a video
+ *
+ * @return the description of a video
+ */
+ const char* getDescription() const { return this->mDescription; }
+ /**
+ * Get the publishers
+ *
+ * This returns a CSV list of publishers of the video
+ *
+ * @return a CSV list of publishers
+ */
+ const char* getPublishers() const { return this->mPublishers; }
+ /**
+ * Get the language
+ *
+ * This returns the language of the video
+ *
+ * @return the language
+ */
+ const char* getLanguage() const { return this->mLanguage; }
+ /**
+ * Get the relations
+ *
+ * This returns a CSV list of relation URLs.
+ *
+ * @return a CSV list of relation URLs
+ */
+ const char* getRelations() const { return this->mRelations; }
+ /**
+ * Get the actors
+ *
+ * This returns a CSV list of actors in the video
+ *
+ * @return a CSV list of actors
+ */
+ const char* getActors() const { return this->mActors; }
+ /**
+ * Get the producers
+ *
+ * This returns a CSV list of producers of a video
+ *
+ * @return a CSV list of producers
+ */
+ const char* getProducers() const { return this->mProducers; }
+ /**
+ * Get the directors
+ *
+ * This returns a CSV list of directors
+ *
+ * @return a CSV list of directors
+ */
+ const char* getDirectors() const { return this->mDirectors; }
+ /**
+ * Get the rating
+ *
+ * This returns the rating used for parental control.
+ *
+ * @return the rating of a video
+ */
+ const char* getRating() const { return this->mRating; }
+};
+
+/**
+ * The UPnP class Movie
+ *
+ * This is a UPnP class Movie representation with all its properties.
+ */
+class cUPnPClassMovie : public cUPnPClassVideoItem {
+ friend class cMediaDatabase;
+ friend class cUPnPObjectMediator;
+ friend class cUPnPMovieMediator;
+protected:
+ int mDVDRegionCode; ///< The Region code of the movie (0 - 8)
+ cString mStorageMedium; ///< The storage medium where the movie is stored
+ /**
+ * Constructor of a movie
+ *
+ * This creates a new instance of a movie
+ */
+ cUPnPClassMovie();
+public:
+ virtual ~cUPnPClassMovie();
+ //virtual cString createDIDLFragment(cStringList* Filter);
+ virtual cStringList* getPropertyList();
+ virtual bool setProperty(const char* Property, const char* Value);
+ virtual bool getProperty(const char* Property, char** Value) const;
+ /******** Setter ********/
+ /**
+ * Sets the DVD region code
+ *
+ * For more information on this, see http://en.wikipedia.org/wiki/DVD_region_code
+ *
+ * The integer representation for \em ALL is 9.
+ *
+ * @see http://en.wikipedia.org/wiki/DVD_region_code
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param RegionCode the region code of this movie
+ */
+ int setDVDRegionCode(int RegionCode);
+ /**
+ * Sets the storage medium
+ *
+ * This will set the storage medium, where the movie resides. Valid media
+ * are defined in \link common.h \endlink
+ *
+ * @see common.h
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param StorageMedium the medium where the movie is located
+ */
+ int setStorageMedium(const char* StorageMedium);
+ /******** Getter ********/
+ /**
+ * Get the DVD region code
+ *
+ * This returns the DVD region code. For more information,
+ * see http://en.wikipedia.org/wiki/DVD_region_code
+ *
+ * The integer representation for \em ALL is 9.
+ *
+ * @see http://en.wikipedia.org/wiki/DVD_region_code
+ * @return the DVD region code
+ */
+ int getDVDRegionCode() const { return this->mDVDRegionCode; }
+ /**
+ * Get the storage medium
+ *
+ * This returns the storage medium, where the movie resides.
+ *
+ * @return the storage medium
+ */
+ const char* getStorageMedium() const { return this->mStorageMedium; }
+};
+
+/**
+ * The UPnP class VideoBroadcast
+ *
+ * This is a UPnP class VideoBroadcast representation with all its properties.
+ */
+class cUPnPClassVideoBroadcast : public cUPnPClassVideoItem {
+ friend class cMediaDatabase;
+ friend class cUPnPObjectMediator;
+ friend class cUPnPVideoBroadcastMediator;
+protected:
+ cString mIcon; ///< The channel icon of the channel
+ cString mRegion; ///< The region where the channel can be received
+ int mChannelNr; ///< The channel number
+ cString mChannelName; ///< The channel name or provider name
+ /**
+ * Constructor of a video broadcast
+ *
+ * This creates a new instance of a video broadcast
+ */
+ cUPnPClassVideoBroadcast();
+public:
+ virtual ~cUPnPClassVideoBroadcast();
+ //virtual cString createDIDLFragment(cStringList* Filter);
+ virtual cStringList* getPropertyList();
+ virtual bool setProperty(const char* Property, const char* Value);
+ virtual bool getProperty(const char* Property, char** Value) const;
+ /******** Setter ********/
+ /**
+ * Set the channel icon
+ *
+ * This sets the channel icon of this channel. The resource must be a valid
+ * URI which can be obtained via the internal webserver
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param IconURI the URI to the icon file
+ */
+ int setIcon(const char* IconURI);
+ /**
+ * Set the channel region
+ *
+ * This sets the region of a channel, where it can be received
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param Region the location where the channel can be received
+ */
+ int setRegion(const char* Region);
+ /**
+ * Set channel number
+ *
+ * This sets the channel number, so that it can be used for directly navigation
+ * or channel up and down navigation respectively.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param ChannelNr the channel number
+ */
+ int setChannelNr(int ChannelNr);
+ /**
+ * Set the channel name
+ *
+ * This sets the channel name or the provider of the channel.
+ *
+ * @return returns
+ * - \bc 0, if setting was successful
+ * - \bc <0, otherwise
+ * @param ChannelName the channel name
+ */
+ int setChannelName(const char* ChannelName);
+ /******** Getter ********/
+ /**
+ * Get the channel icon
+ *
+ * This returns the channel icon of the channel.
+ *
+ * @return the channel icon
+ */
+ const char* getIcon() const { return this->mIcon; }
+ /**
+ * Get the region
+ *
+ * This returns the region, where the channel can be received
+ *
+ * @return the channel region
+ */
+ const char* getRegion() const { return this->mRegion; }
+ /**
+ * Get the channel number
+ *
+ * This returns the channel number
+ *
+ * @return the channel number
+ */
+ int getChannelNr() const { return this->mChannelNr; }
+ /**
+ * Get the channel name
+ *
+ * This returns the channel name or provider name respectively
+ *
+ * @return the channel name
+ */
+ const char* getChannelName() const { return this->mChannelName; }
+};
+
+/**
+ * Mediator interface
+ *
+ * This is an interface for mediators used to communicate with the database.
+ * A mediator is applied to get, create, save or delete an UPnP object.
+ */
+class cMediatorInterface {
+public:
+ virtual ~cMediatorInterface(){};
+ /**
+ * Creates an object
+ *
+ * This creates a new UPnP object with the specific title and the restriction.
+ *
+ * @return the newly created object
+ * @param Title the title of that object
+ * @param Restricted the restriction of the object
+ */
+ virtual cUPnPClassObject* createObject(const char* Title, bool Restricted) = 0;
+ /**
+ * Get an object
+ *
+ * Retrieves a UPnP object from the database and stores its information in the
+ * object. The object is obtained via its object ID.
+ *
+ * @return the object, found in the database
+ * @param ID the object ID
+ */
+ virtual cUPnPClassObject* getObject(cUPnPObjectID ID) = 0;
+ /**
+ * Saves the object
+ *
+ * This saves the object in the database by updating the values in the database
+ * with those in the object.
+ *
+ * @return returns
+ * - \bc <0, in case of an error
+ * - \bc 0, otherwise
+ * @param Object the object to be saved
+ */
+ virtual int saveObject(cUPnPClassObject* Object) = 0;
+ /**
+ * Deletes the object
+ *
+ * This deletes the object in the database by removing all its children and then
+ * deleting the contents from the database
+ *
+ * @return returns
+ * - \bc <0, in case of an error
+ * - \bc 0, otherwise
+ * @param Object the object to be deleted
+ */
+ virtual int deleteObject(cUPnPClassObject* Object) = 0;
+ /**
+ * Clears the object
+ *
+ * This clears the object, i.e. all its children will be removed and deleted
+ * from the database
+ *
+ * @return returns
+ * - \bc <0, in case of an error
+ * - \bc 0, otherwise
+ * @param Object the object to be cleared
+ */
+ virtual int clearObject(cUPnPClassObject* Object) = 0;
+};
+
+typedef std::map<const char*, cMediatorInterface*, strCmp> tMediatorMap;
+
+/**
+ * The object factory
+ *
+ * This factory can create, delete, clear or save UPnP objects. It uses mediators
+ * to communicate with the persistance database to load or persist the objects.
+ *
+ * If a new type of object shall be stored in the database an according mediator
+ * is needed, which knows the internal database structure. It must implement the
+ * cMediatorInterface class to work with this factory.
+ */
+class cUPnPObjectFactory {
+private:
+ static cUPnPObjectFactory* mInstance;
+ cSQLiteDatabase* mDatabase;
+ tMediatorMap mMediators;
+ cMediatorInterface* findMediatorByID(cUPnPObjectID ID);
+ cMediatorInterface* findMediatorByClass(const char* Class);
+ cUPnPObjectFactory();
+public:
+ /**
+ * Return the instance of the factory
+ *
+ * This returns the instance of the factory. When the media database is
+ * initialized successfully, it usally has all known mediators already
+ * registered.
+ *
+ * @return the instance of the factory
+ */
+ static cUPnPObjectFactory* getInstance();
+ /**
+ * Register a mediator
+ *
+ * This registers a new mediator by the associated class. The mediator
+ * must implement the cMediatorInterface class to be used with this
+ * factory.
+ *
+ * @param UPnPClass the class of which the mediator is associated to
+ * @param Mediator the mediator itself
+ */
+ void registerMediator(const char* UPnPClass, cMediatorInterface* Mediator);
+ /**
+ * Unregisters a mediator
+ *
+ * This unregisters a mediator if it is not needed anylonger. If the optional
+ * parameter \c freeMediator is set, the object instance will be free'd after
+ * removing it from the list.
+ *
+ * @param UPnPClass the class of the associated mediator
+ * @param freeMediator flag to indicate if the mediator shall be free'd after removing
+ */
+ void unregisterMediator(const char* UPnPClass, bool freeMediator=true);
+ /**
+ * @copydoc cMediatorInterface::createObject(const char* Title, bool Restricted)
+ *
+ * @param UPnPClass the class of the new object
+ */
+ cUPnPClassObject* createObject(const char* UPnPClass, const char* Title, bool Restricted=true);
+ /*! @copydoc cMediatorInterface::getObject(cUPnPObjectID ID) */
+ cUPnPClassObject* getObject(cUPnPObjectID ID);
+ /*! @copydoc cMediatorInterface::saveObject(cUPnPClassObject* Object) */
+ int saveObject(cUPnPClassObject* Object);
+ /*! @copydoc cMediatorInterface::deleteObject(cUPnPClassObject* Object) */
+ int deleteObject(cUPnPClassObject* Object);
+ /*! @copydoc cMediatorInterface::clearObject(cUPnPClassObject* Object) */
+ int clearObject(cUPnPClassObject* Object);
+};
+
+class cMediaDatabase;
+
+/**
+ * Object Mediator
+ *
+ * This is the interface between the objects and the database. It is possible to
+ * create new objects, stores objects in the database as well as removing them from
+ * it.
+ */
+class cUPnPObjectMediator : public cMediatorInterface {
+protected:
+ cSQLiteDatabase* mDatabase; ///< the SQLite 3 database wrapper
+ cMediaDatabase* mMediaDatabase; ///< the media database
+ /**
+ * Constructor of object mediator
+ *
+ * This constructs a new object mediator. This is actually not allowed because
+ * it is prohibited to create instances of the UPnP class Object
+ */
+ cUPnPObjectMediator(
+ cMediaDatabase* MediaDatabase ///< the media database
+ );
+ /**
+ * Initializes an object
+ *
+ * This initializes an object, which means, that it will be created in the database with
+ * the required details.
+ *
+ * @return returns
+ * - \bc <0, in case of an error
+ * - \bc 0, otherwise
+ */
+ virtual int initializeObject(
+ cUPnPClassObject* Object, ///< the object to be initialized
+ const char* Class, ///< the class of the object
+ const char* Title, ///< the title of the object
+ bool Restricted ///< restriction of the object
+ );
+ /**
+ * Store the object in the database
+ *
+ * This stores the information of an object in the database
+ *
+ * @return returns
+ * - \bc <0, in case of an error
+ * - \bc 0, otherwise
+ * @param Object the object to be saved
+ */
+ virtual int objectToDatabase(cUPnPClassObject* Object);
+ /**
+ * Loads an object from database
+ *
+ * This loads an object from the database
+ *
+ * @return returns
+ * - \bc <0, in case of an error
+ * - \bc 0, otherwise
+ * @param Object the object to be loaded
+ * @param ID the object ID of that object
+ */
+ virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID);
+public:
+ virtual ~cUPnPObjectMediator();
+ /*! @copydoc cMediatorInterface::createObject(const char* Title, bool Restricted) */
+ virtual cUPnPClassObject* createObject(const char* Title, bool Restricted);
+ /*! @copydoc cMediatorInterface::getObject(cUPnPObjectID ID) */
+ virtual cUPnPClassObject* getObject(cUPnPObjectID ID);
+ /*! @copydoc cMediatorInterface::saveObject(cUPnPClassObject* Object) */
+ virtual int saveObject(cUPnPClassObject* Object);
+ /*! @copydoc cMediatorInterface::deleteObject(cUPnPClassObject* Object) */
+ virtual int deleteObject(cUPnPClassObject* Object);
+ /*! @copydoc cMediatorInterface::clearObject(cUPnPClassObject* Object) */
+ virtual int clearObject(cUPnPClassObject* Object);
+};
+
+/**
+ * Item Mediator
+ *
+ * This is the interface between the objects and the database. It is possible to
+ * create new objects, stores objects in the database as well as removing them from
+ * it.
+ */
+class cUPnPItemMediator : public cUPnPObjectMediator {
+protected:
+ /*! @copydoc cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object) */
+ virtual int objectToDatabase(cUPnPClassObject* Object);
+ /*! @copydoc cUPnPObjectMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID) */
+ virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID);
+public:
+ /**
+ * Constructor of item mediator
+ *
+ * This creates a new item mediator with which it is possible to create new
+ * instances of Item objects.
+ *
+ * @param MediaDatabase the media database
+ */
+ cUPnPItemMediator(cMediaDatabase* MediaDatabase);
+ virtual ~cUPnPItemMediator(){};
+ /*! @copydoc cUPnPObjectMediator::createObject(const char* Title, bool Restricted) */
+ virtual cUPnPClassItem* createObject(const char* Title, bool Restricted);
+ /*! @copydoc cUPnPObjectMediator::getObject(cUPnPObjectID ID) */
+ virtual cUPnPClassItem* getObject(cUPnPObjectID ID);
+};
+
+/**
+ * VideoItem Mediator
+ *
+ * This is the interface between the objects and the database. It is possible to
+ * create new objects, stores objects in the database as well as removing them from
+ * it.
+ */
+class cUPnPVideoItemMediator : public cUPnPItemMediator {
+protected:
+ virtual int objectToDatabase(cUPnPClassObject* Object);
+ virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID);
+public:
+ /**
+ * Constructor of videoitem mediator
+ *
+ * This creates a new videoitem mediator with which it is possible to create new
+ * instances of VideoItem objects.
+ *
+ * @param MediaDatabase the media database
+ */
+ cUPnPVideoItemMediator(cMediaDatabase* MediaDatabase);
+ virtual ~cUPnPVideoItemMediator(){};
+ virtual cUPnPClassVideoItem* createObject(const char* Title, bool Restricted);
+ virtual cUPnPClassVideoItem* getObject(cUPnPObjectID ID);
+};
+
+/**
+ * VideoBroadcast Mediator
+ *
+ * This is the interface between the objects and the database. It is possible to
+ * create new objects, stores objects in the database as well as removing them from
+ * it.
+ */
+class cUPnPVideoBroadcastMediator : public cUPnPVideoItemMediator {
+protected:
+ virtual int objectToDatabase(cUPnPClassObject* Object);
+ virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID);
+public:
+ /**
+ * Constructor of video broadcast mediator
+ *
+ * This creates a new video broadcast mediator with which it is possible to create new
+ * instances of VideoBroadcast objects.
+ *
+ * @param MediaDatabase the media database
+ */
+ cUPnPVideoBroadcastMediator(cMediaDatabase* MediaDatabase);
+ virtual ~cUPnPVideoBroadcastMediator(){};
+ virtual cUPnPClassVideoBroadcast* createObject(const char* Title, bool Restricted);
+ virtual cUPnPClassVideoBroadcast* getObject(cUPnPObjectID ID);
+};
+
+/**
+ * Movie Mediator
+ *
+ * This is the interface between the objects and the database. It is possible to
+ * create new objects, stores objects in the database as well as removing them from
+ * it.
+ */
+class cUPnPMovieMediator : public cUPnPVideoItemMediator {
+protected:
+ virtual int objectToDatabase(cUPnPClassObject* Object);
+ virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID);
+public:
+ /**
+ * Constructor of movie mediator
+ *
+ * This creates a new movie mediator with which it is possible to create new
+ * instances of Movie objects.
+ *
+ * @param MediaDatabase the media database
+ */
+ cUPnPMovieMediator(cMediaDatabase* MediaDatabase);
+ virtual ~cUPnPMovieMediator(){};
+ virtual cUPnPClassMovie* createObject(const char* Title, bool Restricted);
+ virtual cUPnPClassMovie* getObject(cUPnPObjectID ID);
+};
+
+/**
+ * Container Mediator
+ *
+ * This is the interface between the objects and the database. It is possible to
+ * create new objects, stores objects in the database as well as removing them from
+ * it.
+ */
+class cUPnPContainerMediator : public cUPnPObjectMediator {
+protected:
+ virtual int objectToDatabase(cUPnPClassObject* Object);
+ virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID);
+public:
+ /**
+ * Constructor of container mediator
+ *
+ * This creates a new container mediator with which it is possible to create new
+ * instances of Container objects.
+ *
+ * @param MediaDatabase the media database
+ */
+ cUPnPContainerMediator(cMediaDatabase* MediaDatabase);
+ virtual ~cUPnPContainerMediator(){};
+ virtual cUPnPClassContainer* createObject(const char* Title, bool Restricted);
+ virtual cUPnPClassContainer* getObject(cUPnPObjectID ID);
+};
+
+#endif /* _OBJECT_H */
+
diff --git a/inc/profiles.h b/inc/profiles.h
new file mode 100644
index 0000000..c50e4ee
--- /dev/null
+++ b/inc/profiles.h
@@ -0,0 +1,32 @@
+/*
+ * File: profiles.h
+ * Author: savop
+ *
+ * Created on 8. Dezember 2009, 12:45
+ */
+
+#ifndef _PROFILES_H
+#define _PROFILES_H
+
+#include "../common.h"
+
+#include "profiles/aac.h"
+#include "profiles/ac3.h"
+#include "profiles/amr.h"
+#include "profiles/atrac3plus.h"
+#include "profiles/jpeg.h"
+#include "profiles/lpcm.h"
+#include "profiles/mpa.h"
+#include "profiles/mpeg1.h"
+#include "profiles/mpeg2.h"
+#include "profiles/mpeg4_p2.h"
+#include "profiles/mpeg4_p10.h"
+#include "profiles/png.h"
+
+#ifdef WITH_WINDOWS_MEDIA
+ #include "profiles/wma.h"
+ #include "profiles/wmv9.h"
+#endif
+
+#endif /* _PROFILES_H */
+
diff --git a/inc/profiles/aac.h b/inc/profiles/aac.h
new file mode 100644
index 0000000..e3f4dab
--- /dev/null
+++ b/inc/profiles/aac.h
@@ -0,0 +1,36 @@
+/*
+ * File: profiles_aac.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:31
+ */
+
+#ifndef _PROFILES_AAC_H
+#define _PROFILES_AAC_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_AAC_ADTS; ///< AAC ADTS
+extern DLNAProfile DLNA_PROFILE_AAC_ADTS_320; ///< AAC ADTS
+extern DLNAProfile DLNA_PROFILE_AAC_ISO; ///< AAC ISO (iTunes)
+extern DLNAProfile DLNA_PROFILE_AAC_ISO_320; ///< AAC ISO
+extern DLNAProfile DLNA_PROFILE_AAC_LTP_ISO; ///< AAC LTP ISO
+extern DLNAProfile DLNA_PROFILE_AAC_LTP_MULT5_ISO; ///< AAC LTP Multi 5.1 ISO
+extern DLNAProfile DLNA_PROFILE_AAC_LTP_MULT7_ISO; ///< AAC LTP Multi 7.1 ISO
+extern DLNAProfile DLNA_PROFILE_AAC_MULT5_ADTS; ///< AAC Multi 5.1 ADTS
+extern DLNAProfile DLNA_PROFILE_AAC_MULT5_ISO; ///< AAC Multi 5.1 ISO
+
+extern DLNAProfile DLNA_PROFILE_HEAAC_L2_ADTS; ///< AAC Radio Broadcasts ADTS L2
+extern DLNAProfile DLNA_PROFILE_HEAAC_L2_ISO; ///< AAC Radio Broadcasts ISO L2
+extern DLNAProfile DLNA_PROFILE_HEAAC_L3_ADTS; ///< AAC Radio Broadcasts ADTS L3
+extern DLNAProfile DLNA_PROFILE_HEAAC_L3_ISO; ///< AAC Radio Broadcasts ISO L3
+extern DLNAProfile DLNA_PROFILE_HEAAC_MULT5_ADTS; ///< AAC Music Track 5.1 ADTS
+extern DLNAProfile DLNA_PROFILE_HEAAC_MULT5_ISO; ///< AAC Music Track 5.1 ISO
+extern DLNAProfile DLNA_PROFILE_HEAAC_L2_ADTS_320; ///< AAC Radio Broadcasts ADTS 320 L2
+extern DLNAProfile DLNA_PROFILE_HEAAC_L2_ISO_320; ///< AAC Radio Broadcasts ISO 320 L2
+
+extern DLNAProfile DLNA_PROFILE_BSAC_ISO; ///< BSAC ISO
+extern DLNAProfile DLNA_PROFILE_BSAC_MULT5_ISO; ///< BSAC ISO 5.1
+
+#endif /* _PROFILES_AAC_H */
+
diff --git a/inc/profiles/ac3.h b/inc/profiles/ac3.h
new file mode 100644
index 0000000..1d1ccf2
--- /dev/null
+++ b/inc/profiles/ac3.h
@@ -0,0 +1,24 @@
+/*
+ * File: profiles_ac3.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:04
+ */
+
+#ifndef _PROFILES_AC3_H
+#define _PROFILES_AC3_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_AC3; ///< DLNA AC3
+
+class cAC3Profiler : public cDLNAProfiler, public cAudioProfiler {
+public:
+ virtual DLNAProfile* probeDLNAProfile(AVFormatContext* FormatCtx);
+ virtual AudioPortionProfile probeAudioProfile(AVFormatContext* FormatCtx);
+};
+
+extern cAC3Profiler AC3Profiler;
+
+#endif /* _PROFILES_AC3_H */
+
diff --git a/inc/profiles/amr.h b/inc/profiles/amr.h
new file mode 100644
index 0000000..73cc9ee
--- /dev/null
+++ b/inc/profiles/amr.h
@@ -0,0 +1,17 @@
+/*
+ * File: profiles_amr.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:05
+ */
+
+#ifndef _PROFILES_AMR_H
+#define _PROFILES_AMR_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_AMR_3GPP; ///< AMR 3GPP, cell phones
+extern DLNAProfile DLNA_PROFILE_AMR_WBPlus; ///< AMR WB+
+
+#endif /* _PROFILES_AMR_H */
+
diff --git a/inc/profiles/atrac3plus.h b/inc/profiles/atrac3plus.h
new file mode 100644
index 0000000..64f7c15
--- /dev/null
+++ b/inc/profiles/atrac3plus.h
@@ -0,0 +1,16 @@
+/*
+ * File: profiles_atrac3plus.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:06
+ */
+
+#ifndef _PROFILES_ATRAC3PLUS_H
+#define _PROFILES_ATRAC3PLUS_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_ATRAC3Plus; ///< Atrac 3+
+
+#endif /* _PROFILES_ATRAC3PLUS_H */
+
diff --git a/inc/profiles/container.h b/inc/profiles/container.h
new file mode 100644
index 0000000..26cec8e
--- /dev/null
+++ b/inc/profiles/container.h
@@ -0,0 +1,47 @@
+/*
+ * File: container.h
+ * Author: savop
+ *
+ * Created on 8. Januar 2010, 10:45
+ */
+
+#ifndef _CONTAINER_H
+#define _CONTAINER_H
+
+#include "profile_data.h"
+
+extern "C" {
+#include <libavcodec/avcodec.h>
+#include <libavformat/avformat.h>
+}
+
+class cContainerDetector {
+public:
+ static VideoContainerProfile detect(AVFormatContext* Ctx);
+private:
+ /**
+ * MPEG1
+ */
+ static VideoContainerProfile detectMPEG1Container(AVFormatContext* Ctx);
+ /**
+ * MPEG2-PS
+ * MPEG2-TS
+ * MPEG2-TS-DLNA
+ * MPEG2-TS-DLNA-T
+ */
+ static VideoContainerProfile detectMPEG2Container(AVFormatContext* Ctx);
+ /**
+ * 3GPP
+ * MP4
+ */
+ static VideoContainerProfile detectMP4Container(AVFormatContext* Ctx);
+#ifdef WITH_WINDOWS_MEDIA
+ /**
+ * ASF
+ */
+ static VideoContainerProfile detectWMFContainer(AVFormatContext* Ctx);
+#endif
+};
+
+#endif /* _CONTAINER_H */
+
diff --git a/inc/profiles/jpeg.h b/inc/profiles/jpeg.h
new file mode 100644
index 0000000..42d2420
--- /dev/null
+++ b/inc/profiles/jpeg.h
@@ -0,0 +1,24 @@
+/*
+ * File: profiles_jpeg.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 12:59
+ */
+
+#ifndef _PROFILES_JPEG_H
+#define _PROFILES_JPEG_H
+
+#include "profile_data.h"
+
+/* Images */
+extern DLNAProfile DLNA_PROFILE_JPEG_SM; ///< JPEG small resolution
+extern DLNAProfile DLNA_PROFILE_JPEG_MED; ///< JPEG medium resolution
+extern DLNAProfile DLNA_PROFILE_JPEG_LRG; ///< JPEG high resolution
+
+/* Icons */
+extern DLNAIconProfile DLNA_ICON_JEPG_TN; ///< DLNA jpeg thumbnail profile of images
+extern DLNAIconProfile DLNA_ICON_JPEG_SM_24; ///< DLNA icon profile of small jpeg images
+extern DLNAIconProfile DLNA_ICON_JPEG_LRG_24; ///< DLNA icon profile of large jpeg images
+
+#endif /* _PROFILES_JPEG_H */
+
diff --git a/inc/profiles/lpcm.h b/inc/profiles/lpcm.h
new file mode 100644
index 0000000..0643b77
--- /dev/null
+++ b/inc/profiles/lpcm.h
@@ -0,0 +1,16 @@
+/*
+ * File: profiles_lpcm.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:07
+ */
+
+#ifndef _PROFILES_LPCM_H
+#define _PROFILES_LPCM_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_LPCM; ///< LPCM Audio
+
+#endif /* _PROFILES_LPCM_H */
+
diff --git a/inc/profiles/mpa.h b/inc/profiles/mpa.h
new file mode 100644
index 0000000..9110bc0
--- /dev/null
+++ b/inc/profiles/mpa.h
@@ -0,0 +1,25 @@
+/*
+ * File: profiles_mp3.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:08
+ */
+
+#ifndef _PROFILES_MP3_H
+#define _PROFILES_MP3_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_MP3; ///< DLNA MP3
+extern DLNAProfile DLNA_PROFILE_MP3X; ///< MP3x
+
+class cMPEGAudioProfiler : public cDLNAProfiler, public cAudioProfiler {
+public:
+ virtual AudioPortionProfile probeAudioProfile(AVFormatContext* FormatCtx);
+ virtual DLNAProfile* probeDLNAProfile(AVFormatContext* FormatCtx);
+};
+
+extern cMPEGAudioProfiler MPEGAudioProfiler;
+
+#endif /* _PROFILES_MP3_H */
+
diff --git a/inc/profiles/mpeg1.h b/inc/profiles/mpeg1.h
new file mode 100644
index 0000000..7e7637e
--- /dev/null
+++ b/inc/profiles/mpeg1.h
@@ -0,0 +1,16 @@
+/*
+ * File: profiles_mpeg1.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:34
+ */
+
+#ifndef _PROFILES_MPEG1_H
+#define _PROFILES_MPEG1_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_MPEG1; ///< MPEG 1
+
+#endif /* _PROFILES_MPEG1_H */
+
diff --git a/inc/profiles/mpeg2.h b/inc/profiles/mpeg2.h
new file mode 100644
index 0000000..6abbbb5
--- /dev/null
+++ b/inc/profiles/mpeg2.h
@@ -0,0 +1,68 @@
+/*
+ * File: profiles_mpeg2.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:35
+ */
+
+#ifndef _PROFILES_MPEG2_H
+#define _PROFILES_MPEG2_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_MPEG_PS_NTSC; ///< MPEG 2 PS NTSC
+extern DLNAProfile DLNA_PROFILE_MPEG_PS_NTSC_XAC3; ///< MPEG 2 PS NTSC AC3
+extern DLNAProfile DLNA_PROFILE_MPEG_PS_PAL; ///< MPEG 2 PS PAL
+extern DLNAProfile DLNA_PROFILE_MPEG_PS_PAL_XAC3; ///< MPEG 2 PS PAL AC3
+
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA; ///< MPEG 2 TS North America
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_T; ///< MPEG 2 TS North America with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_ISO; ///< MPEG 2 TS North America without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA; ///< MPEG 2 TS North America HD
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_T; ///< MPEG 2 TS North America with time stamp HD
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_ISO; ///< MPEG 2 TS North America without time stamp HD
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3; ///< MPEG 2 TS North America AC3
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_T; ///< MPEG 2 TS North America AC3 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_ISO; ///< MPEG 2 TS North America AC3 without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3; ///< MPEG 2 TS North America AC3 HD
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_T; ///< MPEG 2 TS North America AC3 with time stamp HD
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_ISO; ///< MPEG 2 TS North America AC3 without time stamp HD
+
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU; ///< MPEG 2 TS Europe
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_T; ///< MPEG 2 TS Europe with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_ISO; ///< MPEG 2 TS Europe without time stamp
+
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO; ///< MPEG 2 TS Korea
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_T; ///< MPEG 2 TS Korea with time stamp
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_ISO; ///< MPEG 2 TS Korea without time stamp
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO; ///< MPEG 2 TS Korea HD
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_T; ///< MPEG 2 TS Korea with time stamp HD
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_ISO; ///< MPEG 2 TS Korea without time stamp HD
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3; ///< MPEG 2 TS Korea AC3
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3_T; ///< MPEG 2 TS Korea AC3 with time stamp
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3_ISO; ///< MPEG 2 TS Korea AC3 without time stamp
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3; ///< MPEG 2 TS Korea AC3 HD
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3_T; ///< MPEG 2 TS Korea AC3 with time stamp HD
+//extern DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3_ISO; ///< MPEG 2 TS Korea AC3 without time stamp HD
+
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC; ///< Low Level with AAC Audio
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC_T; ///< Low level with AAC Audio with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC_ISO; ///< Low level with AAC Audio without time stamp
+
+//extern DLNAProfile DLNA_PROFILE_MPEG_ES_PAL; ///< PAL ES over RTP
+//extern DLNAProfile DLNA_PROFILE_MPEG_ES_NTSC; ///< NTSC ES over RTP
+//extern DLNAProfile DLNA_PROFILE_MPEG_ES_PAL_XAC3; ///< PAL AC3 ES over RTP
+//extern DLNAProfile DLNA_PROFILE_MPEG_ES_NTSC_XAC3; ///< NTSC AC3 ES over RTP
+
+class cMPEG2Profiler : public cDLNAProfiler, public cVideoProfiler, public cAudioProfiler {
+public:
+ virtual VideoContainerProfile probeContainerProfile(AVFormatContext* FormatCtx);
+ virtual VideoPortionProfile probeVideoProfile(AVFormatContext* FormatCtx);
+ virtual AudioPortionProfile probeAudioProfile(AVFormatContext* FormatCtx);
+ virtual DLNAProfile* probeDLNAProfile(AVFormatContext* FormatCtx);
+};
+
+extern cMPEG2Profiler MPEG2Profiler;
+
+#endif /* _PROFILES_MPEG2_H */
+
diff --git a/inc/profiles/mpeg4_p10.h b/inc/profiles/mpeg4_p10.h
new file mode 100644
index 0000000..f58ac43
--- /dev/null
+++ b/inc/profiles/mpeg4_p10.h
@@ -0,0 +1,153 @@
+/*
+ * File: profiles_mpeg4_p10.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:38
+ */
+
+#ifndef _PROFILES_MPEG4_P10_H
+#define _PROFILES_MPEG4_P10_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5; ///< AVC main profile AAC 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5_T; ///< AVC main profile AAC 5.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5_ISO; ///< AVC main profile AAC 5.1 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2; ///< AVC main profile HEAAC L2
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2_T; ///< AVC main profile HEAAC L2 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2_ISO; ///< AVC main profile HEAAC L2 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3; ///< AVC main profile MP3
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3_T; ///< AVC main profile MP3 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3_ISO; ///< AVC main profile MP3 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3; ///< AVC main profile AC3
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3_T; ///< AVC main profile AC3 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3_ISO; ///< AVC main profile AC3 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP; ///< AVC main profile AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_T; ///< AVC main profile AAC LTP with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_ISO; ///< AVC main profile AAC LTP without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5; ///< AVC main profile AAC LTP 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5_T; ///< AVC main profile AAC LTP 5.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5_ISO; ///< AVC main profile AAC LTP 5.1 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7; ///< AVC main profile AAC LTP 7.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7_T; ///< AVC main profile AAC LTP 7.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7_ISO; ///< AVC main profile AAC LTP 7.1 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC; ///< AVC main profile BSAC
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC_T; ///< AVC main profile BSAC with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC_ISO; ///< AVC main profile BSAC without time stamp
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_MULT5; ///< AVC main profile MP4 AAC 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_HEAAC_L2; ///< AVC main profile MP4 HEAAC L2
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_MPEG1_L3; ///< AVC main profile MP4 MP3
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AC3; ///< AVC main profile MP4 AC3
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP; ///< AVC main profile MP4 AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP_MULT5; ///< AVC main profile MP4 AAC LTP 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP_MULT7; ///< AVC main profile MP4 AAC LTP 7.1
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_ATRAC3plus; ///< AVC main profile MP4 ATRAC3+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_BSAC; ///< AVC main profile MP4 BSAC
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3L_SD_AAC; ///< AVC baseline profile MP4 AAC
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3L_SD_HEAAC; ///< AVC baseline profile MP4 HEAAC
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3_SD_AAC; ///< AVC baseline profile standard MP4 AAC
+
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5; ///< AVC CIF30 baseline profile AAC 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5_T; ///< AVC CIF30 baseline profile AAC 5.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5_ISO; ///< AVC CIF30 baseline profile AAC 5.1 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2; ///< AVC CIF30 baseline profile HEAAC L2
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2_T; ///< AVC CIF30 baseline profile HEAAC L2 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2_ISO; ///< AVC CIF30 baseline profile HEAAC L2 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3; ///< AVC CIF30 baseline profile MP3
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3_T; ///< AVC CIF30 baseline profile MP3 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3_ISO; ///< AVC CIF30 baseline profile MP3 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3; ///< AVC CIF30 baseline profile AC3
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3_T; ///< AVC CIF30 baseline profile AC3 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3_ISO; ///< AVC CIF30 baseline profile AC3 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP; ///< AVC CIF30 baseline profile AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_T; ///< AVC CIF30 baseline profile AAC LTP with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_ISO; ///< AVC CIF30 baseline profile AAC LTP without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5; ///< AVC CIF30 baseline profile AAC LTP 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5_T; ///< AVC CIF30 baseline profile AAC LTP 5.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5_ISO; ///< AVC CIF30 baseline profile AAC LTP 5.1 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940; ///< AVC CIF30 baseline profile AAC 940
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940_T; ///< AVC CIF30 baseline profile AAC 940 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940_ISO; ///< AVC CIF30 baseline profile AAC 940 without time stamp
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_MULT5; ///< AVC CIF30 baseline profile MP4 AAC 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_HEAAC_L2; ///< AVC CIF30 baseline profile MP4 HEAAC L2
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_MPEG1_L3; ///< AVC CIF30 baseline profile MP4 MP3
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AC3; ///< AVC CIF30 baseline profile MP4 AC3
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_LTP; ///< AVC CIF30 baseline profile MP4 AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_LTP_MULT5; ///< AVC CIF30 baseline profile MP4 AAC LTP 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_BSAC; ///< AVC CIF30 baseline profile BSAC
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_BSAC_MULT5; ///< AVC CIF30 baseline profile BSAC 5.1
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L2_CIF30_AAC; ///< AVC CIF30 baseline profile L2 AAC
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_HEAAC; ///< AVC CIF15 baseline profile HEAAC
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AMR; ///< AVC CIF15 baseline profile AMR
+
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5; ///< AVC main profile AAC 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5_T; ///< AVC main profile AAC 5.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5_ISO; ///< AVC main profile AAC 5.1 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2; ///< AVC main profile HEAAC L2
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2_T; ///< AVC main profile HEAAC L2 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2_ISO; ///< AVC main profile HEAAC L2 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3; ///< AVC main profile MP3
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3_T; ///< AVC main profile MP3 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3_ISO; ///< AVC main profile MP3 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3; ///< AVC main profile AC3
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3_T; ///< AVC main profile AC3 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3_ISO; ///< AVC main profile AC3 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC; ///< AVC main profile AAC
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_T; ///< AVC main profile AAC with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_ISO; ///< AVC main profile AAC without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP; ///< AVC main profile AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_T; ///< AVC main profile AAC LTP with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_ISO; ///< AVC main profile AAC LTP without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5; ///< AVC main profile AAC LTP 5.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5_T; ///< AVC main profile AAC LTP 5.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5_ISO; ///< AVC main prpfile AAC LTP 5.1 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7; ///< AVC main profile AAC LTP 7.1
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7_T; ///< AVC main profile AAC LTP 7.1 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7_ISO; ///< AVC main prpfile AAC LTP 7.1 without time stamp
+
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC; ///< AVC baseline profile AAC
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_T; ///< AVC baseline profile AAC with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_ISO; ///< AVC baseline profile AAC without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540; ///< AVC baseline profile AAC 540
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540_T; ///< AVC baseline profile AAC 540 with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540_ISO; ///< AVC baseline profile AAC 540 without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP; ///< AVC baseline profile AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP_T; ///< AVC baseline profile AAC LTP with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP_IS0; ///< AVC baseline profile AAC LTP without time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC; ///< AVC baseline profile BSAC
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC_T; ///< AVC baseline profile BSAC with time stamp
+extern DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC_ISO; ///< AVC baseline profile BSAC without time stamp
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC; ///< AVC baseline profile AAC
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_520; ///< AVC baseline profile AAC 520
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_LTP; ///< AVC baseline profile AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_LTP_520; ///< AVC baseline profile AAC LTP 520
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_BSAC; ///< AVC baseline profile BSAC
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L12_CIF15_HEAAC; ///< AVC baseline profile HEAAC
+
+extern DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L1B_QCIF15_HEAAC; ///< AVC baseline profile QCIF15
+
+extern DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_CIF30_AMR_WBplus; ///< AVC 3GPP baseline profile CIF30 AMR WB+
+extern DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_CIF15_AMR_WBplus; ///< AVC 3GPP baseline profile CIF15 AMR WB+
+
+extern DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AAC; ///< AVC 3GPP baseline profile QCIF15 AAC
+extern DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AAC_LTP; ///< AVC 3GPP baseline profile QCIF15 AAC LTP
+extern DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_HEAAC; ///< AVC 3GPP baseline profile QCIF15 HEAAC
+extern DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AMR_WBplus; ///< AVC 3GPP baseline profile QCIF15 AMR WB+
+extern DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AMR; ///< AVC 3GPP baseline profile QCIF15 AMR
+
+extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU; ///< DLNA Profile for HD DVB Television broadcasts
+extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_T;
+extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_ISO; ///< DLNA Profile for HD DVB Television broadcasts without timestamp
+
+extern DLNAVideoMapping MPEG4_P10_VIDEO_MAP[];
+
+#endif /* _PROFILES_MPEG4_P10_H */
+
diff --git a/inc/profiles/mpeg4_p2.h b/inc/profiles/mpeg4_p2.h
new file mode 100644
index 0000000..7437afd
--- /dev/null
+++ b/inc/profiles/mpeg4_p2.h
@@ -0,0 +1,80 @@
+/*
+ * File: profiles_mpeg4_p2.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:36
+ */
+
+#ifndef _PROFILES_MPEG4_P2_H
+#define _PROFILES_MPEG4_P2_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC; ///< MPEG 4 Part 2 Simple Profile AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_HEAAC; ///< MPEG 4 Part 2 Simple Profile HEAAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_ATRAC3plus; ///< MPEG 4 Part 2 Simple Profile ATRAC3+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC_LTP; ///< MPEG 4 Part 2 Simple Profile AAC LTP
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AAC; ///< MPEG 4 Part 2 Simple Profile L2 AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AMR; ///< MPEG 4 Part 2 Simple Profile L2 AMR
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_AAC; ///< MPEG 4 Part 2 Simple Profile MP4 VGA AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_HEAAC; ///< MPEG 4 Part 2 Simple Profile MP4 VGA HEAAC
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_AAC; ///< MPEG 4 Part 2 Advanced Simple Profile AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC; ///< MPEG 4 Part 2 Advanded Simple Profile HEAAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC_MULT5; ///< MPEG 4 Part 2 Advanced Simple Profile HEAAC 5.1
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_ATRAC3plus; ///< MPEG 4 Part 2 Advanced Simple Profile Atrac3+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_AAC; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 HEAAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC_MULT5; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 HEAAC 5.1
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_G726; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 G726
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_AAC; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 HEAAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC_MULT5; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 HEAAC 5.1
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_G726; ///< MPEG 4 Part 2 Advanced Simple Profile Simple Object < Level 5 G726
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC; ///< MPEG 4 Part 2 Simple Profile AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_T; ///< MPEG 4 Part 2 Simple Profile AAC with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_ISO; ///< MPEG 4 Part 2 Simple Profile AAC without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3; ///< MPEG 4 Part 2 Simple Profile MP3
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_T; ///< MPEG 4 Part 2 Simple Profile MP3 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_ISO; ///< MPEG 4 Part 2 Simple Profile MP3 without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3; ///< MPEG 4 Part 2 Simple Profile AC3
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_T; ///< MPEG 4 Part 2 Simple Profile AC3 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_ISO; ///< MPEG 4 Part 2 Simple Profile AC3 without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2; ///< MPEG 4 Part 2 Simple Profile MP2 1/2
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_T; ///< MPEG 4 Part 2 Simple Profile MP2 1/2 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_IS0; ///< MPEG 4 Part 2 Simple Profile MP2 1/2 without time stamp
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3; ///< MPEG 4 Part 2 Core AC3
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_T; ///< MPEG 4 Part 2 Core AC3 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_ISO; ///< MPEG 4 Part 2 Core AC3 without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2; ///< MPEG 4 Part 2 Core MPEG 2 1/2
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_T; ///< MPEG 4 Part 2 Core MPEG 2 1/2 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_ISO; ///< MPEG 4 Part 2 Core MPEG 2 1/2 without time stamp
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC; ///< MPEG 4 Part 2 Advanced Simple Profile AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_T; ///< MPEG 4 Part 2 Advanced Simple Profile AAC with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_ISO; ///< MPEG 4 Part 2 Advanced Simple Profile AAC without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3; ///< MPEG 4 Part 2 Advanced Simple Profile MP3
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_T; ///< MPEG 4 Part 2 Advanced Simple Profile MP3 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_ISO; ///< MPEG 4 Part 2 Advanced Simple Profile MP3 without time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3; ///< MPEG 4 Part 2 Advanced Simple Profile AC3
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_T; ///< MPEG 4 Part 2 Advanced Simple Profile AC3 with time stamp
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_ISO; ///< MPEG 4 Part 2 Advanced Simple Profile AC3 without time stamp
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_SP_G726; ///< ASF Simple Profile G726
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_ASP_L5_SO_G726; ///< ASF Advanced Simple Prpfile G726 < Level 5
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_ASP_L4_SO_G726; ///< ASF Advanced Simple Prpfile G726 < Level 4
+
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC; ///< H263 Profile 0 Level 10 AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC_LTP; ///< H263 Profile 0 Level 10 AAC LTP
+extern DLNAProfile DLNA_PROFILE_MPEG4_H263_3GPP_P0_L10_AMR_WBplus; ///< H263 3GPP Profile 0 Level 10 AMR-WB+
+extern DLNAProfile DLNA_PROFILE_MPEG4_H263_3GPP_P3_L10_AMR; ///< H263 Profile 3 Level 10 AMR
+
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AAC; ///< MPEG 4 Part 2 3GPP Simple Profile Level 0b AAC
+extern DLNAProfile DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AMR; ///< MPEG 4 Part 2 3GPP Simple Profile Level 0b AMR
+
+extern DLNAVideoMapping MPEG4_P2_VIDEO_MAP[];
+#endif /* _PROFILES_MPEG4_P2_H */
+
diff --git a/inc/profiles/png.h b/inc/profiles/png.h
new file mode 100644
index 0000000..69d4bcd
--- /dev/null
+++ b/inc/profiles/png.h
@@ -0,0 +1,22 @@
+/*
+ * File: profiles_png.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:01
+ */
+
+#ifndef _PROFILES_PNG_H
+#define _PROFILES_PNG_H
+
+#include "profile_data.h"
+
+/* Images */
+extern DLNAProfile DLNA_PROFILE_PNG_LRG; ///< PNG high resolution
+
+/* Icons */
+extern DLNAIconProfile DLNA_ICON_PNG_SM_24A; ///< DLNA icon profile of small png images
+extern DLNAIconProfile DLNA_ICON_PNG_LRG_24A; ///< DLNA icon profile of large png images
+extern DLNAIconProfile DLNA_ICON_PNG_TN; ///< DLNA png thumbnail profile of images
+
+#endif /* _PROFILES_PNG_H */
+
diff --git a/inc/profiles/profile_data.h b/inc/profiles/profile_data.h
new file mode 100644
index 0000000..7ae01d2
--- /dev/null
+++ b/inc/profiles/profile_data.h
@@ -0,0 +1,213 @@
+/*
+ * File: profile_data.h
+ * Author: savop
+ *
+ * Created on 5. Januar 2010, 12:27
+ */
+
+#ifndef _PROFILE_DATA_H
+#define _PROFILE_DATA_H
+
+#ifdef __cplusplus
+#include <vdr/tools.h>
+extern "C" {
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+}
+#endif
+
+#define MAX_BITRATES 32 ///< maximum amount of different CBR bitrates
+#define MAX_CHANNEL_LAYOUTS 20 ///< maximum amount of different channel layout modes
+#define MAX_SAMPLE_RATES 16 ///< maximum amount of different sampling rates
+
+#define Kbps(x) x*1000 ///< Kbit per second
+#define Mbps(x) x*1000*1000 ///< Mbit per second
+#define KHz(x) x*1000
+#define MHz(x) x*1000*1000
+
+#define CHANNEL_LAYOUT_10 CH_LAYOUT_MONO ///< 1/0 1
+#define CHANNEL_LAYOUT_10_1 (CHANNEL_LAYOUT_10|CH_LOW_FREQUENCY)///< 1/0 1.1 (incl. LFE)
+#define CHANNEL_LAYOUT_20 CH_LAYOUT_STEREO ///< 2/0 2
+#define CHANNEL_LAYOUT_20_1 (CHANNEL_LAYOUT_20|CH_LOW_FREQUENCY)///< 2/0 2.1 (incl. LFE)
+#define CHANNEL_LAYOUT_21 (CH_LAYOUT_STEREO|CH_BACK_CENTER) ///< 2/1 3
+#define CHANNEL_LAYOUT_21_1 (CHANNEL_LAYOUT_21|CH_LOW_FREQUENCY)///< 2/1 3.1 (incl. LFE)
+#define CHANNEL_LAYOUT_22 CH_LAYOUT_QUAD ///< 2/2 4
+#define CHANNEL_LAYOUT_22_1 (CHANNEL_LAYOUT_22|CH_LOW_FREQUENCY)///< 2/2 4.1 (incl. LFE)
+#define CHANNEL_LAYOUT_30 CH_LAYOUT_SURROUND ///< 3/0 3
+#define CHANNEL_LAYOUT_30_1 (CHANNEL_LAYOUT_30|CH_LOW_FREQUENCY)///< 3/0 3.1 (incl. LFE)
+#define CHANNEL_LAYOUT_31 (CH_LAYOUT_SURROUND|CH_BACK_CENTER) ///< 3/1 4
+#define CHANNEL_LAYOUT_31_1 (CHANNEL_LAYOUT_31|CH_LOW_FREQUENCY)///< 3/1 4.1 (incl. LFE)
+#define CHANNEL_LAYOUT_32 CH_LAYOUT_5POINT0 ///< 3/2 5
+#define CHANNEL_LAYOUT_5_1 CH_LAYOUT_5POINT1 ///< 5.1 5.1 (incl. LFE)
+#define CHANNEL_LAYOUT_7_1 CH_LAYOUT_7POINT1 ///< 7.1 7.1 (incl. LFE)
+
+/**
+ * The combination of DLNA profile ID and the corresponding mime type
+ *
+ * This complies with the DLNA media format guidelines. Though this is very
+ * similar to the profile structure of libdlna, it comes without the additional
+ * label field as it seams to be not needed.
+ */
+struct DLNAProfile {
+ const char* ID; ///< the DLNA profile ID
+ const char* mime; ///< the mime type of the resource
+};
+
+/**
+ * The DLNA profile for a icon image
+ *
+ * This complies with the DLNA media format guidelines. It contains a valid
+ * mime type, the resolution of the image and the corresponding bit depth
+ */
+struct DLNAIconProfile {
+ const char* mime; ///< the mime type of the image
+ unsigned short width; ///< image width in pixel
+ unsigned short height; ///< image height in pixel
+ unsigned char bitDepth; ///< bit depth in bits per pixel
+};
+
+enum VideoContainerProfile {
+ DLNA_VCP_UNKNOWN=-1,
+ DLNA_VCP_MPEG1=0,
+ DLNA_VCP_MPEG2_PS,
+ DLNA_VCP_MPEG2_TS,
+ DLNA_VCP_MPEG2_TS_T,
+ DLNA_VCP_MPEG2_TS_ISO,
+ DLNA_VCP_MP4,
+ DLNA_VCP_3GPP,
+ DLNA_VCP_ASF,
+};
+
+enum VideoPortionProfile {
+ DLNA_VPP_UNKNOWN=-1,
+ DLNA_VPP_MPEG1=0,
+ DLNA_VPP_MPEG2_PAL_SD,
+ DLNA_VPP_MPEG2_PAL_HD,
+ DLNA_VPP_MPEG2_NTSC_SD,
+ DLNA_VPP_MPEG2_NTSC_HD,
+ DLNA_VPP_MPEG2_SP,
+ DLNA_VPP_MPEG2_MP_LL,
+ DLNA_VPP_MPEG4_P2_SP_L0B,
+ DLNA_VPP_MPEG4_P2_SP_L2,
+ DLNA_VPP_MPEG4_P2_SP_L3,
+ DLNA_VPP_MPEG4_P2_SP_L3_VGA,
+ DLNA_VPP_MPEG4_P2_ASP_L5,
+ DLNA_VPP_MPEG4_P2_ASP_L5_SO,
+ DLNA_VPP_MPEG4_P2_ASP_L4_SO,
+ DLNA_VPP_MPEG4_P2_H263_P0_L10,
+ DLNA_VPP_MPEG4_P2_H263_P3_L10,
+ DLNA_VPP_MPEG4_P2_CO,
+ DLNA_VPP_MPEG4_P10_MP_SD,
+ DLNA_VPP_MPEG4_P10_MP_HD,
+ DLNA_VPP_MPEG4_P10_BL_L3_SD,
+ DLNA_VPP_MPEG4_P10_BL_L3L_SD,
+ DLNA_VPP_MPEG4_P10_BL_CIF30,
+ DLNA_VPP_MPEG4_P10_BL_L2_CIF30,
+ DLNA_VPP_MPEG4_P10_BL_CIF15,
+ DLNA_VPP_MPEG4_P10_BL_L12_CIF15,
+ DLNA_VPP_MPEG4_P10_BL_L1B_QCIF
+};
+
+enum AudioPortionProfile {
+ DLNA_APP_UNKNOWN=-1,
+ DLNA_APP_LPCM=0,
+ DLNA_APP_MPEG1_L1,
+ DLNA_APP_MPEG1_L2,
+ DLNA_APP_MPEG1_L3,
+ DLNA_APP_MPEG1_L3X,
+ DLNA_APP_MPEG2_L2, //TODO: Distinguish MPEG1 oder MPEG2 audio with FFMPEG
+ DLNA_APP_AAC,
+ DLNA_APP_AAC_MULT5,
+ DLNA_APP_AAC_LTP,
+ DLNA_APP_AAC_LTP_MULT5,
+ DLNA_APP_AAC_LTP_MULT7,
+ DLNA_APP_HEAAC,
+ DLNA_APP_HEAAC_L2,
+ DLNA_APP_HEAAC_MULT5,
+ DLNA_APP_ATRAC3plus,
+ DLNA_APP_AC3,
+ DLNA_APP_XAC3,
+ DLNA_APP_G726,
+ DLNA_APP_AMR,
+ DLNA_APP_AMR_WBplus,
+ DLNA_APP_BL_QCIF15,
+ DLNA_APP_BSAC,
+ DLNA_APP_BSAC_MULT5
+};
+
+struct DLNAVideoMapping {
+ DLNAProfile* Profile;
+ VideoContainerProfile VideoContainer;
+ VideoPortionProfile VideoProfile;
+ AudioPortionProfile AudioProfile;
+};
+
+struct AcceptedBitrates {
+ /**
+ * <b>true</b> if VBR, <b>false</b> otherwise
+ */
+ bool VBR;
+ /**
+ * list of valid bitrates.
+ *
+ * if VBR is true, the array must contain exactly two items.
+ * The first item is the minimum and the second item is the maximum bitrate
+ *
+ * The bitrate unit is bps. So, if you have 15bps, it is 15000000bps
+ */
+ int bitrates[MAX_BITRATES];
+};
+
+struct AcceptedResolution {
+ /**
+ * Screen width
+ */
+ int width;
+ /**
+ * Screen height
+ */
+ int height;
+ /**
+ * Frames per second
+ *
+ * this value may contain a higher value which is divided by the multiplier
+ * given in <b>multiplier</b>
+ */
+ int fps;
+ /**
+ * Multiplier for calculating FPS
+ *
+ * The multiplier typically contains values like 1 or 1001 to calculate
+ * the exact frame rate of 29,97 FPS in most NTSC systems
+ */
+ int multiplier;
+};
+
+struct AcceptedAudioChannels {
+ int max_channels;
+ int64_t layouts[MAX_CHANNEL_LAYOUTS];
+ bool supportsLFE;
+};
+
+struct AcceptedSamplingRates {
+ int rates[MAX_SAMPLE_RATES];
+};
+
+class cDLNAProfiler {
+public:
+ virtual DLNAProfile* probeDLNAProfile(AVFormatContext* FormatCtx) = 0;
+};
+
+class cAudioProfiler {
+public:
+ virtual AudioPortionProfile probeAudioProfile(AVFormatContext* FormatCtx) = 0;
+};
+
+class cVideoProfiler {
+public:
+ virtual VideoPortionProfile probeVideoProfile(AVFormatContext* FormatCtx) = 0;
+ virtual VideoContainerProfile probeContainerProfile(AVFormatContext* FormatCtx) = 0;
+};
+
+#endif /* _PROFILE_DATA_H */
+
diff --git a/inc/profiles/wma.h b/inc/profiles/wma.h
new file mode 100644
index 0000000..80e25ec
--- /dev/null
+++ b/inc/profiles/wma.h
@@ -0,0 +1,18 @@
+/*
+ * File: profiles_wma.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:32
+ */
+
+#ifndef _PROFILES_WMA_H
+#define _PROFILES_WMA_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_WMABASE; ///< WMA with less than 193Kbit/s
+extern DLNAProfile DLNA_PROFILE_WMAFULL; ///< WMA
+extern DLNAProfile DLNA_PROFILE_WMAPRO; ///< WMA Professional
+
+#endif /* _PROFILES_WMA_H */
+
diff --git a/inc/profiles/wmv9.h b/inc/profiles/wmv9.h
new file mode 100644
index 0000000..fd69499
--- /dev/null
+++ b/inc/profiles/wmv9.h
@@ -0,0 +1,24 @@
+/*
+ * File: profiles_wmv9.h
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 14:53
+ */
+
+#ifndef _PROFILES_WMV9_H
+#define _PROFILES_WMV9_H
+
+#include "profile_data.h"
+
+extern DLNAProfile DLNA_PROFILE_WMVMED_BASE; ///< WMV medium resolution baseline audio
+extern DLNAProfile DLNA_PROFILE_WMVMED_FULL; ///< WMV medium resolution full audio
+extern DLNAProfile DLNA_PROFILE_WMVMED_PRO; ///< WMV medium resolution professional audio
+extern DLNAProfile DLNA_PROFILE_WMVHIGH_FULL; ///< WMV high resolution full audio
+extern DLNAProfile DLNA_PROFILE_WMVHIGH_PRO; ///< WMV high resolution professional audio
+extern DLNAProfile DLNA_PROFILE_WMVHM_BASE; ///< WMV HighMAT profile
+extern DLNAProfile DLNA_PROFILE_WMVSPLL_BASE; ///< WMV Low resolution simple profile low level
+extern DLNAProfile DLNA_PROFILE_WMVSPML_BASE; ///< WMV Low resolution simple profile medium level
+extern DLNAProfile DLNA_PROFILE_WMVSPML_MP3; ///< WMV Low resolution simple profile medium level MP3 audio
+
+#endif /* _PROFILES_WMV9_H */
+
diff --git a/inc/recplayer.h b/inc/recplayer.h
new file mode 100644
index 0000000..376ca3c
--- /dev/null
+++ b/inc/recplayer.h
@@ -0,0 +1,53 @@
+/*
+ * File: recplayer.h
+ * Author: savop
+ *
+ * Created on 8. Juni 2009, 11:57
+ */
+
+#ifndef _RECPLAYER_H
+#define _RECPLAYER_H
+
+#include "../common.h"
+#include "filehandle.h"
+#include <vdr/recording.h>
+
+/**
+ * The recording player
+ *
+ * This class provides the ability to play VDR records. The difference between
+ * usual files and VDR recording files is, that recordings are possibly splitted
+ * into multiple files. The class will scan those files and tries to dynamically
+ * navigate in them like it would do, if it is a single file.
+ *
+ */
+class cRecordingPlayer : public cFileHandle {
+public:
+ /**
+ * Get a new instance of a recording player
+ *
+ * This returns a new instance of a recording player which plays the
+ * specified VDR recording.
+ *
+ * @param Recording the recording to play
+ * @return the new instance of the recording player
+ */
+ static cRecordingPlayer *newInstance(cRecording *Recording);
+ virtual ~cRecordingPlayer();
+ virtual void open(UpnpOpenFileMode mode);
+ virtual int read(char* buf, size_t buflen);
+ virtual int write(char* buf, size_t buflen);
+ virtual int seek(off_t offset, int origin);
+ virtual void close();
+private:
+ void scanLastOffsets();
+ cRecordingPlayer(cRecording *Recording);
+ off_t* mLastOffsets;
+ int mLastFileNumber;
+ cRecording *mRecording;
+ cFileName *mRecordingFile;
+ cUnbufferedFile *mCurrentFile;
+};
+
+#endif /* _RECPLAYER_H */
+
diff --git a/inc/resources.h b/inc/resources.h
new file mode 100644
index 0000000..a655de8
--- /dev/null
+++ b/inc/resources.h
@@ -0,0 +1,318 @@
+/*
+ * File: resources.h
+ * Author: savop
+ *
+ * Created on 30. September 2009, 15:17
+ */
+
+#ifndef _RESOURCES_H
+#define _RESOURCES_H
+
+#include "database.h"
+#include "object.h"
+#include <vdr/channels.h>
+#include <vdr/recording.h>
+
+class cUPnPResourceMediator;
+class cMediaDatabase;
+
+/**
+ * UPnP Resource
+ *
+ * This contains all details about a resource
+ */
+class cUPnPResource : public cListObject {
+ friend class cUPnPResourceMediator;
+ friend class cUPnPResources;
+private:
+ unsigned int mResourceID;
+ int mResourceType;
+ cString mResource;
+ cString mDuration;
+ cString mResolution;
+ cString mProtocolInfo;
+ cString mContentType;
+ cString mImportURI;
+ off64_t mSize;
+ unsigned int mBitrate;
+ unsigned int mSampleFrequency;
+ unsigned int mBitsPerSample;
+ unsigned int mNrAudioChannels;
+ unsigned int mColorDepth;
+ cUPnPResource();
+public:
+ /**
+ * Get resource ID
+ *
+ * Gets the resource ID
+ *
+ * @return the resource ID
+ */
+ unsigned int getID() const { return this->mResourceID; }
+ /**
+ * Get the resources
+ *
+ * Returns the resource. This is in most cases the file name or resource locator
+ * where to find the resource
+ *
+ * @return the resource string
+ */
+ const char* getResource() const { return this->mResource; }
+ /**
+ * Get the duration
+ *
+ * Returns a date time string with the duration of the resource
+ *
+ * @return the duration of the resource
+ */
+ const char* getDuration() const { return this->mDuration; }
+ /**
+ * Get the resolution
+ *
+ * Returns the resolution string with the pattern width x height in pixels
+ *
+ * @return the resolution of the resource
+ */
+ const char* getResolution() const { return this->mResolution; }
+ /**
+ * Get the protocol info
+ *
+ * This returns the protocol info field of a resource
+ *
+ * @return the protocol info string
+ */
+ const char* getProtocolInfo() const { return this->mProtocolInfo; }
+ /**
+ * Get the content type
+ *
+ * Returns the mime type of the content of the resource
+ *
+ * @return the content type of the resource
+ */
+ const char* getContentType() const { return this->mContentType; }
+ /**
+ * Get the import URI
+ *
+ * This returns the import URI where the resource was located before importing
+ * it
+ *
+ * @return the import URI
+ */
+ const char* getImportURI() const { return this->mImportURI; }
+ /**
+ * Get the resource type
+ *
+ * This returns the resource type of the resource.
+ *
+ * @return the resource type
+ */
+ int getResourceType() const { return this->mResourceType; }
+ /**
+ * Get the file size
+ *
+ * Returns the file size in bytes of the resource or 0 if its unknown or a
+ * stream
+ *
+ * @return the file size
+ */
+ off64_t getFileSize() const { return this->mSize; };
+ /**
+ * Get the last modification
+ *
+ * This returns the timestamp of the last modification to the file. If it
+ * is a stream, then its the current time.
+ *
+ * @return the timestamp with the last modification of the resource
+ */
+ time_t getLastModification() const;
+ /**
+ * Get the bitrate
+ *
+ * This returns the bitrate of the resource in bits per second.
+ *
+ * @return the bitrate of the resource
+ */
+ unsigned int getBitrate() const { return this->mBitrate; }
+ /**
+ * Get the sample frequency
+ *
+ * Returns the sample frequency in samples per second.
+ *
+ * @return the sample frequency of the resource
+ */
+ unsigned int getSampleFrequency() const { return this->mSampleFrequency; }
+ /**
+ * Get the bits per sample
+ *
+ * Returns the number of bits per sample.
+ *
+ * @return the bits per sample of the resource
+ */
+ unsigned int getBitsPerSample() const { return this->mBitsPerSample; }
+ /**
+ * Get number of audio channels
+ *
+ * Returns the number of audio channels of the audio stream in a video
+ *
+ * @return the number of audio channels
+ */
+ unsigned int getNrAudioChannels() const { return this->mNrAudioChannels; }
+ /**
+ * Get the color depth
+ *
+ * Returns the color depth of the resource in pits per pixel
+ *
+ * @return the color depth of the resource
+ */
+ unsigned int getColorDepth() const { return this->mColorDepth; }
+};
+
+class cUPnPClassObject;
+class cUPnPClassItem;
+class cUPnPClassVideoItem;
+class cUPnPClassVideoBroadcast;
+
+/**
+ * The resource manager
+ *
+ * This manages the resources in an internal cache. It may create a new resource
+ * from a channel, a recording or a custom file.
+ */
+class cUPnPResources {
+private:
+ cHash<cUPnPResource>* mResources;
+ static cUPnPResources* mInstance;
+ cUPnPResourceMediator* mMediator;
+ cSQLiteDatabase* mDatabase;
+ cUPnPResources();
+public:
+ /**
+ * Fill object with its resources
+ *
+ * This will load all the resources from the database, which are associated
+ * to the given object
+ *
+ * @param Object the object, which shall be filled
+ * @return returns
+ * - \bc 0, if loading was successful
+ * - \bc <0, otherwise
+ */
+ int getResourcesOfObject(cUPnPClassObject* Object);
+ /**
+ * Loads all resources from database
+ *
+ * This loads all resources from the database into the internal cache.
+ *
+ * @return returns
+ * - \bc 0, if loading was successful
+ * - \bc <0, otherwise
+ */
+ int loadResources();
+ /*! @copydoc cUPnPResourceMediator::getResource */
+ cUPnPResource* getResource(unsigned int ResourceID);
+ virtual ~cUPnPResources();
+ /**
+ * Get the instance of the resource manager
+ *
+ * This returns the instance of the resource manager.
+ *
+ * @return the instance of the manager
+ */
+ static cUPnPResources* getInstance();
+ /**
+ * Create resource from channel
+ *
+ * This creates a new resource from the given channel. It determines what
+ * kind of video stream it is and further details if available. It stores
+ * the resource in the database after creating it.
+ *
+ * @param Object the videoBroadcast item which holds the resource
+ * @param Channel the VDR TV channel
+ * @return returns
+ * - \bc 0, if loading was successful
+ * - \bc <0, otherwise
+ */
+ int createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel* Channel);
+ /**
+ * Create resource from recording
+ *
+ * This creates a new resource from the given recording. It determines what
+ * kind of video stream it is and further details if available. It stores
+ * the resource in the database after creating it.
+ *
+ * @param Object the videoItem item which holds the resource
+ * @param Recording the VDR TV recording
+ * @return returns
+ * - \bc 0, if loading was successful
+ * - \bc <0, otherwise
+ */
+ int createFromRecording(cUPnPClassVideoItem* Object, cRecording* Recording);
+ /**
+ * Create resource from file
+ *
+ * This creates a new resource from the given file. It determines all available
+ * information about the resource by analizing the content. It stores
+ * the resource in the database after creating it.
+ *
+ * @param Object the item which holds the resource
+ * @param File the file name
+ * @return returns
+ * - \bc 0, if loading was successful
+ * - \bc <0, otherwise
+ */
+ int createFromFile(cUPnPClassItem* Object, cString File);
+};
+
+/**
+ * The resource mediator
+ *
+ * This is another mediator which communicates with the database. It manages the
+ * resources in the database
+ */
+class cUPnPResourceMediator {
+ friend class cUPnPResources;
+private:
+ cSQLiteDatabase* mDatabase;
+ cUPnPResourceMediator();
+ unsigned int getNextResourceID();
+public:
+ virtual ~cUPnPResourceMediator();
+ /**
+ * Get a resource by ID
+ *
+ * This returns a resource by its resource ID
+ *
+ * @param ResourceID the resource ID of the demanded resource
+ * @return the requested resource
+ */
+ cUPnPResource* getResource(unsigned int ResourceID);
+ /**
+ * Saves the resource
+ *
+ * This updates the information in the database with those in the resource
+ * object
+ *
+ * @param Resource the resource which shall be saved
+ * @return returns
+ * - \bc 0, if saving was successful
+ * - \bc <0, if an error occured
+ */
+ int saveResource(cUPnPClassObject* Object, cUPnPResource* Resource);
+ /**
+ * Create new resource
+ *
+ * This creates a new resource and stores the skeleton in the database. The
+ * newly created resource will only contain all required information.
+ *
+ * @param Object the Object which will hold the resource
+ * @param ResourceType the type of the resource
+ * @param ResourceFile the file or URL, where the resource can be located
+ * @param ContentType the mime type of the content
+ * @param ProtocolInfo the protocol information of the resource
+ * @return the newly created resource
+ */
+ cUPnPResource* newResource(cUPnPClassObject* Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo);
+};
+
+#endif /* _RESOURCES_H */
+
diff --git a/inc/search.h b/inc/search.h
new file mode 100644
index 0000000..ef162b1
--- /dev/null
+++ b/inc/search.h
@@ -0,0 +1,156 @@
+/*
+ * File: search.h
+ * Author: savop
+ *
+ * Created on 27. August 2009, 21:21
+ */
+
+#ifndef _SEARCH_H
+#define _SEARCH_H
+
+#include <map>
+#include <vdr/tools.h>
+#include "util.h"
+
+/**
+ * Sort criteria
+ *
+ * This is a structure for sorting objects. It has a certain property and
+ * a direction flag.
+ */
+struct cSortCrit : public cListObject {
+ const char* Property; ///< the Property, which shall be sorted
+ bool SortDescending; ///< sort the objects in descending order
+};
+
+typedef std::map<const char*, const char*, strCmp> propertyMap;
+
+/**
+ * Web path parser
+ *
+ * Parses paths which came from the webserver. It splits the path into
+ * a section, a certain method and its properties.
+ *
+ * This can be used to easily determine which file was requested by a client
+ */
+class cPathParser {
+private:
+ cString mKey;
+ propertyMap mProperties;
+ int mSection;
+ int mMethod;
+ bool parsePath(const char* Path, int* Section, int* Method, propertyMap* Properties);
+ void pushPropertyKey(const char* Start, const char* End);
+ void pushPropertyValue(const char* Start, const char* End);
+ void pushMethod(int Method);
+ void pushSection(int Section);
+ cPathParser();
+public:
+ virtual ~cPathParser();
+ /**
+ * Parses the path
+ *
+ * This will parse the path and stores the result in the pointers given.
+ *
+ * @return returns
+ * - \bc true, if the parsing was successful
+ * - \bc false, otherwise
+ */
+ static bool parse(
+ const char* Path, ///< the path which is parsed
+ int* Section, ///< the number of the registered section
+ int* Method, ///< the number of the registered method
+ propertyMap* Properties ///< the properties found in the path
+ );
+};
+
+/**
+ * Creates a list with sort criteria
+ *
+ * This parser creates a list of sort criteria. It parses the sort criteria string
+ * from a \em Browse or \em Search request and stores the information in a \c cSortCrit
+ * structure.
+ */
+class cSortCriteria {
+private:
+ cSortCrit* mCurrentCrit;
+ cList<cSortCrit>* mCriteriaList;
+ bool parseSort(const char* Sort);
+ void pushProperty(const char* Property);
+ void pushDirection(const char Direction);
+ cList<cSortCrit>* getSortList() const { return this->mCriteriaList; }
+ cSortCriteria();
+public:
+ virtual ~cSortCriteria();
+ /**
+ * Parses the sort criteria
+ *
+ * This parses the sort criteria and returns a list with valid criterias
+ *
+ * @return returns
+ * - a list with valid sort criterias
+ * - \bc null, otherwise
+ */
+ static cList<cSortCrit>* parse(
+ const char* Sort ///< the string container the sort criteria
+ );
+};
+
+/**
+ * Parses the filter criteria
+ *
+ * This parses the filter criteria which comes from a \em Browse or \em Search
+ * request.
+ */
+class cFilterCriteria {
+private:
+ cStringList* mFilterList;
+ cFilterCriteria();
+ bool parseFilter(const char* Filter);
+ void pushProperty(const char* Property);
+ void pushAsterisk(const char Asterisk);
+ cStringList* getFilterList() const { return this->mFilterList; }
+public:
+ virtual ~cFilterCriteria();
+ /**
+ * Parses the filter criteria
+ *
+ * This parses the filter criteria. It may be a empty string list, a \bc NULL
+ * pointer or a list with properties which shall be shown in the \em DIDL-Lite fragment.
+ *
+ * @return the stringlist containing the filter
+ */
+ static cStringList* parse(
+ const char* Filter ///< the filter string
+ );
+};
+
+/**
+ * @private
+ * @todo This is implemented very soon
+ */
+class cSearch {
+private:
+ char* SQLWhereStmt;
+ const char* CurrentProperty;
+ const char* CurrentOperator;
+ const char* CurrentValue;
+ static cSearch* mInstance;
+ cSearch();
+ bool parseCriteria(const char* Search);
+ void pushExistance (const char* Exists);
+ void pushProperty (const char* Property);
+ void pushOperator (const char* Operator);
+ void pushConcatOp (const char* Operator);
+ void pushStartBrackedExp(const char);
+ void pushEndBrackedExp(const char);
+ void pushValue (const char* Start, const char* End);
+ void pushExpression(const char* Start, const char* End);
+public:
+ virtual ~cSearch();
+ static const char* parse(const char* Search);
+};
+
+
+#endif /* _SEARCH_H */
+
diff --git a/inc/server.h b/inc/server.h
new file mode 100644
index 0000000..260ac57
--- /dev/null
+++ b/inc/server.h
@@ -0,0 +1,221 @@
+/*
+ * File: server.h
+ * Author: savop
+ *
+ * Created on 19. April 2009, 17:42
+ */
+
+#ifndef _SERVER_H
+#define _SERVER_H
+
+#include <netinet/in.h>
+#include <vdr/recording.h>
+#include <vdr/thread.h>
+#include <upnp/upnp.h>
+#include "util.h"
+#include "../common.h"
+#include "webserver.h"
+#include "metadata.h"
+#include "upnp/connectionmanager.h"
+#include "upnp/contentdirectory.h"
+#include "../upnp.h"
+
+/**
+ * The UPnP Server
+ *
+ * This is the core of the UPnP server. This handles all the components which
+ * are needed for a UPnP media server. Incoming messages are passed through it
+ * and it determines what to do.
+ */
+class cUPnPServer {
+ friend class cPluginUpnp;
+public:
+ /**
+ * Constructor
+ *
+ * This will create a new server and initializes the main functionalities
+ * The server has to be started manually by invoking cUPnPServer::start().
+ */
+ cUPnPServer();
+ /**
+ * Destructor
+ *
+ * This will destroy the server object. Open ports and connections will be
+ * closed.
+ */
+ virtual ~cUPnPServer();
+ /**
+ * Enable the server
+ *
+ * This switch indicates if the server is startable or not
+ *
+ * If it is set to false, any invocation of start() will do nothing.
+ *
+ * @param enabled if \bc true, the server will be enabled. If \bc false it is
+ * disabled.
+ */
+ void enable(bool enabled);
+ /**
+ * Start the UPnP server
+ *
+ * This will start the UPnP server activities as a background task.
+ *
+ * @return returns
+ * - \bc true, when the server started successfully
+ * - \bc false, otherwise
+ */
+ bool start(void);
+ /**
+ * Restart the server
+ *
+ * When the server is not operating properly it can be restarted.
+ * It will stop the server functionalities, clear everything and
+ * start it again.
+ *
+ * @return returns
+ * - \bc true, when the server restarted successfully
+ * - \bc false, otherwise
+ */
+ bool restart(void);
+ /**
+ * Stop the server
+ *
+ * This will stop the server. This means that open connections to
+ * any clients and open ports will be closed.
+ */
+ void stop(void);
+ /**
+ * Automatically detect settings
+ *
+ * This will automatically detect the network settings if the autodetection
+ * is turned on.
+ *
+ * @return returns
+ * - \bc true, if autoDetection was successful
+ * - \bc false, otherwise
+ */
+ bool autoDetectSettings(void);
+ /**
+ * Get the server address
+ *
+ * Returns a server address structure including IP address and port
+ *
+ * @return The server socket address
+ */
+ sockaddr_in* getServerAddress(void);
+ /**
+ * Get the interface the server listens to
+ *
+ * @return the network interface
+ */
+ const char* getInterface(void) const { return this->mInterface; }
+ /**
+ * Set the server port
+ *
+ * The port must be in the scope of user definied ports (49152 - 65535). If
+ * the port is 0, it is autoassigned. You can retrieve the actual port by
+ * calling getServerAddress(), which will give you a structure with the port
+ * in it.
+ *
+ * The server must be restarted if the IP or port changes.
+ *
+ * Returns 1 when the port is valid, 0 otherwise
+ *
+ * @param port The port of the server
+ * @return returns
+ * - \bc true, if the new server port is set
+ * - \bc false, otherwise
+ */
+ bool setServerPort(unsigned short port);
+ /**
+ * The Interface to listen on
+ *
+ * Sets the listener interface, for instance 'eth1' or 'wlan0'
+ *
+ * @param Interface The interface of the server
+ * @return returns
+ * - \bc true, if the new server address is set
+ * - \bc false, otherwise
+ */
+ bool setInterface(const char* Interface);
+ /**
+ * Set the server address
+ *
+ * Specifies the servers IP address. The server needs to restart
+ * when the IP is changed. However, it's not possible to detect
+ * changes through the system.
+ *
+ * This method should only be used in cases of fixed IP addresses
+ * for example when no DHCP server is available.
+ *
+ * @param Address The address of the server
+ * @return returns
+ * - \bc true, if the new server address is set
+ * - \bc false, otherwise
+ */
+ bool setAddress(const char* Address);
+ /**
+ * Enables oder Disables auto detection mode
+ *
+ * If this is set to true, the setup will get it's information via
+ * auto detection
+ *
+ * @param enable \bc true enables and \bc false disables the auto detection
+ * @return returns
+ * - \bc true, if the new server address is set
+ * - \bc false, otherwise
+ */
+ bool setAutoDetection(bool enable);
+ /**
+ * Checks if the server is enabled
+ *
+ * This indicates if the server is currently enabled.
+ *
+ * @return returns
+ * - \bc true, if the server is enabled
+ * - \bc false, otherwise
+ */
+ bool isEnabled(void) const { return this->mIsEnabled; }
+ /**
+ * Checks if the server is running
+ *
+ * If the server is enabled, this indicates if it is running.
+ *
+ * @return returns
+ * - \bc true if the server is running
+ * - \bc false, otherwise
+ */
+ bool isRunning(void) const { return this->mIsRunning; }
+ /**
+ * Is auto detection enabled or not
+ *
+ * Returns true or false if auto detection is enabled or not
+ *
+ * @return returns
+ * - \bc true, if autodetection is enabled
+ * - \bc false, otherwise
+ */
+ bool isAutoDetectionEnabled() { return this->mIsAutoDetectionEnabled; }
+protected:
+private:
+ /**
+ * Inits the server
+ *
+ * This method initializes all member variables with default values
+ */
+ bool init(void);
+ bool uninit(void);
+ static int upnpActionCallback(Upnp_EventType eventtype, void *event, void *cookie);
+ bool mIsRunning;
+ bool mIsEnabled;
+ sockaddr_in* mServerAddr;
+ cString mInterface;
+ bool mIsAutoDetectionEnabled;
+ cString mDeviceDescription;
+ cUPnPWebServer* mWebServer;
+ cMediaDatabase* mMediaDatabase;
+ UpnpDevice_Handle mDeviceHandle;
+ static cConnectionManager* mConnectionManager;
+ static cContentDirectory* mContentDirectory;
+};
+#endif /* _SERVER_H */ \ No newline at end of file
diff --git a/inc/upnp/connectionmanager.h b/inc/upnp/connectionmanager.h
new file mode 100644
index 0000000..6ed2987
--- /dev/null
+++ b/inc/upnp/connectionmanager.h
@@ -0,0 +1,99 @@
+/*
+ * File: connectionmanager.h
+ * Author: savop
+ *
+ * Created on 21. August 2009, 18:35
+ */
+
+#ifndef _CONNECTIONMANAGER_H
+#define _CONNECTIONMANAGER_H
+
+#include "service.h"
+
+/**
+ * Connection status
+ *
+ * The connection status of a certain virtual connection
+ */
+enum eConnectionStatus {
+ OK,
+ CONTENT_FORMAT_MISMATCH,
+ INSUFFICIENT_BANDWIDTH,
+ UNRELIABLE_CHANNEL,
+ UNKNOWN
+};
+
+/**
+ * Direction
+ *
+ * The direction of a virtual connection. Input means client to server, Output
+ * server to client
+ */
+enum eDirection {
+ OUTPUT,
+ INPUT
+};
+
+/**
+ * Virtual connection
+ *
+ * A virtual connection managed by the connection manager service
+ */
+class cVirtualConnection : public cListObject {
+ friend class cConnectionManager;
+private:
+ cString mRemoteProtocolInfo;
+ cString mRemoteConnectionManager;
+ eDirection mDirection;
+ int mRemoteConnectionID;
+ int mConnectionID;
+ int mAVTransportID;
+ const int mRcsID;
+ eConnectionStatus mStatus;
+ cVirtualConnection();
+ static const char* getStatusString(eConnectionStatus Status);
+ static const char* getDirectionString(eDirection Direction);
+ static int getDirection(const char* Direction);
+ static int getConnectionStatus(const char* ConnectionStatus);
+};
+
+/**
+ * The connection manager service
+ *
+ * This is the connection manager service which handles all incoming connection,
+ * creates and destroys connections to clients.
+ */
+class cConnectionManager : public cUpnpService {
+public:
+ /**
+ * Constructor of a Connection manager
+ *
+ * This creates an instance of a <em>Connection Manager Service</em> and provides
+ * interfaces for executing actions and subscribing on events.
+ */
+ cConnectionManager(
+ UpnpDevice_Handle DeviceHandle ///< the UPnP device handle of this root device
+ );
+ virtual ~cConnectionManager();
+ /*! @copydoc cUpnpService::subscribe(Upnp_Subscription_Request* Request) */
+ virtual int subscribe(Upnp_Subscription_Request* Request);
+ /*! @copydoc cUpnpService::execute(Upnp_Action_Request* Request) */
+ virtual int execute(Upnp_Action_Request* Request);
+ /*! @copydoc cUpnpService::setError(Upnp_Action_Request* Request, int Error) */
+ virtual void setError(Upnp_Action_Request* Request, int Error);
+private:
+ int getProtocolInfo(Upnp_Action_Request* Request);
+ int getCurrentConnectionIDs(Upnp_Action_Request* Request);
+ int getCurrentConnectionInfo(Upnp_Action_Request* Request);
+ int prepareForConnection(Upnp_Action_Request* Request);
+ int connectionComplete(Upnp_Action_Request* Request);
+ cVirtualConnection* createVirtualConnection(const char* RemoteProtocolInfo = NULL, const char* RemoteConnectionManager = NULL, int RemoteConnectionID = -1, eDirection Direction = OUTPUT);
+ bool destroyVirtualConnection(int ConnectionID);
+ const char* getConnectionIDsCVS();
+ cVirtualConnection* mDefaultConnection;
+ cList<cVirtualConnection>* mVirtualConnections;
+ cString mSupportedProtocols;
+};
+
+#endif /* _CONNECTIONMANAGER_H */
+
diff --git a/inc/upnp/contentdirectory.h b/inc/upnp/contentdirectory.h
new file mode 100644
index 0000000..ec32dfa
--- /dev/null
+++ b/inc/upnp/contentdirectory.h
@@ -0,0 +1,56 @@
+/*
+ * File: contentdirectory.h
+ * Author: savop
+ *
+ * Created on 21. August 2009, 16:12
+ */
+
+#ifndef _CONTENTDIRECTORY_H
+#define _CONTENTDIRECTORY_H
+
+#include <upnp/upnp.h>
+#include "service.h"
+#include "metadata.h"
+
+/**
+ * The content directory service
+ *
+ * This is the content directory service which handles all incoming requests
+ * for contents managed by the media server.
+ */
+class cContentDirectory : public cUpnpService, public cThread {
+public:
+ /**
+ * Constructor of a Content Directory
+ *
+ * This creates an instance of a <em>Content Directory Service</em> and provides
+ * interfaces for executing actions and subscribing on events.
+ */
+ cContentDirectory(
+ UpnpDevice_Handle DeviceHandle, ///< The UPnP device handle of the root device
+ cMediaDatabase* MediaDatabase ///< the media database where requests are processed
+ );
+ virtual ~cContentDirectory();
+ /*! @copydoc cUpnpService::subscribe(Upnp_Subscription_Request* Request) */
+ virtual int subscribe(Upnp_Subscription_Request* Request);
+ /*! @copydoc cUpnpService::execute(Upnp_Action_Request* Request) */
+ virtual int execute(Upnp_Action_Request* Request);
+ /*! @copydoc cUpnpService::setError(Upnp_Action_Request* Request, int Error) */
+ virtual void setError(Upnp_Action_Request* Request, int Error);
+private:
+ cMediaDatabase* mMediaDatabase;
+ void Action();
+ int getSearchCapabilities(Upnp_Action_Request* Request);
+ int getSortCapabilities(Upnp_Action_Request* Request);
+ int getSystemUpdateID(Upnp_Action_Request* Request);
+ int browse(Upnp_Action_Request* Request);
+// int search(Upnp_Action_Request* Request);
+// int createObject(Upnp_Action_Request* Request);
+// int destroyObject(Upnp_Action_Request* Request);
+// int updateObject(Upnp_Action_Request* Request);
+// int deleteResource(Upnp_Action_Request* Request);
+// int createReference(Upnp_Action_Request* Request);
+};
+
+#endif /* _CONTENTDIRECTORY_H */
+
diff --git a/inc/upnp/dlna.h b/inc/upnp/dlna.h
new file mode 100644
index 0000000..c61c39f
--- /dev/null
+++ b/inc/upnp/dlna.h
@@ -0,0 +1,97 @@
+/*
+ * File: dlna.h
+ * Author: savop
+ *
+ * Created on 18. April 2009, 23:27
+ */
+
+#ifndef _DLNA_H
+#define _DLNA_H
+
+#include "../common.h"
+#include "profiles.h"
+#include <list>
+
+using namespace std;
+
+/**
+ * Enable DLNA compliant media transfer
+ *
+ * This class enables media transmission with DLNA conformity. Its compliant with
+ * version 1.5 of the DLNA guidelines.
+ *
+ */
+class cDlna {
+ friend class cUPnPServer;
+public:
+ /**
+ * Returns the instance of DLNA object
+ *
+ * This will create a DLNA object instance. It will return the same instance
+ * on subsequent calls.
+ *
+ * @return the DLNA object instance
+ */
+ static cDlna* getInstance(void);
+ virtual ~cDlna();
+ //const char* getProtocolInfo(UPnPObjectID OID);
+ /**
+ * Device description document
+ *
+ * This will return the device description document with service type
+ * definitions as well as some DLNA specific information
+ *
+ * @return The description document
+ */
+ const char* getDeviceDescription(
+ const char* URLBase ///< the URLBase to be set in the document
+ );
+ /**
+ * Registeres a DLNA profile
+ *
+ * Registeres a DLNA profile with specific optional options
+ *
+ * @see common.h
+ */
+ void registerProfile(
+ DLNAProfile* Profile ///< the DLNA profile
+ );
+ /**
+ * Registeres all known DLNA profiles
+ *
+ * Registeres all well known DLNA profiles with its known options
+ */
+ void registerProfiles();
+ /**
+ * CSV list of supported protocols
+ *
+ * Returns a comma separated list with all supported protocols. This
+ * means, it returns the list of protocols of the registered profiles.
+ *
+ * @return CSV list of registered protocols
+ */
+ const char* getSupportedProtocols();
+ /**
+ * Protocol info of a specific DLNA profile
+ *
+ * Returns the protocol info string of a specific DLNA profile with its
+ * options and flags.
+ *
+ * @return the protocol info string of the profile
+ */
+ const char* getProtocolInfo(
+ DLNAProfile *Prof, ///< the Profile of which the protocol info shall be returned
+ int Op = -1, ///< operation mode
+ const char* Ps = NULL, ///< play speed (CSV list)
+ int Ci = -1, ///< conversion indication flag
+ unsigned int Flags = 0 ///< DLNA flags
+ );
+private:
+ cDlna();
+ void init(void);
+ static cDlna* mInstance;
+ list<DLNAProfile*> mRegisteredProfiles;
+};
+
+#endif /* _DLNA_H */
+
diff --git a/inc/upnp/service.h b/inc/upnp/service.h
new file mode 100644
index 0000000..df74d9b
--- /dev/null
+++ b/inc/upnp/service.h
@@ -0,0 +1,119 @@
+/*
+ * File: upnpservice.h
+ * Author: savop
+ *
+ * Created on 21. August 2009, 18:38
+ */
+
+#ifndef _UPNPSERVICE_H
+#define _UPNPSERVICE_H
+
+#include <upnp/upnp.h>
+
+/**
+ * UPnP Service interface
+ *
+ * This is a service interface implemented by a UPnP service like CDS oder CMS
+ *
+ * It comes with some tool functions which are commonly useful for processing
+ * an event or action.
+ */
+class cUpnpService {
+public:
+ /**
+ * Constructor of a service
+ *
+ * @private
+ * @param DeviceHandle the UPnP device handle of this root device
+ */
+ cUpnpService(
+ UpnpDevice_Handle DeviceHandle ///< the UPnP device handle of this root device
+ );
+ virtual ~cUpnpService(){};
+ /**
+ * Subscribes to an event
+ *
+ * This is a callback function to register a new subscriber for an event.
+ *
+ * @return An integer representing one of the following:
+ * - \bc UPNP_E_SUCCESS, if subscription was okay
+ * - or any other non null value in case of an error
+ *
+ * @param Request Information about the subscription
+ */
+ virtual int subscribe(
+ Upnp_Subscription_Request* Request ///< Information about the subscription
+ ) = 0;
+ /**
+ * Executes an action
+ *
+ * This executes an action initialized by a control point. The result is
+ * stored in the first parameter.
+ *
+ * @return An integer representing one of the following:
+ * - \bc UPNP_E_SUCCESS, if subscription was okay
+ * - or any other non null value in case of an error
+ *
+ * @param Request Input and output parameters of an action
+ */
+ virtual int execute(
+ Upnp_Action_Request* Request ///< Input and output parameters of an action
+ ) = 0;
+protected:
+ /**
+ * Sets an error on an action request
+ *
+ * This function puts a error message into the action request structure
+ * according to its error code
+ *
+ * @param Request the action request, to set the error for
+ * @param Error the error code of which the message should be obtained
+ */
+ virtual void setError(
+ Upnp_Action_Request* Request, ///< the action request, to set the error for
+ int Error ///< the error code of which the message should be obtained
+ );
+ /**
+ * Parses an integer value
+ *
+ * This tool function parses an integer value from a given \em IXML document. It is searching
+ * for the very first occurance of the demanded item.
+ *
+ * @return Returns
+ * - \bc 0, if parsing was successful
+ * - \bc <0, if an error occured
+ *
+ * @param Document the document, which is parsed
+ * @param Item the demanded item
+ * @param Value the value of the item
+ */
+ int parseIntegerValue(
+ IN IXML_Document* Document, ///< the document, which is parsed
+ IN const char* Item, ///< the demanded item
+ OUT int* Value ///< the value of the item
+ );
+ /**
+ * Parses a string value
+ *
+ * This tool function parses a string value from a given \em IXML document. It is searching
+ * for the very first occurance of the demanded item.
+ *
+ * @return Returns
+ * - \bc 0, if parsing was successful
+ * - \bc <0, if an error occured
+ *
+ * @param Document the document, which is parsed
+ * @param Item the demanded item
+ * @param Value the value of the item
+ */
+ int parseStringValue(
+ IN IXML_Document* Document, ///< the document, which is parsed
+ IN const char* Item, ///< the demanded item
+ OUT char** Value ///< the value of the item
+ );
+
+ UpnpDevice_Handle mDeviceHandle; ///< the UPnP device handle of the root device
+};
+
+#endif /* _UPNPSERVICE_H */
+
diff --git a/inc/util.h b/inc/util.h
new file mode 100644
index 0000000..5f6f4a3
--- /dev/null
+++ b/inc/util.h
@@ -0,0 +1,148 @@
+/*
+ * File: util.h
+ * Author: savop
+ *
+ * Created on 21. Mai 2009, 21:25
+ */
+
+#ifndef _UTIL_H
+#define _UTIL_H
+
+#include <vdr/tools.h>
+#include <vdr/plugin.h>
+#include <upnp/ixml.h>
+
+#ifdef __cplusplus
+extern "C" {
+#if 0
+}
+#endif
+
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+/**
+ * Compares two strings
+ *
+ * This struct compares two strings and returns true on equality or false otherwise
+ * It is used in conjuction with hashmaps
+ */
+struct strCmp {
+ /**
+ * Compares two strings
+ * @return returns
+ * - \bc true, in case of equality
+ * - \bc false, otherwise
+ * @param s1 the first string
+ * @param s2 the second string
+ */
+ bool operator()(const char* s1, const char* s2) const { return (strcmp(s1,s2) < 0); }
+};
+/**
+ * Gets the IP address
+ *
+ * Returns the IP address of a given interface. The interface must be a valid interface
+ * identifier like eth0 or wlan1.
+ *
+ * @return a structure containing the IP address
+ * @param Interface to obtain the IP from
+ */
+const sockaddr_in* getIPFromInterface(const char* Interface);
+/**
+ * Gets the MAC address
+ *
+ * Returns a string representation of the MAC address of a given interface. The interface
+ * must be a valid interface identifier like eth0 or wlan1.
+ *
+ * The pattern of the address is sixth byte hex number separated with ":"
+ *
+ * @return a string containing the MAC
+ * @param Interface to obtain the MAC from
+ */
+const char* getMACFromInterface(const char* Interface);
+/**
+ * List with interfaces
+ *
+ * Returns an array with interfaces found on the system. The number of items
+ * in the array is stored in the parameter \c count.
+ *
+ * @return array list of interfaces
+ * @param count number of interfaces in the array
+ */
+char** getNetworkInterfaces(int *count);
+/**
+ * First occurance of item
+ *
+ * Finds the first occurance of a specified item in a given \bc IXML document and returns its value.
+ * If an error occures, its code is stored in the last parameter \c 'error'.
+ *
+ * @return the value of the item
+ * @param doc the \c IXML document to be parsed
+ * @param item the item which shall be found
+ * @param error the error code in case of an error
+ */
+char* ixmlGetFirstDocumentItem( IN IXML_Document * doc, IN const char *item, int* error );
+/**
+ * Adds a property
+ *
+ * This adds a UPnP property to an \bc IXML document.
+ * The property must have the pattern "namespace:property@attribute".
+ *
+ * @return returns
+ * - \bc <0, in case of an error
+ * - \bc 0, otherwise
+ * @param document the \c IXML document to put the parameter in
+ * @param node the specific node where to put the parameter
+ * @param upnpproperty the upnp property
+ * @param value the value of the upnp property
+ */
+int ixmlAddProperty(IN IXML_Document* document, IN IXML_Element* node, const char* upnpproperty, const char* value );
+/**
+ * creates a part of a string
+ *
+ * This creates a substring of a string which begins at the given offset and has the
+ * specified lenght.
+ *
+ * @return the new string
+ * @param str the full string
+ * @param offset the starting index
+ * @param length the length of the new string
+ */
+char* substr(const char* str, unsigned int offset, unsigned int length);
+
+char* duration(off64_t duration, unsigned int timeBase = 1);
+
+#if 0
+{
+#endif
+}
+#endif
+
+/**
+ * Escapes XML special characters
+ *
+ * This function escapes XML special characters, which must be transformed before
+ * inserting it into another XML document.
+ *
+ * @return the escaped document
+ * @param Data the data to escape
+ * @param Buf the pointer where the escaped document shall be stored
+ */
+const char* escapeXMLCharacters(const char* Data, char** Buf);
+
+/** @private */
+class cMenuEditIpItem: public cMenuEditItem {
+private:
+ char *value;
+ int curNum;
+ int pos;
+ bool step;
+protected:
+ virtual void Set(void);
+public:
+ cMenuEditIpItem(const char *Name, char *Value); // Value must be 16 bytes
+ ~cMenuEditIpItem();
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+#endif /* _UTIL_H */
+
diff --git a/inc/webserver.h b/inc/webserver.h
new file mode 100644
index 0000000..0a49cf9
--- /dev/null
+++ b/inc/webserver.h
@@ -0,0 +1,160 @@
+/*
+ * File: upnpwebserver.h
+ * Author: savop
+ *
+ * Created on 30. Mai 2009, 18:13
+ */
+
+#ifndef _UPNPWEBSERVER_H
+#define _UPNPWEBSERVER_H
+
+#include "../common.h"
+#include <upnp/upnp.h>
+
+/**
+ * The internal webserver
+ *
+ * This is the internal webserver. It distributes all the contents of the
+ * UPnP-Server.
+ *
+ */
+class cUPnPWebServer {
+ friend class cUPnPServer;
+private:
+ static cUPnPWebServer *mInstance;
+ static UpnpVirtualDirCallbacks mVirtualDirCallbacks;
+ const char* mRootdir;
+ cUPnPWebServer(const char* root = "/");
+protected:
+public:
+ /**
+ * Initializes the webserver
+ *
+ * It enables the webserver which comes with the <em>Intel SDK</em> and creates
+ * virtual directories for shares media.
+ *
+ * @return returns
+ * - \bc true, if initializing was successful
+ * - \bc false, otherwise
+ */
+ bool init();
+ /**
+ * Uninitializes the webserver
+ *
+ * This stops the webserver.
+ *
+ * @return returns
+ * - \bc true, if initializing was successful
+ * - \bc false, otherwise
+ */
+ bool uninit();
+ /**
+ * Returns the instance of the webserver
+ *
+ * Returns the instance of the webserver. This will create a single
+ * instance of none is existing on the very first call. A subsequent call
+ * will return the same instance.
+ *
+ * @return the instance of webserver
+ */
+ static cUPnPWebServer* getInstance(
+ const char* rootdir = "/" /**< the root directory of the webserver */
+ );
+ virtual ~cUPnPWebServer();
+//};
+
+ /****************************************************
+ *
+ * The callback functions for the webserver
+ *
+ ****************************************************/
+
+ /**
+ * Retrieve file information
+ *
+ * Returns file related information for an virtual directory file
+ *
+ * @return 0 on success, -1 otherwise
+ * @param filename The filename of which the information is gathered
+ * @param info The File_Info structure with the data
+ */
+ static int getInfo(const char* filename, struct File_Info* info);
+ /**
+ * Opens a virtual directory file
+ *
+ * Opens a file in a virtual directory with the specified mode.
+ *
+ * Possible modes are:
+ * - \b UPNP_READ, Opens the file for reading
+ * - \b UPNP_WRITE, Opens the file for writing
+ *
+ * It returns a file handle to the opened file, NULL otherwise
+ *
+ * @return FileHandle to the opened file, NULL otherwise
+ * @param filename The file to open
+ * @param mode UPNP_WRITE for writing, UPNP_READ for reading.
+ */
+ static UpnpWebFileHandle open(const char* filename, UpnpOpenFileMode mode);
+ /**
+ * Reads from the opened file
+ *
+ * Reads <code>buflen</code> bytes from the file and stores the content
+ * to the buffer
+ *
+ * Returns 0 no more bytes read (EOF)
+ * >0 bytes read from file
+ *
+ * @return number of bytes read, 0 on EOF
+ * @param fh the file handle of the opened file
+ * @param buf the buffer to write the bytes to
+ * @param buflen the maximum count of bytes to read
+ *
+ */
+ static int read(UpnpWebFileHandle fh, char* buf, size_t buflen);
+ /**
+ * Writes to the opened file
+ *
+ * Writes <code>buflen</code> bytes from the buffer and stores the content
+ * in the file
+ *
+ * Returns >0 bytes wrote to file, maybe less the buflen in case of write
+ * errors
+ *
+ * @return number of bytes read, 0 on EOF
+ * @param fh the file handle of the opened file
+ * @param buf the buffer to read the bytes from
+ * @param buflen the maximum count of bytes to write
+ *
+ */
+ static int write(UpnpWebFileHandle fh, char* buf, size_t buflen);
+ /**
+ * Seek in the file
+ *
+ * Seeks in the opened file and sets the file pointer to the specified offset
+ *
+ * Returns 0 on success, non-zero value otherwise
+ *
+ * @return 0 on success, non-zero value otherwise
+ * @param fh the file handle of the opened file
+ * @param offset a negative oder positive value which moves the pointer
+ * forward or backward
+ * @param origin SEEK_CUR, SEEK_END or SEEK_SET
+ *
+ */
+ static int seek(UpnpWebFileHandle fh, off_t offset, int origin);
+ /**
+ * Closes the file
+ *
+ * closes the opened file
+ *
+ * Returns 0 on success, non-zero value otherwise
+ *
+ * @return 0 on success, non-zero value otherwise
+ * @param fh the file handle of the opened file
+ *
+ */
+ static int close(UpnpWebFileHandle fh);
+};
+
+#endif /* _UPNPWEBSERVER_H */
+
diff --git a/po/de-DE.po b/po/de-DE.po
new file mode 100644
index 0000000..59ece6b
--- /dev/null
+++ b/po/de-DE.po
@@ -0,0 +1,271 @@
+# Language de-DE translations for PACKAGE package.
+# Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# savop <denis.loh@hft-leipzig.de>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.0.2\n"
+"Report-Msgid-Bugs-To: <see README>\n"
+"POT-Creation-Date: 2010-01-24 20:48+0100\n"
+"PO-Revision-Date: 2010-01-24 20:14+0100\n"
+"Last-Translator: savop <denis.loh@hft-leipzig.de>\n"
+"Language-Team: Language de-DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, c-format
+msgid ""
+" The server can automatically detect both IP address and an\n"
+" appropriate port, assuming that the first network interface\n"
+" is connected to the internal network. However, it is possible\n"
+" to specify alternative settings with the following options:\n"
+"\n"
+" -i <interface> --int=<interface> The server network\n"
+" interface\n"
+" e.g: eth0, wlan1 etc.\n"
+" If given option '-a' must\n"
+" be absent.\n"
+" -a <address> --address=<address> The server IPv4 address.\n"
+" If given option '-i' must\n"
+" be absent.\n"
+" -p <port> --port=<port> The server port\n"
+" Supported ports:\n"
+" %5d (auto detect)\n"
+" %5d-%5d (user defined)\n"
+" -d --autodetect Force auto detection\n"
+" Use this option to\n"
+" overwrite the setup menu\n"
+" options.\n"
+" -v --verbose Increase verbosity level\n"
+" The more v options the\n"
+" higher the output level\n"
+" --dbdir=<directory> The directory in which the\n"
+" metadata database is stored\n"
+" --httpdir=<directory> The directory where the\n"
+" http documents are located\n"
+msgstr ""
+" Der Server kann automatisch sowohl die IP-Adresse als auch einen\n"
+" passenden Port erkennen. Dabei wird davon ausgegangen, dass die\n"
+" erste Netzwerkkarte zum internen Netz verbunden ist. Dennoch ist\n"
+" ist es möglich, alternative Einstellungen mit den folgenden\n"
+" Optionen anzugeben:\n"
+"\n"
+" -i <interface> --int=<interface> Die Servernetzwerkkarte\n"
+" z.B: eth0, wlan1 etc.\n"
+" Wenn angegeben, darf '-a'\n"
+" nicht angegeben werden.\n"
+" -a <address> --address=<address> Die Server-IPv4-Adresse.\n"
+" Wenn angegeben, darf '-i'\n"
+" nicht angegeben werden.\n"
+" -p <port> --port=<port> Der Serverport\n"
+" Unterstützte Ports:\n"
+" %5d (Autoerkennung)\n"
+" %5d-%5d (benutzerdefiniert)\n"
+" -d --autodetect Erzwinge Autoerkennung\n"
+" Diese Option verwenden, um\n"
+" die Einstellungen im Setup-\n"
+" menü zu überschreiben.\n"
+" -v --verbose Erhöht den Ausgabelevel\n"
+" Je mehr v-Optionen\n"
+" desto mehr Ausgaben\n"
+" --dbdir=<directory> Das Verzeichnis, worin die\n"
+" Metadatenbank abgelegt ist\n"
+" --httpdir=<directory> Das Verzeichnis in dem\n"
+" die HTTP Dokumente liegen\n"
+
+msgid "The UPnP server is still running."
+msgstr "Der UPnP server läuft noch."
+
+msgid "User defined"
+msgstr "Benutzerdefiniert"
+
+msgid "Enable UPnP Server"
+msgstr "UPnP-Server einschalten"
+
+msgid "disabled"
+msgstr "ausgeschaltet"
+
+msgid "enabled"
+msgstr "eingeschaltet"
+
+msgid "Auto detect settings"
+msgstr "Einstellungen erkennen"
+
+msgid "no"
+msgstr "nein"
+
+msgid "yes"
+msgstr "ja"
+
+msgid "Bind to network interface"
+msgstr "An aktuelle Netzwerkkarte binden"
+
+msgid "Current IP address"
+msgstr "Aktuelle IP-Adresse"
+
+msgid "Set IP address"
+msgstr "IP-Adresse setzen"
+
+msgid "Select port"
+msgstr "Port auswählen"
+
+msgid "auto"
+msgstr "auto"
+
+msgid "user definied"
+msgstr "benutzerdefiniert"
+
+msgid "User specified port"
+msgstr "benutzerdefinierter Port"
+
+msgid "Video"
+msgstr "Video"
+
+msgid "Audio"
+msgstr "Audio"
+
+msgid "TV"
+msgstr "TV"
+
+msgid "Records"
+msgstr "Aufnahmen"
+
+msgid "Radio"
+msgstr "Radio"
+
+msgid "User videos"
+msgstr "Benutzervideos"
+
+msgid "Invalid action"
+msgstr "Ungültige Aktion"
+
+msgid "Invalid args"
+msgstr "Ungültige Argumente"
+
+msgid "Invalid var"
+msgstr "Ungültige Variable"
+
+msgid "Action failed"
+msgstr "Aktion fehlgeschlagen"
+
+msgid "Argument value invalid"
+msgstr "Argumentenwert ungültig"
+
+msgid "Argument value out of range"
+msgstr "Argumentenwert außerhalb der Gültigkeit"
+
+msgid "Optional action not implemented"
+msgstr "Optionale Aktion nicht implementiert"
+
+msgid "Out of memory"
+msgstr "Kein Speicher verfügbar"
+
+msgid "Human intervention required"
+msgstr "Benutzereingriff notwendig"
+
+msgid "String argument to long"
+msgstr "Zeichenkettenargument zu lang"
+
+msgid "Action not authorized"
+msgstr "Aktion nicht authorisiert"
+
+msgid "Signature failure"
+msgstr "Signaturfehler"
+
+msgid "Signature missing"
+msgstr "Signatur fehlt"
+
+msgid "Not encrypted"
+msgstr "Nicht verschlüsselt"
+
+msgid "Invalid sequence"
+msgstr "Ungültige Sequenz"
+
+msgid "Invalid control URL"
+msgstr "Ungültige Steuer-URL"
+
+msgid "No such session"
+msgstr "Keine solche Sitzung"
+
+msgid "Unknown error code. Contact the device manufacturer"
+msgstr "Unbekannter Fehlercode. Kontaktieren Sie den Hersteller"
+
+msgid "Incompatible protocol info"
+msgstr "Inkompatible Protokollinfo"
+
+msgid "Incompatible directions"
+msgstr "Inkompatible Richtungen"
+
+msgid "Insufficient network resources"
+msgstr "Nicht ausreichende Netzwerkressourcen"
+
+msgid "Local restrictions"
+msgstr "Lokale Restriktionen"
+
+msgid "Access denied"
+msgstr "Zugriff verweigert"
+
+msgid "Invalid connection reference"
+msgstr "Ungültige Verbindungsreferenz"
+
+msgid "Not in network"
+msgstr "Nicht in diesem Netzwerk"
+
+msgid "Bad metadata"
+msgstr "Falsche Metadaten"
+
+msgid "Cannot process the request"
+msgstr "Kann Anfrage nicht bearbeiten"
+
+msgid "Destination resource access denied"
+msgstr "Zugriff auf Zielressource verweigert"
+
+msgid "Invalid current tag"
+msgstr "Ungültiger aktueller Tag"
+
+msgid "Invalid new tag"
+msgstr "Ungültiger neuer Tag"
+
+msgid "Invalid or unsupported search criteria"
+msgstr "Ungültige oder nicht unterstütze Suchkriterie"
+
+msgid "Invalid or unsupported sort criteria"
+msgstr "Ungültige oder nicht unterstützte Sortierkriterie"
+
+msgid "No such container"
+msgstr "Kein solcher Container"
+
+msgid "No such destination resource"
+msgstr "Keine solche Zielressource"
+
+msgid "No such file transfer"
+msgstr "Kein solcher Datentransfer"
+
+msgid "No such objectID"
+msgstr "Keine solche ObjektID"
+
+msgid "No such source resource"
+msgstr "Keine solche Quellressource"
+
+msgid "Parameter mismatch"
+msgstr "Parameter nicht passend"
+
+msgid "Read only tag"
+msgstr "Nur lesbarer Tag"
+
+msgid "Required tag"
+msgstr "Notwendiger Tag"
+
+msgid "Resource access denied"
+msgstr "Zugriff auf Ressource verweigert"
+
+msgid "Restricted object"
+msgstr "Beschränktes Objekt"
+
+msgid "Restricted parent"
+msgstr "Beschränktes Elternobjekt"
+
+msgid "Transfer busy"
+msgstr "Datentransfer ausgelastet"
diff --git a/po/de-DE.po~ b/po/de-DE.po~
new file mode 100644
index 0000000..92bef90
--- /dev/null
+++ b/po/de-DE.po~
@@ -0,0 +1,273 @@
+# Language de-DE translations for PACKAGE package.
+# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# savop <denis.loh@hft-leipzig.de>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: vdr-upnp 0.0.1\n"
+"Report-Msgid-Bugs-To: <see README>\n"
+"POT-Creation-Date: 2010-01-24 20:11+0100\n"
+"PO-Revision-Date: 2009-12-30 22:17+0100\n"
+"Last-Translator: Denis <denis.loh@hft-leipzig.de>\n"
+"Language-Team: Language de-DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, fuzzy, c-format
+msgid ""
+" The server can automatically detect both IP address and an\n"
+" appropriate port, assuming that the first network interface\n"
+" is connected to the internal network. However, it is possible\n"
+" to specify alternative settings with the following options:\n"
+"\n"
+" -i <interface> --int=<interface> The server network\n"
+" interface\n"
+" e.g: eth0, wlan1 etc.\n"
+" If given option '-a' must\n"
+" be absent.\n"
+" -a <address> --address=<address> The server IPv4 address.\n"
+" If given option '-i' must\n"
+" be absent.\n"
+" -p <port> --port=<port> The server port\n"
+" Supported ports:\n"
+" %5d (auto detect)\n"
+" %5d-%5d (user defined)\n"
+" -d --autodetect Force auto detection\n"
+" Use this option to\n"
+" overwrite the setup menu\n"
+" options.\n"
+" -v --verbose Increase verbosity level\n"
+" The more v options the\n"
+" higher the output level\n"
+" --dbdir=<directory> The directory in which the\n"
+" metadata database is stored\n"
+" --httpdir=<directory> The directory where the\n"
+" http documents are located\n"
+msgstr ""
+" Der Server kann automatisch sowohl die IP-Adresse als auch einen\n"
+" passenden Port erkennen. Dabei wird davon ausgegangen, dass die\n"
+" erste Netzwerkkarte mit dem internen Netzwerk verbunden ist.\n"
+" Es ist aber auch möglich dieses Verhalten über folgende Optionen\n"
+" zu steuern:\n"
+"\n"
+" -i <interface> --int=<interface> Die Servernetzwerkkarte\n"
+" z.B.: eth0, wlan1 etc.\n"
+" Falls angegeben, muss '-a'\n"
+" weggelassen werden.\n"
+" -a <address> --address=<address> Die Server-IPv4-Adresse.\n"
+" Falls angegeben, muss '-i'\n"
+" weggelassen werden.\n"
+" -p <port> --port=<port> Der Serverport\n"
+" Unterstützte ports:\n"
+" %5d (automatisch)\n"
+" %5d-%5d (benutzerdefiniert)\n"
+" -d --autodetect Automatische Erkennung\n"
+" erzwingen\n"
+" Die Option verwenden, um\n"
+" die Einstellungen des\n"
+" Setupmenüs zu überschreiben.\n"
+" -v --verbose Ausgabelevel erhöhen\n"
+" Je öfter diese Option\n"
+" desto höher der Ausgabelevel\n"
+" --dbdir=<pfad> Das Verzeichnis, worin die\n"
+" Metadatenbank gespeichert ist\n"
+" --httpdir=<pfad> Das Verzeichnis für alle\n"
+" HTTP Dokumente\n"
+
+msgid "The UPnP server is still running."
+msgstr "Der UPnP-Server läuft noch."
+
+#, fuzzy
+#~ msgid "user defined"
+#~ msgstr "benutzerdefiniert"
+
+#~ msgid "Enable UPnP Server"
+#~ msgstr "UPnP-Server aktivieren"
+
+#~ msgid "disabled"
+#~ msgstr "aktiviert"
+
+#~ msgid "enabled"
+#~ msgstr "deaktiviert"
+
+#~ msgid "Auto detect settings"
+#~ msgstr "Einstellungen erkennen"
+
+#~ msgid "no"
+#~ msgstr "nein"
+
+#~ msgid "yes"
+#~ msgstr "ja"
+
+#~ msgid "Bind to network interface"
+#~ msgstr "An Netzwerkkarte binden"
+
+#~ msgid "Current IP address"
+#~ msgstr "Aktuelle IP-Adresse"
+
+#~ msgid "Set IP address"
+#~ msgstr "IP-Adresse setzen"
+
+#~ msgid "Select port"
+#~ msgstr "Port wählen"
+
+#~ msgid "auto"
+#~ msgstr "auto"
+
+#~ msgid "user definied"
+#~ msgstr "benutzerdefiniert"
+
+#~ msgid "User specified port"
+#~ msgstr "benutzerdefinierter Port"
+
+#~ msgid "Video"
+#~ msgstr "Video"
+
+#~ msgid "Audio"
+#~ msgstr "Audio"
+
+#~ msgid "TV"
+#~ msgstr "TV"
+
+#~ msgid "Records"
+#~ msgstr "Aufnahmen"
+
+#~ msgid "Radio"
+#~ msgstr "Radio"
+
+#~ msgid "User videos"
+#~ msgstr "Benutzervideos"
+
+#~ msgid "Invalid action"
+#~ msgstr "Ungültige Aktion"
+
+#~ msgid "Invalid args"
+#~ msgstr "Ungültige Argumente"
+
+#~ msgid "Invalid var"
+#~ msgstr "Ungültige Variable"
+
+#~ msgid "Action failed"
+#~ msgstr "Aktion fehlgeschlagen"
+
+#~ msgid "Argument value invalid"
+#~ msgstr "Argumentenwert ungültig"
+
+#~ msgid "Argument value out of range"
+#~ msgstr "Argumentenwert außerhalb des Bereichs"
+
+#~ msgid "Optional action not implemented"
+#~ msgstr "Optionale Aktion nicht implementiert"
+
+#~ msgid "Out of memory"
+#~ msgstr "kein Speicher verfügbar"
+
+#~ msgid "Human intervention required"
+#~ msgstr "Benutzereingriff notwendig"
+
+#~ msgid "String argument to long"
+#~ msgstr "Zeichenkette zu lang"
+
+#~ msgid "Action not authorized"
+#~ msgstr "Aktion nicht authorisiert"
+
+#~ msgid "Signature failure"
+#~ msgstr "Signaturfehler"
+
+#~ msgid "Signature missing"
+#~ msgstr "Signatur fehlt"
+
+#~ msgid "Not encrypted"
+#~ msgstr "Nicht verschlüsselt"
+
+#~ msgid "Invalid sequence"
+#~ msgstr "Ungültige Sequenz"
+
+#~ msgid "Invalid control URL"
+#~ msgstr "Ungültige Steuer-URL"
+
+#~ msgid "No such session"
+#~ msgstr "Sitzung unbekannt"
+
+#~ msgid "Unknown error code. Contact the device manufacturer"
+#~ msgstr "Unbekannter Fehlercode. Bitte kontaktieren Sie den Hersteller"
+
+#~ msgid "Incompatible protocol info"
+#~ msgstr "Inkompatible Protokollinformation"
+
+#~ msgid "Incompatible directions"
+#~ msgstr "Inkompatible Richtung"
+
+#~ msgid "Insufficient network resources"
+#~ msgstr "Nicht genügend Netzwerkbandbreite"
+
+#~ msgid "Local restrictions"
+#~ msgstr "Lokale Beschränkungen"
+
+#~ msgid "Access denied"
+#~ msgstr "Zugriff verweigert"
+
+#~ msgid "Invalid connection reference"
+#~ msgstr "Ungültige Verbundungsreferenz"
+
+#~ msgid "Not in network"
+#~ msgstr "Nicht in diesem Netzwerk"
+
+#~ msgid "Bad metadata"
+#~ msgstr "Fehlerhafte Metadaten"
+
+#~ msgid "Cannot process the request"
+#~ msgstr "Kann Anfrage nicht ausführen"
+
+#~ msgid "Destination resource access denied"
+#~ msgstr "Zugriff auf Zielressource verweigert"
+
+#~ msgid "Invalid current tag"
+#~ msgstr "Ungültiger aktueller Tag"
+
+#~ msgid "Invalid new tag"
+#~ msgstr "Ungültiger neuer Tag"
+
+#~ msgid "Invalid or unsupported search criteria"
+#~ msgstr "Ungültige oder nicht unterstützte Suchanfrage"
+
+#~ msgid "Invalid or unsupported sort criteria"
+#~ msgstr "Ungültige oder nicht unterstützte Sortieranfrage"
+
+#~ msgid "No such container"
+#~ msgstr "Container existiert nicht"
+
+#~ msgid "No such destination resource"
+#~ msgstr "Zielressource existiert nicht"
+
+#~ msgid "No such file transfer"
+#~ msgstr "Datentransfer existiert nicht"
+
+#~ msgid "No such objectID"
+#~ msgstr "Objekt-ID existiert nicht"
+
+#~ msgid "No such source resource"
+#~ msgstr "Quellressource existiert nicht"
+
+#~ msgid "Parameter mismatch"
+#~ msgstr "Parameter passen nicht"
+
+#~ msgid "Read only tag"
+#~ msgstr "nur Lesezugriff auf Tag"
+
+#~ msgid "Required tag"
+#~ msgstr "Benötigter Tag"
+
+#~ msgid "Resource access denied"
+#~ msgstr "Zugriff auf Ressource verweigert"
+
+#~ msgid "Restricted object"
+#~ msgstr "Beschränktes Objekt"
+
+#~ msgid "Restricted parent"
+#~ msgstr "Beschränktes Elternobjekt"
+
+#~ msgid "Transfer busy"
+#~ msgstr "Datenübertragung ausgelastet"
diff --git a/server/webserver.cpp b/server/webserver.cpp
new file mode 100644
index 0000000..04fb44a
--- /dev/null
+++ b/server/webserver.cpp
@@ -0,0 +1,363 @@
+/*
+ * File: upnpwebserver.cpp
+ * Author: savop
+ *
+ * Created on 30. Mai 2009, 18:13
+ */
+
+#include <time.h>
+#include <vdr/channels.h>
+#include <map>
+#include <upnp/upnp.h>
+#include "webserver.h"
+#include "server.h"
+#include "livereceiver.h"
+#include "recplayer.h"
+#include "search.h"
+
+/* COPIED FROM INTEL UPNP TOOLS */
+/*******************************************************************************
+ *
+ * Copyright (c) 2000-2003 Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither name of Intel Corporation nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************/
+/** @private */
+struct File_Info_
+{
+ /** The length of the file. A length less than 0 indicates the size
+ * is unknown, and data will be sent until 0 bytes are returned from
+ * a read call. */
+ off64_t file_length;
+
+ /** The time at which the contents of the file was modified;
+ * The time system is always local (not GMT). */
+ time_t last_modified;
+
+ /** If the file is a directory, {\bf is_directory} contains
+ * a non-zero value. For a regular file, it should be 0. */
+ int is_directory;
+
+ /** If the file or directory is readable, this contains
+ * a non-zero value. If unreadable, it should be set to 0. */
+ int is_readable;
+
+ /** The content type of the file. This string needs to be allocated
+ * by the caller using {\bf ixmlCloneDOMString}. When finished
+ * with it, the SDK frees the {\bf DOMString}. */
+
+ DOMString content_type;
+
+};
+
+/** @private */
+struct cWebFileHandle {
+ cString Filename;
+ off64_t Size;
+ cFileHandle* FileHandle;
+};
+
+/****************************************************
+ *
+ * The web server
+ *
+ * Handles the virtual directories and the
+ * provision of data
+ *
+ * Interface between the channels/recordings of the
+ * VDR and the outer world
+ *
+ ****************************************************/
+
+cUPnPWebServer::cUPnPWebServer(const char* root) : mRootdir(root) {
+}
+
+cUPnPWebServer::~cUPnPWebServer(){}
+
+cUPnPWebServer* cUPnPWebServer::mInstance = NULL;
+
+UpnpVirtualDirCallbacks cUPnPWebServer::mVirtualDirCallbacks = {
+ cUPnPWebServer::getInfo,
+ cUPnPWebServer::open,
+ cUPnPWebServer::read,
+ cUPnPWebServer::write,
+ cUPnPWebServer::seek,
+ cUPnPWebServer::close
+};
+
+bool cUPnPWebServer::init(){
+ MESSAGE(VERBOSE_WEBSERVER, "Initialize callbacks for virtual directories.");
+
+ if(UpnpSetWebServerRootDir(this->mRootdir) == UPNP_E_INVALID_ARGUMENT){
+ ERROR("The root directory of the webserver is invalid.");
+ return false;
+ }
+ MESSAGE(VERBOSE_WEBSERVER, "Setting up callbacks");
+
+ if(UpnpSetVirtualDirCallbacks(&cUPnPWebServer::mVirtualDirCallbacks) == UPNP_E_INVALID_ARGUMENT){
+ ERROR("The virtual directory callbacks are invalid.");
+ return false;
+ }
+
+ if(UpnpIsWebserverEnabled() == FALSE){
+ WARNING("The webserver has not been started. For whatever reason...");
+ return false;
+ }
+
+ MESSAGE(VERBOSE_WEBSERVER, "Add virtual directories.");
+ if(UpnpAddVirtualDir(UPNP_DIR_SHARES) == UPNP_E_INVALID_ARGUMENT){
+ ERROR("The virtual directory %s is invalid.",UPNP_DIR_SHARES);
+ return false;
+ }
+ return true;
+}
+
+bool cUPnPWebServer::uninit(){
+ MESSAGE(VERBOSE_WEBSERVER, "Disabling the internal webserver");
+ UpnpEnableWebserver(FALSE);
+
+ return true;
+}
+
+cUPnPWebServer* cUPnPWebServer::getInstance(const char* rootdir){
+ if(cUPnPWebServer::mInstance == NULL)
+ cUPnPWebServer::mInstance = new cUPnPWebServer(rootdir);
+
+ if(cUPnPWebServer::mInstance){
+ return cUPnPWebServer::mInstance;
+ }
+ else return NULL;
+}
+
+int cUPnPWebServer::getInfo(const char* filename, File_Info* info){
+ MESSAGE(VERBOSE_WEBSERVER, "Getting information of file '%s'", filename);
+
+ propertyMap Properties;
+ int Method;
+ int Section;
+
+ if(cPathParser::parse(filename, &Section, &Method, &Properties)){
+ switch(Section){
+ case 0:
+ switch(Method){
+ case UPNP_WEB_METHOD_STREAM:
+ {
+ MESSAGE(VERBOSE_WEBSERVER, "Stream request");
+ propertyMap::iterator It = Properties.find("resId");
+ unsigned int ResourceID = 0;
+ if(It == Properties.end()){
+ ERROR("No resourceID for stream request");
+ return -1;
+ }
+ else {
+ ResourceID = (unsigned)atoi(It->second);
+ cUPnPResource* Resource = cUPnPResources::getInstance()->getResource(ResourceID);
+ if(!Resource){
+ ERROR("No such resource with ID (%d)", ResourceID);
+ return -1;
+ }
+ else {
+ File_Info_ finfo;
+
+ finfo.content_type = ixmlCloneDOMString(Resource->getContentType());
+ finfo.file_length = Resource->getFileSize();
+ finfo.is_directory = 0;
+ finfo.is_readable = 1;
+ finfo.last_modified = Resource->getLastModification();
+ memcpy(info, &finfo, sizeof(File_Info_));
+
+ MESSAGE(VERBOSE_METADATA, "==== File info of Resource #%d ====", Resource->getID());
+ MESSAGE(VERBOSE_METADATA, "Size: %lld", finfo.file_length);
+ MESSAGE(VERBOSE_METADATA, "Dir: %s", finfo.is_directory?"yes":"no");
+ MESSAGE(VERBOSE_METADATA, "Read: %s", finfo.is_readable?"allowed":"not allowed");
+ MESSAGE(VERBOSE_METADATA, "Last modified: %s", ctime(&(finfo.last_modified)));
+ MESSAGE(VERBOSE_METADATA, "Content-type: %s", finfo.content_type);
+
+#ifdef UPNP_HAVE_CUSTOMHEADERS
+ UpnpAddCustomHTTPHeader("transferMode.dlna.org: Streaming");
+ UpnpAddCustomHTTPHeader(
+ "contentFeatures.dlna.org: "
+ "DLNA.ORG_OP=00;"
+ "DLNA.ORG_CI=0;"
+ "DLNA.ORG_FLAGS=01700000000000000000000000000000"
+ );
+#endif
+ }
+ }
+ }
+ break;
+ case UPNP_WEB_METHOD_BROWSE:
+ // break;
+ case UPNP_WEB_METHOD_SHOW:
+ // break;
+ case UPNP_WEB_METHOD_SEARCH:
+ case UPNP_WEB_METHOD_DOWNLOAD:
+ default:
+ ERROR("Unknown or unsupported method ID (%d)", Method);
+ return -1;
+ }
+ break;
+ default:
+ ERROR("Unknown or unsupported section ID (%d).", Section);
+ return -1;
+ }
+ }
+ else {
+ return -1;
+ }
+
+ return 0;
+}
+
+UpnpWebFileHandle cUPnPWebServer::open(const char* filename, UpnpOpenFileMode mode){
+ MESSAGE(VERBOSE_WEBSERVER, "File %s was opened for %s.",filename,mode==UPNP_READ ? "reading" : "writing");
+
+ propertyMap Properties;
+ int Method;
+ int Section;
+ cWebFileHandle* WebFileHandle = NULL;
+
+ if(cPathParser::parse(filename, &Section, &Method, &Properties)){
+ switch(Section){
+ case 0:
+ switch(Method){
+ case UPNP_WEB_METHOD_STREAM:
+ {
+ MESSAGE(VERBOSE_WEBSERVER, "Stream request");
+ propertyMap::iterator It = Properties.find("resId");
+ unsigned int ResourceID = 0;
+ if(It == Properties.end()){
+ ERROR("No resourceID for stream request");
+ return NULL;
+ }
+ else {
+ ResourceID = (unsigned)atoi(It->second);
+ cUPnPResource* Resource = cUPnPResources::getInstance()->getResource(ResourceID);
+ if(!Resource){
+ ERROR("No such resource with ID (%d)", ResourceID);
+ return NULL;
+ }
+ else {
+ WebFileHandle = new cWebFileHandle;
+ WebFileHandle->Filename = Resource->getResource();
+ WebFileHandle->Size = Resource->getFileSize();
+ switch(Resource->getResourceType()){
+ case UPNP_RESOURCE_CHANNEL:
+ {
+ char* ChannelID = strtok(strdup(Resource->getResource()),":");
+ int StreamID = atoi(strtok(NULL,":"));
+ MESSAGE(VERBOSE_LIVE_TV, "Try to create Receiver for Channel %s with Stream ID %d", ChannelID, StreamID);
+ cChannel* Channel = Channels.GetByChannelID(tChannelID::FromString(ChannelID));
+ if(!Channel){
+ ERROR("No such channel with ID %s", ChannelID);
+ return NULL;
+ }
+ cLiveReceiver* Receiver = cLiveReceiver::newInstance(Channel,0);
+ if(!Receiver){
+ ERROR("Unable to tune channel. No available tuners?");
+ return NULL;
+ }
+ WebFileHandle->FileHandle = Receiver;
+ }
+ break;
+ case UPNP_RESOURCE_RECORDING:
+ {
+ const char* RecordFile = Resource->getResource();
+ MESSAGE(VERBOSE_RECORDS, "Try to create Player for Record %s", RecordFile);
+ cRecording* Recording = Recordings.GetByName(RecordFile);
+ if(!Recording){
+ ERROR("No such recording with file name %s", RecordFile);
+ return NULL;
+ }
+ cRecordingPlayer* RecPlayer = cRecordingPlayer::newInstance(Recording);
+ if(!RecPlayer){
+ ERROR("Unable to start record player. No access?!");
+ return NULL;
+ }
+ WebFileHandle->FileHandle = RecPlayer;
+ }
+ break;
+ case UPNP_RESOURCE_FILE:
+ // break;
+ case UPNP_RESOURCE_URL:
+ default:
+ return NULL;
+ }
+ }
+ }
+ }
+ break;
+ case UPNP_WEB_METHOD_BROWSE:
+ // break;
+ case UPNP_WEB_METHOD_SHOW:
+ // break;
+ case UPNP_WEB_METHOD_SEARCH:
+ case UPNP_WEB_METHOD_DOWNLOAD:
+ default:
+ ERROR("Unknown or unsupported method ID (%d)", Method);
+ return NULL;
+ }
+ break;
+ default:
+ ERROR("Unknown or unsupported section ID (%d).", Section);
+ return NULL;
+ }
+ }
+ else {
+ return NULL;
+ }
+ MESSAGE(VERBOSE_WEBSERVER, "Open the file handle");
+ WebFileHandle->FileHandle->open(mode);
+ return (UpnpWebFileHandle)WebFileHandle;
+}
+
+int cUPnPWebServer::write(UpnpWebFileHandle fh, char* buf, size_t buflen){
+ cWebFileHandle* FileHandle = (cWebFileHandle*)fh;
+ MESSAGE(VERBOSE_BUFFERS, "Writing to %s", *FileHandle->Filename);
+ return FileHandle->FileHandle->write(buf, buflen);
+}
+
+int cUPnPWebServer::read(UpnpWebFileHandle fh, char* buf, size_t buflen){
+ cWebFileHandle* FileHandle = (cWebFileHandle*)fh;
+ MESSAGE(VERBOSE_BUFFERS, "Reading from %s", *FileHandle->Filename);
+ return FileHandle->FileHandle->read(buf, buflen);
+}
+
+int cUPnPWebServer::seek(UpnpWebFileHandle fh, off_t offset, int origin){
+ cWebFileHandle* FileHandle = (cWebFileHandle*)fh;
+ MESSAGE(VERBOSE_BUFFERS, "Seeking on %s", *FileHandle->Filename);
+ return FileHandle->FileHandle->seek(offset, origin);
+}
+
+int cUPnPWebServer::close(UpnpWebFileHandle fh){
+ cWebFileHandle *FileHandle = (cWebFileHandle *)fh;
+ MESSAGE(VERBOSE_WEBSERVER, "Closing file %s", *FileHandle->Filename);
+ FileHandle->FileHandle->close();
+ delete FileHandle->FileHandle;
+ delete FileHandle;
+ return 0;
+} \ No newline at end of file
diff --git a/upnp/connectionmanager.cpp b/upnp/connectionmanager.cpp
new file mode 100644
index 0000000..4d1f97b
--- /dev/null
+++ b/upnp/connectionmanager.cpp
@@ -0,0 +1,393 @@
+/*
+ * File: connectionmanager.cpp
+ * Author: savop
+ *
+ * Created on 21. August 2009, 18:35
+ */
+
+#include <string.h>
+#include <upnp/ixml.h>
+#include <upnp/upnptools.h>
+#include <vdr/tools.h>
+#include "upnp/connectionmanager.h"
+#include "../common.h"
+#include "upnp/dlna.h"
+
+cVirtualConnection::cVirtualConnection() : mRcsID(-1) {}
+
+cConnectionManager::cConnectionManager(UpnpDevice_Handle DeviceHandle) : cUpnpService(DeviceHandle) {
+ this->mVirtualConnections = new cList<cVirtualConnection>;
+ this->mDefaultConnection = this->createVirtualConnection();
+ this->mSupportedProtocols = cDlna::getInstance()->getSupportedProtocols();
+}
+
+cConnectionManager::~cConnectionManager() {
+ delete this->mDefaultConnection;
+ delete this->mVirtualConnections;
+}
+
+int cConnectionManager::subscribe(Upnp_Subscription_Request* Request){
+ IXML_Document* PropertySet = NULL;
+ /* The protocol infos which this server supports */
+ UpnpAddToPropertySet(&PropertySet, "SourceProtocolInfo", this->mSupportedProtocols);
+ /* Not set, this field is only used by Media Renderers */
+ UpnpAddToPropertySet(&PropertySet, "SinkProtocolInfo", "");
+ /* The current connection IDs of all virtual connections */
+ const char* IDs = this->getConnectionIDsCVS();
+ if(!IDs){
+ return UPNP_E_INTERNAL_ERROR;
+ }
+ UpnpAddToPropertySet(&PropertySet, "CurrentConnectionIDs", IDs);
+ // Accept subscription
+ int ret = UpnpAcceptSubscriptionExt(this->mDeviceHandle, Request->UDN, Request->ServiceId, PropertySet, Request->Sid);
+
+ if(ret != UPNP_E_SUCCESS){
+ ERROR("Subscription failed (Error code: %d)", ret);
+ }
+
+ ixmlDocument_free(PropertySet);
+ return ret;
+}
+
+int cConnectionManager::execute(Upnp_Action_Request* Request){
+ if (Request == NULL) {
+ ERROR("CMS Action Handler - request is null");
+ return UPNP_E_BAD_REQUEST;
+ }
+
+ if(!strcmp(Request->ActionName, UPNP_CMS_ACTION_GETPROTOCOLINFO))
+ return this->getProtocolInfo(Request);
+ if(!strcmp(Request->ActionName, UPNP_CMS_ACTION_GETCURRENTCONNECTIONIDS))
+ return this->getCurrentConnectionIDs(Request);
+ if(!strcmp(Request->ActionName, UPNP_CMS_ACTION_GETCURRENTCONNECTIONINFO))
+ return this->getCurrentConnectionInfo(Request);
+ if(!strcmp(Request->ActionName, UPNP_CMS_ACTION_PREPAREFORCONNECTION))
+ return this->prepareForConnection(Request);
+ if(!strcmp(Request->ActionName, UPNP_CMS_ACTION_CONNECTIONCOMPLETE))
+ return this->connectionComplete(Request);
+
+ return UPNP_E_BAD_REQUEST;
+}
+
+int cConnectionManager::getProtocolInfo(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CMS, "Protocol info requested by %s.", inet_ntoa(Request->CtrlPtIPAddr));
+ cString Result = cString::sprintf(
+ "<u:%sResponse xmlns:u=\"%s\"> \
+ <Source>%s</Source> \
+ <Sink></Sink> \
+ </u:%sResponse>",
+ Request->ActionName,
+ UPNP_CMS_SERVICE_TYPE,
+ *this->mSupportedProtocols,
+ Request->ActionName
+ );
+ Request->ActionResult = ixmlParseBuffer(Result);
+ Request->ErrCode = UPNP_E_SUCCESS;
+ return Request->ErrCode;
+}
+
+int cConnectionManager::getCurrentConnectionIDs(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CMS, "Current connection IDs requested by %s.", inet_ntoa(Request->CtrlPtIPAddr));
+ cString Result;
+ const char* IDs = this->getConnectionIDsCVS();
+ if(!IDs){
+ Request->ErrCode = UPNP_E_INTERNAL_ERROR;
+ return Request->ErrCode;
+ }
+ Result = cString::sprintf(
+ "<u:%sResponse xmlns:u=\"%s\"> \
+ <ConnectionIDs>%s</ConnectionIDs> \
+ </u:%sResponse>",
+ Request->ActionName,
+ UPNP_CMS_SERVICE_TYPE,
+ IDs,
+ Request->ActionName
+ );
+ Request->ActionResult = ixmlParseBuffer(Result);
+ Request->ErrCode = UPNP_E_SUCCESS;
+ return Request->ErrCode;
+}
+
+int cConnectionManager::getCurrentConnectionInfo(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CMS, "Current connection info requested by %s.", inet_ntoa(Request->CtrlPtIPAddr));
+ int ConnectionID;
+
+ if(this->parseIntegerValue(Request->ActionRequest, "ConnectionID", &ConnectionID) != 0){
+ ERROR("Invalid arguments. ConnectionID missing or wrong");
+ this->setError(Request, 402);
+ return Request->ErrCode;
+ }
+
+ cVirtualConnection* Connection;
+ for(Connection = this->mVirtualConnections->First(); Connection && Connection->mConnectionID != ConnectionID; Connection = this->mVirtualConnections->Next(Connection)){}
+
+ if(Connection){
+ cString Result = cString::sprintf(
+ "<u:%sResponse xmlns:u=\"%s\">\
+ <ProtocolInfo>%s</ProtocolInfo>\
+ <PeerConnectionManager>%s</PeerConnectionManager>\
+ <PeerConnectionID>%d</PeerConnectionID>\
+ <Direction>%s</Direction>\
+ <RcsID>%d</RcsID>\
+ <AVTransportID>%d</AVTransportID>\
+ <Status>%s</Status>\
+ </u:%sResponse>",
+ Request->ActionName,
+ UPNP_CMS_SERVICE_TYPE,
+ *Connection->mRemoteProtocolInfo,
+ *Connection->mRemoteConnectionManager,
+ -1,
+ cVirtualConnection::getDirectionString(OUTPUT),
+ Connection->mRcsID,
+ Connection->mAVTransportID,
+ cVirtualConnection::getStatusString(Connection->mStatus),
+ Request->ActionName
+ );
+ Request->ActionResult = ixmlParseBuffer(Result);
+ Request->ErrCode = UPNP_E_SUCCESS;
+ }
+ else {
+ ERROR("No valid connection found with given ID=%d!", ConnectionID);
+ this->setError(Request, 706);
+ }
+
+ return Request->ErrCode;
+
+}
+
+int cConnectionManager::prepareForConnection(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CMS, "Request for a new connection by %s.", inet_ntoa(Request->CtrlPtIPAddr));
+ //char* Result = NULL;
+ char* RemoteProtocolInfo = NULL;
+ char* PeerConnectionManager = NULL;
+ int PeerConnectionID = 0;
+ char* DirectionStr = NULL;
+ int Direction;
+
+ if(this->parseStringValue(Request->ActionRequest, "RemoteProtocolInfo", &RemoteProtocolInfo) != 0){
+ ERROR("Invalid argument RemoteProtocolInfo: Missing or wrong");
+ this->setError(Request, 402);
+ return Request->ErrCode;
+ }
+
+ if(this->parseStringValue(Request->ActionRequest, "PeerConnectionManager", &PeerConnectionManager) != 0){
+ ERROR("Invalid argument PeerConnectionManager: Missing or wrong");
+ this->setError(Request, 402);
+ return Request->ErrCode;
+ }
+
+ if(this->parseStringValue(Request->ActionRequest, "Direction", &DirectionStr) != 0 && (Direction = cVirtualConnection::getDirection(DirectionStr)) == -1){
+ ERROR("Invalid argument Direction: Missing or wrong");
+ this->setError(Request, 402);
+ return Request->ErrCode;
+ }
+
+ if(this->parseIntegerValue(Request->ActionRequest, "PeerConnectionID", &PeerConnectionID) != 0){
+ ERROR("Invalid argument PeerConnectionID: Missing or wrong");
+ this->setError(Request, 402);
+ return Request->ErrCode;
+ }
+
+
+ /* TODO:
+ Create Connection
+ Notify AVTransport that a new connection was established
+ Send back the response */
+ this->setError(Request, UPNP_SOAP_E_ACTION_NOT_IMPLEMENTED);
+ return Request->ErrCode;
+}
+
+int cConnectionManager::connectionComplete(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CMS, "Request for closing an open connection by %s.", inet_ntoa(Request->CtrlPtIPAddr));
+ //char* Result = NULL;
+ int ConnectionID;
+
+ if(this->parseIntegerValue(Request->ActionRequest, "ConnectionID", &ConnectionID) != 0){
+ ERROR("Invalid argument ConnectionID: Missing or wrong");
+ this->setError(Request, 402);
+ return Request->ErrCode;
+ }
+
+ // TODO:
+ // Close and clear any open resources
+ // Close and delete the connection
+ // Free other resources left
+ this->setError(Request, UPNP_SOAP_E_ACTION_NOT_IMPLEMENTED);
+ return Request->ErrCode;
+}
+
+//bool cConnectionManager::setProtocolInfo(const char* ProtocolInfo){
+// if(strcmp(this->mSupportedProtocols, ProtocolInfo)){
+// // ProtocolInfo changed, save and invoke a event notification
+// this->mSupportedProtocols = ProtocolInfo;
+//
+// IXML_Document* PropertySet = NULL;
+// UpnpAddToPropertySet(&PropertySet, "SourceProtocolInfo", this->mSupportedProtocols);
+// int ret = UpnpNotifyExt(this->mDeviceHandle, UPNP_DEVICE_UDN, UPNP_CMS_SERVICE_ID, PropertySet);
+// ixmlDocument_free(PropertySet);
+//
+// if(ret != UPNP_E_SUCCESS){
+// ERROR("State change notification failed (Error code: %d)",ret);
+// return false;
+// }
+// }
+// return true;
+//}
+
+cVirtualConnection* cConnectionManager::createVirtualConnection(const char* RemoteProtocolInfo, const char* RemoteConnectionManager, int RemoteConnectionID, eDirection Direction){
+ static int lastConnectionID = 0;
+ MESSAGE(VERBOSE_CMS, "Create virtual connection");
+ if(lastConnectionID == 2147483647) lastConnectionID = 1;
+ cVirtualConnection* Connection = new cVirtualConnection;
+ // AVT is available
+ Connection->mAVTransportID = 0;
+ // The ProtocolInfo of the remote device (i.e. Media Renderer)
+ Connection->mRemoteProtocolInfo = RemoteProtocolInfo;
+ // The responsible connection manager
+ Connection->mRemoteConnectionManager = RemoteConnectionManager;
+ // The virtual connection direction is output
+ Connection->mDirection = Direction;
+ // The remote connection ID, -1 says ID is unknown
+ Connection->mRemoteConnectionID = RemoteConnectionID;
+ // Connection status, assume that its ok.
+ Connection->mStatus = OK;
+ // new assigned ConnectionID
+ Connection->mConnectionID = lastConnectionID++;
+
+ // Notify the subscribers
+ IXML_Document* PropertySet = NULL;
+ const char* IDs = this->getConnectionIDsCVS();
+ if(!IDs){
+ return NULL;
+ }
+ UpnpAddToPropertySet(&PropertySet, "CurrentConnectionIDs", IDs);
+ int ret = UpnpNotifyExt(this->mDeviceHandle, UPNP_DEVICE_UDN, UPNP_CMS_SERVICE_ID, PropertySet);
+ ixmlDocument_free(PropertySet);
+
+ if(ret != UPNP_E_SUCCESS){
+ ERROR("State change notification failed (Error code: %d)",ret);
+ return NULL;
+ }
+ MESSAGE(VERBOSE_CMS, "Notification of connection creation sent");
+ this->mVirtualConnections->Add(Connection);
+ return Connection;
+}
+
+bool cConnectionManager::destroyVirtualConnection(int ConnectionID){
+ if(ConnectionID == 0){
+ ERROR("Cannot delete default connection with ID 0!");
+ return false;
+ }
+
+ cVirtualConnection* Connection;
+ for(Connection = this->mVirtualConnections->First(); Connection && Connection->mConnectionID != ConnectionID; Connection = this->mVirtualConnections->Next(Connection)){}
+
+ if(Connection){
+ this->mVirtualConnections->Del(Connection);
+ // Notify the subscribers
+ IXML_Document* PropertySet = NULL;
+ const char* IDs = this->getConnectionIDsCVS();
+ if(!IDs){
+ return false;
+ }
+ UpnpAddToPropertySet(&PropertySet, "CurrentConnectionIDs", IDs);
+ int ret = UpnpNotifyExt(this->mDeviceHandle, UPNP_DEVICE_UDN, UPNP_CMS_SERVICE_ID, PropertySet);
+ ixmlDocument_free(PropertySet);
+
+ if(ret != UPNP_E_SUCCESS){
+ ERROR("State change notification failed (Error code: %d)",ret);
+ return false;
+ }
+ return true;
+ }
+ ERROR("No connection with ID=%d found!", ConnectionID);
+ return false;
+}
+
+const char* cConnectionManager::getConnectionIDsCVS(){
+ cString IDs;
+ for(cVirtualConnection* Connection = this->mVirtualConnections->First(); Connection; Connection = this->mVirtualConnections->Next(Connection)){
+ IDs = cString::sprintf("%s,%d", (*IDs)?*IDs:"", Connection->mConnectionID);
+ }
+ return IDs;
+}
+
+void cConnectionManager::setError(Upnp_Action_Request* Request, int Error){
+ Request->ErrCode = Error;
+ switch(Error){
+ case 701:
+ strn0cpy(Request->ErrStr,_("Incompatible protocol info"),LINE_SIZE);
+ break;
+ case 702:
+ strn0cpy(Request->ErrStr,_("Incompatible directions"),LINE_SIZE);
+ break;
+ case 703:
+ strn0cpy(Request->ErrStr,_("Insufficient network resources"),LINE_SIZE);
+ break;
+ case 704:
+ strn0cpy(Request->ErrStr,_("Local restrictions"),LINE_SIZE);
+ break;
+ case 705:
+ strn0cpy(Request->ErrStr,_("Access denied"),LINE_SIZE);
+ break;
+ case 706:
+ strn0cpy(Request->ErrStr,_("Invalid connection reference"),LINE_SIZE);
+ break;
+ case 707:
+ strn0cpy(Request->ErrStr,_("Not in network"),LINE_SIZE);
+ break;
+ default:
+ cUpnpService::setError(Request, Error);
+ break;
+ }
+}
+
+const char* cVirtualConnection::getDirectionString(eDirection Direction){
+ switch(Direction){
+ case INPUT:
+ return "Input";
+ case OUTPUT:
+ return "Output";
+ default:
+ return NULL;
+ }
+}
+
+const char* cVirtualConnection::getStatusString(eConnectionStatus Status){
+ switch(Status){
+ case OK:
+ return "OK";
+ case CONTENT_FORMAT_MISMATCH:
+ return "ContentFormatMismatch";
+ case INSUFFICIENT_BANDWIDTH:
+ return "InsufficientBandwidth";
+ case UNRELIABLE_CHANNEL:
+ return "UnreliableChannel";
+ case UNKNOWN:
+ return "Unknown";
+ default:
+ return NULL;
+ }
+}
+
+int cVirtualConnection::getConnectionStatus(const char* eConnectionStatus){
+ if(!strcasecmp(eConnectionStatus,"OK"))
+ return OK;
+ if(!strcasecmp(eConnectionStatus,"ContentFormatMismatch"))
+ return CONTENT_FORMAT_MISMATCH;
+ if(!strcasecmp(eConnectionStatus,"InsufficientBandwidth"))
+ return INSUFFICIENT_BANDWIDTH;
+ if(!strcasecmp(eConnectionStatus,"UnreliableChannel"))
+ return UNRELIABLE_CHANNEL;
+ if(!strcasecmp(eConnectionStatus,"Unknown"))
+ return UNKNOWN;
+ return -1;
+}
+
+int cVirtualConnection::getDirection(const char* Direction){
+ if(!strcasecmp(Direction, "Output"))
+ return OUTPUT;
+ if(!strcasecmp(Direction, "Input"))
+ return INPUT;
+ return -1;
+} \ No newline at end of file
diff --git a/upnp/contentdirectory.cpp b/upnp/contentdirectory.cpp
new file mode 100644
index 0000000..954f001
--- /dev/null
+++ b/upnp/contentdirectory.cpp
@@ -0,0 +1,306 @@
+/*
+ * File: contentdirectory.cpp
+ * Author: savop
+ *
+ * Created on 21. August 2009, 16:12
+ */
+
+#include <upnp/ixml.h>
+#include <upnp/upnptools.h>
+#include "upnp/contentdirectory.h"
+#include "../common.h"
+#include "util.h"
+
+cContentDirectory::cContentDirectory(UpnpDevice_Handle DeviceHandle, cMediaDatabase* MediaDatabase)
+: cUpnpService(DeviceHandle) {
+ this->mMediaDatabase = MediaDatabase;
+}
+
+cContentDirectory::~cContentDirectory() {}
+
+int cContentDirectory::subscribe(Upnp_Subscription_Request* Request){
+ IXML_Document* PropertySet = NULL;
+
+ /* The system update ID */
+ UpnpAddToPropertySet(&PropertySet, "SystemUpdateID", itoa(this->mMediaDatabase->getSystemUpdateID()));
+ /* The container update IDs as CSV list */
+ UpnpAddToPropertySet(&PropertySet, "ContainerUpdateIDs", this->mMediaDatabase->getContainerUpdateIDs());
+ /* The transfer IDs, which are not supported, i.e. empty */
+ UpnpAddToPropertySet(&PropertySet, "TransferIDs", "");
+ // Accept subscription
+ int ret = UpnpAcceptSubscriptionExt(this->mDeviceHandle, Request->UDN, Request->ServiceId, PropertySet, Request->Sid);
+
+ if(ret != UPNP_E_SUCCESS){
+ ERROR("Subscription failed (Error code: %d)", ret);
+ }
+
+ ixmlDocument_free(PropertySet);
+ return ret;
+}
+
+void cContentDirectory::Action(){
+ static int Retry = 5;
+ MESSAGE(VERBOSE_CDS, "Start Content directory thread");
+ while(this->Running()){
+ IXML_Document* PropertySet = NULL;
+ UpnpAddToPropertySet(&PropertySet, "SystemUpdateID", itoa(this->mMediaDatabase->getSystemUpdateID()));
+ int ret = UpnpNotifyExt(this->mDeviceHandle, UPNP_DEVICE_UDN, UPNP_CMS_SERVICE_ID, PropertySet);
+ ixmlDocument_free(PropertySet);
+
+ if(ret != UPNP_E_SUCCESS){
+ Retry--;
+ ERROR("State change notification failed (Error code: %d)",ret);
+ ERROR("%d of %d notifications failed", (5-Retry), 5);
+ }
+ else {
+ Retry = 5;
+ }
+ if (!Retry){
+ ERROR("Maximum retries of notifications reached. Stopping...");
+ this->Cancel();
+ }
+ // Sleep 2 seconds
+ cCondWait::SleepMs(2000);
+ }
+}
+
+int cContentDirectory::execute(Upnp_Action_Request* Request){
+ if (Request == NULL) {
+ ERROR("CMS Action Handler - request is null");
+ return UPNP_E_BAD_REQUEST;
+ }
+
+ if(!strcmp(Request->ActionName, UPNP_CDS_ACTION_BROWSE))
+ return this->browse(Request);
+ if(!strcmp(Request->ActionName, UPNP_CDS_ACTION_SEARCHCAPABILITIES))
+ return this->getSearchCapabilities(Request);
+ if(!strcmp(Request->ActionName, UPNP_CDS_ACTION_SORTCAPABILITIES))
+ return this->getSortCapabilities(Request);
+ if(!strcmp(Request->ActionName, UPNP_CDS_ACTION_SYSTEMUPDATEID))
+ return this->getSystemUpdateID(Request);
+
+ return UPNP_E_BAD_REQUEST;
+}
+
+
+int cContentDirectory::browse(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CDS, "Browse requested by %s.", inet_ntoa(Request->CtrlPtIPAddr));
+
+ char* ObjectID = NULL;
+ if(this->parseStringValue(Request->ActionRequest, "ObjectID", &ObjectID)){
+ ERROR("Invalid arguments. ObjectID missing or wrong");
+ this->setError(Request, UPNP_SOAP_E_INVALID_ARGS);
+ return Request->ErrCode;
+ }
+
+ char* BrowseFlag = NULL;
+ bool BrowseMetadata = false;
+ if(this->parseStringValue(Request->ActionRequest, "BrowseFlag", &BrowseFlag)){
+ ERROR("Invalid arguments. Browse flag missing or wrong");
+ this->setError(Request, UPNP_SOAP_E_INVALID_ARGS);
+ return Request->ErrCode;
+ }
+ if(!strcasecmp(BrowseFlag, "BrowseMetadata")){
+ BrowseMetadata = true;
+ }
+ else if(!strcasecmp(BrowseFlag, "BrowseDirectChildren")){
+ BrowseMetadata = false;
+ }
+ else {
+ ERROR("Invalid argument. Browse flag invalid");
+ this->setError(Request, UPNP_SOAP_E_INVALID_ARGS);
+ return Request->ErrCode;
+ }
+
+ char* Filter = NULL;
+ if(this->parseStringValue(Request->ActionRequest, "Filter", &Filter)){
+ ERROR("Invalid arguments. Filter missing or wrong");
+ this->setError(Request, UPNP_SOAP_E_INVALID_ARGS);
+ return Request->ErrCode;
+ }
+
+ int StartingIndex = 0;
+ if(this->parseIntegerValue(Request->ActionRequest, "StartingIndex", &StartingIndex)){
+ ERROR("Invalid arguments. Starting index missing or wrong");
+ this->setError(Request, UPNP_SOAP_E_INVALID_ARGS);
+ return Request->ErrCode;
+ }
+
+ int RequestedCount = 0;
+ if(this->parseIntegerValue(Request->ActionRequest, "RequestedCount", &RequestedCount)){
+ ERROR("Invalid arguments. Requested count missing or wrong");
+ this->setError(Request, UPNP_SOAP_E_INVALID_ARGS);
+ return Request->ErrCode;
+ }
+
+ char* SortCriteria = NULL;
+ if(this->parseStringValue(Request->ActionRequest, "SortCriteria", &SortCriteria)){
+ ERROR("Invalid arguments. Sort criteria missing or wrong");
+ this->setError(Request, UPNP_SOAP_E_INVALID_ARGS);
+ return Request->ErrCode;
+ }
+
+ cUPnPResultSet* ResultSet;
+
+ int ret = this->mMediaDatabase->browse(&ResultSet, ObjectID, BrowseMetadata, Filter, StartingIndex, RequestedCount, SortCriteria);
+ if(ret!=UPNP_E_SUCCESS){
+ ERROR("Error while browsing. Code: %d", ret);
+ this->setError(Request, ret);
+ return Request->ErrCode;
+ }
+
+ char* escapedResult = NULL;
+ escapeXMLCharacters(ResultSet->mResult, &escapedResult);
+
+ if(!escapedResult){
+ ERROR("Escaping XML data failed");
+ this->setError(Request, UPNP_SOAP_E_ACTION_FAILED);
+ return Request->ErrCode;
+ }
+
+ cString Result = cString::sprintf(
+ "<u:%sResponse xmlns:u=\"%s\"> \
+ <Result>%s</Result> \
+ <NumberReturned>%d</NumberReturned> \
+ <TotalMatches>%d</TotalMatches> \
+ <UpdateID>%d</UpdateID> \
+ </u:%sResponse>",
+ Request->ActionName,
+ UPNP_CDS_SERVICE_TYPE,
+ escapedResult,
+ ResultSet->mNumberReturned,
+ ResultSet->mTotalMatches,
+ this->mMediaDatabase->getSystemUpdateID(),
+ Request->ActionName
+ );
+
+ Request->ActionResult = ixmlParseBuffer(Result);
+ Request->ErrCode = UPNP_E_SUCCESS;
+
+ free(escapedResult);
+
+ return Request->ErrCode;
+
+}
+
+int cContentDirectory::getSystemUpdateID(Upnp_Action_Request* Request){
+ cString Result = cString::sprintf(
+ "<u:%sResponse xmlns:u=\"%s\"> \
+ <Id>%d</Id> \
+ </u:%sResponse>",
+ Request->ActionName,
+ UPNP_CDS_SERVICE_TYPE,
+ this->mMediaDatabase->getSystemUpdateID(),
+ Request->ActionName
+ );
+
+ Request->ActionResult = ixmlParseBuffer(Result);
+ Request->ErrCode = UPNP_E_SUCCESS;
+
+ return Request->ErrCode;
+}
+
+int cContentDirectory::getSearchCapabilities(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CDS, "Sorry, no search capabilities yet");
+
+ cString Result = cString::sprintf(
+ "<u:%sResponse xmlns:u=\"%s\"> \
+ <SearchCaps>%s</SearchCaps> \
+ </u:%sResponse>",
+ Request->ActionName,
+ UPNP_CDS_SERVICE_TYPE,
+ UPNP_CDS_SEARCH_CAPABILITIES,
+ Request->ActionName
+ );
+
+ Request->ActionResult = ixmlParseBuffer(Result);
+ Request->ErrCode = UPNP_E_SUCCESS;
+
+ return Request->ErrCode;
+}
+
+int cContentDirectory::getSortCapabilities(Upnp_Action_Request* Request){
+ MESSAGE(VERBOSE_CDS, "Sorry, no sort capabilities yet");
+
+ cString Result = cString::sprintf(
+ "<u:%sResponse xmlns:u=\"%s\"> \
+ <SortCaps>%s</SortCaps> \
+ </u:%sResponse>",
+ Request->ActionName,
+ UPNP_CDS_SERVICE_TYPE,
+ UPNP_CDS_SORT_CAPABILITIES,
+ Request->ActionName
+ );
+
+ Request->ActionResult = ixmlParseBuffer(Result);
+ Request->ErrCode = UPNP_E_SUCCESS;
+
+ return Request->ErrCode;
+}
+
+void cContentDirectory::setError(Upnp_Action_Request* Request, int Error){
+ Request->ErrCode = Error;
+ switch(Error){
+ case UPNP_CDS_E_BAD_METADATA:
+ strn0cpy(Request->ErrStr,_("Bad metadata"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_CANT_PROCESS_REQUEST:
+ strn0cpy(Request->ErrStr,_("Cannot process the request"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_DEST_RESOURCE_ACCESS_DENIED:
+ strn0cpy(Request->ErrStr,_("Destination resource access denied"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_INVALID_CURRENT_TAG:
+ strn0cpy(Request->ErrStr,_("Invalid current tag"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_INVALID_NEW_TAG:
+ strn0cpy(Request->ErrStr,_("Invalid new tag"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_INVALID_SEARCH_CRITERIA:
+ strn0cpy(Request->ErrStr,_("Invalid or unsupported search criteria"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_INVALID_SORT_CRITERIA:
+ strn0cpy(Request->ErrStr,_("Invalid or unsupported sort criteria"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_NO_SUCH_CONTAINER:
+ strn0cpy(Request->ErrStr,_("No such container"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_NO_SUCH_DESTINATION_RESOURCE:
+ strn0cpy(Request->ErrStr,_("No such destination resource"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_NO_SUCH_FILE_TRANSFER:
+ strn0cpy(Request->ErrStr,_("No such file transfer"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_NO_SUCH_OBJECT:
+ strn0cpy(Request->ErrStr,_("No such objectID"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_NO_SUCH_SOURCE_RESOURCE:
+ strn0cpy(Request->ErrStr,_("No such source resource"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_PARAMETER_MISMATCH:
+ strn0cpy(Request->ErrStr,_("Parameter mismatch"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_READ_ONLY_TAG:
+ strn0cpy(Request->ErrStr,_("Read only tag"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_REQUIRED_TAG:
+ strn0cpy(Request->ErrStr,_("Required tag"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_RESOURCE_ACCESS_DENIED:
+ strn0cpy(Request->ErrStr,_("Resource access denied"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_RESTRICTED_OBJECT:
+ strn0cpy(Request->ErrStr,_("Restricted object"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_RESTRICTED_PARENT:
+ strn0cpy(Request->ErrStr,_("Restricted parent"),LINE_SIZE);
+ break;
+ case UPNP_CDS_E_TRANSFER_BUSY:
+ strn0cpy(Request->ErrStr,_("Transfer busy"),LINE_SIZE);
+ break;
+ default:
+ cUpnpService::setError(Request, Error);
+ break;
+ }
+ return;
+} \ No newline at end of file
diff --git a/upnp/service.cpp b/upnp/service.cpp
new file mode 100644
index 0000000..4d17af1
--- /dev/null
+++ b/upnp/service.cpp
@@ -0,0 +1,118 @@
+/*
+ * File: upnpservice.cpp
+ * Author: savop
+ *
+ * Created on 21. August 2009, 18:38
+ */
+
+#include "upnp/service.h"
+#include "../common.h"
+#include "util.h"
+
+cUpnpService::cUpnpService(UpnpDevice_Handle DeviceHandle) {
+ this->mDeviceHandle = DeviceHandle;
+}
+
+int cUpnpService::parseIntegerValue(IN IXML_Document* Document, IN const char* Item, OUT int* Value){
+ char* Val = NULL;
+ int Error = 0;
+
+ Val = ixmlGetFirstDocumentItem(Document, Item, &Error);
+
+ if(Error != 0){
+ ERROR("Error while parsing integer value for item=%s", Item);
+ Error = -1;
+ }
+ else if(!Value){
+ WARNING("Value %s empty!", Item);
+ *Value = 0;
+ }
+ else {
+ *Value = atoi(Val);
+ free(Val);
+ }
+ return Error;
+}
+
+int cUpnpService::parseStringValue(IN IXML_Document* Document, IN const char* Item, OUT char** Value){
+ char* Val = NULL;
+ int Error = 0;
+
+ Val = ixmlGetFirstDocumentItem(Document, Item, &Error);
+
+ if(Error != 0){
+ ERROR("Error while parsing string value for item=%s", Item);
+ Error = -1;
+ }
+ else if(!Val){
+ WARNING("Value %s empty!", Item);
+ *Value = NULL;
+ }
+ else {
+ *Value = strdup(Val);
+ free(Val);
+ }
+
+ return Error;
+}
+
+void cUpnpService::setError(Upnp_Action_Request* Request, int Error){
+ Request->ErrCode = Error;
+ switch(Error){
+ case UPNP_SOAP_E_INVALID_ACTION:
+ strn0cpy(Request->ErrStr,_("Invalid action"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_INVALID_ARGS:
+ strn0cpy(Request->ErrStr,_("Invalid args"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_INVALID_VAR:
+ strn0cpy(Request->ErrStr,_("Invalid var"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_ACTION_FAILED:
+ strn0cpy(Request->ErrStr,_("Action failed"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_ARGUMENT_INVALID:
+ strn0cpy(Request->ErrStr,_("Argument value invalid"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_ARGUMENT_OUT_OF_RANGE:
+ strn0cpy(Request->ErrStr,_("Argument value out of range"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_ACTION_NOT_IMPLEMENTED:
+ strn0cpy(Request->ErrStr,_("Optional action not implemented"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_OUT_OF_MEMORY:
+ strn0cpy(Request->ErrStr,_("Out of memory"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_HUMAN_INTERVENTION:
+ strn0cpy(Request->ErrStr,_("Human intervention required"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_STRING_TO_LONG:
+ strn0cpy(Request->ErrStr,_("String argument to long"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_NOT_AUTHORIZED:
+ strn0cpy(Request->ErrStr,_("Action not authorized"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_SIGNATURE_FAILURE:
+ strn0cpy(Request->ErrStr,_("Signature failure"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_SIGNATURE_MISSING:
+ strn0cpy(Request->ErrStr,_("Signature missing"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_NOT_ENCRYPTED:
+ strn0cpy(Request->ErrStr,_("Not encrypted"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_INVALID_SEQUENCE:
+ strn0cpy(Request->ErrStr,_("Invalid sequence"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_INVALID_CONTROL_URL:
+ strn0cpy(Request->ErrStr,_("Invalid control URL"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_NO_SUCH_SESSION:
+ strn0cpy(Request->ErrStr,_("No such session"),LINE_SIZE);
+ break;
+ case UPNP_SOAP_E_OUT_OF_SYNC:
+ default:
+ strn0cpy(Request->ErrStr,_("Unknown error code. Contact the device manufacturer"),LINE_SIZE);
+ break;
+ }
+} \ No newline at end of file